[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6E0FTVRYCXGKN4D7EXRYPD6":3,"skill-same:01M6E0FTVRYCXGKN4D7EXRYPD6":72},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":14,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6E0FTVRYCXGKN4D7EXRYPD6","rag-inspect",null,"Examine what's actually stored in the index for specific items. Use for RAG debug and chunk inspection, for example inspect chunks and see what's indexed.","LucasSantana-Dev\u002Fforgekit","LucasSantana-Dev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F98131142?v=4","01M6E038X8H7VE9GCEJP9PT5CA","Lucas Santana","01M6E0391WB0JYZTWXEBR9WSXA",1,"MIT","https:\u002F\u002Fgithub.com\u002FLucasSantana-Dev\u002Fforgekit\u002Fblob\u002Fmain\u002Fpackages\u002Fcatalog\u002Fcatalog\u002Fskills\u002Fadt-rag-inspect\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33],"rag","rag inspect","inspect","debug","chunk","index","use","example","for","chunks","2026-11-10 10:12:30",false,"---\nname: rag-inspect\ndescription: Examine what's actually stored in the index for specific items. Use for RAG debug and chunk inspection, for example inspect chunks and see what's indexed.\ntriggers:\n  - rag inspect\n  - inspect chunks\n  - what's indexed\n  - chunk inspection\n  - rag debug\n---\n\n# RAG Inspect\n\nQuery the index database directly to understand chunk counts, sizes, metadata, and content. Use when you need to diagnose index health, find what's missing, or audit coverage.\n\n## Quick index summary\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \"SELECT COUNT(*) FROM chunks;\"\n```\n\nExpected: ~14,355 chunks\n\n## Chunks by source type\n\nSee how the corpus is distributed across different content categories:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT source_type, COUNT(*) as chunk_count, \n       ROUND(AVG(LENGTH(text)), 0) as avg_size\nFROM chunks\nGROUP BY source_type\nORDER BY COUNT(*) DESC;\nEOF\n```\n\n**Example output:**\n```\nsource_type        chunk_count  avg_size\nskills             539          245\nhandoffs           259          312\ncode               1847         218\nstandards          54           401\nplans              198          267\n...\n```\n\n**Healthy baselines:**\n- `skills`: ≥500 chunks (comprehensive coverage)\n- `handoffs`: ≥200 chunks\n- `standards`, `codex`: ≥50 chunks combined\n- `code`: scales with repo size\n\n## Chunks by repository\n\nFind which repos are well-indexed and which are thin:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT repo, COUNT(*) as chunk_count\nFROM chunks\nWHERE repo IS NOT NULL\nGROUP BY repo\nORDER BY COUNT(*) DESC;\nEOF\n```\n\nRepos with \u003C50 chunks likely have gaps.\n\n## Chunks for a specific file\n\nFind all chunks extracted from a single source file:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT id, start_line, end_line, LENGTH(text) as size\nFROM chunks\nWHERE path LIKE '%filename%'\nORDER BY start_line;\nEOF\n```\n\nReplace `%filename%` with part of the file path. Example:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \\\n  \"SELECT id, start_line, end_line, LENGTH(text) FROM chunks WHERE path LIKE '%SKILL.md%' LIMIT 5;\"\n```\n\n## View chunk text\n\nRead the actual content of a chunk:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT text FROM chunks\nWHERE path LIKE '%standards\u002Fcode.md%'\nLIMIT 3;\nEOF\n```\n\nReplace the path and limit to control output size.\n\n## Find chunks by size\n\nToo small (\u003C80 chars) = truncated or useless. Too large (>2000 chars) = too coarse for retrieval.\n\n**Tiny chunks (potential truncation):**\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT path, LENGTH(text) as size, text\nFROM chunks\nWHERE LENGTH(text) \u003C 80\nORDER BY LENGTH(text)\nLIMIT 10;\nEOF\n```\n\n**Giant chunks (too coarse):**\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT path, LENGTH(text) as size\nFROM chunks\nWHERE LENGTH(text) > 2000\nORDER BY LENGTH(text) DESC\nLIMIT 10;\nEOF\n```\n\n**Ideal chunk size distribution:**\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT \n  CASE \n    WHEN LENGTH(text) \u003C 100 THEN 'tiny (\u003C100)'\n    WHEN LENGTH(text) \u003C 300 THEN 'small (100-300)'\n    WHEN LENGTH(text) \u003C 800 THEN 'medium (300-800)'\n    ELSE 'large (800+)'\n  END as size_bucket,\n  COUNT(*) as chunk_count,\n  ROUND(AVG(LENGTH(text)), 0) as avg_size\nFROM chunks\nGROUP BY size_bucket\nORDER BY avg_size;\nEOF\n```\n\nGoal: Most chunks in the 200–800 range.\n\n## Count chunks with missing metadata\n\nCheck if chunks have embeddings (nullable field):\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT COUNT(*) as no_embedding FROM chunks WHERE embedding IS NULL;\nEOF\n```\n\nZero is healthy. If >0, re-embed those chunks.\n\n## Chunks from a specific source type + repo combo\n\nCombine filters to find niche coverage:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT COUNT(*) FROM chunks\nWHERE source_type = 'code' AND repo = 'forgekit';\nEOF\n```\n\nReplace `source_type` and `repo` with values from earlier queries.\n\n## Check for duplicate chunks\n\nIdentical content in two chunks = potential index error:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT text, COUNT(*) as occurrences\nFROM chunks\nGROUP BY text\nHAVING COUNT(*) > 1\nORDER BY occurrences DESC;\nEOF\n```\n\nIf you find duplicates, note the paths and consider a full rebuild.\n\n## Good chunks vs. bad chunks\n\n| Attribute | Good | Bad |\n|-----------|------|-----|\n| Size | 200–800 chars | \u003C80 or >2000 |\n| Content | Coherent unit (paragraph, function, section) | Truncated mid-sentence or entire doc |\n| Metadata | path, start_line, end_line, source_type all set | Missing fields |\n| Language | Clear, keyword-rich | Noise, filler, or context-less |\n\n## Troubleshooting\n\n**\"Chunk count is much lower than expected\"**\n- Verify the index file exists: `ls -lh ~\u002F.claude\u002Frag-index\u002Findex.sqlite`\n- Check if a full rebuild is in progress\n- Run `report.py` to see the latest index state\n\n**\"Many chunks are \u003C100 chars\"**\n- Run the `adt-rag-index-rebuild` skill with `--full` to re-chunk\n- Or check `build.py` chunk size configuration\n\n**\"A repo has 0 chunks but has source files\"**\n- Verify the repo path is in `build.py`'s source list\n- Run incremental reindex for that repo: `build.py --incremental \u002Fpath\u002Fto\u002Frepo\u002F**\u002F*.py`\n\n## See also\n\n- `adt-rag-coverage` — audit corpus distribution by type and repo\n- `adt-rag-quality` — find zero-hit queries and weak retrievals\n- `adt-rag-index-rebuild` — reindex after findings require changes\n","# RAG Inspect\n\nQuery the index database directly to understand chunk counts, sizes, metadata, and content. Use when you need to diagnose index health, find what's missing, or audit coverage.\n\n## Quick index summary\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \"SELECT COUNT(*) FROM chunks;\"\n```\n\nExpected: ~14,355 chunks\n\n## Chunks by source type\n\nSee how the corpus is distributed across different content categories:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT source_type, COUNT(*) as chunk_count, \n       ROUND(AVG(LENGTH(text)), 0) as avg_size\nFROM chunks\nGROUP BY source_type\nORDER BY COUNT(*) DESC;\nEOF\n```\n\n**Example output:**\n```\nsource_type        chunk_count  avg_size\nskills             539          245\nhandoffs           259          312\ncode               1847         218\nstandards          54           401\nplans              198          267\n...\n```\n\n**Healthy baselines:**\n- `skills`: ≥500 chunks (comprehensive coverage)\n- `handoffs`: ≥200 chunks\n- `standards`, `codex`: ≥50 chunks combined\n- `code`: scales with repo size\n\n## Chunks by repository\n\nFind which repos are well-indexed and which are thin:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT repo, COUNT(*) as chunk_count\nFROM chunks\nWHERE repo IS NOT NULL\nGROUP BY repo\nORDER BY COUNT(*) DESC;\nEOF\n```\n\nRepos with \u003C50 chunks likely have gaps.\n\n## Chunks for a specific file\n\nFind all chunks extracted from a single source file:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT id, start_line, end_line, LENGTH(text) as size\nFROM chunks\nWHERE path LIKE '%filename%'\nORDER BY start_line;\nEOF\n```\n\nReplace `%filename%` with part of the file path. Example:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \\\n  \"SELECT id, start_line, end_line, LENGTH(text) FROM chunks WHERE path LIKE '%SKILL.md%' LIMIT 5;\"\n```\n\n## View chunk text\n\nRead the actual content of a chunk:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT text FROM chunks\nWHERE path LIKE '%standards\u002Fcode.md%'\nLIMIT 3;\nEOF\n```\n\nReplace the path and limit to control output size.\n\n## Find chunks by size\n\nToo small (\u003C80 chars) = truncated or useless. Too large (>2000 chars) = too coarse for retrieval.\n\n**Tiny chunks (potential truncation):**\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT path, LENGTH(text) as size, text\nFROM chunks\nWHERE LENGTH(text) \u003C 80\nORDER BY LENGTH(text)\nLIMIT 10;\nEOF\n```\n\n**Giant chunks (too coarse):**\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT path, LENGTH(text) as size\nFROM chunks\nWHERE LENGTH(text) > 2000\nORDER BY LENGTH(text) DESC\nLIMIT 10;\nEOF\n```\n\n**Ideal chunk size distribution:**\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT \n  CASE \n    WHEN LENGTH(text) \u003C 100 THEN 'tiny (\u003C100)'\n    WHEN LENGTH(text) \u003C 300 THEN 'small (100-300)'\n    WHEN LENGTH(text) \u003C 800 THEN 'medium (300-800)'\n    ELSE 'large (800+)'\n  END as size_bucket,\n  COUNT(*) as chunk_count,\n  ROUND(AVG(LENGTH(text)), 0) as avg_size\nFROM chunks\nGROUP BY size_bucket\nORDER BY avg_size;\nEOF\n```\n\nGoal: Most chunks in the 200–800 range.\n\n## Count chunks with missing metadata\n\nCheck if chunks have embeddings (nullable field):\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT COUNT(*) as no_embedding FROM chunks WHERE embedding IS NULL;\nEOF\n```\n\nZero is healthy. If >0, re-embed those chunks.\n\n## Chunks from a specific source type + repo combo\n\nCombine filters to find niche coverage:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT COUNT(*) FROM chunks\nWHERE source_type = 'code' AND repo = 'forgekit';\nEOF\n```\n\nReplace `source_type` and `repo` with values from earlier queries.\n\n## Check for duplicate chunks\n\nIdentical content in two chunks = potential index error:\n\n```bash\nsqlite3 ~\u002F.claude\u002Frag-index\u002Findex.sqlite \u003C\u003C 'EOF'\nSELECT text, COUNT(*) as occurrences\nFROM chunks\nGROUP BY text\nHAVING COUNT(*) > 1\nORDER BY occurrences DESC;\nEOF\n```\n\nIf you find duplicates, note the paths and consider a full rebuild.\n\n## Good chunks vs. bad chunks\n\n| Attribute | Good | Bad |\n|-----------|------|-----|\n| Size | 200–800 chars | \u003C80 or >2000 |\n| Content | Coherent unit (paragraph, function, section) | Truncated mid-sentence or entire doc |\n| Metadata | path, start_line, end_line, source_type all set | Missing fields |\n| Language | Clear, keyword-rich | Noise, filler, or context-less |\n\n## Troubleshooting\n\n**\"Chunk count is much lower than expected\"**\n- Verify the index file exists: `ls -lh ~\u002F.claude\u002Frag-index\u002Findex.sqlite`\n- Check if a full rebuild is in progress\n- Run `report.py` to see the latest index state\n\n**\"Many chunks are \u003C100 chars\"**\n- Run the `adt-rag-index-rebuild` skill with `--full` to re-chunk\n- Or check `build.py` chunk size configuration\n\n**\"A repo has 0 chunks but has source files\"**\n- Verify the repo path is in `build.py`'s source list\n- Run incremental reindex for that repo: `build.py --incremental \u002Fpath\u002Fto\u002Frepo\u002F**\u002F*.py`\n\n## See also\n\n- `adt-rag-coverage` — audit corpus distribution by type and repo\n- `adt-rag-quality` — find zero-hit queries and weak retrievals\n- `adt-rag-index-rebuild` — reindex after findings require changes\n",{"name":5,"triggers":39,"description":7},[25,40,41,42,43],"inspect chunks","what's indexed","chunk inspection","rag debug","main","f2e470f7ead3f9982aee7aadc1aa5bef5d4db833","packages\u002Fcatalog\u002Fcatalog\u002Fskills\u002Fadt-rag-inspect","https:\u002F\u002Fgithub.com\u002FLucasSantana-Dev\u002Fforgekit","https:\u002F\u002Fgithub.com\u002FLucasSantana-Dev","https:\u002F\u002Flucassantana.tech","Senior engineer. AI agent tooling and evals on Node\u002FTS backends. Brazil, UTC-3.","2026-11-11 07:05:28",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add LucasSantana-Dev\u002Fforgekit --skill rag-inspect",{"tool":58,"command":59},"bunx","bunx skills add LucasSantana-Dev\u002Fforgekit --skill rag-inspect",{"tool":61,"command":62},"pnpm","pnpm dlx skills add LucasSantana-Dev\u002Fforgekit --skill rag-inspect","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLucasSantana-Dev\u002Fforgekit\u002Fblob\u002Fmain\u002Fpackages\u002Fcatalog\u002Fcatalog\u002Fskills\u002Fadt-rag-inspect\u002FSKILL.md",true,[66],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"manifest.json","REFERENCE","参考文档",870,"https:\u002F\u002Fgithub.com\u002FLucasSantana-Dev\u002Fforgekit\u002Fblob\u002Fmain\u002Fpackages\u002Fcatalog\u002Fcatalog\u002Fskills\u002Fadt-rag-inspect\u002Fmanifest.json",[73,101,133,154,163,181],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":80,"publishedAt":34},"01M6WR9SQGQ5WDEJY9HH3T93E8","token-audit","Audit historical Claude Code token usage from JSONL session files — shows total spend, cache hit rates, top costly sessions, weekly trends, and where tokens are going. Run after heavy sessions or weekly to measure optimization impact. Answers how many tokens a session used, how expensive was that session, session cost, and token usage report.","https:\u002F\u002Fgithub.com\u002FLucasSantana-Dev\u002Fforgekit\u002Fblob\u002Fmain\u002Fpackages\u002Fcatalog\u002Fcatalog\u002Fskills\u002Fadt-token-audit\u002FSKILL.md",[79],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100],"audit","token","token audit","session","rate","weekly","top","usage","jsonl","usage report","impact","tokens","files","cost","how","Optimization","cache","code","run","sessions",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":112,"publishedAt":34},"01M6WR919T3NGWMZ5R5XKWX9KN","smart-model-route","Auto-classify prompt complexity via Haiku (with heuristic fallback) and inject model routing hints for Agent tool calls. Wired as a UserPromptSubmit hook — fires on every prompt, routes low tasks to Haiku, standard to Sonnet, complex to Sonnet with thorough reasoning, and critical (security\u002Farch\u002Fmigrations) to Opus. Handles model selection, for example choose model by task complexity.","https:\u002F\u002Fgithub.com\u002FLucasSantana-Dev\u002Fforgekit\u002Fblob\u002Fmain\u002Fpackages\u002Fcatalog\u002Fcatalog\u002Fskills\u002Fadt-smart-model-route\u002FSKILL.md",[107],{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132],"smart model route","route","model route","model","security","model selection","tasks","critical","arch","classify","selection","fallback","complexity","auto","opus","haiku","choose","hook","agent tool","sonnet",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":140,"publishedAt":34},"01M6WR8TMGS9G79DFTX0K1ZA8T","smart-commands","Decision guide for when to proactively use Claude Code slash commands — \u002Fthink, \u002Fmodel, \u002Fcompact, \u002Fclear. Use when choosing whether to invoke a command before or during a task, or when a complexity-classifier hook has flagged a task as high or critical. Pairs with the complexity-classifier UserPromptSubmit hook. Answers when to compact, should I switch models, and whether to use extended thinking. Use to pick the right \u002Fmodel command and switch model.","https:\u002F\u002Fgithub.com\u002FLucasSantana-Dev\u002Fforgekit\u002Fblob\u002Fmain\u002Fpackages\u002Fcatalog\u002Fcatalog\u002Fskills\u002Fadt-smart-commands\u002FSKILL.md",[139],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[141,142,143,144,30,32,130,120,145,146,147,148,125,149,150,151,152,153,116,98],"smart commands","commands","when","as","compact","thinking","switch","classifier","invoke","guide","command","decision","pick",{"skillNo":155,"name":156,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":34},"01M6E0ZGQ78S4SE6X6RCN1PR9A","spec-ship","https:\u002F\u002Fgithub.com\u002FLucasSantana-Dev\u002Fforgekit\u002Fblob\u002Fmain\u002Fpackages\u002Fcore\u002Fkit\u002Fspecs\u002Fskills\u002Fspec-ship\u002FSKILL.md",[],[160,161,162],"spec","ship","spec ship",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":34},"01M6E0ZD27S87Z954JTHECWG34","spec-new","Create a committed per-feature spec under `docs\u002Fspecs\u002FYYYY-MM-DD-\u003Cslug>\u002F{spec,tasks}.md` with frontmatter (status, created, owner, pr, tags). Promotes an ephemeral `.claude\u002Fplans\u002F\u003Cname>.md` into a persistent, searchable artifact. Use when starting a feature that's larger than a one-shot PR.","https:\u002F\u002Fgithub.com\u002FLucasSantana-Dev\u002Fforgekit\u002Fblob\u002Fmain\u002Fpackages\u002Fcore\u002Fkit\u002Fspecs\u002Fskills\u002Fspec-new\u002FSKILL.md",[],[170,160,171,30,172,173,119,174,175,176,177,178,179,180],"spec new","artifact","dd","create","pr","status","docs","feature","tags","name","plans",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":190,"publishedAt":34},"01M6E0Z9B5YE1G4NM05JPNVWMK","roadmap-refresh","Regenerate `docs\u002Froadmap.md` for a repo from all specs under `docs\u002Fspecs\u002F` + their frontmatter (status, tags, pr). Produces Now\u002FNext\u002FRecently-shipped sections. Run after creating \u002F shipping a spec, or at the start of a new session for orientation.","https:\u002F\u002Fgithub.com\u002FLucasSantana-Dev\u002Fforgekit\u002Fblob\u002Fmain\u002Fpackages\u002Fcore\u002Fkit\u002Fspecs\u002Fskills\u002Froadmap-refresh\u002FSKILL.md",[187],{"categoryNo":188,"categoryName":189,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000031","产品经理",[191,192,193,194,178,195,84,196,197,198,199,99,174,175,176,160],"roadmap refresh","roadmap","refresh","next","now","repo","new session","start","shipping"]