indexion-kgf
Debug and inspect KGF specs — view tokenization results, parse trees, and extracted edges from source files. Use when adding/fixing language support or when indexion's analysis output looks wrong.
By trkbt10 · 4,915 installs
npx skills add trkbt10/indexion-skills --skill indexion-kgf
Source repository · Upstream listing
indexion kgf
Inspect and debug KGF language specs by viewing tokens, parse events, and extracted edges.
When to Use
User wants to debug how indexion processes a specific file
User is developing or modifying a KGF spec
User asks "how does indexion parse this file?"
Verifying that tokenization/parsing works correctly for a language
Debugging grep patterns : when a grep pattern doesn't match, use
kgf tokens to see the actual token kinds
Subcommands
indexion kgf list — List Installed Specs
indexion kgf update — Update All Specs
Download the latest specs from GitHub.
indexion kgf add — Install a Single Spec
indexion kgf inspect — Full Inspection
Show tokens, events, and edges all at once.
indexion kgf tokens — Tokenization Only
Show how a file is tokenized.
indexion kgf events — Parse Events Only
Show parse events generated from tokens.
indexion kgf edges — Extracted Edges Only
Show the dependency edges extracted from a file.
Options
Option Default Description
spec=NAME auto detect KGF spec name to use
kgf dir=PATH kgfs KGF specs directory
Relationship to grep
indexion grep uses KGF tokenization under the hood. Pattern aliases
( pub → KW pub ) are derived from the === lex section of KGF specs.
When a grep pattern doesn't match as expected:
Common token kinds (MoonBit):
KW pub , KW fn , KW struct , KW enum , KW type , KW trait , KW let , KW for
Ident (lowercase identifiers), TypeIdent (PascalCase type names)
LPAREN , RPAREN , LBRACE , RBRACE , LBRACKET , RBRACKET
NL (newline), SKIP (whitespace — filtered from grep patterns)
DocComment , DocLine , DocSection , LineComment , BlockComment
String , Number , Char
Workflow
1. Run indexion kgf inspect <file to see the full processing pipeline
2. If something looks wrong, drill down with tokens , events , or edges
3. Compare with the KGF spec file ( kgfs/<lang .kgf ) to diagnose issues
KGF Development Pitfalls
Common bugs found when writing or modifying KGF specs:
PEG Item Ordering (first match wins)
KGF uses PEG parsing. In Item A / B / C , if A matches, B and C are
never tried. DocComment as a standalone alternative before declaration
rules will consume doc comments that should be attached to declarations.
NL Between Doc and Keyword
Source code has newlines between doc comments and declarations. Without
NL? or NL , the optional doc capture fails silently:
Bottom Up Event Order (bind/scope)
Events fire bottom up: child rules before parent rules. If ExportDecl
wraps FunctionDecl, FunctionDecl fires first. Use bind / $scope to
pass data from child to parent:
Token Priority Conflicts
Tokens defined earlier take priority. A generic Operator /[=+\ ]+/
before EQ /=/ will consume = as Operator. Define specific tokens first:
Verifying Doc Extraction
After modifying a KGF, always verify doc appears in declares edges: