[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-codeknit-fingerprint":3,"mdc--s1c3u5-key":40,"related-org-aws-labs-codeknit-fingerprint":1305,"related-repo-aws-labs-codeknit-fingerprint":1485},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":35,"sourceUrl":38,"mdContent":39},"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},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,17,20,23],{"name":14,"slug":15,"type":16},"Git","git","tag",{"name":18,"slug":19,"type":16},"Engineering","engineering",{"name":21,"slug":22,"type":16},"Code Analysis","code-analysis",{"name":24,"slug":25,"type":16},"Debugging","debugging",3,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fcodeknit","2026-07-12T08:38:40.01893",null,0,[22,32,33,34],"llm","refactoring","static-analysis",{"repoUrl":27,"stars":26,"forks":30,"topics":36,"description":37},[22,32,33,34],"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-fingerprint","---\nname: codeknit-fingerprint\ndescription: \"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.\"\n---\n\n# codeknit — fuzzy duplicate code detection\n\ncodeknit fingerprint computes Context-Triggered Piecewise Hashes (CTPH) over a normalized token stream for every function, method, variable, and type in a codebase. Similar code produces similar fingerprints, so near-duplicates are detected even across files and across programming languages.\n\nToken normalization strips variable names, string literals, and type annotations before hashing, so `getUserById(id int)` and `fetch_user(user_id uint64)` compare structurally.\n\n## When to use this skill\n\nUse `codeknit fingerprint` when the user asks to:\n\n- Find duplicate or near-duplicate code\n- Identify refactoring candidates (copy-paste, DRY violations)\n- Spot semantically equivalent code across files or languages\n- Audit a codebase before a large refactor\n- Compare two implementations for structural similarity\n\nDo not use it for: \"what does this function do\", \"find callers of X\", or other structural questions. Use `codeknit-parse` for those.\n\n## Quick start\n\n```bash\n# Default: find near-duplicates with 65-95% similarity\ncodeknit fingerprint .\u002Fsrc\n\n# Exact duplicates only\ncodeknit fingerprint .\u002Fsrc --min-similarity 100\n\n# Moderately similar code (50-80%)\ncodeknit fingerprint .\u002Fsrc --min-similarity 50 --max-similarity 80\n\n# Semantic reranking — filters false positives via Ollama embeddings\n# requires: ollama serve && ollama pull qwen3-embedding:0.6b\ncodeknit fingerprint .\u002Fsrc --rerank\n\n# Semantic reranking with a different model\ncodeknit fingerprint .\u002Fsrc --rerank --model qwen3-embedding:4b\n\n# Include the full per-symbol fingerprint listing in output\ncodeknit fingerprint .\u002Fsrc --show-all\n\n# Custom output path\ncodeknit fingerprint .\u002Fsrc -o duplicates.skt\n```\n\nOutput is written to `.\u002Fskeleton\u002Ffingerprints.skt` by default.\n\n## Command reference\n\n### `codeknit fingerprint \u003Cinput-path>`\n\n| Flag               | Default                       | Description                                                                                                                            |\n| ------------------ | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |\n| `-o`, `--output`   | `.\u002Fskeleton\u002Ffingerprints.skt` | Output `.skt` file path                                                                                                                |\n| `--min-similarity` | `65`                          | Minimum similarity percentage to report (0-100)                                                                                        |\n| `--max-similarity` | `95`                          | Maximum similarity percentage to report (0-100)                                                                                        |\n| `--show-all`       | `false`                       | Also emit the `[fingerprints]` section with raw token data                                                                             |\n| `--rerank`         | `false`                       | Rerank CTPH candidates with semantic embeddings via Ollama to eliminate false positives (requires: `ollama pull qwen3-embedding:0.6b`) |\n| `--model`          | `qwen3-embedding:0.6b`        | Ollama embedding model to use with `--rerank`                                                                                          |\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\n## Output format\n\nThe `.skt` file always contains a `[duplicates]` section, and optionally a `[fingerprints]` section when `--show-all` is passed.\n\n### `[duplicates]` section\n\nOne line per duplicate pair, sorted by similarity descending:\n\n```\n[duplicates]\n# similarity range: 65%-95%\nsimilarity:93%  pkg\u002Fuser.go::GetUser \u003C-> pkg\u002Fadmin.go::GetAdmin\nsimilarity:88%  src\u002Fauth.ts::validateToken \u003C-> src\u002Fsession.ts::validateSession\nsimilarity:81%  lib\u002Fmath.py::compute_tax \u003C-> lib\u002Fmath.py::compute_vat\n```\n\nFormat: `similarity:\u003CN>%  \u003Cfile>::\u003Csymbol> \u003C-> \u003Cfile>::\u003Csymbol>`\n\nWhen no duplicates match the similarity range, the section contains a single comment: `# no duplicates found`.\n\n### `[fingerprints]` section (with `--show-all`)\n\nGrouped by source file. One line per symbol:\n\n```\n[fingerprints]\n## src\u002Fauth.ts\nvalidateToken  FP:3:a1b2c3...:d4e5f6...  tokens:8e0f1a2b...\nrefreshToken   FP:3:b2c3d4...:e5f6a7...  tokens:8e0f1a3c...\n```\n\nFormat: `\u003Csymbol-name>  FP:\u003Cblocksize>:\u003Chash1>:\u003Chash2>  tokens:\u003Chex>`\n\n- `FP` is the CTPH fingerprint — two hashes at two block sizes for similarity comparison\n- `tokens` is the hex-encoded normalized token stream\n\n## Choosing a similarity range\n\n| Range     | What it surfaces                                                           |\n| --------- | -------------------------------------------------------------------------- |\n| `96-100%` | Exact or near-exact structural duplicates — clear copy-paste candidates    |\n| `85-95%`  | Near-duplicates — likely copy-paste with trivial edits (renamed variables) |\n| `65-84%`  | Default range — strong structural similarity, often refactor candidates    |\n| `50-64%`  | Moderate similarity — same algorithmic shape, different details            |\n| `\u003C50%`    | Weak similarity — usually noise, rarely actionable                         |\n\n**Rules of thumb:**\n\n- Start with the default range (65-95%) — it's tuned to surface real duplicates without noise\n- Use `--rerank` to filter false positives via semantic embeddings when the CTPH results are noisy\n- Drop to 50-80% only when hunting for conceptual duplicates across divergent implementations\n- Use `--min-similarity 100` for a quick sanity check before merging two branches or after a bulk copy\n\n## Workflow\n\n1. Run `codeknit fingerprint .\u002Fsrc` to produce `.\u002Fskeleton\u002Ffingerprints.skt`\n2. Read the `[duplicates]` section — pairs are sorted with the strongest matches first\n3. For each flagged pair, open both files at the reported symbol names and compare\n4. If the similarity range looks too strict or too loose, re-run with adjusted `--min-similarity` \u002F `--max-similarity`\n5. If you see too many false positives, re-run with `--rerank` to filter via semantic embeddings\n6. For an audit of the full fingerprint set (e.g. custom tooling that compares specific pairs), re-run with `--show-all`\n\n## Important: what fingerprints measure\n\nFingerprints capture **structural shape**, not identifier names or semantic intent.\n\n- Two functions with identical structure but different names and types get **high similarity**\n- Two functions with the same intent but different control flow (iterative vs recursive) get **low similarity**\n- Docstrings, comments, and whitespace are ignored — they don't appear in the token stream\n- Variable names and string literals are normalized away — `x = \"foo\"` and `name = \"bar\"` are indistinguishable\n\nThis makes fingerprint detection robust against rename-refactors and cross-language copy-paste, but it means a match is a **signal to investigate**, not a proof of duplication. Always read both symbols before making a refactoring decision.\n\n## Limitations\n\n- Symbols with very short bodies (fewer than 4 tokens after normalization) are skipped — trivial getters and one-liners don't produce useful fingerprints\n- Cross-language matches work for equivalent constructs (a loop is a loop), but language-specific constructs (Go channels, Python decorators) can produce spurious low-similarity matches\n- The similarity score is a heuristic over a rolling hash, not an edit distance on source — treat percentages as a ranking, not an exact metric\n",{"data":41,"body":42},{"name":4,"description":6},{"type":43,"children":44},"root",[45,54,60,82,89,102,132,145,151,469,482,488,499,799,805,839,850,855,865,876,889,906,911,920,930,955,961,1068,1077,1113,1119,1197,1203,1215,1263,1275,1281,1299],{"type":46,"tag":47,"props":48,"children":50},"element","h1",{"id":49},"codeknit-fuzzy-duplicate-code-detection",[51],{"type":52,"value":53},"text","codeknit — fuzzy duplicate code detection",{"type":46,"tag":55,"props":56,"children":57},"p",{},[58],{"type":52,"value":59},"codeknit fingerprint computes Context-Triggered Piecewise Hashes (CTPH) over a normalized token stream for every function, method, variable, and type in a codebase. Similar code produces similar fingerprints, so near-duplicates are detected even across files and across programming languages.",{"type":46,"tag":55,"props":61,"children":62},{},[63,65,72,74,80],{"type":52,"value":64},"Token normalization strips variable names, string literals, and type annotations before hashing, so ",{"type":46,"tag":66,"props":67,"children":69},"code",{"className":68},[],[70],{"type":52,"value":71},"getUserById(id int)",{"type":52,"value":73}," and ",{"type":46,"tag":66,"props":75,"children":77},{"className":76},[],[78],{"type":52,"value":79},"fetch_user(user_id uint64)",{"type":52,"value":81}," compare structurally.",{"type":46,"tag":83,"props":84,"children":86},"h2",{"id":85},"when-to-use-this-skill",[87],{"type":52,"value":88},"When to use this skill",{"type":46,"tag":55,"props":90,"children":91},{},[92,94,100],{"type":52,"value":93},"Use ",{"type":46,"tag":66,"props":95,"children":97},{"className":96},[],[98],{"type":52,"value":99},"codeknit fingerprint",{"type":52,"value":101}," when the user asks to:",{"type":46,"tag":103,"props":104,"children":105},"ul",{},[106,112,117,122,127],{"type":46,"tag":107,"props":108,"children":109},"li",{},[110],{"type":52,"value":111},"Find duplicate or near-duplicate code",{"type":46,"tag":107,"props":113,"children":114},{},[115],{"type":52,"value":116},"Identify refactoring candidates (copy-paste, DRY violations)",{"type":46,"tag":107,"props":118,"children":119},{},[120],{"type":52,"value":121},"Spot semantically equivalent code across files or languages",{"type":46,"tag":107,"props":123,"children":124},{},[125],{"type":52,"value":126},"Audit a codebase before a large refactor",{"type":46,"tag":107,"props":128,"children":129},{},[130],{"type":52,"value":131},"Compare two implementations for structural similarity",{"type":46,"tag":55,"props":133,"children":134},{},[135,137,143],{"type":52,"value":136},"Do not use it for: \"what does this function do\", \"find callers of X\", or other structural questions. Use ",{"type":46,"tag":66,"props":138,"children":140},{"className":139},[],[141],{"type":52,"value":142},"codeknit-parse",{"type":52,"value":144}," for those.",{"type":46,"tag":83,"props":146,"children":148},{"id":147},"quick-start",[149],{"type":52,"value":150},"Quick start",{"type":46,"tag":152,"props":153,"children":158},"pre",{"className":154,"code":155,"language":156,"meta":157,"style":157},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Default: find near-duplicates with 65-95% similarity\ncodeknit fingerprint .\u002Fsrc\n\n# Exact duplicates only\ncodeknit fingerprint .\u002Fsrc --min-similarity 100\n\n# Moderately similar code (50-80%)\ncodeknit fingerprint .\u002Fsrc --min-similarity 50 --max-similarity 80\n\n# Semantic reranking — filters false positives via Ollama embeddings\n# requires: ollama serve && ollama pull qwen3-embedding:0.6b\ncodeknit fingerprint .\u002Fsrc --rerank\n\n# Semantic reranking with a different model\ncodeknit fingerprint .\u002Fsrc --rerank --model qwen3-embedding:4b\n\n# Include the full per-symbol fingerprint listing in output\ncodeknit fingerprint .\u002Fsrc --show-all\n\n# Custom output path\ncodeknit fingerprint .\u002Fsrc -o duplicates.skt\n","bash","",[159],{"type":46,"tag":66,"props":160,"children":161},{"__ignoreMap":157},[162,174,195,204,213,241,249,258,293,301,310,319,340,348,357,388,396,405,426,434,443],{"type":46,"tag":163,"props":164,"children":167},"span",{"class":165,"line":166},"line",1,[168],{"type":46,"tag":163,"props":169,"children":171},{"style":170},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[172],{"type":52,"value":173},"# Default: find near-duplicates with 65-95% similarity\n",{"type":46,"tag":163,"props":175,"children":177},{"class":165,"line":176},2,[178,184,190],{"type":46,"tag":163,"props":179,"children":181},{"style":180},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[182],{"type":52,"value":183},"codeknit",{"type":46,"tag":163,"props":185,"children":187},{"style":186},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[188],{"type":52,"value":189}," fingerprint",{"type":46,"tag":163,"props":191,"children":192},{"style":186},[193],{"type":52,"value":194}," .\u002Fsrc\n",{"type":46,"tag":163,"props":196,"children":197},{"class":165,"line":26},[198],{"type":46,"tag":163,"props":199,"children":201},{"emptyLinePlaceholder":200},true,[202],{"type":52,"value":203},"\n",{"type":46,"tag":163,"props":205,"children":207},{"class":165,"line":206},4,[208],{"type":46,"tag":163,"props":209,"children":210},{"style":170},[211],{"type":52,"value":212},"# Exact duplicates only\n",{"type":46,"tag":163,"props":214,"children":216},{"class":165,"line":215},5,[217,221,225,230,235],{"type":46,"tag":163,"props":218,"children":219},{"style":180},[220],{"type":52,"value":183},{"type":46,"tag":163,"props":222,"children":223},{"style":186},[224],{"type":52,"value":189},{"type":46,"tag":163,"props":226,"children":227},{"style":186},[228],{"type":52,"value":229}," .\u002Fsrc",{"type":46,"tag":163,"props":231,"children":232},{"style":186},[233],{"type":52,"value":234}," --min-similarity",{"type":46,"tag":163,"props":236,"children":238},{"style":237},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[239],{"type":52,"value":240}," 100\n",{"type":46,"tag":163,"props":242,"children":244},{"class":165,"line":243},6,[245],{"type":46,"tag":163,"props":246,"children":247},{"emptyLinePlaceholder":200},[248],{"type":52,"value":203},{"type":46,"tag":163,"props":250,"children":252},{"class":165,"line":251},7,[253],{"type":46,"tag":163,"props":254,"children":255},{"style":170},[256],{"type":52,"value":257},"# Moderately similar code (50-80%)\n",{"type":46,"tag":163,"props":259,"children":261},{"class":165,"line":260},8,[262,266,270,274,278,283,288],{"type":46,"tag":163,"props":263,"children":264},{"style":180},[265],{"type":52,"value":183},{"type":46,"tag":163,"props":267,"children":268},{"style":186},[269],{"type":52,"value":189},{"type":46,"tag":163,"props":271,"children":272},{"style":186},[273],{"type":52,"value":229},{"type":46,"tag":163,"props":275,"children":276},{"style":186},[277],{"type":52,"value":234},{"type":46,"tag":163,"props":279,"children":280},{"style":237},[281],{"type":52,"value":282}," 50",{"type":46,"tag":163,"props":284,"children":285},{"style":186},[286],{"type":52,"value":287}," --max-similarity",{"type":46,"tag":163,"props":289,"children":290},{"style":237},[291],{"type":52,"value":292}," 80\n",{"type":46,"tag":163,"props":294,"children":296},{"class":165,"line":295},9,[297],{"type":46,"tag":163,"props":298,"children":299},{"emptyLinePlaceholder":200},[300],{"type":52,"value":203},{"type":46,"tag":163,"props":302,"children":304},{"class":165,"line":303},10,[305],{"type":46,"tag":163,"props":306,"children":307},{"style":170},[308],{"type":52,"value":309},"# Semantic reranking — filters false positives via Ollama embeddings\n",{"type":46,"tag":163,"props":311,"children":313},{"class":165,"line":312},11,[314],{"type":46,"tag":163,"props":315,"children":316},{"style":170},[317],{"type":52,"value":318},"# requires: ollama serve && ollama pull qwen3-embedding:0.6b\n",{"type":46,"tag":163,"props":320,"children":322},{"class":165,"line":321},12,[323,327,331,335],{"type":46,"tag":163,"props":324,"children":325},{"style":180},[326],{"type":52,"value":183},{"type":46,"tag":163,"props":328,"children":329},{"style":186},[330],{"type":52,"value":189},{"type":46,"tag":163,"props":332,"children":333},{"style":186},[334],{"type":52,"value":229},{"type":46,"tag":163,"props":336,"children":337},{"style":186},[338],{"type":52,"value":339}," --rerank\n",{"type":46,"tag":163,"props":341,"children":343},{"class":165,"line":342},13,[344],{"type":46,"tag":163,"props":345,"children":346},{"emptyLinePlaceholder":200},[347],{"type":52,"value":203},{"type":46,"tag":163,"props":349,"children":351},{"class":165,"line":350},14,[352],{"type":46,"tag":163,"props":353,"children":354},{"style":170},[355],{"type":52,"value":356},"# Semantic reranking with a different model\n",{"type":46,"tag":163,"props":358,"children":360},{"class":165,"line":359},15,[361,365,369,373,378,383],{"type":46,"tag":163,"props":362,"children":363},{"style":180},[364],{"type":52,"value":183},{"type":46,"tag":163,"props":366,"children":367},{"style":186},[368],{"type":52,"value":189},{"type":46,"tag":163,"props":370,"children":371},{"style":186},[372],{"type":52,"value":229},{"type":46,"tag":163,"props":374,"children":375},{"style":186},[376],{"type":52,"value":377}," --rerank",{"type":46,"tag":163,"props":379,"children":380},{"style":186},[381],{"type":52,"value":382}," --model",{"type":46,"tag":163,"props":384,"children":385},{"style":186},[386],{"type":52,"value":387}," qwen3-embedding:4b\n",{"type":46,"tag":163,"props":389,"children":391},{"class":165,"line":390},16,[392],{"type":46,"tag":163,"props":393,"children":394},{"emptyLinePlaceholder":200},[395],{"type":52,"value":203},{"type":46,"tag":163,"props":397,"children":399},{"class":165,"line":398},17,[400],{"type":46,"tag":163,"props":401,"children":402},{"style":170},[403],{"type":52,"value":404},"# Include the full per-symbol fingerprint listing in output\n",{"type":46,"tag":163,"props":406,"children":408},{"class":165,"line":407},18,[409,413,417,421],{"type":46,"tag":163,"props":410,"children":411},{"style":180},[412],{"type":52,"value":183},{"type":46,"tag":163,"props":414,"children":415},{"style":186},[416],{"type":52,"value":189},{"type":46,"tag":163,"props":418,"children":419},{"style":186},[420],{"type":52,"value":229},{"type":46,"tag":163,"props":422,"children":423},{"style":186},[424],{"type":52,"value":425}," --show-all\n",{"type":46,"tag":163,"props":427,"children":429},{"class":165,"line":428},19,[430],{"type":46,"tag":163,"props":431,"children":432},{"emptyLinePlaceholder":200},[433],{"type":52,"value":203},{"type":46,"tag":163,"props":435,"children":437},{"class":165,"line":436},20,[438],{"type":46,"tag":163,"props":439,"children":440},{"style":170},[441],{"type":52,"value":442},"# Custom output path\n",{"type":46,"tag":163,"props":444,"children":446},{"class":165,"line":445},21,[447,451,455,459,464],{"type":46,"tag":163,"props":448,"children":449},{"style":180},[450],{"type":52,"value":183},{"type":46,"tag":163,"props":452,"children":453},{"style":186},[454],{"type":52,"value":189},{"type":46,"tag":163,"props":456,"children":457},{"style":186},[458],{"type":52,"value":229},{"type":46,"tag":163,"props":460,"children":461},{"style":186},[462],{"type":52,"value":463}," -o",{"type":46,"tag":163,"props":465,"children":466},{"style":186},[467],{"type":52,"value":468}," duplicates.skt\n",{"type":46,"tag":55,"props":470,"children":471},{},[472,474,480],{"type":52,"value":473},"Output is written to ",{"type":46,"tag":66,"props":475,"children":477},{"className":476},[],[478],{"type":52,"value":479},".\u002Fskeleton\u002Ffingerprints.skt",{"type":52,"value":481}," by default.",{"type":46,"tag":83,"props":483,"children":485},{"id":484},"command-reference",[486],{"type":52,"value":487},"Command reference",{"type":46,"tag":489,"props":490,"children":492},"h3",{"id":491},"codeknit-fingerprint-input-path",[493],{"type":46,"tag":66,"props":494,"children":496},{"className":495},[],[497],{"type":52,"value":498},"codeknit fingerprint \u003Cinput-path>",{"type":46,"tag":500,"props":501,"children":502},"table",{},[503,527],{"type":46,"tag":504,"props":505,"children":506},"thead",{},[507],{"type":46,"tag":508,"props":509,"children":510},"tr",{},[511,517,522],{"type":46,"tag":512,"props":513,"children":514},"th",{},[515],{"type":52,"value":516},"Flag",{"type":46,"tag":512,"props":518,"children":519},{},[520],{"type":52,"value":521},"Default",{"type":46,"tag":512,"props":523,"children":524},{},[525],{"type":52,"value":526},"Description",{"type":46,"tag":528,"props":529,"children":530},"tbody",{},[531,573,599,625,659,692,723,748,774],{"type":46,"tag":508,"props":532,"children":533},{},[534,552,560],{"type":46,"tag":535,"props":536,"children":537},"td",{},[538,544,546],{"type":46,"tag":66,"props":539,"children":541},{"className":540},[],[542],{"type":52,"value":543},"-o",{"type":52,"value":545},", ",{"type":46,"tag":66,"props":547,"children":549},{"className":548},[],[550],{"type":52,"value":551},"--output",{"type":46,"tag":535,"props":553,"children":554},{},[555],{"type":46,"tag":66,"props":556,"children":558},{"className":557},[],[559],{"type":52,"value":479},{"type":46,"tag":535,"props":561,"children":562},{},[563,565,571],{"type":52,"value":564},"Output ",{"type":46,"tag":66,"props":566,"children":568},{"className":567},[],[569],{"type":52,"value":570},".skt",{"type":52,"value":572}," file path",{"type":46,"tag":508,"props":574,"children":575},{},[576,585,594],{"type":46,"tag":535,"props":577,"children":578},{},[579],{"type":46,"tag":66,"props":580,"children":582},{"className":581},[],[583],{"type":52,"value":584},"--min-similarity",{"type":46,"tag":535,"props":586,"children":587},{},[588],{"type":46,"tag":66,"props":589,"children":591},{"className":590},[],[592],{"type":52,"value":593},"65",{"type":46,"tag":535,"props":595,"children":596},{},[597],{"type":52,"value":598},"Minimum similarity percentage to report (0-100)",{"type":46,"tag":508,"props":600,"children":601},{},[602,611,620],{"type":46,"tag":535,"props":603,"children":604},{},[605],{"type":46,"tag":66,"props":606,"children":608},{"className":607},[],[609],{"type":52,"value":610},"--max-similarity",{"type":46,"tag":535,"props":612,"children":613},{},[614],{"type":46,"tag":66,"props":615,"children":617},{"className":616},[],[618],{"type":52,"value":619},"95",{"type":46,"tag":535,"props":621,"children":622},{},[623],{"type":52,"value":624},"Maximum similarity percentage to report (0-100)",{"type":46,"tag":508,"props":626,"children":627},{},[628,637,646],{"type":46,"tag":535,"props":629,"children":630},{},[631],{"type":46,"tag":66,"props":632,"children":634},{"className":633},[],[635],{"type":52,"value":636},"--show-all",{"type":46,"tag":535,"props":638,"children":639},{},[640],{"type":46,"tag":66,"props":641,"children":643},{"className":642},[],[644],{"type":52,"value":645},"false",{"type":46,"tag":535,"props":647,"children":648},{},[649,651,657],{"type":52,"value":650},"Also emit the ",{"type":46,"tag":66,"props":652,"children":654},{"className":653},[],[655],{"type":52,"value":656},"[fingerprints]",{"type":52,"value":658}," section with raw token data",{"type":46,"tag":508,"props":660,"children":661},{},[662,671,679],{"type":46,"tag":535,"props":663,"children":664},{},[665],{"type":46,"tag":66,"props":666,"children":668},{"className":667},[],[669],{"type":52,"value":670},"--rerank",{"type":46,"tag":535,"props":672,"children":673},{},[674],{"type":46,"tag":66,"props":675,"children":677},{"className":676},[],[678],{"type":52,"value":645},{"type":46,"tag":535,"props":680,"children":681},{},[682,684,690],{"type":52,"value":683},"Rerank CTPH candidates with semantic embeddings via Ollama to eliminate false positives (requires: ",{"type":46,"tag":66,"props":685,"children":687},{"className":686},[],[688],{"type":52,"value":689},"ollama pull qwen3-embedding:0.6b",{"type":52,"value":691},")",{"type":46,"tag":508,"props":693,"children":694},{},[695,704,713],{"type":46,"tag":535,"props":696,"children":697},{},[698],{"type":46,"tag":66,"props":699,"children":701},{"className":700},[],[702],{"type":52,"value":703},"--model",{"type":46,"tag":535,"props":705,"children":706},{},[707],{"type":46,"tag":66,"props":708,"children":710},{"className":709},[],[711],{"type":52,"value":712},"qwen3-embedding:0.6b",{"type":46,"tag":535,"props":714,"children":715},{},[716,718],{"type":52,"value":717},"Ollama embedding model to use with ",{"type":46,"tag":66,"props":719,"children":721},{"className":720},[],[722],{"type":52,"value":670},{"type":46,"tag":508,"props":724,"children":725},{},[726,735,743],{"type":46,"tag":535,"props":727,"children":728},{},[729],{"type":46,"tag":66,"props":730,"children":732},{"className":731},[],[733],{"type":52,"value":734},"--collect-test",{"type":46,"tag":535,"props":736,"children":737},{},[738],{"type":46,"tag":66,"props":739,"children":741},{"className":740},[],[742],{"type":52,"value":645},{"type":46,"tag":535,"props":744,"children":745},{},[746],{"type":52,"value":747},"Include test files in analysis",{"type":46,"tag":508,"props":749,"children":750},{},[751,760,769],{"type":46,"tag":535,"props":752,"children":753},{},[754],{"type":46,"tag":66,"props":755,"children":757},{"className":756},[],[758],{"type":52,"value":759},"--workers",{"type":46,"tag":535,"props":761,"children":762},{},[763],{"type":46,"tag":66,"props":764,"children":766},{"className":765},[],[767],{"type":52,"value":768},"NumCPU",{"type":46,"tag":535,"props":770,"children":771},{},[772],{"type":52,"value":773},"Max concurrent parsing goroutines",{"type":46,"tag":508,"props":775,"children":776},{},[777,786,794],{"type":46,"tag":535,"props":778,"children":779},{},[780],{"type":46,"tag":66,"props":781,"children":783},{"className":782},[],[784],{"type":52,"value":785},"--verbose",{"type":46,"tag":535,"props":787,"children":788},{},[789],{"type":46,"tag":66,"props":790,"children":792},{"className":791},[],[793],{"type":52,"value":645},{"type":46,"tag":535,"props":795,"children":796},{},[797],{"type":52,"value":798},"Print progress and timing info",{"type":46,"tag":83,"props":800,"children":802},{"id":801},"output-format",[803],{"type":52,"value":804},"Output format",{"type":46,"tag":55,"props":806,"children":807},{},[808,810,815,817,823,825,830,832,837],{"type":52,"value":809},"The ",{"type":46,"tag":66,"props":811,"children":813},{"className":812},[],[814],{"type":52,"value":570},{"type":52,"value":816}," file always contains a ",{"type":46,"tag":66,"props":818,"children":820},{"className":819},[],[821],{"type":52,"value":822},"[duplicates]",{"type":52,"value":824}," section, and optionally a ",{"type":46,"tag":66,"props":826,"children":828},{"className":827},[],[829],{"type":52,"value":656},{"type":52,"value":831}," section when ",{"type":46,"tag":66,"props":833,"children":835},{"className":834},[],[836],{"type":52,"value":636},{"type":52,"value":838}," is passed.",{"type":46,"tag":489,"props":840,"children":842},{"id":841},"duplicates-section",[843,848],{"type":46,"tag":66,"props":844,"children":846},{"className":845},[],[847],{"type":52,"value":822},{"type":52,"value":849}," section",{"type":46,"tag":55,"props":851,"children":852},{},[853],{"type":52,"value":854},"One line per duplicate pair, sorted by similarity descending:",{"type":46,"tag":152,"props":856,"children":860},{"className":857,"code":859,"language":52},[858],"language-text","[duplicates]\n# similarity range: 65%-95%\nsimilarity:93%  pkg\u002Fuser.go::GetUser \u003C-> pkg\u002Fadmin.go::GetAdmin\nsimilarity:88%  src\u002Fauth.ts::validateToken \u003C-> src\u002Fsession.ts::validateSession\nsimilarity:81%  lib\u002Fmath.py::compute_tax \u003C-> lib\u002Fmath.py::compute_vat\n",[861],{"type":46,"tag":66,"props":862,"children":863},{"__ignoreMap":157},[864],{"type":52,"value":859},{"type":46,"tag":55,"props":866,"children":867},{},[868,870],{"type":52,"value":869},"Format: ",{"type":46,"tag":66,"props":871,"children":873},{"className":872},[],[874],{"type":52,"value":875},"similarity:\u003CN>%  \u003Cfile>::\u003Csymbol> \u003C-> \u003Cfile>::\u003Csymbol>",{"type":46,"tag":55,"props":877,"children":878},{},[879,881,887],{"type":52,"value":880},"When no duplicates match the similarity range, the section contains a single comment: ",{"type":46,"tag":66,"props":882,"children":884},{"className":883},[],[885],{"type":52,"value":886},"# no duplicates found",{"type":52,"value":888},".",{"type":46,"tag":489,"props":890,"children":892},{"id":891},"fingerprints-section-with-show-all",[893,898,900,905],{"type":46,"tag":66,"props":894,"children":896},{"className":895},[],[897],{"type":52,"value":656},{"type":52,"value":899}," section (with ",{"type":46,"tag":66,"props":901,"children":903},{"className":902},[],[904],{"type":52,"value":636},{"type":52,"value":691},{"type":46,"tag":55,"props":907,"children":908},{},[909],{"type":52,"value":910},"Grouped by source file. One line per symbol:",{"type":46,"tag":152,"props":912,"children":915},{"className":913,"code":914,"language":52},[858],"[fingerprints]\n## src\u002Fauth.ts\nvalidateToken  FP:3:a1b2c3...:d4e5f6...  tokens:8e0f1a2b...\nrefreshToken   FP:3:b2c3d4...:e5f6a7...  tokens:8e0f1a3c...\n",[916],{"type":46,"tag":66,"props":917,"children":918},{"__ignoreMap":157},[919],{"type":52,"value":914},{"type":46,"tag":55,"props":921,"children":922},{},[923,924],{"type":52,"value":869},{"type":46,"tag":66,"props":925,"children":927},{"className":926},[],[928],{"type":52,"value":929},"\u003Csymbol-name>  FP:\u003Cblocksize>:\u003Chash1>:\u003Chash2>  tokens:\u003Chex>",{"type":46,"tag":103,"props":931,"children":932},{},[933,944],{"type":46,"tag":107,"props":934,"children":935},{},[936,942],{"type":46,"tag":66,"props":937,"children":939},{"className":938},[],[940],{"type":52,"value":941},"FP",{"type":52,"value":943}," is the CTPH fingerprint — two hashes at two block sizes for similarity comparison",{"type":46,"tag":107,"props":945,"children":946},{},[947,953],{"type":46,"tag":66,"props":948,"children":950},{"className":949},[],[951],{"type":52,"value":952},"tokens",{"type":52,"value":954}," is the hex-encoded normalized token stream",{"type":46,"tag":83,"props":956,"children":958},{"id":957},"choosing-a-similarity-range",[959],{"type":52,"value":960},"Choosing a similarity range",{"type":46,"tag":500,"props":962,"children":963},{},[964,980],{"type":46,"tag":504,"props":965,"children":966},{},[967],{"type":46,"tag":508,"props":968,"children":969},{},[970,975],{"type":46,"tag":512,"props":971,"children":972},{},[973],{"type":52,"value":974},"Range",{"type":46,"tag":512,"props":976,"children":977},{},[978],{"type":52,"value":979},"What it surfaces",{"type":46,"tag":528,"props":981,"children":982},{},[983,1000,1017,1034,1051],{"type":46,"tag":508,"props":984,"children":985},{},[986,995],{"type":46,"tag":535,"props":987,"children":988},{},[989],{"type":46,"tag":66,"props":990,"children":992},{"className":991},[],[993],{"type":52,"value":994},"96-100%",{"type":46,"tag":535,"props":996,"children":997},{},[998],{"type":52,"value":999},"Exact or near-exact structural duplicates — clear copy-paste candidates",{"type":46,"tag":508,"props":1001,"children":1002},{},[1003,1012],{"type":46,"tag":535,"props":1004,"children":1005},{},[1006],{"type":46,"tag":66,"props":1007,"children":1009},{"className":1008},[],[1010],{"type":52,"value":1011},"85-95%",{"type":46,"tag":535,"props":1013,"children":1014},{},[1015],{"type":52,"value":1016},"Near-duplicates — likely copy-paste with trivial edits (renamed variables)",{"type":46,"tag":508,"props":1018,"children":1019},{},[1020,1029],{"type":46,"tag":535,"props":1021,"children":1022},{},[1023],{"type":46,"tag":66,"props":1024,"children":1026},{"className":1025},[],[1027],{"type":52,"value":1028},"65-84%",{"type":46,"tag":535,"props":1030,"children":1031},{},[1032],{"type":52,"value":1033},"Default range — strong structural similarity, often refactor candidates",{"type":46,"tag":508,"props":1035,"children":1036},{},[1037,1046],{"type":46,"tag":535,"props":1038,"children":1039},{},[1040],{"type":46,"tag":66,"props":1041,"children":1043},{"className":1042},[],[1044],{"type":52,"value":1045},"50-64%",{"type":46,"tag":535,"props":1047,"children":1048},{},[1049],{"type":52,"value":1050},"Moderate similarity — same algorithmic shape, different details",{"type":46,"tag":508,"props":1052,"children":1053},{},[1054,1063],{"type":46,"tag":535,"props":1055,"children":1056},{},[1057],{"type":46,"tag":66,"props":1058,"children":1060},{"className":1059},[],[1061],{"type":52,"value":1062},"\u003C50%",{"type":46,"tag":535,"props":1064,"children":1065},{},[1066],{"type":52,"value":1067},"Weak similarity — usually noise, rarely actionable",{"type":46,"tag":55,"props":1069,"children":1070},{},[1071],{"type":46,"tag":1072,"props":1073,"children":1074},"strong",{},[1075],{"type":52,"value":1076},"Rules of thumb:",{"type":46,"tag":103,"props":1078,"children":1079},{},[1080,1085,1096,1101],{"type":46,"tag":107,"props":1081,"children":1082},{},[1083],{"type":52,"value":1084},"Start with the default range (65-95%) — it's tuned to surface real duplicates without noise",{"type":46,"tag":107,"props":1086,"children":1087},{},[1088,1089,1094],{"type":52,"value":93},{"type":46,"tag":66,"props":1090,"children":1092},{"className":1091},[],[1093],{"type":52,"value":670},{"type":52,"value":1095}," to filter false positives via semantic embeddings when the CTPH results are noisy",{"type":46,"tag":107,"props":1097,"children":1098},{},[1099],{"type":52,"value":1100},"Drop to 50-80% only when hunting for conceptual duplicates across divergent implementations",{"type":46,"tag":107,"props":1102,"children":1103},{},[1104,1105,1111],{"type":52,"value":93},{"type":46,"tag":66,"props":1106,"children":1108},{"className":1107},[],[1109],{"type":52,"value":1110},"--min-similarity 100",{"type":52,"value":1112}," for a quick sanity check before merging two branches or after a bulk copy",{"type":46,"tag":83,"props":1114,"children":1116},{"id":1115},"workflow",[1117],{"type":52,"value":1118},"Workflow",{"type":46,"tag":1120,"props":1121,"children":1122},"ol",{},[1123,1141,1153,1158,1175,1187],{"type":46,"tag":107,"props":1124,"children":1125},{},[1126,1128,1134,1136],{"type":52,"value":1127},"Run ",{"type":46,"tag":66,"props":1129,"children":1131},{"className":1130},[],[1132],{"type":52,"value":1133},"codeknit fingerprint .\u002Fsrc",{"type":52,"value":1135}," to produce ",{"type":46,"tag":66,"props":1137,"children":1139},{"className":1138},[],[1140],{"type":52,"value":479},{"type":46,"tag":107,"props":1142,"children":1143},{},[1144,1146,1151],{"type":52,"value":1145},"Read the ",{"type":46,"tag":66,"props":1147,"children":1149},{"className":1148},[],[1150],{"type":52,"value":822},{"type":52,"value":1152}," section — pairs are sorted with the strongest matches first",{"type":46,"tag":107,"props":1154,"children":1155},{},[1156],{"type":52,"value":1157},"For each flagged pair, open both files at the reported symbol names and compare",{"type":46,"tag":107,"props":1159,"children":1160},{},[1161,1163,1168,1170],{"type":52,"value":1162},"If the similarity range looks too strict or too loose, re-run with adjusted ",{"type":46,"tag":66,"props":1164,"children":1166},{"className":1165},[],[1167],{"type":52,"value":584},{"type":52,"value":1169}," \u002F ",{"type":46,"tag":66,"props":1171,"children":1173},{"className":1172},[],[1174],{"type":52,"value":610},{"type":46,"tag":107,"props":1176,"children":1177},{},[1178,1180,1185],{"type":52,"value":1179},"If you see too many false positives, re-run with ",{"type":46,"tag":66,"props":1181,"children":1183},{"className":1182},[],[1184],{"type":52,"value":670},{"type":52,"value":1186}," to filter via semantic embeddings",{"type":46,"tag":107,"props":1188,"children":1189},{},[1190,1192],{"type":52,"value":1191},"For an audit of the full fingerprint set (e.g. custom tooling that compares specific pairs), re-run with ",{"type":46,"tag":66,"props":1193,"children":1195},{"className":1194},[],[1196],{"type":52,"value":636},{"type":46,"tag":83,"props":1198,"children":1200},{"id":1199},"important-what-fingerprints-measure",[1201],{"type":52,"value":1202},"Important: what fingerprints measure",{"type":46,"tag":55,"props":1204,"children":1205},{},[1206,1208,1213],{"type":52,"value":1207},"Fingerprints capture ",{"type":46,"tag":1072,"props":1209,"children":1210},{},[1211],{"type":52,"value":1212},"structural shape",{"type":52,"value":1214},", not identifier names or semantic intent.",{"type":46,"tag":103,"props":1216,"children":1217},{},[1218,1228,1238,1243],{"type":46,"tag":107,"props":1219,"children":1220},{},[1221,1223],{"type":52,"value":1222},"Two functions with identical structure but different names and types get ",{"type":46,"tag":1072,"props":1224,"children":1225},{},[1226],{"type":52,"value":1227},"high similarity",{"type":46,"tag":107,"props":1229,"children":1230},{},[1231,1233],{"type":52,"value":1232},"Two functions with the same intent but different control flow (iterative vs recursive) get ",{"type":46,"tag":1072,"props":1234,"children":1235},{},[1236],{"type":52,"value":1237},"low similarity",{"type":46,"tag":107,"props":1239,"children":1240},{},[1241],{"type":52,"value":1242},"Docstrings, comments, and whitespace are ignored — they don't appear in the token stream",{"type":46,"tag":107,"props":1244,"children":1245},{},[1246,1248,1254,1255,1261],{"type":52,"value":1247},"Variable names and string literals are normalized away — ",{"type":46,"tag":66,"props":1249,"children":1251},{"className":1250},[],[1252],{"type":52,"value":1253},"x = \"foo\"",{"type":52,"value":73},{"type":46,"tag":66,"props":1256,"children":1258},{"className":1257},[],[1259],{"type":52,"value":1260},"name = \"bar\"",{"type":52,"value":1262}," are indistinguishable",{"type":46,"tag":55,"props":1264,"children":1265},{},[1266,1268,1273],{"type":52,"value":1267},"This makes fingerprint detection robust against rename-refactors and cross-language copy-paste, but it means a match is a ",{"type":46,"tag":1072,"props":1269,"children":1270},{},[1271],{"type":52,"value":1272},"signal to investigate",{"type":52,"value":1274},", not a proof of duplication. Always read both symbols before making a refactoring decision.",{"type":46,"tag":83,"props":1276,"children":1278},{"id":1277},"limitations",[1279],{"type":52,"value":1280},"Limitations",{"type":46,"tag":103,"props":1282,"children":1283},{},[1284,1289,1294],{"type":46,"tag":107,"props":1285,"children":1286},{},[1287],{"type":52,"value":1288},"Symbols with very short bodies (fewer than 4 tokens after normalization) are skipped — trivial getters and one-liners don't produce useful fingerprints",{"type":46,"tag":107,"props":1290,"children":1291},{},[1292],{"type":52,"value":1293},"Cross-language matches work for equivalent constructs (a loop is a loop), but language-specific constructs (Go channels, Python decorators) can produce spurious low-similarity matches",{"type":46,"tag":107,"props":1295,"children":1296},{},[1297],{"type":52,"value":1298},"The similarity score is a heuristic over a rolling hash, not an edit distance on source — treat percentages as a ranking, not an exact metric",{"type":46,"tag":1300,"props":1301,"children":1302},"style",{},[1303],{"type":52,"value":1304},"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":1306,"total":1484},[1307,1326,1347,1357,1370,1383,1393,1403,1424,1439,1454,1469],{"slug":1308,"name":1308,"fn":1309,"description":1310,"org":1311,"tags":1312,"stars":1323,"repoUrl":1324,"updatedAt":1325},"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},[1313,1316,1317,1320],{"name":1314,"slug":1315,"type":16},"AWS","aws",{"name":24,"slug":25,"type":16},{"name":1318,"slug":1319,"type":16},"Logs","logs",{"name":1321,"slug":1322,"type":16},"Observability","observability",9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":1327,"name":1328,"fn":1329,"description":1330,"org":1331,"tags":1332,"stars":1323,"repoUrl":1324,"updatedAt":1346},"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},[1333,1336,1337,1340,1343],{"name":1334,"slug":1335,"type":16},"Aurora","aurora",{"name":1314,"slug":1315,"type":16},{"name":1338,"slug":1339,"type":16},"Database","database",{"name":1341,"slug":1342,"type":16},"Serverless","serverless",{"name":1344,"slug":1345,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":1348,"name":1349,"fn":1329,"description":1330,"org":1350,"tags":1351,"stars":1323,"repoUrl":1324,"updatedAt":1356},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1352,1353,1354,1355],{"name":1314,"slug":1315,"type":16},{"name":1338,"slug":1339,"type":16},{"name":1341,"slug":1342,"type":16},{"name":1344,"slug":1345,"type":16},"2026-07-12T08:36:42.694299",{"slug":1358,"name":1359,"fn":1329,"description":1330,"org":1360,"tags":1361,"stars":1323,"repoUrl":1324,"updatedAt":1369},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1362,1363,1364,1367,1368],{"name":1314,"slug":1315,"type":16},{"name":1338,"slug":1339,"type":16},{"name":1365,"slug":1366,"type":16},"Migration","migration",{"name":1341,"slug":1342,"type":16},{"name":1344,"slug":1345,"type":16},"2026-07-12T08:36:38.584057",{"slug":1371,"name":1372,"fn":1329,"description":1330,"org":1373,"tags":1374,"stars":1323,"repoUrl":1324,"updatedAt":1382},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1375,1376,1377,1380,1381],{"name":1314,"slug":1315,"type":16},{"name":1338,"slug":1339,"type":16},{"name":1378,"slug":1379,"type":16},"PostgreSQL","postgresql",{"name":1341,"slug":1342,"type":16},{"name":1344,"slug":1345,"type":16},"2026-07-12T08:36:46.530743",{"slug":1384,"name":1385,"fn":1329,"description":1330,"org":1386,"tags":1387,"stars":1323,"repoUrl":1324,"updatedAt":1392},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1388,1389,1390,1391],{"name":1314,"slug":1315,"type":16},{"name":1338,"slug":1339,"type":16},{"name":1341,"slug":1342,"type":16},{"name":1344,"slug":1345,"type":16},"2026-07-12T08:36:48.104182",{"slug":1394,"name":1394,"fn":1329,"description":1330,"org":1395,"tags":1396,"stars":1323,"repoUrl":1324,"updatedAt":1402},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1397,1398,1399,1400,1401],{"name":1314,"slug":1315,"type":16},{"name":1338,"slug":1339,"type":16},{"name":1365,"slug":1366,"type":16},{"name":1341,"slug":1342,"type":16},{"name":1344,"slug":1345,"type":16},"2026-07-12T08:36:36.374512",{"slug":1404,"name":1404,"fn":1405,"description":1406,"org":1407,"tags":1408,"stars":1421,"repoUrl":1422,"updatedAt":1423},"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},[1409,1412,1415,1418],{"name":1410,"slug":1411,"type":16},"Accounting","accounting",{"name":1413,"slug":1414,"type":16},"Analytics","analytics",{"name":1416,"slug":1417,"type":16},"Cost Optimization","cost-optimization",{"name":1419,"slug":1420,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":1425,"name":1425,"fn":1426,"description":1427,"org":1428,"tags":1429,"stars":1421,"repoUrl":1422,"updatedAt":1438},"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},[1430,1431,1432,1435],{"name":1314,"slug":1315,"type":16},{"name":1419,"slug":1420,"type":16},{"name":1433,"slug":1434,"type":16},"Management","management",{"name":1436,"slug":1437,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":1440,"name":1440,"fn":1441,"description":1442,"org":1443,"tags":1444,"stars":1421,"repoUrl":1422,"updatedAt":1453},"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},[1445,1446,1447,1450],{"name":1413,"slug":1414,"type":16},{"name":1419,"slug":1420,"type":16},{"name":1448,"slug":1449,"type":16},"Financial Statements","financial-statements",{"name":1451,"slug":1452,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":1455,"name":1455,"fn":1456,"description":1457,"org":1458,"tags":1459,"stars":1421,"repoUrl":1422,"updatedAt":1468},"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},[1460,1463,1466],{"name":1461,"slug":1462,"type":16},"Automation","automation",{"name":1464,"slug":1465,"type":16},"Documents","documents",{"name":1467,"slug":1455,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":1470,"name":1470,"fn":1471,"description":1472,"org":1473,"tags":1474,"stars":1421,"repoUrl":1422,"updatedAt":1483},"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},[1475,1476,1479,1480],{"name":1410,"slug":1411,"type":16},{"name":1477,"slug":1478,"type":16},"Data Analysis","data-analysis",{"name":1419,"slug":1420,"type":16},{"name":1481,"slug":1482,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150,{"items":1486,"total":176},[1487,1494],{"slug":4,"name":4,"fn":5,"description":6,"org":1488,"tags":1489,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1490,1491,1492,1493],{"name":21,"slug":22,"type":16},{"name":24,"slug":25,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"slug":142,"name":142,"fn":1495,"description":1496,"org":1497,"tags":1498,"stars":26,"repoUrl":27,"updatedAt":1504},"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},[1499,1502,1503],{"name":1500,"slug":1501,"type":16},"Architecture","architecture",{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},"2026-07-12T08:38:38.085555"]