[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6E3Y4C6DBAK4RG8CDJACQET":3,"skill-same:01M6E3Y4C6DBAK4RG8CDJACQET":80},{"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":18,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":6,"ownerHtmlUrl":39,"ownerBlogUrl":40,"ownerDescription":6,"updatedAt":41,"install":42,"resources":55},"01M6E3Y4C6DBAK4RG8CDJACQET","docs",null,"Generate or update public documentation from source code. Use when the user says \"\u002Fdocs\", wants to update docs, or asks to generate documentation for the project.","Charlieverse-ai\u002Fcharlieverse","Charlieverse-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F225413346?v=4","01M6E3XSWPM28FCWF05XPXBH4Y","Charlieverse","01M6E3XT0W90F4R60YJX5FQPM3",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FCharlieverse-ai\u002Fcharlieverse\u002Fblob\u002Fmain\u002F.charlie\u002Ftricks\u002Fdocs\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28],"documentation","generate","update","code","public","user","use","update docs","generate documentation","project","2026-11-10 10:12:30",false,"---\nname: docs\ndescription: Generate or update public documentation from source code. Use when the user says \"\u002Fdocs\", wants to update docs, or asks to generate documentation for the project.\n---\n\n## What this skill does\n\nReviews all public interfaces (CLI, REST API, MCP tools, skills, agents) and generates or updates documentation in `docs\u002F` and the README.\n\n## Steps\n\n### 1. Inventory public interfaces\n\nScan the codebase for all public-facing surfaces:\n\n**CLI commands** — read `charlieverse\u002Fcli\u002Fmain.py` to find all registered commands\u002Ftypers, then read each command file for arguments, options, and help text.\n\n**REST API endpoints** — read `charlieverse\u002Fserver.py` and find all `@mcp.custom_route()` decorators. Extract method, path, and any docstrings.\n\n**MCP tools** — read `charlieverse\u002Fserver.py` and find all `@mcp.tool` decorators. Extract tool name, parameters (from type hints), and docstrings.\n\n**Bundled skills** — run `charlie skill list --json` and read each SKILL.md for name, description, and usage.\n\n**Bundled agents** — scan `prompts\u002Ftools\u002F*.md` and `prompts\u002Fcli\u002F*.md` for agent definitions. Extract name, description from frontmatter.\n\n### 2. Check existing docs\n\nRead `docs\u002F` directory if it exists. Compare against the inventory to find:\n- New interfaces not yet documented\n- Existing docs that are stale (interface changed since doc was written)\n- Docs for interfaces that no longer exist\n\n### 3. Generate\u002Fupdate docs\n\nCreate or update these files:\n\n**`docs\u002Fcli.md`** — Full CLI reference. For each command:\n- Command and subcommands\n- Arguments and options with types and defaults\n- Description\n- Examples\n\n**`docs\u002Fapi.md`** — REST API reference. For each endpoint:\n- Method + path\n- Request body \u002F query params\n- Response format\n- Description\n\n**`docs\u002Fmcp-tools.md`** — MCP tool reference. For each tool:\n- Tool name\n- Parameters with types\n- Return format\n- Description\n\n**`docs\u002Fskills.md`** — Skills reference. For each bundled skill:\n- Name and description\n- Usage \u002F argument hint\n- What it does\n\n**`docs\u002Fagents.md`** — Agent reference. For each bundled agent:\n- Name and description\n- What it's for\n- How to use it\n\n### 4. Update README\n\nRead `README.md`. Update these sections (create if missing):\n- Feature list (should reflect current capabilities)\n- CLI quick reference (table of commands)\n- Link to full docs in `docs\u002F`\n\nDon't rewrite the whole README — just update the sections that reference interfaces.\n\n### 5. Commit\n\n```bash\ngit add docs\u002F README.md\ncharlie-commit -m \"Update documentation for public interfaces\n\nCharlie ? \u003Ccharlie@charlieverse.ai>\"\n```\n\n### Rules\n\n- Write docs for humans, not AI. Concise, scannable, with examples.\n- Use tables for parameter lists.\n- Don't document internal\u002Fprivate interfaces.\n- If an interface has no docstring, document it from the code behavior and flag it as needing a docstring.\n- Keep the README lean — point to docs\u002F for details.\n","## What this skill does\n\nReviews all public interfaces (CLI, REST API, MCP tools, skills, agents) and generates or updates documentation in `docs\u002F` and the README.\n\n## Steps\n\n### 1. Inventory public interfaces\n\nScan the codebase for all public-facing surfaces:\n\n**CLI commands** — read `charlieverse\u002Fcli\u002Fmain.py` to find all registered commands\u002Ftypers, then read each command file for arguments, options, and help text.\n\n**REST API endpoints** — read `charlieverse\u002Fserver.py` and find all `@mcp.custom_route()` decorators. Extract method, path, and any docstrings.\n\n**MCP tools** — read `charlieverse\u002Fserver.py` and find all `@mcp.tool` decorators. Extract tool name, parameters (from type hints), and docstrings.\n\n**Bundled skills** — run `charlie skill list --json` and read each SKILL.md for name, description, and usage.\n\n**Bundled agents** — scan `prompts\u002Ftools\u002F*.md` and `prompts\u002Fcli\u002F*.md` for agent definitions. Extract name, description from frontmatter.\n\n### 2. Check existing docs\n\nRead `docs\u002F` directory if it exists. Compare against the inventory to find:\n- New interfaces not yet documented\n- Existing docs that are stale (interface changed since doc was written)\n- Docs for interfaces that no longer exist\n\n### 3. Generate\u002Fupdate docs\n\nCreate or update these files:\n\n**`docs\u002Fcli.md`** — Full CLI reference. For each command:\n- Command and subcommands\n- Arguments and options with types and defaults\n- Description\n- Examples\n\n**`docs\u002Fapi.md`** — REST API reference. For each endpoint:\n- Method + path\n- Request body \u002F query params\n- Response format\n- Description\n\n**`docs\u002Fmcp-tools.md`** — MCP tool reference. For each tool:\n- Tool name\n- Parameters with types\n- Return format\n- Description\n\n**`docs\u002Fskills.md`** — Skills reference. For each bundled skill:\n- Name and description\n- Usage \u002F argument hint\n- What it does\n\n**`docs\u002Fagents.md`** — Agent reference. For each bundled agent:\n- Name and description\n- What it's for\n- How to use it\n\n### 4. Update README\n\nRead `README.md`. Update these sections (create if missing):\n- Feature list (should reflect current capabilities)\n- CLI quick reference (table of commands)\n- Link to full docs in `docs\u002F`\n\nDon't rewrite the whole README — just update the sections that reference interfaces.\n\n### 5. Commit\n\n```bash\ngit add docs\u002F README.md\ncharlie-commit -m \"Update documentation for public interfaces\n\nCharlie ? \u003Ccharlie@charlieverse.ai>\"\n```\n\n### Rules\n\n- Write docs for humans, not AI. Concise, scannable, with examples.\n- Use tables for parameter lists.\n- Don't document internal\u002Fprivate interfaces.\n- If an interface has no docstring, document it from the code behavior and flag it as needing a docstring.\n- Keep the README lean — point to docs\u002F for details.\n",{"name":5,"description":7},"main","aef1d36cff72a8957a1c6fc90ff90230ad16c7e9",".charlie\u002Ftricks\u002Fdocs",2,"https:\u002F\u002Fgithub.com\u002FCharlieverse-ai\u002Fcharlieverse","https:\u002F\u002Fgithub.com\u002FCharlieverse-ai","https:\u002F\u002Fcharlieverse.ai","2026-04-27 22:48:21",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add Charlieverse-ai\u002Fcharlieverse --skill docs",{"tool":48,"command":49},"bunx","bunx skills add Charlieverse-ai\u002Fcharlieverse --skill docs",{"tool":51,"command":52},"pnpm","pnpm dlx skills add Charlieverse-ai\u002Fcharlieverse --skill docs","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FCharlieverse-ai\u002Fcharlieverse\u002Fblob\u002Fmain\u002F.charlie\u002Ftricks\u002Fdocs\u002FSKILL.md",true,[56,62,66,72,76],{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},".claude-plugin\u002Fplugin.json","REFERENCE","参考文档",594,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fengineering\u002Fstatistical-analyst\u002F.claude-plugin\u002Fplugin.json",{"path":63,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":64,"sourceHtmlUrl":65},"references\u002Fstatistical-testing-concepts.md",6297,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fengineering\u002Fstatistical-analyst\u002Freferences\u002Fstatistical-testing-concepts.md",{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"scripts\u002Fconfidence_interval.py","SCRIPT","脚本",6997,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fengineering\u002Fstatistical-analyst\u002Fscripts\u002Fconfidence_interval.py",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"scripts\u002Fhypothesis_tester.py",16353,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fengineering\u002Fstatistical-analyst\u002Fscripts\u002Fhypothesis_tester.py",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"scripts\u002Fsample_size_calculator.py",9716,"https:\u002F\u002Fgithub.com\u002FiDorgham\u002FWorkspace-Factory\u002Fblob\u002Fmaster\u002Ffactory\u002Flibrary\u002Fskills\u002Fgithub_imports\u002Fengineering\u002Fstatistical-analyst\u002Fscripts\u002Fsample_size_calculator.py",[81,99,127,133,139,153],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":29},"01M6E3Z6MGDDBZ5TFTTA9T1EGK","trick","Run Charlie tricks by name or path. Use when the user says \"\u002Ftrick\", wants to run a trick, list available tricks, or execute a skill file. Also trigger when the user mentions running a specific trick by name (e.g., \"run the session-save trick\", \"run ship\", \"do the commit trick\").","https:\u002F\u002Fgithub.com\u002FCharlieverse-ai\u002Fcharlieverse\u002Fblob\u002Fmain\u002Fprompts\u002Fskills\u002Ftrick\u002FSKILL.md",[],[83,88,89,90,91,25,92,93,24,94,95,96,97,98],"ship","name","trigger","do","session","execute","list","save","file","run","commit",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":113,"publishedAt":29},"01M6E3Z3FVY2KMZZGK231SG8ZH","research","Research a topic and save findings to Charlieverse knowledge. Use whenever the user wants to research something, look up documentation, investigate a library or tool, explore a concept, or asks \"what do you know about X\". Also trigger when the user says \"\u002Fresearch\", wants to build up knowledge about a subject, or asks you to \"look into\" something — even if they don't use the word \"research\" explicitly.","https:\u002F\u002Fgithub.com\u002FCharlieverse-ai\u002Fcharlieverse\u002Fblob\u002Fmain\u002Fprompts\u002Fskills\u002Fresearch\u002FSKILL.md",[105,110],{"categoryNo":106,"categoryName":107,"taxonomyType":108,"taxonomyTypeDesc":109},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",{"categoryNo":111,"categoryName":112,"taxonomyType":108,"taxonomyTypeDesc":109},"01JBSEEDCAT000000000000023","Skill与智能体开发",[101,19,114,115,116,117,118,119,120,121,122,21,24,123,90,91,124,125,126,25],"researcher","Word","tool","knowledge","explore","investigate","Tools","library","search","MCP","build","look","up",{"skillNo":128,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":132,"publishedAt":29},"01M6E3Z0D8356WESTCT9JMKXR2","https:\u002F\u002Fgithub.com\u002FCharlieverse-ai\u002Fcharlieverse\u002Fblob\u002Fmain\u002Fintegrations\u002Fcopilot\u002Fplugin\u002Fskills\u002Ftrick\u002FSKILL.md",[131],{"categoryNo":111,"categoryName":112,"taxonomyType":108,"taxonomyTypeDesc":109},[83,89,90,91,25,92,93,24,94,95,88,120,96,97,98],{"skillNo":134,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":138,"publishedAt":29},"01M6E3YXEZ14EXF0SXZST1NKGY","https:\u002F\u002Fgithub.com\u002FCharlieverse-ai\u002Fcharlieverse\u002Fblob\u002Fmain\u002Fintegrations\u002Fcopilot\u002Fplugin\u002Fskills\u002Fresearch\u002FSKILL.md",[137],{"categoryNo":106,"categoryName":107,"taxonomyType":108,"taxonomyTypeDesc":109},[101,19,126,90,91,124,125,25,24,115,116,117,118,119,95,121],{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":29},"01M6E3YTP8N2RJXJD8BG0S5JT0","copilot","Run a task through GitHub Copilot CLI. Use when the user says \"\u002Fcopilot\", wants to delegate work to Copilot, or mentions running something through Copilot. Also trigger when the user wants to use Copilot for a task.","https:\u002F\u002Fgithub.com\u002FCharlieverse-ai\u002Fcharlieverse\u002Fblob\u002Fmain\u002Fintegrations\u002Fcopilot\u002Fplugin\u002Fskills\u002Fcopilot\u002FSKILL.md",[],[141,90,146,25,24,147,148,120,149,97,150,151,152],"task","delegate","work","copilot cli","github copilot","github","cli",{"skillNo":154,"name":155,"nameZh":6,"description":156,"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":29},"01M6E3YRC6T2NYJAENBYGJYYX8","codex","Run a task through OpenAI Codex CLI. Use when the user says \"\u002Fcodex\", wants to delegate work to Codex, or mentions running something through Codex. Also trigger when the user wants to use an OpenAI model for a task.","https:\u002F\u002Fgithub.com\u002FCharlieverse-ai\u002Fcharlieverse\u002Fblob\u002Fmain\u002Fintegrations\u002Fcopilot\u002Fplugin\u002Fskills\u002Fcodex\u002FSKILL.md",[],[155,160,97,152,120,161,90,162,146,25,24,147,148,163],"codex cli","openai","openai codex","model"]