[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M718APN49JB9XCJ1FMJJ2BT5":3,"skill-same:01M718APN49JB9XCJ1FMJJ2BT5":83},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M718APN49JB9XCJ1FMJJ2BT5","build-mcpb",null,"This skill should be used when the user wants to \"package an MCP server\", \"bundle an MCP\", \"make an MCPB\", \"ship a local MCP server\", \"distribute a local MCP\", discusses \".mcpb files\", mentions bundling a Node or Python runtime with their MCP server, or needs an MCP server that interacts with the local filesystem, desktop apps, or OS and must be installable without the user having Node\u002FPython set up.","anthropics\u002Fclaude-plugins-official","anthropics","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F76263028?v=4","01M697XGDPXJAVQ8391V2BCYTE","Anthropic","01M7188MR49TZ9N2ZKPXJ7M7HY",46906,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fmcp-server-dev\u002Fskills\u002Fbuild-mcpb\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"build","build mcpb","mcpb","distribute","desktop apps","desktop","server","with","mcp server","when","apps","package","MCP","files","local","python","up","filesystem","runtime","SET","2026-11-10 10:12:30",false,"---\nname: build-mcpb\ndescription: This skill should be used when the user wants to \"package an MCP server\", \"bundle an MCP\", \"make an MCPB\", \"ship a local MCP server\", \"distribute a local MCP\", discusses \".mcpb files\", mentions bundling a Node or Python runtime with their MCP server, or needs an MCP server that interacts with the local filesystem, desktop apps, or OS and must be installable without the user having Node\u002FPython set up.\nversion: 0.1.0\n---\n\n# Build an MCPB (Bundled Local MCP Server)\n\nMCPB is a local MCP server **packaged with its runtime**. The user installs one file; it runs without needing Node, Python, or any toolchain on their machine. It's the sanctioned way to distribute local MCP servers.\n\n> MCPB is the **secondary** distribution path. Anthropic recommends remote MCP servers for directory listing — see https:\u002F\u002Fclaude.com\u002Fdocs\u002Fconnectors\u002Fbuilding\u002Fwhat-to-build.\n\n**Use MCPB when the server must run on the user's machine** — reading local files, driving a desktop app, talking to localhost services, OS-level APIs. If your server only hits cloud APIs, you almost certainly want a remote HTTP server instead (see `build-mcp-server`). Don't pay the MCPB packaging tax for something that could be a URL.\n\n---\n\n## What an MCPB bundle contains\n\n```\nmy-server.mcpb              (zip archive)\n├── manifest.json           ← identity, entry point, config schema, compatibility\n├── server\u002F                 ← your MCP server code\n│   ├── index.js\n│   └── node_modules\u002F       ← bundled dependencies (or vendored)\n└── icon.png\n```\n\nThe host reads `manifest.json`, launches `server.mcp_config.command` as a **stdio** MCP server, and pipes messages. From your code's perspective it's identical to a local stdio server — the only difference is packaging.\n\n---\n\n## Manifest\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fraw.githubusercontent.com\u002Fanthropics\u002Fmcpb\u002Fmain\u002Fschemas\u002Fmcpb-manifest-v0.4.schema.json\",\n  \"manifest_version\": \"0.4\",\n  \"name\": \"local-files\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Read, search, and watch files on the local filesystem.\",\n  \"author\": { \"name\": \"Your Name\" },\n  \"server\": {\n    \"type\": \"node\",\n    \"entry_point\": \"server\u002Findex.js\",\n    \"mcp_config\": {\n      \"command\": \"node\",\n      \"args\": [\"${__dirname}\u002Fserver\u002Findex.js\"],\n      \"env\": {\n        \"ROOT_DIR\": \"${user_config.rootDir}\"\n      }\n    }\n  },\n  \"user_config\": {\n    \"rootDir\": {\n      \"type\": \"directory\",\n      \"title\": \"Root directory\",\n      \"description\": \"Directory to expose. Defaults to ~\u002FDocuments.\",\n      \"default\": \"${HOME}\u002FDocuments\",\n      \"required\": true\n    }\n  },\n  \"compatibility\": {\n    \"claude_desktop\": \">=1.0.0\",\n    \"platforms\": [\"darwin\", \"win32\", \"linux\"]\n  }\n}\n```\n\n**`server.type`** — `node`, `python`, or `binary`. Informational; the actual launch comes from `mcp_config`.\n\n**`server.mcp_config`** — the literal command\u002Fargs\u002Fenv to spawn. Use `${__dirname}` for bundle-relative paths and `${user_config.\u003Ckey>}` to substitute install-time config. **There's no auto-prefix** — the env var names your server reads are exactly what you put in `env`.\n\n**`user_config`** — install-time settings surfaced in the host's UI. `type: \"directory\"` renders a native folder picker. `sensitive: true` stores in OS keychain. See `references\u002Fmanifest-schema.md` for all fields.\n\n---\n\n## Server code: same as local stdio\n\nThe server itself is a standard stdio MCP server. Nothing MCPB-specific in the tool logic.\n\n```typescript\nimport { McpServer } from \"@modelcontextprotocol\u002Fsdk\u002Fserver\u002Fmcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol\u002Fsdk\u002Fserver\u002Fstdio.js\";\nimport { z } from \"zod\";\nimport { readFile, readdir } from \"node:fs\u002Fpromises\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\n\n\u002F\u002F ROOT_DIR comes from what you put in manifest's server.mcp_config.env — no auto-prefix\nconst ROOT = (process.env.ROOT_DIR ?? join(homedir(), \"Documents\"));\n\nconst server = new McpServer({ name: \"local-files\", version: \"0.1.0\" });\n\nserver.registerTool(\n  \"list_files\",\n  {\n    description: \"List files in a directory under the configured root.\",\n    inputSchema: { path: z.string().default(\".\") },\n    annotations: { readOnlyHint: true },\n  },\n  async ({ path }) => {\n    const entries = await readdir(join(ROOT, path), { withFileTypes: true });\n    const list = entries.map(e => ({ name: e.name, dir: e.isDirectory() }));\n    return { content: [{ type: \"text\", text: JSON.stringify(list, null, 2) }] };\n  },\n);\n\nserver.registerTool(\n  \"read_file\",\n  {\n    description: \"Read a file's contents. Path is relative to the configured root.\",\n    inputSchema: { path: z.string() },\n    annotations: { readOnlyHint: true },\n  },\n  async ({ path }) => {\n    const text = await readFile(join(ROOT, path), \"utf8\");\n    return { content: [{ type: \"text\", text }] };\n  },\n);\n\nconst transport = new StdioServerTransport();\nawait server.connect(transport);\n```\n\n**Sandboxing is entirely your job.** There is no manifest-level sandbox — the process runs with full user privileges. Validate paths, refuse to escape `ROOT`, allowlist spawns. See `references\u002Flocal-security.md`.\n\nBefore hardcoding `ROOT` from a config env var, check if the host supports `roots\u002Flist` — the spec-native way to get user-approved directories. See `references\u002Flocal-security.md` for the pattern.\n\n---\n\n## Build pipeline\n\n### Node\n\n```bash\nnpm install\nnpx esbuild src\u002Findex.ts --bundle --platform=node --outfile=server\u002Findex.js\n# or: copy node_modules wholesale if native deps resist bundling\nnpx @anthropic-ai\u002Fmcpb pack\n```\n\n`mcpb pack` zips the directory and validates `manifest.json` against the schema.\n\n### Python\n\n```bash\npip install -t server\u002Fvendor -r requirements.txt\nnpx @anthropic-ai\u002Fmcpb pack\n```\n\nVendor dependencies into a subdirectory and prepend it to `sys.path` in your entry script. Native extensions (numpy, etc.) must be built for each target platform — avoid native deps if you can.\n\n---\n\n## MCPB has no sandbox — security is on you\n\nUnlike mobile app stores, MCPB does NOT enforce permissions. The manifest has no `permissions` block — the server runs with full user privileges. `references\u002Flocal-security.md` is mandatory reading, not optional. Every path must be validated, every spawn must be allowlisted, because nothing stops you at the platform level.\n\nIf you came here expecting filesystem\u002Fnetwork scoping from the manifest: it doesn't exist. Build it yourself in tool handlers.\n\nIf your server's only job is hitting a cloud API, stop — that's a remote server wearing an MCPB costume. The user gains nothing from running it locally, and you're taking on local-security burden for no reason.\n\n---\n\n## MCPB + UI widgets\n\nMCPB servers can serve UI resources exactly like remote MCP apps — the widget mechanism is transport-agnostic. A local file picker that browses the actual disk, a dialog that controls a native app, etc.\n\nWidget authoring is covered in the **`build-mcp-app`** skill; it works the same here. The only difference is where the server runs.\n\n---\n\n## Testing\n\n```bash\n# Interactive manifest creation (first time)\nnpx @anthropic-ai\u002Fmcpb init\n\n# Run the server directly over stdio, poke it with the inspector\nnpx @modelcontextprotocol\u002Finspector node server\u002Findex.js\n\n# Validate manifest against schema, then pack\nnpx @anthropic-ai\u002Fmcpb validate\nnpx @anthropic-ai\u002Fmcpb pack\n\n# Sign for distribution\nnpx @anthropic-ai\u002Fmcpb sign dist\u002Flocal-files.mcpb\n\n# Install: drag the .mcpb file onto Claude Desktop\n```\n\nTest on a machine **without** your dev toolchain before shipping. \"Works on my machine\" failures in MCPB almost always trace to a dependency that wasn't actually bundled.\n\n---\n\n## Reference files\n\n- `references\u002Fmanifest-schema.md` — full `manifest.json` field reference\n- `references\u002Flocal-security.md` — path traversal, sandboxing, least privilege\n","# Build an MCPB (Bundled Local MCP Server)\n\nMCPB is a local MCP server **packaged with its runtime**. The user installs one file; it runs without needing Node, Python, or any toolchain on their machine. It's the sanctioned way to distribute local MCP servers.\n\n> MCPB is the **secondary** distribution path. Anthropic recommends remote MCP servers for directory listing — see https:\u002F\u002Fclaude.com\u002Fdocs\u002Fconnectors\u002Fbuilding\u002Fwhat-to-build.\n\n**Use MCPB when the server must run on the user's machine** — reading local files, driving a desktop app, talking to localhost services, OS-level APIs. If your server only hits cloud APIs, you almost certainly want a remote HTTP server instead (see `build-mcp-server`). Don't pay the MCPB packaging tax for something that could be a URL.\n\n---\n\n## What an MCPB bundle contains\n\n```\nmy-server.mcpb              (zip archive)\n├── manifest.json           ← identity, entry point, config schema, compatibility\n├── server\u002F                 ← your MCP server code\n│   ├── index.js\n│   └── node_modules\u002F       ← bundled dependencies (or vendored)\n└── icon.png\n```\n\nThe host reads `manifest.json`, launches `server.mcp_config.command` as a **stdio** MCP server, and pipes messages. From your code's perspective it's identical to a local stdio server — the only difference is packaging.\n\n---\n\n## Manifest\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fraw.githubusercontent.com\u002Fanthropics\u002Fmcpb\u002Fmain\u002Fschemas\u002Fmcpb-manifest-v0.4.schema.json\",\n  \"manifest_version\": \"0.4\",\n  \"name\": \"local-files\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Read, search, and watch files on the local filesystem.\",\n  \"author\": { \"name\": \"Your Name\" },\n  \"server\": {\n    \"type\": \"node\",\n    \"entry_point\": \"server\u002Findex.js\",\n    \"mcp_config\": {\n      \"command\": \"node\",\n      \"args\": [\"${__dirname}\u002Fserver\u002Findex.js\"],\n      \"env\": {\n        \"ROOT_DIR\": \"${user_config.rootDir}\"\n      }\n    }\n  },\n  \"user_config\": {\n    \"rootDir\": {\n      \"type\": \"directory\",\n      \"title\": \"Root directory\",\n      \"description\": \"Directory to expose. Defaults to ~\u002FDocuments.\",\n      \"default\": \"${HOME}\u002FDocuments\",\n      \"required\": true\n    }\n  },\n  \"compatibility\": {\n    \"claude_desktop\": \">=1.0.0\",\n    \"platforms\": [\"darwin\", \"win32\", \"linux\"]\n  }\n}\n```\n\n**`server.type`** — `node`, `python`, or `binary`. Informational; the actual launch comes from `mcp_config`.\n\n**`server.mcp_config`** — the literal command\u002Fargs\u002Fenv to spawn. Use `${__dirname}` for bundle-relative paths and `${user_config.\u003Ckey>}` to substitute install-time config. **There's no auto-prefix** — the env var names your server reads are exactly what you put in `env`.\n\n**`user_config`** — install-time settings surfaced in the host's UI. `type: \"directory\"` renders a native folder picker. `sensitive: true` stores in OS keychain. See `references\u002Fmanifest-schema.md` for all fields.\n\n---\n\n## Server code: same as local stdio\n\nThe server itself is a standard stdio MCP server. Nothing MCPB-specific in the tool logic.\n\n```typescript\nimport { McpServer } from \"@modelcontextprotocol\u002Fsdk\u002Fserver\u002Fmcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol\u002Fsdk\u002Fserver\u002Fstdio.js\";\nimport { z } from \"zod\";\nimport { readFile, readdir } from \"node:fs\u002Fpromises\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\n\n\u002F\u002F ROOT_DIR comes from what you put in manifest's server.mcp_config.env — no auto-prefix\nconst ROOT = (process.env.ROOT_DIR ?? join(homedir(), \"Documents\"));\n\nconst server = new McpServer({ name: \"local-files\", version: \"0.1.0\" });\n\nserver.registerTool(\n  \"list_files\",\n  {\n    description: \"List files in a directory under the configured root.\",\n    inputSchema: { path: z.string().default(\".\") },\n    annotations: { readOnlyHint: true },\n  },\n  async ({ path }) => {\n    const entries = await readdir(join(ROOT, path), { withFileTypes: true });\n    const list = entries.map(e => ({ name: e.name, dir: e.isDirectory() }));\n    return { content: [{ type: \"text\", text: JSON.stringify(list, null, 2) }] };\n  },\n);\n\nserver.registerTool(\n  \"read_file\",\n  {\n    description: \"Read a file's contents. Path is relative to the configured root.\",\n    inputSchema: { path: z.string() },\n    annotations: { readOnlyHint: true },\n  },\n  async ({ path }) => {\n    const text = await readFile(join(ROOT, path), \"utf8\");\n    return { content: [{ type: \"text\", text }] };\n  },\n);\n\nconst transport = new StdioServerTransport();\nawait server.connect(transport);\n```\n\n**Sandboxing is entirely your job.** There is no manifest-level sandbox — the process runs with full user privileges. Validate paths, refuse to escape `ROOT`, allowlist spawns. See `references\u002Flocal-security.md`.\n\nBefore hardcoding `ROOT` from a config env var, check if the host supports `roots\u002Flist` — the spec-native way to get user-approved directories. See `references\u002Flocal-security.md` for the pattern.\n\n---\n\n## Build pipeline\n\n### Node\n\n```bash\nnpm install\nnpx esbuild src\u002Findex.ts --bundle --platform=node --outfile=server\u002Findex.js\n# or: copy node_modules wholesale if native deps resist bundling\nnpx @anthropic-ai\u002Fmcpb pack\n```\n\n`mcpb pack` zips the directory and validates `manifest.json` against the schema.\n\n### Python\n\n```bash\npip install -t server\u002Fvendor -r requirements.txt\nnpx @anthropic-ai\u002Fmcpb pack\n```\n\nVendor dependencies into a subdirectory and prepend it to `sys.path` in your entry script. Native extensions (numpy, etc.) must be built for each target platform — avoid native deps if you can.\n\n---\n\n## MCPB has no sandbox — security is on you\n\nUnlike mobile app stores, MCPB does NOT enforce permissions. The manifest has no `permissions` block — the server runs with full user privileges. `references\u002Flocal-security.md` is mandatory reading, not optional. Every path must be validated, every spawn must be allowlisted, because nothing stops you at the platform level.\n\nIf you came here expecting filesystem\u002Fnetwork scoping from the manifest: it doesn't exist. Build it yourself in tool handlers.\n\nIf your server's only job is hitting a cloud API, stop — that's a remote server wearing an MCPB costume. The user gains nothing from running it locally, and you're taking on local-security burden for no reason.\n\n---\n\n## MCPB + UI widgets\n\nMCPB servers can serve UI resources exactly like remote MCP apps — the widget mechanism is transport-agnostic. A local file picker that browses the actual disk, a dialog that controls a native app, etc.\n\nWidget authoring is covered in the **`build-mcp-app`** skill; it works the same here. The only difference is where the server runs.\n\n---\n\n## Testing\n\n```bash\n# Interactive manifest creation (first time)\nnpx @anthropic-ai\u002Fmcpb init\n\n# Run the server directly over stdio, poke it with the inspector\nnpx @modelcontextprotocol\u002Finspector node server\u002Findex.js\n\n# Validate manifest against schema, then pack\nnpx @anthropic-ai\u002Fmcpb validate\nnpx @anthropic-ai\u002Fmcpb pack\n\n# Sign for distribution\nnpx @anthropic-ai\u002Fmcpb sign dist\u002Flocal-files.mcpb\n\n# Install: drag the .mcpb file onto Claude Desktop\n```\n\nTest on a machine **without** your dev toolchain before shipping. \"Works on my machine\" failures in MCPB almost always trace to a dependency that wasn't actually bundled.\n\n---\n\n## Reference files\n\n- `references\u002Fmanifest-schema.md` — full `manifest.json` field reference\n- `references\u002Flocal-security.md` — path traversal, sandboxing, least privilege\n",{"name":5,"version":49,"description":7},"0.1.0","main","dceb15d50832e6adf380bedc26dde03d251324b9","plugins\u002Fmcp-server-dev\u002Fskills\u002Fbuild-mcpb",4875,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fplugins","https:\u002F\u002Fgithub.com\u002Fanthropics","https:\u002F\u002Fanthropic.com","2026-11-12 03:40:35",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add anthropics\u002Fclaude-plugins-official --skill build-mcpb",{"tool":65,"command":66},"bunx","bunx skills add anthropics\u002Fclaude-plugins-official --skill build-mcpb",{"tool":68,"command":69},"pnpm","pnpm dlx skills add anthropics\u002Fclaude-plugins-official --skill build-mcpb","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fmcp-server-dev\u002Fskills\u002Fbuild-mcpb\u002FSKILL.md",true,[73,79],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Flocal-security.md","REFERENCE","参考文档",5384,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fmcp-server-dev\u002Fskills\u002Fbuild-mcpb\u002Freferences\u002Flocal-security.md",{"path":80,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fmanifest-schema.md",5359,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fmcp-server-dev\u002Fskills\u002Fbuild-mcpb\u002Freferences\u002Fmanifest-schema.md",[84,112,138,161,186,207],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":88,"sourceHtmlUrl":89,"categories":90,"keywords":92,"publishedAt":44},"01M718BVSPNAK6S5NZCYFDBG6E","skill-creator","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fskill-creator\u002Fskills\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fskill-creator\u002Fskills\u002Fskill-creator\u002FSKILL.md",[91],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[93,94,95,96,97,98,33,99,100,101,102,103,104,105,106,107,108,109,110,111],"skill creator","creator","performance","improve","run evals","new","analysis","create","optimize","variance analysis","run","edit","benchmark","existing skill","evals","for","accuracy","scratch","use",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":123,"publishedAt":44},"01M718BSVAWJRFN6MRCZZ0QX4X","session-report","Generate an explorable HTML report of Claude Code session usage (tokens, cache, subagents, skills, expensive prompts) from ~\u002F.claude\u002Fprojects transcripts.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fsession-report\u002Fskills\u002Fsession-report\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[124,125,126,127,128,129,130,131,132,133,134,135,136,137],"session","report","session report","projects","usage","generate","tokens","html report","transcripts","prompts","cache","code","html","subagents",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":147,"publishedAt":44},"01M718BPKHVD214FAS1T4E5XCE","receipts","Generate a personal Claude Code usage & impact report (\"receipts\") from this machine's local session transcripts — for justifying Claude Code usage\u002Fspend to a manager, self-review, or \"what have I been using this for\" check-ins. Mines ~\u002F.claude\u002Fprojects locally (no extra API calls beyond one final write-up), cross-references local git history, and writes a markdown report plus a self-contained HTML receipt to your home directory. Use when the user asks for \"receipts\", an \"impact report\", \"usage report\", wants to \"show my Claude Code activity\", \"prove the value of Claude Code\", or runs `\u002Freceipts`.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Freceipts\u002Fskills\u002Freceipts\u002FSKILL.md",[144],{"categoryNo":145,"categoryName":146,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000030","开发工程师",[140,127,148,40,38,149,33,135,150,151,152,153,129,154,155,156,157,158,159,160],"show","impact","api","review","self","references","markdown","directory","write","git","activity","my","manager",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":167,"publishedAt":44},"01M718BJMX0T4691FJQ62GYY5C","project-artifact","Generate and publish a project status artifact — an opinionated, tabbed status page for a project too big for one update (overview & success criteria, the workstream sequence, next steps, plus background, plan, risks & open questions, and decisions\u002FFAQ when they earn a tab) — published with the built-in Artifact tool to a default-private claude.ai page the user can share with teammates. Use when a piece of work spans several workstreams and you want a shareable overview kept current. Each artifact is backed by a small per-project config in the plugin data dir, so refreshing it re-gathers live state, redeploys the same URL, and reports only the delta. For software projects whose workstreams are PRs, also read swe.md (the X.Y PR-numbering convention; pulling PR state with gh\u002Fgit; a per-PR detail block). Needs the built-in Artifact tool (claude.ai login). Not for single-PR changes or public docs.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fproject-artifact\u002Fskills\u002Fproject-artifact\u002FSKILL.md",[],[168,169,170,171,127,172,173,174,175,176,177,33,178,179,180,181,182,183,184,185],"project","artifact","project artifact","project status","re","default","next steps","open","only","SWE","URL","you","reports","publish","work","plan","status page","next",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":193,"publishedAt":44},"01M718BF1TTFP5CM0S5HBW64FJ","skill-development","This skill should be used when the user wants to \"create a skill\", \"add a skill to plugin\", \"write a new skill\", \"improve skill description\", \"organize skill content\", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fplugin-dev\u002Fskills\u002Fskill-development\u002FSKILL.md",[192],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[194,195,196,96,98,197,33,135,100,198,156,199,200,201,202,108,203,204,205,206],"development","skill development","skill to plugin","improve skill","structure","organize","new skill","claude code plugins","add","progressive","best practices","progressive disclosure","plugin",{"skillNo":208,"name":209,"nameZh":6,"description":210,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":211,"categories":212,"keywords":214,"publishedAt":44},"01M718BCARZ2J4PW0X3AJCZ8MZ","plugin-structure","This skill should be used when the user asks to \"create a plugin\", \"scaffold a plugin\", \"understand plugin structure\", \"organize plugin components\", \"set up plugin.json\", \"use ${CLAUDE_PLUGIN_ROOT}\", \"add commands\u002Fagents\u002Fskills\u002Fhooks\", \"configure auto-discovery\", or needs guidance on plugin directory layout, manifest configuration, component organization, file naming conventions, or Claude Code plugin architecture best practices.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fplugin-dev\u002Fskills\u002Fplugin-structure\u002FSKILL.md",[213],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[198,215,206,43,216,217,40,218,219,33,220,135,221,222,100,223,224,225,155,226],"Plugin Structure","plugin architecture","hooks","auto-discovery","auto","configure","components","architecture","component","layout","organization","commands"]