[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CDG730CRBDK8C2DC62YZJT":3,"skill-same:01M6CDG730CRBDK8C2DC62YZJT":79},{"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":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":46,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6CDG730CRBDK8C2DC62YZJT","plugin-creator",null,"Scaffold a local Codewhale plugin bundle with a versioned manifest, namespaced Skills, and an explicit trust review.","codewhale-hq\u002FCodewhale","codewhale-hq","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F326694313?v=4","01M6CDD9D70AD3631SMRJ7REW4","Codewhale","01M6CDD9H0VAXYCB2NGGPZC16K",41176,"MIT","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fcrates\u002Fskills\u002Fassets\u002Fskills\u002Fplugin-creator\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],"plugin creator","plugin","creator","review","scaffold","manifest","codewhale","trust","local","bundle","with","namespaced","2026-11-10 10:12:30",false,"---\nname: plugin-creator\ndescription: Scaffold a local Codewhale plugin bundle with a versioned manifest, namespaced Skills, and an explicit trust review.\n---\n\n# Plugin Creator\n\nUse this skill when a user wants a local Codewhale plugin bundle. Trusted and\nenabled bundles may add declarative Skills, commands, agents, hooks, and MCP\nservers (stdio and remote) through the existing engines. LSP, filesystem\nroots, and lifecycle mutation are inventory-only. Native extensions (host\ncode) are inventory-only unless the user has turned on the experimental\n`[features] extension_host` flag.\n\n## Workflow\n\n1. Pick a Codewhale-owned location:\n   - User bundle: `~\u002F.codewhale\u002Fplugins\u002F\u003Cplugin-name>\u002F`\n   - Workspace bundle: `\u003Cworkspace>\u002F.codewhale\u002Fplugins\u002F\u003Cplugin-name>\u002F`\n2. Normalize the bundle name to lowercase hyphen-case.\n3. Create `plugin.json` (Agent Plugins v1.0.0; a legacy `plugin.toml` stays\n   readable, but new bundles use `plugin.json`):\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fagent-plugins.org\u002Fschemas\u002Fplugin.json\",\n  \"name\": \"my-plugin\",\n  \"version\": \"0.1.0\",\n  \"description\": \"What this bundle provides\"\n}\n```\n\n4. Put each Skill under `skills\u002F\u003Cskill-name>\u002FSKILL.md`; Codewhale finds\n   `skills\u002F` automatically and exposes each as `my-plugin:\u003Cskill-name>`,\n   never as an unqualified command.\n5. Add MCP servers in a sibling `mcp.json` only when the bundle needs an\n   existing MCP engine. Keep stdio commands and paths inside the bundle. Map local\n   environment values only as exact `${SOURCE_ENV}` references. For remote MCP,\n   use HTTPS (or loopback HTTP), forbid URL user information\u002Fquery\u002Ffragment,\n   use only environment-backed headers or bearer tokens, and declare the exact\n   normalized endpoint host set in `capabilities.network_hosts` under\n   `extensions[\"net.codewhale\"]`. Never place credentials in the manifest.\n6. Commands (`commands\u002F*.md`), agents (`agents\u002F*.toml`), and hooks\n   (`hooks\u002F*.toml`), declared under `extensions[\"net.codewhale\"]`, activate\n   under the current policy — workspace bundles win same-name collisions over\n   user and built-in bundles. LSP, filesystem roots, and lifecycle mutation\n   are inventory-only: declare them only when inventorying future work. A\n   `native` entry runs only under the experimental extension host; there it\n   must be one `.mjs`, `.js` or `.mts` ES module file, `\u002Fplugin validate` rejects\n   anything else, and its tools always use `Required` approval, never a\n   plugin's read-only hint. Full Access, Bypass, or an exact session grant\n   for the reviewed build can satisfy that gate without a prompt. A bundle\n   that declares only unsupported surfaces cannot be enabled.\n7. Validate and review without executing bundle content:\n   - `\u002Fplugin validate \u003Cplugin-name>`\n   - `\u002Fplugin show \u003Cplugin-name>`\n   - stop and present these results; the person runs `\u002Fplugin enable \u003Cplugin-name>`\n     to open the content\u002Fcapability review, reviews it, runs the exact\n     `\u002Fplugin trust ...` confirmation shown, then enables the bundle\n8. Verify `\u002Fskills inspect` reports plugin provenance and `\u002Fplugin list`\n   reports the expected trust and activation state. Trust stages the reviewed\n   content but does not activate it. After enablement, follow the host's\n   reload notice: use `\u002Freload` or a new session to apply changes to a live\n   session's pinned skills and tools.\n\nEvery user and workspace bundle starts untrusted and disabled. Reuse the\nexisting `\u002Fplugin marketplace`, install, update, review and reload surfaces;\ndo not add a parallel installer, registry or automatic trust flow. Catalog\nmembership alone never installs, trusts or enables a plugin.\n\n## Experimental host code\n\nOnly scaffold host code when the person explicitly uses the experimental\nextension-host feature. Start from the tested `hello-extension` example and\n`docs\u002FEXTENSIONS.md` in the Codewhale repository. A typed `.mts` entry may use\nNode's erasable TypeScript syntax; bundle dependencies locally. Register tools\nwith a plugin-specific prefix and an object input schema, propagate\n`exec.signal`, and use `ctx.effect` for bounded asynchronous cleanup. The\ncurrent execution context exposes `signal`, `callId` and `args`; it does not\nexpose the calling workspace path. Do not change the shared process cwd.\n\nStop after install, validate and show; never automate the trust token. A\nperson reviews, trusts and enables the bundle. `\u002Fplugin show \u003Cname>` reports\nowner state, live tools and recent attributed diagnostics. Recovery may create\nfresh registrations, but never replays an interrupted tool call. Explain the\nshared-process and current platform sandbox limits without claiming isolation.\n","# Plugin Creator\n\nUse this skill when a user wants a local Codewhale plugin bundle. Trusted and\nenabled bundles may add declarative Skills, commands, agents, hooks, and MCP\nservers (stdio and remote) through the existing engines. LSP, filesystem\nroots, and lifecycle mutation are inventory-only. Native extensions (host\ncode) are inventory-only unless the user has turned on the experimental\n`[features] extension_host` flag.\n\n## Workflow\n\n1. Pick a Codewhale-owned location:\n   - User bundle: `~\u002F.codewhale\u002Fplugins\u002F\u003Cplugin-name>\u002F`\n   - Workspace bundle: `\u003Cworkspace>\u002F.codewhale\u002Fplugins\u002F\u003Cplugin-name>\u002F`\n2. Normalize the bundle name to lowercase hyphen-case.\n3. Create `plugin.json` (Agent Plugins v1.0.0; a legacy `plugin.toml` stays\n   readable, but new bundles use `plugin.json`):\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fagent-plugins.org\u002Fschemas\u002Fplugin.json\",\n  \"name\": \"my-plugin\",\n  \"version\": \"0.1.0\",\n  \"description\": \"What this bundle provides\"\n}\n```\n\n4. Put each Skill under `skills\u002F\u003Cskill-name>\u002FSKILL.md`; Codewhale finds\n   `skills\u002F` automatically and exposes each as `my-plugin:\u003Cskill-name>`,\n   never as an unqualified command.\n5. Add MCP servers in a sibling `mcp.json` only when the bundle needs an\n   existing MCP engine. Keep stdio commands and paths inside the bundle. Map local\n   environment values only as exact `${SOURCE_ENV}` references. For remote MCP,\n   use HTTPS (or loopback HTTP), forbid URL user information\u002Fquery\u002Ffragment,\n   use only environment-backed headers or bearer tokens, and declare the exact\n   normalized endpoint host set in `capabilities.network_hosts` under\n   `extensions[\"net.codewhale\"]`. Never place credentials in the manifest.\n6. Commands (`commands\u002F*.md`), agents (`agents\u002F*.toml`), and hooks\n   (`hooks\u002F*.toml`), declared under `extensions[\"net.codewhale\"]`, activate\n   under the current policy — workspace bundles win same-name collisions over\n   user and built-in bundles. LSP, filesystem roots, and lifecycle mutation\n   are inventory-only: declare them only when inventorying future work. A\n   `native` entry runs only under the experimental extension host; there it\n   must be one `.mjs`, `.js` or `.mts` ES module file, `\u002Fplugin validate` rejects\n   anything else, and its tools always use `Required` approval, never a\n   plugin's read-only hint. Full Access, Bypass, or an exact session grant\n   for the reviewed build can satisfy that gate without a prompt. A bundle\n   that declares only unsupported surfaces cannot be enabled.\n7. Validate and review without executing bundle content:\n   - `\u002Fplugin validate \u003Cplugin-name>`\n   - `\u002Fplugin show \u003Cplugin-name>`\n   - stop and present these results; the person runs `\u002Fplugin enable \u003Cplugin-name>`\n     to open the content\u002Fcapability review, reviews it, runs the exact\n     `\u002Fplugin trust ...` confirmation shown, then enables the bundle\n8. Verify `\u002Fskills inspect` reports plugin provenance and `\u002Fplugin list`\n   reports the expected trust and activation state. Trust stages the reviewed\n   content but does not activate it. After enablement, follow the host's\n   reload notice: use `\u002Freload` or a new session to apply changes to a live\n   session's pinned skills and tools.\n\nEvery user and workspace bundle starts untrusted and disabled. Reuse the\nexisting `\u002Fplugin marketplace`, install, update, review and reload surfaces;\ndo not add a parallel installer, registry or automatic trust flow. Catalog\nmembership alone never installs, trusts or enables a plugin.\n\n## Experimental host code\n\nOnly scaffold host code when the person explicitly uses the experimental\nextension-host feature. Start from the tested `hello-extension` example and\n`docs\u002FEXTENSIONS.md` in the Codewhale repository. A typed `.mts` entry may use\nNode's erasable TypeScript syntax; bundle dependencies locally. Register tools\nwith a plugin-specific prefix and an object input schema, propagate\n`exec.signal`, and use `ctx.effect` for bounded asynchronous cleanup. The\ncurrent execution context exposes `signal`, `callId` and `args`; it does not\nexpose the calling workspace path. Do not change the shared process cwd.\n\nStop after install, validate and show; never automate the trust token. A\nperson reviews, trusts and enables the bundle. `\u002Fplugin show \u003Cname>` reports\nowner state, live tools and recent attributed diagnostics. Recovery may create\nfresh registrations, but never replays an interrupted tool call. Explain the\nshared-process and current platform sandbox limits without claiming isolation.\n",{"name":5,"description":7},"main","654aa776d6bcb98292d4c7c5841fed871e1ba5bd","crates\u002Fskills\u002Fassets\u002Fskills\u002Fplugin-creator",3571,"https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale","https:\u002F\u002Fcodewhale.net\u002F","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq","https:\u002F\u002Fcodewhale.net","Open-source coding agent for your terminal. Works with the model provider you choose.","2026-11-12 02:35:28",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add codewhale-hq\u002FCodewhale --skill plugin-creator",{"tool":57,"command":58},"bunx","bunx skills add codewhale-hq\u002FCodewhale --skill plugin-creator",{"tool":60,"command":61},"pnpm","pnpm dlx skills add codewhale-hq\u002FCodewhale --skill plugin-creator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fcrates\u002Fskills\u002Fassets\u002Fskills\u002Fplugin-creator\u002FSKILL.md",true,[65,71,75],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"SKILL.generation-13.md","REFERENCE","参考文档",2695,"https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fcrates\u002Fskills\u002Fassets\u002Fskills\u002Fplugin-creator\u002FSKILL.generation-13.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"SKILL.generation-15.md",2831,"https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fcrates\u002Fskills\u002Fassets\u002Fskills\u002Fplugin-creator\u002FSKILL.generation-15.md",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"SKILL.generation-16.md",3543,"https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fcrates\u002Fskills\u002Fassets\u002Fskills\u002Fplugin-creator\u002FSKILL.generation-16.md",[80,106,131,151,164,171],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":36},"01M6CDJRMPR8FX1WVFP94PGDMD","gh-find-prs","Survey the open Codewhale PR and issue queue read-only: fetch each item, check it against current code, and produce one coverage and disposition matrix with cited evidence and credit owed.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fgh-find-prs\u002FSKILL.md",[],[87,88,89,90,91,34,92,93,30,94,95,96,97,98,99,100,101,102,103,104,105],"find","gh find prs","gh","prs","produce","read-only","matrix","queue","issue","read","check","code","only","open","survey","pr","evidence","fetch","coverage",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":113,"publishedAt":36},"01M6CDJP0ZYMQNA6AN028X7A96","gh-file-issue","Use when filing a new Codewhale GitHub issue: turn a bug or idea into a well-formed, actionable issue with repro, acceptance criteria, labels, and milestone.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fgh-file-issue\u002FSKILL.md",[112],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[114,89,115,116,95,117,118,119,120,121,122,123,124,30,125,126,127,34,128,129,130],"file issue","file","gh file issue","milestone","idea","filing","when","new","labels","acceptance","actionable","bug","github issue","github","acceptance criteria","repro","use",{"skillNo":132,"name":133,"nameZh":6,"description":134,"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":36},"01M6CDJJZB0G4XHWWBD12S990C","gh-close-issues","Close resolved Codewhale issues only after verifying the landed behavior: Refs #N per landing, Fixes #N only when the reporter's scenario was reproduced, closure at the release step or on the reporter's confirmation, always with a crediting comment.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fgh-close-issues\u002FSKILL.md",[137],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[139,140,141,89,142,143,144,145,34,120,146,147,30,148,149,99,150],"gh close issues","close","issues","at","release","reporter","scenario","closure","fixes","behavior","confirmation","landing",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":158,"publishedAt":36},"01M6CDJGR688JJVTG0A1ETBJGQ","gh-assign-issues","Use to assign GitHub issues to a milestone and\u002For owners in bulk, verifying each.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fgh-assign-issues\u002FSKILL.md",[157],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[159,89,141,160,130,127,117,161,162,163],"gh assign issues","assign","bulk","github issues","owners",{"skillNo":165,"name":166,"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":167,"categories":168,"keywords":170,"publishedAt":36},"01M6CDJEBMKBAGTBG18N5YJNSE","feedback","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Ffeedback\u002FSKILL.md",[169],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[166],{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":178,"publishedAt":36},"01M6CDJBRQ86PP9XNXQMRB1CGX","cw-slice","Use before writing code for any Codewhale feature, upgrade, or refactor: find the existing owner of the behavior, bound the change to one reviewable slice, and fix the evidence bar before you start.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fcw-slice\u002FSKILL.md",[177],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[179,180,181,182,183,184,185,186,187,30,188,148,87,189,98,130,190,191,103],"slice","cw slice","start","bar","you","Existing","upgrade","for","feature","refactor","change","writing","fix"]