[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-codeknit-parse":3,"mdc-d77nqg-key":37,"related-org-aws-labs-codeknit-parse":1866,"related-repo-aws-labs-codeknit-parse":2048},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":32,"sourceUrl":35,"mdContent":36},"codeknit-parse","extract code structure and relationships with codeknit","Extracts code structure (functions, classes, methods, variables) and relationships (calls, inheritance, containment) from source files into compact .skt or JSON output using codeknit. Use when analyzing a codebase, understanding code structure, mapping dependencies, or preparing context for code review and refactoring. Supports C, C++, C#, Go, Java, JavaScript, PHP, Python, Ruby, Rust, Scala, and TypeScript.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,17,20],{"name":14,"slug":15,"type":16},"Architecture","architecture","tag",{"name":18,"slug":19,"type":16},"Engineering","engineering",{"name":21,"slug":22,"type":16},"Code Analysis","code-analysis",3,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fcodeknit","2026-07-12T08:38:38.085555",null,0,[22,29,30,31],"llm","refactoring","static-analysis",{"repoUrl":24,"stars":23,"forks":27,"topics":33,"description":34},[22,29,30,31],"Static code structure extractor that turns a codebase into a compact, LLM-friendly graph of functions, classes, and relationships for refactoring, duplicate detection, and analysis across 12 languages","https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fcodeknit\u002Ftree\u002FHEAD\u002Fskills\u002Fcodeknit-parse","---\nname: codeknit-parse\ndescription: \"Extracts code structure (functions, classes, methods, variables) and relationships (calls, inheritance, containment) from source files into compact .skt or JSON output using codeknit. Use when analyzing a codebase, understanding code structure, mapping dependencies, or preparing context for code review and refactoring. Supports C, C++, C#, Go, Java, JavaScript, PHP, Python, Ruby, Rust, Scala, and TypeScript.\"\n---\n\n# codeknit — static code structure extraction\n\ncodeknit parses source code and produces a structural map of symbols and relationships designed for LLM consumption or structured tool integration.\n\n## Important: choosing the right output mode\n\n**Default to `directory-flat` (no flag needed) unless you are certain the input is a single file or just a few files.** Most projects have more files than you expect, and `inline` mode dumps everything to stdout which can overwhelm context windows and become unreadable. When in doubt, use the default — it writes chunked `.skt` files to `.\u002Fskeleton\u002F` that you can read selectively.\n\nOnly use `--output-mode inline` when:\n\n- The input is a single file\n- You explicitly need stdout output for piping\n- You have confirmed the project has very few source files (\u003C 5)\n\n## Quick start\n\n```bash\n# Default: chunked .skt files in .\u002Fskeleton\u002F (best for most projects)\ncodeknit parse .\u002Fsrc\n\n# Re-run on the same project (cleans previous output)\ncodeknit parse .\u002Fsrc --clean\n\n# Single file to stdout\ncodeknit parse .\u002Fsrc\u002Fmain.go --output-mode inline\n\n# Machine-readable JSON to stdout\ncodeknit parse .\u002Fsrc --output-mode inline --format json --edges\n\n# Custom output directory\ncodeknit parse .\u002Fsrc .\u002Foutput\n\n# Mirror source tree structure\ncodeknit parse .\u002Fsrc --output-mode directory-tree\n```\n\n## Commands\n\n### `codeknit parse \u003Cinput-path> [output-dir]`\n\nThe output directory defaults to `.\u002Fskeleton` for `directory-flat` and `directory-tree` modes. Pass a second argument to override it. In `inline` mode no directory is created. The default output format is `.skt`; pass `--format json` for machine-readable JSON. In directory modes, JSON is written as `codeknit.json`.\n\nIf the output directory already contains `.skt` files from a previous run, codeknit will refuse to write to avoid mixing stale and fresh output. Pass `--clean` to remove them automatically.\n\n| Flag             | Default          | Description                                                           |\n| ---------------- | ---------------- | --------------------------------------------------------------------- |\n| `--output-mode`  | `directory-flat` | `inline`, `directory-flat`, or `directory-tree`                       |\n| `--format`       | `skt`            | Output format: `skt` or `json`                                        |\n| `--max-lines`    | `500`            | Max lines per output file (flat\u002Ftree modes)                           |\n| `--collect-test` | `false`          | Include test files in analysis                                        |\n| `--minify`       | `false`          | Dictionary-based compression of repeated tokens                       |\n| `--edges`        | `false`          | Include the [edges] section in output (off by default to save tokens) |\n| `--clean`        | `false`          | Remove stale .skt files from output dir before writing                |\n| `--workers`      | `NumCPU`         | Max concurrent parsing goroutines                                     |\n| `--verbose`      | `false`          | Print progress and timing info                                        |\n\n## Choosing an output mode\n\n| Mode             | Best for                                | Output location                                                                       |\n| ---------------- | --------------------------------------- | ------------------------------------------------------------------------------------- |\n| `inline`         | A single file, piping to another tool   | Dumps everything to stdout — only use for single files or very small projects         |\n| `directory-flat` | Most projects (default, recommended)    | `.\u002Fskeleton\u002Fmap_001.skt`, `map_002.skt`, ... — chunked, read only what you need       |\n| `directory-tree` | Navigating output alongside source code | `.\u002Fskeleton\u002F\u003Cmirrored path>.skt` — one `.skt` per source file, mirrors the input tree |\n\n| Format | Best for                           | Output                                                   |\n| ------ | ---------------------------------- | -------------------------------------------------------- |\n| `skt`  | LLM context and human inspection   | `.skt` files or stdout                                   |\n| `json` | Scripts and structured integration | `codeknit.json` in directory modes, or stdout in `inline` |\n\nRules of thumb:\n\n- **When unsure about project size → use the default (`directory-flat`), never `inline`**\n- Analyzing a single file → `inline` is fine\n- Anything beyond a few files → `directory-flat` or `directory-tree`\n- When you want to look up a specific file's structure quickly → `directory-tree`\n- When another tool needs structured data → `--format json`\n- Add `--minify` on any mode to compress repeated tokens via a `dict.skt` dictionary\n- By default the `[edges]` section is omitted to save tokens; pass `--edges` when you need relationship data (contains, calls, inherits, etc.)\n- Add `--clean` when re-running on the same output directory\n- Omit the output directory to use the default `.\u002Fskeleton`; pass a path to override\n\n## Reading output\n\nThe default `.skt` output format has sections: `[symbols]`, `[edges]`, optionally `[errors]` and `[dict]`. JSON output contains top-level `files`, `symbols`, optional `edges`, and optional `errors` arrays.\n\nSee [OUTPUT-FORMAT.md](OUTPUT-FORMAT.md) for the complete format reference with examples.\n\n## Important: use codeknit output for analysis, not source code\n\nWhen performing structural analysis (dependency mapping, refactoring planning, architecture review, etc.), **always read codeknit output** instead of the raw source code. The `.skt` skeleton files or JSON output contain the extracted structural information — symbols, relationships, line spans — in a compact format designed for exactly this purpose. Reading source files directly for structural questions wastes context and is less reliable.\n\nOnly read the actual source code when you need to inspect or modify implementation details (e.g. fixing a bug, reviewing logic, writing new code). For anything structural — \"what calls what\", \"where is this class used\", \"show me the dependency graph\" — codeknit output is the right tool.\n\n## Graph analysis\n\nUse `codeknit graph analyze` to run structural graph algorithms and get an LLM-readable report of code quality issues (cyclic dependencies, hub symbols, dead code, god classes, bottlenecks, and more).\n\n```bash\n# Run structural analysis\ncodeknit graph analyze .\u002Fsrc\n\n# Custom output and thresholds\ncodeknit graph analyze .\u002Fsrc -o analysis.skt --fan-threshold 15\n\n# Show more results\ncodeknit graph analyze .\u002Fsrc --top-n 50\n```\n\n| Flag                      | Default                         | Description                                          |\n| ------------------------- | ------------------------------- | ---------------------------------------------------- |\n| `-o`, `--output`          | `.\u002Fskeleton\u002Fgraph_analysis.skt` | Output `.skt` file path                              |\n| `--collect-test`          | `false`                         | Include test files in analysis                       |\n| `--workers`               | `NumCPU`                        | Max concurrent parsing goroutines                    |\n| `--verbose`               | `false`                         | Print progress and timing info                       |\n| `--fan-threshold`         | `10`                            | Min fan-in or fan-out to flag a hub symbol           |\n| `--god-threshold`         | `15`                            | Min contains-edge count to flag a god class\u002Ffunction |\n| `--max-inheritance-depth` | `5`                             | Flag inheritance chains deeper than this             |\n| `--top-n`                 | `30`                            | Cap ranked output sections; 0 = no limit             |\n| `--betweenness-threshold` | `0.001`                         | Min betweenness centrality value to report           |\n| `--propagation-cutoff`    | `0.05`                          | Min probability to continue change propagation       |\n\nThe output is a `.skt` file — read it the same way you read parse output.\n\n## Workflow\n\n1. Run `codeknit parse .\u002Fsrc` to extract structure into `.\u002Fskeleton\u002F`\n2. Read the `.skt` files selectively — start with the ones relevant to your task (do not read source files for structural questions)\n3. Read `[symbols]` to see what exists and where (file, line span)\n4. Read `[edges]` to trace relationships — calls, inheritance, containment\n5. Use line spans (e.g. `L5-L20`) to locate exact source code only when you need to inspect or modify implementation\n6. For deeper structural insights, run `codeknit graph analyze .\u002Fsrc` and read the resulting `.skt` report\n7. For re-runs, add `--clean` to remove previous output: `codeknit parse .\u002Fsrc --clean`\n8. For single-file quick inspection only, use `codeknit parse .\u002Ffile.ts --output-mode inline`\n9. For scripts or integrations, use `codeknit parse .\u002Fsrc --output-mode inline --format json --edges`\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,51,57,64,108,121,141,147,412,418,429,487,507,805,811,927,1010,1015,1149,1155,1226,1239,1245,1264,1269,1275,1288,1423,1712,1724,1730,1860],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"codeknit-static-code-structure-extraction",[48],{"type":49,"value":50},"text","codeknit — static code structure extraction",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55],{"type":49,"value":56},"codeknit parses source code and produces a structural map of symbols and relationships designed for LLM consumption or structured tool integration.",{"type":43,"tag":58,"props":59,"children":61},"h2",{"id":60},"important-choosing-the-right-output-mode",[62],{"type":49,"value":63},"Important: choosing the right output mode",{"type":43,"tag":52,"props":65,"children":66},{},[67,82,84,90,92,98,100,106],{"type":43,"tag":68,"props":69,"children":70},"strong",{},[71,73,80],{"type":49,"value":72},"Default to ",{"type":43,"tag":74,"props":75,"children":77},"code",{"className":76},[],[78],{"type":49,"value":79},"directory-flat",{"type":49,"value":81}," (no flag needed) unless you are certain the input is a single file or just a few files.",{"type":49,"value":83}," Most projects have more files than you expect, and ",{"type":43,"tag":74,"props":85,"children":87},{"className":86},[],[88],{"type":49,"value":89},"inline",{"type":49,"value":91}," mode dumps everything to stdout which can overwhelm context windows and become unreadable. When in doubt, use the default — it writes chunked ",{"type":43,"tag":74,"props":93,"children":95},{"className":94},[],[96],{"type":49,"value":97},".skt",{"type":49,"value":99}," files to ",{"type":43,"tag":74,"props":101,"children":103},{"className":102},[],[104],{"type":49,"value":105},".\u002Fskeleton\u002F",{"type":49,"value":107}," that you can read selectively.",{"type":43,"tag":52,"props":109,"children":110},{},[111,113,119],{"type":49,"value":112},"Only use ",{"type":43,"tag":74,"props":114,"children":116},{"className":115},[],[117],{"type":49,"value":118},"--output-mode inline",{"type":49,"value":120}," when:",{"type":43,"tag":122,"props":123,"children":124},"ul",{},[125,131,136],{"type":43,"tag":126,"props":127,"children":128},"li",{},[129],{"type":49,"value":130},"The input is a single file",{"type":43,"tag":126,"props":132,"children":133},{},[134],{"type":49,"value":135},"You explicitly need stdout output for piping",{"type":43,"tag":126,"props":137,"children":138},{},[139],{"type":49,"value":140},"You have confirmed the project has very few source files (\u003C 5)",{"type":43,"tag":58,"props":142,"children":144},{"id":143},"quick-start",[145],{"type":49,"value":146},"Quick start",{"type":43,"tag":148,"props":149,"children":154},"pre",{"className":150,"code":151,"language":152,"meta":153,"style":153},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Default: chunked .skt files in .\u002Fskeleton\u002F (best for most projects)\ncodeknit parse .\u002Fsrc\n\n# Re-run on the same project (cleans previous output)\ncodeknit parse .\u002Fsrc --clean\n\n# Single file to stdout\ncodeknit parse .\u002Fsrc\u002Fmain.go --output-mode inline\n\n# Machine-readable JSON to stdout\ncodeknit parse .\u002Fsrc --output-mode inline --format json --edges\n\n# Custom output directory\ncodeknit parse .\u002Fsrc .\u002Foutput\n\n# Mirror source tree structure\ncodeknit parse .\u002Fsrc --output-mode directory-tree\n","bash","",[155],{"type":43,"tag":74,"props":156,"children":157},{"__ignoreMap":153},[158,170,191,200,209,231,239,248,275,283,292,332,340,349,370,378,387],{"type":43,"tag":159,"props":160,"children":163},"span",{"class":161,"line":162},"line",1,[164],{"type":43,"tag":159,"props":165,"children":167},{"style":166},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[168],{"type":49,"value":169},"# Default: chunked .skt files in .\u002Fskeleton\u002F (best for most projects)\n",{"type":43,"tag":159,"props":171,"children":173},{"class":161,"line":172},2,[174,180,186],{"type":43,"tag":159,"props":175,"children":177},{"style":176},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[178],{"type":49,"value":179},"codeknit",{"type":43,"tag":159,"props":181,"children":183},{"style":182},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[184],{"type":49,"value":185}," parse",{"type":43,"tag":159,"props":187,"children":188},{"style":182},[189],{"type":49,"value":190}," .\u002Fsrc\n",{"type":43,"tag":159,"props":192,"children":193},{"class":161,"line":23},[194],{"type":43,"tag":159,"props":195,"children":197},{"emptyLinePlaceholder":196},true,[198],{"type":49,"value":199},"\n",{"type":43,"tag":159,"props":201,"children":203},{"class":161,"line":202},4,[204],{"type":43,"tag":159,"props":205,"children":206},{"style":166},[207],{"type":49,"value":208},"# Re-run on the same project (cleans previous output)\n",{"type":43,"tag":159,"props":210,"children":212},{"class":161,"line":211},5,[213,217,221,226],{"type":43,"tag":159,"props":214,"children":215},{"style":176},[216],{"type":49,"value":179},{"type":43,"tag":159,"props":218,"children":219},{"style":182},[220],{"type":49,"value":185},{"type":43,"tag":159,"props":222,"children":223},{"style":182},[224],{"type":49,"value":225}," .\u002Fsrc",{"type":43,"tag":159,"props":227,"children":228},{"style":182},[229],{"type":49,"value":230}," --clean\n",{"type":43,"tag":159,"props":232,"children":234},{"class":161,"line":233},6,[235],{"type":43,"tag":159,"props":236,"children":237},{"emptyLinePlaceholder":196},[238],{"type":49,"value":199},{"type":43,"tag":159,"props":240,"children":242},{"class":161,"line":241},7,[243],{"type":43,"tag":159,"props":244,"children":245},{"style":166},[246],{"type":49,"value":247},"# Single file to stdout\n",{"type":43,"tag":159,"props":249,"children":251},{"class":161,"line":250},8,[252,256,260,265,270],{"type":43,"tag":159,"props":253,"children":254},{"style":176},[255],{"type":49,"value":179},{"type":43,"tag":159,"props":257,"children":258},{"style":182},[259],{"type":49,"value":185},{"type":43,"tag":159,"props":261,"children":262},{"style":182},[263],{"type":49,"value":264}," .\u002Fsrc\u002Fmain.go",{"type":43,"tag":159,"props":266,"children":267},{"style":182},[268],{"type":49,"value":269}," --output-mode",{"type":43,"tag":159,"props":271,"children":272},{"style":182},[273],{"type":49,"value":274}," inline\n",{"type":43,"tag":159,"props":276,"children":278},{"class":161,"line":277},9,[279],{"type":43,"tag":159,"props":280,"children":281},{"emptyLinePlaceholder":196},[282],{"type":49,"value":199},{"type":43,"tag":159,"props":284,"children":286},{"class":161,"line":285},10,[287],{"type":43,"tag":159,"props":288,"children":289},{"style":166},[290],{"type":49,"value":291},"# Machine-readable JSON to stdout\n",{"type":43,"tag":159,"props":293,"children":295},{"class":161,"line":294},11,[296,300,304,308,312,317,322,327],{"type":43,"tag":159,"props":297,"children":298},{"style":176},[299],{"type":49,"value":179},{"type":43,"tag":159,"props":301,"children":302},{"style":182},[303],{"type":49,"value":185},{"type":43,"tag":159,"props":305,"children":306},{"style":182},[307],{"type":49,"value":225},{"type":43,"tag":159,"props":309,"children":310},{"style":182},[311],{"type":49,"value":269},{"type":43,"tag":159,"props":313,"children":314},{"style":182},[315],{"type":49,"value":316}," inline",{"type":43,"tag":159,"props":318,"children":319},{"style":182},[320],{"type":49,"value":321}," --format",{"type":43,"tag":159,"props":323,"children":324},{"style":182},[325],{"type":49,"value":326}," json",{"type":43,"tag":159,"props":328,"children":329},{"style":182},[330],{"type":49,"value":331}," --edges\n",{"type":43,"tag":159,"props":333,"children":335},{"class":161,"line":334},12,[336],{"type":43,"tag":159,"props":337,"children":338},{"emptyLinePlaceholder":196},[339],{"type":49,"value":199},{"type":43,"tag":159,"props":341,"children":343},{"class":161,"line":342},13,[344],{"type":43,"tag":159,"props":345,"children":346},{"style":166},[347],{"type":49,"value":348},"# Custom output directory\n",{"type":43,"tag":159,"props":350,"children":352},{"class":161,"line":351},14,[353,357,361,365],{"type":43,"tag":159,"props":354,"children":355},{"style":176},[356],{"type":49,"value":179},{"type":43,"tag":159,"props":358,"children":359},{"style":182},[360],{"type":49,"value":185},{"type":43,"tag":159,"props":362,"children":363},{"style":182},[364],{"type":49,"value":225},{"type":43,"tag":159,"props":366,"children":367},{"style":182},[368],{"type":49,"value":369}," .\u002Foutput\n",{"type":43,"tag":159,"props":371,"children":373},{"class":161,"line":372},15,[374],{"type":43,"tag":159,"props":375,"children":376},{"emptyLinePlaceholder":196},[377],{"type":49,"value":199},{"type":43,"tag":159,"props":379,"children":381},{"class":161,"line":380},16,[382],{"type":43,"tag":159,"props":383,"children":384},{"style":166},[385],{"type":49,"value":386},"# Mirror source tree structure\n",{"type":43,"tag":159,"props":388,"children":390},{"class":161,"line":389},17,[391,395,399,403,407],{"type":43,"tag":159,"props":392,"children":393},{"style":176},[394],{"type":49,"value":179},{"type":43,"tag":159,"props":396,"children":397},{"style":182},[398],{"type":49,"value":185},{"type":43,"tag":159,"props":400,"children":401},{"style":182},[402],{"type":49,"value":225},{"type":43,"tag":159,"props":404,"children":405},{"style":182},[406],{"type":49,"value":269},{"type":43,"tag":159,"props":408,"children":409},{"style":182},[410],{"type":49,"value":411}," directory-tree\n",{"type":43,"tag":58,"props":413,"children":415},{"id":414},"commands",[416],{"type":49,"value":417},"Commands",{"type":43,"tag":419,"props":420,"children":422},"h3",{"id":421},"codeknit-parse-input-path-output-dir",[423],{"type":43,"tag":74,"props":424,"children":426},{"className":425},[],[427],{"type":49,"value":428},"codeknit parse \u003Cinput-path> [output-dir]",{"type":43,"tag":52,"props":430,"children":431},{},[432,434,440,442,447,449,455,457,462,464,469,471,477,479,485],{"type":49,"value":433},"The output directory defaults to ",{"type":43,"tag":74,"props":435,"children":437},{"className":436},[],[438],{"type":49,"value":439},".\u002Fskeleton",{"type":49,"value":441}," for ",{"type":43,"tag":74,"props":443,"children":445},{"className":444},[],[446],{"type":49,"value":79},{"type":49,"value":448}," and ",{"type":43,"tag":74,"props":450,"children":452},{"className":451},[],[453],{"type":49,"value":454},"directory-tree",{"type":49,"value":456}," modes. Pass a second argument to override it. In ",{"type":43,"tag":74,"props":458,"children":460},{"className":459},[],[461],{"type":49,"value":89},{"type":49,"value":463}," mode no directory is created. The default output format is ",{"type":43,"tag":74,"props":465,"children":467},{"className":466},[],[468],{"type":49,"value":97},{"type":49,"value":470},"; pass ",{"type":43,"tag":74,"props":472,"children":474},{"className":473},[],[475],{"type":49,"value":476},"--format json",{"type":49,"value":478}," for machine-readable JSON. In directory modes, JSON is written as ",{"type":43,"tag":74,"props":480,"children":482},{"className":481},[],[483],{"type":49,"value":484},"codeknit.json",{"type":49,"value":486},".",{"type":43,"tag":52,"props":488,"children":489},{},[490,492,497,499,505],{"type":49,"value":491},"If the output directory already contains ",{"type":43,"tag":74,"props":493,"children":495},{"className":494},[],[496],{"type":49,"value":97},{"type":49,"value":498}," files from a previous run, codeknit will refuse to write to avoid mixing stale and fresh output. Pass ",{"type":43,"tag":74,"props":500,"children":502},{"className":501},[],[503],{"type":49,"value":504},"--clean",{"type":49,"value":506}," to remove them automatically.",{"type":43,"tag":508,"props":509,"children":510},"table",{},[511,535],{"type":43,"tag":512,"props":513,"children":514},"thead",{},[515],{"type":43,"tag":516,"props":517,"children":518},"tr",{},[519,525,530],{"type":43,"tag":520,"props":521,"children":522},"th",{},[523],{"type":49,"value":524},"Flag",{"type":43,"tag":520,"props":526,"children":527},{},[528],{"type":49,"value":529},"Default",{"type":43,"tag":520,"props":531,"children":532},{},[533],{"type":49,"value":534},"Description",{"type":43,"tag":536,"props":537,"children":538},"tbody",{},[539,582,621,647,673,698,730,754,780],{"type":43,"tag":516,"props":540,"children":541},{},[542,552,560],{"type":43,"tag":543,"props":544,"children":545},"td",{},[546],{"type":43,"tag":74,"props":547,"children":549},{"className":548},[],[550],{"type":49,"value":551},"--output-mode",{"type":43,"tag":543,"props":553,"children":554},{},[555],{"type":43,"tag":74,"props":556,"children":558},{"className":557},[],[559],{"type":49,"value":79},{"type":43,"tag":543,"props":561,"children":562},{},[563,568,570,575,577],{"type":43,"tag":74,"props":564,"children":566},{"className":565},[],[567],{"type":49,"value":89},{"type":49,"value":569},", ",{"type":43,"tag":74,"props":571,"children":573},{"className":572},[],[574],{"type":49,"value":79},{"type":49,"value":576},", or ",{"type":43,"tag":74,"props":578,"children":580},{"className":579},[],[581],{"type":49,"value":454},{"type":43,"tag":516,"props":583,"children":584},{},[585,594,603],{"type":43,"tag":543,"props":586,"children":587},{},[588],{"type":43,"tag":74,"props":589,"children":591},{"className":590},[],[592],{"type":49,"value":593},"--format",{"type":43,"tag":543,"props":595,"children":596},{},[597],{"type":43,"tag":74,"props":598,"children":600},{"className":599},[],[601],{"type":49,"value":602},"skt",{"type":43,"tag":543,"props":604,"children":605},{},[606,608,613,615],{"type":49,"value":607},"Output format: ",{"type":43,"tag":74,"props":609,"children":611},{"className":610},[],[612],{"type":49,"value":602},{"type":49,"value":614}," or ",{"type":43,"tag":74,"props":616,"children":618},{"className":617},[],[619],{"type":49,"value":620},"json",{"type":43,"tag":516,"props":622,"children":623},{},[624,633,642],{"type":43,"tag":543,"props":625,"children":626},{},[627],{"type":43,"tag":74,"props":628,"children":630},{"className":629},[],[631],{"type":49,"value":632},"--max-lines",{"type":43,"tag":543,"props":634,"children":635},{},[636],{"type":43,"tag":74,"props":637,"children":639},{"className":638},[],[640],{"type":49,"value":641},"500",{"type":43,"tag":543,"props":643,"children":644},{},[645],{"type":49,"value":646},"Max lines per output file (flat\u002Ftree modes)",{"type":43,"tag":516,"props":648,"children":649},{},[650,659,668],{"type":43,"tag":543,"props":651,"children":652},{},[653],{"type":43,"tag":74,"props":654,"children":656},{"className":655},[],[657],{"type":49,"value":658},"--collect-test",{"type":43,"tag":543,"props":660,"children":661},{},[662],{"type":43,"tag":74,"props":663,"children":665},{"className":664},[],[666],{"type":49,"value":667},"false",{"type":43,"tag":543,"props":669,"children":670},{},[671],{"type":49,"value":672},"Include test files in analysis",{"type":43,"tag":516,"props":674,"children":675},{},[676,685,693],{"type":43,"tag":543,"props":677,"children":678},{},[679],{"type":43,"tag":74,"props":680,"children":682},{"className":681},[],[683],{"type":49,"value":684},"--minify",{"type":43,"tag":543,"props":686,"children":687},{},[688],{"type":43,"tag":74,"props":689,"children":691},{"className":690},[],[692],{"type":49,"value":667},{"type":43,"tag":543,"props":694,"children":695},{},[696],{"type":49,"value":697},"Dictionary-based compression of repeated tokens",{"type":43,"tag":516,"props":699,"children":700},{},[701,710,718],{"type":43,"tag":543,"props":702,"children":703},{},[704],{"type":43,"tag":74,"props":705,"children":707},{"className":706},[],[708],{"type":49,"value":709},"--edges",{"type":43,"tag":543,"props":711,"children":712},{},[713],{"type":43,"tag":74,"props":714,"children":716},{"className":715},[],[717],{"type":49,"value":667},{"type":43,"tag":543,"props":719,"children":720},{},[721,723,728],{"type":49,"value":722},"Include the ",{"type":43,"tag":159,"props":724,"children":725},{},[726],{"type":49,"value":727},"edges",{"type":49,"value":729}," section in output (off by default to save tokens)",{"type":43,"tag":516,"props":731,"children":732},{},[733,741,749],{"type":43,"tag":543,"props":734,"children":735},{},[736],{"type":43,"tag":74,"props":737,"children":739},{"className":738},[],[740],{"type":49,"value":504},{"type":43,"tag":543,"props":742,"children":743},{},[744],{"type":43,"tag":74,"props":745,"children":747},{"className":746},[],[748],{"type":49,"value":667},{"type":43,"tag":543,"props":750,"children":751},{},[752],{"type":49,"value":753},"Remove stale .skt files from output dir before writing",{"type":43,"tag":516,"props":755,"children":756},{},[757,766,775],{"type":43,"tag":543,"props":758,"children":759},{},[760],{"type":43,"tag":74,"props":761,"children":763},{"className":762},[],[764],{"type":49,"value":765},"--workers",{"type":43,"tag":543,"props":767,"children":768},{},[769],{"type":43,"tag":74,"props":770,"children":772},{"className":771},[],[773],{"type":49,"value":774},"NumCPU",{"type":43,"tag":543,"props":776,"children":777},{},[778],{"type":49,"value":779},"Max concurrent parsing goroutines",{"type":43,"tag":516,"props":781,"children":782},{},[783,792,800],{"type":43,"tag":543,"props":784,"children":785},{},[786],{"type":43,"tag":74,"props":787,"children":789},{"className":788},[],[790],{"type":49,"value":791},"--verbose",{"type":43,"tag":543,"props":793,"children":794},{},[795],{"type":43,"tag":74,"props":796,"children":798},{"className":797},[],[799],{"type":49,"value":667},{"type":43,"tag":543,"props":801,"children":802},{},[803],{"type":49,"value":804},"Print progress and timing info",{"type":43,"tag":58,"props":806,"children":808},{"id":807},"choosing-an-output-mode",[809],{"type":49,"value":810},"Choosing an output mode",{"type":43,"tag":508,"props":812,"children":813},{},[814,835],{"type":43,"tag":512,"props":815,"children":816},{},[817],{"type":43,"tag":516,"props":818,"children":819},{},[820,825,830],{"type":43,"tag":520,"props":821,"children":822},{},[823],{"type":49,"value":824},"Mode",{"type":43,"tag":520,"props":826,"children":827},{},[828],{"type":49,"value":829},"Best for",{"type":43,"tag":520,"props":831,"children":832},{},[833],{"type":49,"value":834},"Output location",{"type":43,"tag":536,"props":836,"children":837},{},[838,859,893],{"type":43,"tag":516,"props":839,"children":840},{},[841,849,854],{"type":43,"tag":543,"props":842,"children":843},{},[844],{"type":43,"tag":74,"props":845,"children":847},{"className":846},[],[848],{"type":49,"value":89},{"type":43,"tag":543,"props":850,"children":851},{},[852],{"type":49,"value":853},"A single file, piping to another tool",{"type":43,"tag":543,"props":855,"children":856},{},[857],{"type":49,"value":858},"Dumps everything to stdout — only use for single files or very small projects",{"type":43,"tag":516,"props":860,"children":861},{},[862,870,875],{"type":43,"tag":543,"props":863,"children":864},{},[865],{"type":43,"tag":74,"props":866,"children":868},{"className":867},[],[869],{"type":49,"value":79},{"type":43,"tag":543,"props":871,"children":872},{},[873],{"type":49,"value":874},"Most projects (default, recommended)",{"type":43,"tag":543,"props":876,"children":877},{},[878,884,885,891],{"type":43,"tag":74,"props":879,"children":881},{"className":880},[],[882],{"type":49,"value":883},".\u002Fskeleton\u002Fmap_001.skt",{"type":49,"value":569},{"type":43,"tag":74,"props":886,"children":888},{"className":887},[],[889],{"type":49,"value":890},"map_002.skt",{"type":49,"value":892},", ... — chunked, read only what you need",{"type":43,"tag":516,"props":894,"children":895},{},[896,904,909],{"type":43,"tag":543,"props":897,"children":898},{},[899],{"type":43,"tag":74,"props":900,"children":902},{"className":901},[],[903],{"type":49,"value":454},{"type":43,"tag":543,"props":905,"children":906},{},[907],{"type":49,"value":908},"Navigating output alongside source code",{"type":43,"tag":543,"props":910,"children":911},{},[912,918,920,925],{"type":43,"tag":74,"props":913,"children":915},{"className":914},[],[916],{"type":49,"value":917},".\u002Fskeleton\u002F\u003Cmirrored path>.skt",{"type":49,"value":919}," — one ",{"type":43,"tag":74,"props":921,"children":923},{"className":922},[],[924],{"type":49,"value":97},{"type":49,"value":926}," per source file, mirrors the input tree",{"type":43,"tag":508,"props":928,"children":929},{},[930,950],{"type":43,"tag":512,"props":931,"children":932},{},[933],{"type":43,"tag":516,"props":934,"children":935},{},[936,941,945],{"type":43,"tag":520,"props":937,"children":938},{},[939],{"type":49,"value":940},"Format",{"type":43,"tag":520,"props":942,"children":943},{},[944],{"type":49,"value":829},{"type":43,"tag":520,"props":946,"children":947},{},[948],{"type":49,"value":949},"Output",{"type":43,"tag":536,"props":951,"children":952},{},[953,979],{"type":43,"tag":516,"props":954,"children":955},{},[956,964,969],{"type":43,"tag":543,"props":957,"children":958},{},[959],{"type":43,"tag":74,"props":960,"children":962},{"className":961},[],[963],{"type":49,"value":602},{"type":43,"tag":543,"props":965,"children":966},{},[967],{"type":49,"value":968},"LLM context and human inspection",{"type":43,"tag":543,"props":970,"children":971},{},[972,977],{"type":43,"tag":74,"props":973,"children":975},{"className":974},[],[976],{"type":49,"value":97},{"type":49,"value":978}," files or stdout",{"type":43,"tag":516,"props":980,"children":981},{},[982,990,995],{"type":43,"tag":543,"props":983,"children":984},{},[985],{"type":43,"tag":74,"props":986,"children":988},{"className":987},[],[989],{"type":49,"value":620},{"type":43,"tag":543,"props":991,"children":992},{},[993],{"type":49,"value":994},"Scripts and structured integration",{"type":43,"tag":543,"props":996,"children":997},{},[998,1003,1005],{"type":43,"tag":74,"props":999,"children":1001},{"className":1000},[],[1002],{"type":49,"value":484},{"type":49,"value":1004}," in directory modes, or stdout in ",{"type":43,"tag":74,"props":1006,"children":1008},{"className":1007},[],[1009],{"type":49,"value":89},{"type":43,"tag":52,"props":1011,"children":1012},{},[1013],{"type":49,"value":1014},"Rules of thumb:",{"type":43,"tag":122,"props":1016,"children":1017},{},[1018,1038,1050,1066,1076,1086,1106,1126,1137],{"type":43,"tag":126,"props":1019,"children":1020},{},[1021],{"type":43,"tag":68,"props":1022,"children":1023},{},[1024,1026,1031,1033],{"type":49,"value":1025},"When unsure about project size → use the default (",{"type":43,"tag":74,"props":1027,"children":1029},{"className":1028},[],[1030],{"type":49,"value":79},{"type":49,"value":1032},"), never ",{"type":43,"tag":74,"props":1034,"children":1036},{"className":1035},[],[1037],{"type":49,"value":89},{"type":43,"tag":126,"props":1039,"children":1040},{},[1041,1043,1048],{"type":49,"value":1042},"Analyzing a single file → ",{"type":43,"tag":74,"props":1044,"children":1046},{"className":1045},[],[1047],{"type":49,"value":89},{"type":49,"value":1049}," is fine",{"type":43,"tag":126,"props":1051,"children":1052},{},[1053,1055,1060,1061],{"type":49,"value":1054},"Anything beyond a few files → ",{"type":43,"tag":74,"props":1056,"children":1058},{"className":1057},[],[1059],{"type":49,"value":79},{"type":49,"value":614},{"type":43,"tag":74,"props":1062,"children":1064},{"className":1063},[],[1065],{"type":49,"value":454},{"type":43,"tag":126,"props":1067,"children":1068},{},[1069,1071],{"type":49,"value":1070},"When you want to look up a specific file's structure quickly → ",{"type":43,"tag":74,"props":1072,"children":1074},{"className":1073},[],[1075],{"type":49,"value":454},{"type":43,"tag":126,"props":1077,"children":1078},{},[1079,1081],{"type":49,"value":1080},"When another tool needs structured data → ",{"type":43,"tag":74,"props":1082,"children":1084},{"className":1083},[],[1085],{"type":49,"value":476},{"type":43,"tag":126,"props":1087,"children":1088},{},[1089,1091,1096,1098,1104],{"type":49,"value":1090},"Add ",{"type":43,"tag":74,"props":1092,"children":1094},{"className":1093},[],[1095],{"type":49,"value":684},{"type":49,"value":1097}," on any mode to compress repeated tokens via a ",{"type":43,"tag":74,"props":1099,"children":1101},{"className":1100},[],[1102],{"type":49,"value":1103},"dict.skt",{"type":49,"value":1105}," dictionary",{"type":43,"tag":126,"props":1107,"children":1108},{},[1109,1111,1117,1119,1124],{"type":49,"value":1110},"By default the ",{"type":43,"tag":74,"props":1112,"children":1114},{"className":1113},[],[1115],{"type":49,"value":1116},"[edges]",{"type":49,"value":1118}," section is omitted to save tokens; pass ",{"type":43,"tag":74,"props":1120,"children":1122},{"className":1121},[],[1123],{"type":49,"value":709},{"type":49,"value":1125}," when you need relationship data (contains, calls, inherits, etc.)",{"type":43,"tag":126,"props":1127,"children":1128},{},[1129,1130,1135],{"type":49,"value":1090},{"type":43,"tag":74,"props":1131,"children":1133},{"className":1132},[],[1134],{"type":49,"value":504},{"type":49,"value":1136}," when re-running on the same output directory",{"type":43,"tag":126,"props":1138,"children":1139},{},[1140,1142,1147],{"type":49,"value":1141},"Omit the output directory to use the default ",{"type":43,"tag":74,"props":1143,"children":1145},{"className":1144},[],[1146],{"type":49,"value":439},{"type":49,"value":1148},"; pass a path to override",{"type":43,"tag":58,"props":1150,"children":1152},{"id":1151},"reading-output",[1153],{"type":49,"value":1154},"Reading output",{"type":43,"tag":52,"props":1156,"children":1157},{},[1158,1160,1165,1167,1173,1174,1179,1181,1187,1188,1194,1196,1202,1203,1209,1211,1216,1218,1224],{"type":49,"value":1159},"The default ",{"type":43,"tag":74,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":49,"value":97},{"type":49,"value":1166}," output format has sections: ",{"type":43,"tag":74,"props":1168,"children":1170},{"className":1169},[],[1171],{"type":49,"value":1172},"[symbols]",{"type":49,"value":569},{"type":43,"tag":74,"props":1175,"children":1177},{"className":1176},[],[1178],{"type":49,"value":1116},{"type":49,"value":1180},", optionally ",{"type":43,"tag":74,"props":1182,"children":1184},{"className":1183},[],[1185],{"type":49,"value":1186},"[errors]",{"type":49,"value":448},{"type":43,"tag":74,"props":1189,"children":1191},{"className":1190},[],[1192],{"type":49,"value":1193},"[dict]",{"type":49,"value":1195},". JSON output contains top-level ",{"type":43,"tag":74,"props":1197,"children":1199},{"className":1198},[],[1200],{"type":49,"value":1201},"files",{"type":49,"value":569},{"type":43,"tag":74,"props":1204,"children":1206},{"className":1205},[],[1207],{"type":49,"value":1208},"symbols",{"type":49,"value":1210},", optional ",{"type":43,"tag":74,"props":1212,"children":1214},{"className":1213},[],[1215],{"type":49,"value":727},{"type":49,"value":1217},", and optional ",{"type":43,"tag":74,"props":1219,"children":1221},{"className":1220},[],[1222],{"type":49,"value":1223},"errors",{"type":49,"value":1225}," arrays.",{"type":43,"tag":52,"props":1227,"children":1228},{},[1229,1231,1237],{"type":49,"value":1230},"See ",{"type":43,"tag":1232,"props":1233,"children":1235},"a",{"href":1234},"OUTPUT-FORMAT.md",[1236],{"type":49,"value":1234},{"type":49,"value":1238}," for the complete format reference with examples.",{"type":43,"tag":58,"props":1240,"children":1242},{"id":1241},"important-use-codeknit-output-for-analysis-not-source-code",[1243],{"type":49,"value":1244},"Important: use codeknit output for analysis, not source code",{"type":43,"tag":52,"props":1246,"children":1247},{},[1248,1250,1255,1257,1262],{"type":49,"value":1249},"When performing structural analysis (dependency mapping, refactoring planning, architecture review, etc.), ",{"type":43,"tag":68,"props":1251,"children":1252},{},[1253],{"type":49,"value":1254},"always read codeknit output",{"type":49,"value":1256}," instead of the raw source code. The ",{"type":43,"tag":74,"props":1258,"children":1260},{"className":1259},[],[1261],{"type":49,"value":97},{"type":49,"value":1263}," skeleton files or JSON output contain the extracted structural information — symbols, relationships, line spans — in a compact format designed for exactly this purpose. Reading source files directly for structural questions wastes context and is less reliable.",{"type":43,"tag":52,"props":1265,"children":1266},{},[1267],{"type":49,"value":1268},"Only read the actual source code when you need to inspect or modify implementation details (e.g. fixing a bug, reviewing logic, writing new code). For anything structural — \"what calls what\", \"where is this class used\", \"show me the dependency graph\" — codeknit output is the right tool.",{"type":43,"tag":58,"props":1270,"children":1272},{"id":1271},"graph-analysis",[1273],{"type":49,"value":1274},"Graph analysis",{"type":43,"tag":52,"props":1276,"children":1277},{},[1278,1280,1286],{"type":49,"value":1279},"Use ",{"type":43,"tag":74,"props":1281,"children":1283},{"className":1282},[],[1284],{"type":49,"value":1285},"codeknit graph analyze",{"type":49,"value":1287}," to run structural graph algorithms and get an LLM-readable report of code quality issues (cyclic dependencies, hub symbols, dead code, god classes, bottlenecks, and more).",{"type":43,"tag":148,"props":1289,"children":1291},{"className":150,"code":1290,"language":152,"meta":153,"style":153},"# Run structural analysis\ncodeknit graph analyze .\u002Fsrc\n\n# Custom output and thresholds\ncodeknit graph analyze .\u002Fsrc -o analysis.skt --fan-threshold 15\n\n# Show more results\ncodeknit graph analyze .\u002Fsrc --top-n 50\n",[1292],{"type":43,"tag":74,"props":1293,"children":1294},{"__ignoreMap":153},[1295,1303,1324,1331,1339,1379,1386,1394],{"type":43,"tag":159,"props":1296,"children":1297},{"class":161,"line":162},[1298],{"type":43,"tag":159,"props":1299,"children":1300},{"style":166},[1301],{"type":49,"value":1302},"# Run structural analysis\n",{"type":43,"tag":159,"props":1304,"children":1305},{"class":161,"line":172},[1306,1310,1315,1320],{"type":43,"tag":159,"props":1307,"children":1308},{"style":176},[1309],{"type":49,"value":179},{"type":43,"tag":159,"props":1311,"children":1312},{"style":182},[1313],{"type":49,"value":1314}," graph",{"type":43,"tag":159,"props":1316,"children":1317},{"style":182},[1318],{"type":49,"value":1319}," analyze",{"type":43,"tag":159,"props":1321,"children":1322},{"style":182},[1323],{"type":49,"value":190},{"type":43,"tag":159,"props":1325,"children":1326},{"class":161,"line":23},[1327],{"type":43,"tag":159,"props":1328,"children":1329},{"emptyLinePlaceholder":196},[1330],{"type":49,"value":199},{"type":43,"tag":159,"props":1332,"children":1333},{"class":161,"line":202},[1334],{"type":43,"tag":159,"props":1335,"children":1336},{"style":166},[1337],{"type":49,"value":1338},"# Custom output and thresholds\n",{"type":43,"tag":159,"props":1340,"children":1341},{"class":161,"line":211},[1342,1346,1350,1354,1358,1363,1368,1373],{"type":43,"tag":159,"props":1343,"children":1344},{"style":176},[1345],{"type":49,"value":179},{"type":43,"tag":159,"props":1347,"children":1348},{"style":182},[1349],{"type":49,"value":1314},{"type":43,"tag":159,"props":1351,"children":1352},{"style":182},[1353],{"type":49,"value":1319},{"type":43,"tag":159,"props":1355,"children":1356},{"style":182},[1357],{"type":49,"value":225},{"type":43,"tag":159,"props":1359,"children":1360},{"style":182},[1361],{"type":49,"value":1362}," -o",{"type":43,"tag":159,"props":1364,"children":1365},{"style":182},[1366],{"type":49,"value":1367}," analysis.skt",{"type":43,"tag":159,"props":1369,"children":1370},{"style":182},[1371],{"type":49,"value":1372}," --fan-threshold",{"type":43,"tag":159,"props":1374,"children":1376},{"style":1375},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1377],{"type":49,"value":1378}," 15\n",{"type":43,"tag":159,"props":1380,"children":1381},{"class":161,"line":233},[1382],{"type":43,"tag":159,"props":1383,"children":1384},{"emptyLinePlaceholder":196},[1385],{"type":49,"value":199},{"type":43,"tag":159,"props":1387,"children":1388},{"class":161,"line":241},[1389],{"type":43,"tag":159,"props":1390,"children":1391},{"style":166},[1392],{"type":49,"value":1393},"# Show more results\n",{"type":43,"tag":159,"props":1395,"children":1396},{"class":161,"line":250},[1397,1401,1405,1409,1413,1418],{"type":43,"tag":159,"props":1398,"children":1399},{"style":176},[1400],{"type":49,"value":179},{"type":43,"tag":159,"props":1402,"children":1403},{"style":182},[1404],{"type":49,"value":1314},{"type":43,"tag":159,"props":1406,"children":1407},{"style":182},[1408],{"type":49,"value":1319},{"type":43,"tag":159,"props":1410,"children":1411},{"style":182},[1412],{"type":49,"value":225},{"type":43,"tag":159,"props":1414,"children":1415},{"style":182},[1416],{"type":49,"value":1417}," --top-n",{"type":43,"tag":159,"props":1419,"children":1420},{"style":1375},[1421],{"type":49,"value":1422}," 50\n",{"type":43,"tag":508,"props":1424,"children":1425},{},[1426,1444],{"type":43,"tag":512,"props":1427,"children":1428},{},[1429],{"type":43,"tag":516,"props":1430,"children":1431},{},[1432,1436,1440],{"type":43,"tag":520,"props":1433,"children":1434},{},[1435],{"type":49,"value":524},{"type":43,"tag":520,"props":1437,"children":1438},{},[1439],{"type":49,"value":529},{"type":43,"tag":520,"props":1441,"children":1442},{},[1443],{"type":49,"value":534},{"type":43,"tag":536,"props":1445,"children":1446},{},[1447,1487,1510,1533,1556,1582,1608,1634,1660,1686],{"type":43,"tag":516,"props":1448,"children":1449},{},[1450,1466,1475],{"type":43,"tag":543,"props":1451,"children":1452},{},[1453,1459,1460],{"type":43,"tag":74,"props":1454,"children":1456},{"className":1455},[],[1457],{"type":49,"value":1458},"-o",{"type":49,"value":569},{"type":43,"tag":74,"props":1461,"children":1463},{"className":1462},[],[1464],{"type":49,"value":1465},"--output",{"type":43,"tag":543,"props":1467,"children":1468},{},[1469],{"type":43,"tag":74,"props":1470,"children":1472},{"className":1471},[],[1473],{"type":49,"value":1474},".\u002Fskeleton\u002Fgraph_analysis.skt",{"type":43,"tag":543,"props":1476,"children":1477},{},[1478,1480,1485],{"type":49,"value":1479},"Output ",{"type":43,"tag":74,"props":1481,"children":1483},{"className":1482},[],[1484],{"type":49,"value":97},{"type":49,"value":1486}," file path",{"type":43,"tag":516,"props":1488,"children":1489},{},[1490,1498,1506],{"type":43,"tag":543,"props":1491,"children":1492},{},[1493],{"type":43,"tag":74,"props":1494,"children":1496},{"className":1495},[],[1497],{"type":49,"value":658},{"type":43,"tag":543,"props":1499,"children":1500},{},[1501],{"type":43,"tag":74,"props":1502,"children":1504},{"className":1503},[],[1505],{"type":49,"value":667},{"type":43,"tag":543,"props":1507,"children":1508},{},[1509],{"type":49,"value":672},{"type":43,"tag":516,"props":1511,"children":1512},{},[1513,1521,1529],{"type":43,"tag":543,"props":1514,"children":1515},{},[1516],{"type":43,"tag":74,"props":1517,"children":1519},{"className":1518},[],[1520],{"type":49,"value":765},{"type":43,"tag":543,"props":1522,"children":1523},{},[1524],{"type":43,"tag":74,"props":1525,"children":1527},{"className":1526},[],[1528],{"type":49,"value":774},{"type":43,"tag":543,"props":1530,"children":1531},{},[1532],{"type":49,"value":779},{"type":43,"tag":516,"props":1534,"children":1535},{},[1536,1544,1552],{"type":43,"tag":543,"props":1537,"children":1538},{},[1539],{"type":43,"tag":74,"props":1540,"children":1542},{"className":1541},[],[1543],{"type":49,"value":791},{"type":43,"tag":543,"props":1545,"children":1546},{},[1547],{"type":43,"tag":74,"props":1548,"children":1550},{"className":1549},[],[1551],{"type":49,"value":667},{"type":43,"tag":543,"props":1553,"children":1554},{},[1555],{"type":49,"value":804},{"type":43,"tag":516,"props":1557,"children":1558},{},[1559,1568,1577],{"type":43,"tag":543,"props":1560,"children":1561},{},[1562],{"type":43,"tag":74,"props":1563,"children":1565},{"className":1564},[],[1566],{"type":49,"value":1567},"--fan-threshold",{"type":43,"tag":543,"props":1569,"children":1570},{},[1571],{"type":43,"tag":74,"props":1572,"children":1574},{"className":1573},[],[1575],{"type":49,"value":1576},"10",{"type":43,"tag":543,"props":1578,"children":1579},{},[1580],{"type":49,"value":1581},"Min fan-in or fan-out to flag a hub symbol",{"type":43,"tag":516,"props":1583,"children":1584},{},[1585,1594,1603],{"type":43,"tag":543,"props":1586,"children":1587},{},[1588],{"type":43,"tag":74,"props":1589,"children":1591},{"className":1590},[],[1592],{"type":49,"value":1593},"--god-threshold",{"type":43,"tag":543,"props":1595,"children":1596},{},[1597],{"type":43,"tag":74,"props":1598,"children":1600},{"className":1599},[],[1601],{"type":49,"value":1602},"15",{"type":43,"tag":543,"props":1604,"children":1605},{},[1606],{"type":49,"value":1607},"Min contains-edge count to flag a god class\u002Ffunction",{"type":43,"tag":516,"props":1609,"children":1610},{},[1611,1620,1629],{"type":43,"tag":543,"props":1612,"children":1613},{},[1614],{"type":43,"tag":74,"props":1615,"children":1617},{"className":1616},[],[1618],{"type":49,"value":1619},"--max-inheritance-depth",{"type":43,"tag":543,"props":1621,"children":1622},{},[1623],{"type":43,"tag":74,"props":1624,"children":1626},{"className":1625},[],[1627],{"type":49,"value":1628},"5",{"type":43,"tag":543,"props":1630,"children":1631},{},[1632],{"type":49,"value":1633},"Flag inheritance chains deeper than this",{"type":43,"tag":516,"props":1635,"children":1636},{},[1637,1646,1655],{"type":43,"tag":543,"props":1638,"children":1639},{},[1640],{"type":43,"tag":74,"props":1641,"children":1643},{"className":1642},[],[1644],{"type":49,"value":1645},"--top-n",{"type":43,"tag":543,"props":1647,"children":1648},{},[1649],{"type":43,"tag":74,"props":1650,"children":1652},{"className":1651},[],[1653],{"type":49,"value":1654},"30",{"type":43,"tag":543,"props":1656,"children":1657},{},[1658],{"type":49,"value":1659},"Cap ranked output sections; 0 = no limit",{"type":43,"tag":516,"props":1661,"children":1662},{},[1663,1672,1681],{"type":43,"tag":543,"props":1664,"children":1665},{},[1666],{"type":43,"tag":74,"props":1667,"children":1669},{"className":1668},[],[1670],{"type":49,"value":1671},"--betweenness-threshold",{"type":43,"tag":543,"props":1673,"children":1674},{},[1675],{"type":43,"tag":74,"props":1676,"children":1678},{"className":1677},[],[1679],{"type":49,"value":1680},"0.001",{"type":43,"tag":543,"props":1682,"children":1683},{},[1684],{"type":49,"value":1685},"Min betweenness centrality value to report",{"type":43,"tag":516,"props":1687,"children":1688},{},[1689,1698,1707],{"type":43,"tag":543,"props":1690,"children":1691},{},[1692],{"type":43,"tag":74,"props":1693,"children":1695},{"className":1694},[],[1696],{"type":49,"value":1697},"--propagation-cutoff",{"type":43,"tag":543,"props":1699,"children":1700},{},[1701],{"type":43,"tag":74,"props":1702,"children":1704},{"className":1703},[],[1705],{"type":49,"value":1706},"0.05",{"type":43,"tag":543,"props":1708,"children":1709},{},[1710],{"type":49,"value":1711},"Min probability to continue change propagation",{"type":43,"tag":52,"props":1713,"children":1714},{},[1715,1717,1722],{"type":49,"value":1716},"The output is a ",{"type":43,"tag":74,"props":1718,"children":1720},{"className":1719},[],[1721],{"type":49,"value":97},{"type":49,"value":1723}," file — read it the same way you read parse output.",{"type":43,"tag":58,"props":1725,"children":1727},{"id":1726},"workflow",[1728],{"type":49,"value":1729},"Workflow",{"type":43,"tag":1731,"props":1732,"children":1733},"ol",{},[1734,1752,1764,1776,1787,1800,1820,1838,1849],{"type":43,"tag":126,"props":1735,"children":1736},{},[1737,1739,1745,1747],{"type":49,"value":1738},"Run ",{"type":43,"tag":74,"props":1740,"children":1742},{"className":1741},[],[1743],{"type":49,"value":1744},"codeknit parse .\u002Fsrc",{"type":49,"value":1746}," to extract structure into ",{"type":43,"tag":74,"props":1748,"children":1750},{"className":1749},[],[1751],{"type":49,"value":105},{"type":43,"tag":126,"props":1753,"children":1754},{},[1755,1757,1762],{"type":49,"value":1756},"Read the ",{"type":43,"tag":74,"props":1758,"children":1760},{"className":1759},[],[1761],{"type":49,"value":97},{"type":49,"value":1763}," files selectively — start with the ones relevant to your task (do not read source files for structural questions)",{"type":43,"tag":126,"props":1765,"children":1766},{},[1767,1769,1774],{"type":49,"value":1768},"Read ",{"type":43,"tag":74,"props":1770,"children":1772},{"className":1771},[],[1773],{"type":49,"value":1172},{"type":49,"value":1775}," to see what exists and where (file, line span)",{"type":43,"tag":126,"props":1777,"children":1778},{},[1779,1780,1785],{"type":49,"value":1768},{"type":43,"tag":74,"props":1781,"children":1783},{"className":1782},[],[1784],{"type":49,"value":1116},{"type":49,"value":1786}," to trace relationships — calls, inheritance, containment",{"type":43,"tag":126,"props":1788,"children":1789},{},[1790,1792,1798],{"type":49,"value":1791},"Use line spans (e.g. ",{"type":43,"tag":74,"props":1793,"children":1795},{"className":1794},[],[1796],{"type":49,"value":1797},"L5-L20",{"type":49,"value":1799},") to locate exact source code only when you need to inspect or modify implementation",{"type":43,"tag":126,"props":1801,"children":1802},{},[1803,1805,1811,1813,1818],{"type":49,"value":1804},"For deeper structural insights, run ",{"type":43,"tag":74,"props":1806,"children":1808},{"className":1807},[],[1809],{"type":49,"value":1810},"codeknit graph analyze .\u002Fsrc",{"type":49,"value":1812}," and read the resulting ",{"type":43,"tag":74,"props":1814,"children":1816},{"className":1815},[],[1817],{"type":49,"value":97},{"type":49,"value":1819}," report",{"type":43,"tag":126,"props":1821,"children":1822},{},[1823,1825,1830,1832],{"type":49,"value":1824},"For re-runs, add ",{"type":43,"tag":74,"props":1826,"children":1828},{"className":1827},[],[1829],{"type":49,"value":504},{"type":49,"value":1831}," to remove previous output: ",{"type":43,"tag":74,"props":1833,"children":1835},{"className":1834},[],[1836],{"type":49,"value":1837},"codeknit parse .\u002Fsrc --clean",{"type":43,"tag":126,"props":1839,"children":1840},{},[1841,1843],{"type":49,"value":1842},"For single-file quick inspection only, use ",{"type":43,"tag":74,"props":1844,"children":1846},{"className":1845},[],[1847],{"type":49,"value":1848},"codeknit parse .\u002Ffile.ts --output-mode inline",{"type":43,"tag":126,"props":1850,"children":1851},{},[1852,1854],{"type":49,"value":1853},"For scripts or integrations, use ",{"type":43,"tag":74,"props":1855,"children":1857},{"className":1856},[],[1858],{"type":49,"value":1859},"codeknit parse .\u002Fsrc --output-mode inline --format json --edges",{"type":43,"tag":1861,"props":1862,"children":1863},"style",{},[1864],{"type":49,"value":1865},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1867,"total":2047},[1868,1889,1910,1920,1933,1946,1956,1966,1987,2002,2017,2032],{"slug":1869,"name":1869,"fn":1870,"description":1871,"org":1872,"tags":1873,"stars":1886,"repoUrl":1887,"updatedAt":1888},"agentcore-investigation","investigate Bedrock AgentCore runtime sessions","Investigate Bedrock AgentCore runtime sessions via CloudWatch Logs Insights — resolve session\u002Ftrace IDs, query OTEL spans, filter noise, build timelines. Use when debugging AgentCore agent sessions, tracing tool calls, or analyzing latency.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1874,1877,1880,1883],{"name":1875,"slug":1876,"type":16},"AWS","aws",{"name":1878,"slug":1879,"type":16},"Debugging","debugging",{"name":1881,"slug":1882,"type":16},"Logs","logs",{"name":1884,"slug":1885,"type":16},"Observability","observability",9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":1890,"name":1891,"fn":1892,"description":1893,"org":1894,"tags":1895,"stars":1886,"repoUrl":1887,"updatedAt":1909},"amazon-aurora-dsql","amazon aurora dsql","build applications with Aurora DSQL","Build with Aurora DSQL — manage schemas, execute queries, handle migrations, diagnose query plans, load data, and develop applications with a serverless, distributed SQL database. Covers IAM auth, multi-tenant patterns, MySQL-to-DSQL and PostgreSQL-to-DSQL schema conversion, FK replacement code generation, OCC retry patterns, ORM migration (Django\u002FHibernate\u002FRails), DDL operations, query plan explainability, SQL compatibility validation, and bulk data loading. Triggers on phrases like: DSQL, Aurora DSQL, create DSQL table, DSQL schema, migrate to DSQL, distributed SQL database, serverless PostgreSQL-compatible database, DSQL query plan, DSQL EXPLAIN ANALYZE, why is my DSQL query slow, DSQL foreign key, DSQL OCC retry, DSQL multi-region, load into DSQL, load CSV into DSQL, bulk load DSQL, aurora-dsql-loader.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1896,1899,1900,1903,1906],{"name":1897,"slug":1898,"type":16},"Aurora","aurora",{"name":1875,"slug":1876,"type":16},{"name":1901,"slug":1902,"type":16},"Database","database",{"name":1904,"slug":1905,"type":16},"Serverless","serverless",{"name":1907,"slug":1908,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":1911,"name":1912,"fn":1892,"description":1893,"org":1913,"tags":1914,"stars":1886,"repoUrl":1887,"updatedAt":1919},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1915,1916,1917,1918],{"name":1875,"slug":1876,"type":16},{"name":1901,"slug":1902,"type":16},{"name":1904,"slug":1905,"type":16},{"name":1907,"slug":1908,"type":16},"2026-07-12T08:36:42.694299",{"slug":1921,"name":1922,"fn":1892,"description":1893,"org":1923,"tags":1924,"stars":1886,"repoUrl":1887,"updatedAt":1932},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1925,1926,1927,1930,1931],{"name":1875,"slug":1876,"type":16},{"name":1901,"slug":1902,"type":16},{"name":1928,"slug":1929,"type":16},"Migration","migration",{"name":1904,"slug":1905,"type":16},{"name":1907,"slug":1908,"type":16},"2026-07-12T08:36:38.584057",{"slug":1934,"name":1935,"fn":1892,"description":1893,"org":1936,"tags":1937,"stars":1886,"repoUrl":1887,"updatedAt":1945},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1938,1939,1940,1943,1944],{"name":1875,"slug":1876,"type":16},{"name":1901,"slug":1902,"type":16},{"name":1941,"slug":1942,"type":16},"PostgreSQL","postgresql",{"name":1904,"slug":1905,"type":16},{"name":1907,"slug":1908,"type":16},"2026-07-12T08:36:46.530743",{"slug":1947,"name":1948,"fn":1892,"description":1893,"org":1949,"tags":1950,"stars":1886,"repoUrl":1887,"updatedAt":1955},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1951,1952,1953,1954],{"name":1875,"slug":1876,"type":16},{"name":1901,"slug":1902,"type":16},{"name":1904,"slug":1905,"type":16},{"name":1907,"slug":1908,"type":16},"2026-07-12T08:36:48.104182",{"slug":1957,"name":1957,"fn":1892,"description":1893,"org":1958,"tags":1959,"stars":1886,"repoUrl":1887,"updatedAt":1965},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1960,1961,1962,1963,1964],{"name":1875,"slug":1876,"type":16},{"name":1901,"slug":1902,"type":16},{"name":1928,"slug":1929,"type":16},{"name":1904,"slug":1905,"type":16},{"name":1907,"slug":1908,"type":16},"2026-07-12T08:36:36.374512",{"slug":1967,"name":1967,"fn":1968,"description":1969,"org":1970,"tags":1971,"stars":1984,"repoUrl":1985,"updatedAt":1986},"cost-efficiency-analyzer","analyze cost efficiency and expenses","Analyzes cost structure, cost efficiency, and expense management from P&L data. Use when the user asks about costs, expenses, COGS, operating expenses, cost ratios, cost control, spending efficiency, margin compression from cost side, or wants to understand where money is going. Also use for \"are we spending too much\", \"cost breakdown\", \"expense analysis\", or \"how efficient are our operations\". NOT for revenue or top-line analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1972,1975,1978,1981],{"name":1973,"slug":1974,"type":16},"Accounting","accounting",{"name":1976,"slug":1977,"type":16},"Analytics","analytics",{"name":1979,"slug":1980,"type":16},"Cost Optimization","cost-optimization",{"name":1982,"slug":1983,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":1988,"name":1988,"fn":1989,"description":1990,"org":1991,"tags":1992,"stars":1984,"repoUrl":1985,"updatedAt":2001},"executive-financial-briefing","generate executive financial briefings","Generates a concise executive-level financial briefing or summary suitable for a CEO, CFO, or board presentation. Use when the user asks for a summary, briefing, executive summary, board update, financial overview, financial health check, or \"how is the business doing\". Covers the full P&L picture in one page. Also use for \"give me the highlights\", \"what do I need to know\", or \"quick financial update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1993,1994,1995,1998],{"name":1875,"slug":1876,"type":16},{"name":1982,"slug":1983,"type":16},{"name":1996,"slug":1997,"type":16},"Management","management",{"name":1999,"slug":2000,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":2003,"name":2003,"fn":2004,"description":2005,"org":2006,"tags":2007,"stars":1984,"repoUrl":1985,"updatedAt":2016},"multi-quarter-trend-analysis","analyze multi-quarter financial trends","Analyzes financial trends across multiple quarters by comparing P&L metrics over time. Use when the user wants to see trends, patterns, trajectories, or directional movement across 3 or more quarters. Also use for \"how are we trending\", \"show me the trend\", \"track performance over time\", \"quarter over quarter comparison across all quarters\", or any multi-period longitudinal analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2008,2009,2010,2013],{"name":1976,"slug":1977,"type":16},{"name":1982,"slug":1983,"type":16},{"name":2011,"slug":2012,"type":16},"Financial Statements","financial-statements",{"name":2014,"slug":2015,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":2018,"name":2018,"fn":2019,"description":2020,"org":2021,"tags":2022,"stars":1984,"repoUrl":1985,"updatedAt":2031},"pdf","process and manipulate PDF documents","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2023,2026,2029],{"name":2024,"slug":2025,"type":16},"Automation","automation",{"name":2027,"slug":2028,"type":16},"Documents","documents",{"name":2030,"slug":2018,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":2033,"name":2033,"fn":2034,"description":2035,"org":2036,"tags":2037,"stars":1984,"repoUrl":1985,"updatedAt":2046},"quarterly-kpi-calculator","calculate quarterly financial KPIs","Calculates quarterly financial KPIs from P&L data. P&L figures can be provided directly by the user or fetched from the financial data MCP server. Use when the user wants KPI calculations such as Gross Margin %, EBITDA Margin %, Operating Expense Ratio, or Revenue Growth % QoQ. Also use for quarterly performance review, P&L analysis, or interpreting financial ratios against benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2038,2039,2042,2043],{"name":1973,"slug":1974,"type":16},{"name":2040,"slug":2041,"type":16},"Data Analysis","data-analysis",{"name":1982,"slug":1983,"type":16},{"name":2044,"slug":2045,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150,{"items":2049,"total":172},[2050,2063],{"slug":2051,"name":2051,"fn":2052,"description":2053,"org":2054,"tags":2055,"stars":23,"repoUrl":24,"updatedAt":2062},"codeknit-fingerprint","detect duplicate code with codeknit","Detects duplicate and near-duplicate code across a codebase using fuzzy hashing with codeknit. Use when finding copy-paste, refactoring candidates, merging similar implementations, auditing for DRY violations, or locating semantically equivalent code across different files or languages. Supports C, C++, C#, Go, Java, JavaScript, PHP, Python, Ruby, Rust, Scala, and TypeScript.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2056,2057,2058,2059],{"name":21,"slug":22,"type":16},{"name":1878,"slug":1879,"type":16},{"name":18,"slug":19,"type":16},{"name":2060,"slug":2061,"type":16},"Git","git","2026-07-12T08:38:40.01893",{"slug":4,"name":4,"fn":5,"description":6,"org":2064,"tags":2065,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2066,2067,2068],{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16}]