Guides creating, modifying, and debugging Claude Code plugins using schemas, templates, checklists, validation workflows, and troubleshooting steps.
From plugin-developmentnpx claudepluginhub kossakovsky/cc-plugins --plugin plugin-developmentThis skill is limited to using the following tools:
best-practices/common-mistakes.mdbest-practices/naming-conventions.mdbest-practices/organization.mdexamples/simple-plugin.mdexamples/testing-workflow.mdschemas/hooks-schema.mdschemas/marketplace-schema.mdschemas/plugin-manifest.mdtemplates/agent-template.mdtemplates/command-template.mdtemplates/marketplace-manifest.jsontemplates/plugin-manifest.jsontemplates/skill-template.mdtesting-plugin-authoring.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Provides process, architecture, review, hiring, and testing guidelines for engineering teams relying on AI code generation.
You are the canonical guide for Claude Code plugin development. Prefer reading reference files and proposing vetted commands or diffs rather than writing files directly.
Official documentation: For Anthropic's official skill authoring best practices, see https://docs.anthropic.com/en/docs/agents-and-tools/agent-skills/skill-authoring-best-practices
Activate whenever context includes .claude-plugin/, plugin.json, marketplace.json, commands/, agents/, skills/, or hooks/.
/plugin-development:... commands when the user agrees□ .claude-plugin/plugin.json exists (required)
□ Component dirs at plugin root (commands/, agents/, skills/, hooks/)
□ Do NOT put components inside .claude-plugin/ directory
□ Commands use kebab-case naming
□ Skills have valid frontmatter (name + description required, optional: model, allowed-tools)
□ Skills name validation:
- Matches directory name
- Lowercase letters, numbers, hyphens only
- Max 64 characters
- No reserved words ('anthropic', 'claude')
- No XML tags
□ Hooks use ${CLAUDE_PLUGIN_ROOT} for paths (not relative paths)
□ All scripts are executable (chmod +x)
□ plugin.json: name/version/keywords present
□ Do NOT include standard paths in component fields
□ Local marketplace installs cleanly
□ Validate with /plugin-development:validate
□ Test all commands, skills, and hooks
□ README.md exists with usage examples
commands/, agents/, skills/, or hooks/ inside .claude-plugin/ → WRONG LOCATION (components go at plugin root)"commands": "./commands/" to plugin.json → UNNECESSARY (standard directories auto-discovered, this breaks things)./scripts/format.sh in hooks → USE ${CLAUDE_PLUGIN_ROOT}/scripts/format.sh/plugin-development:validate before testing → ALWAYS VALIDATE FIRSTchmod +x on hook scripts → Scripts won't execute (silent failure)All of these cause silent failures. When in doubt, validate.
For detailed explanations: best-practices/common-mistakes.md
| Skip This | What Happens |
|---|---|
| Validate manifest | Plugin won't load, no error message |
| chmod +x scripts | Hooks silently fail |
| ${CLAUDE_PLUGIN_ROOT} | Works in dev, breaks on install |
| Standard directory rules | Components not discovered |
Running /plugin-development:validate catches 90% of issues before debugging starts.
/plugin-development:init <name> then fill templates/plugin-development:add-command|add-skill|add-agent|add-hook/plugin-development:validate (schema & structure checks)/plugin-development:test-local (dev marketplace)/plugin-development:init <plugin-name> to scaffold structure.claude-plugin/plugin.json with your metadata/plugin-development:add-command, etc./plugin-development:validate/plugin-development:test-local/plugin-development:add-command <name> <description>commands/<name>.md with instructionsdescription and argument-hint/plugin install your plugin, then /<name>/plugin-development:add-skill <name> <when-to-use>skills/<name>/SKILL.md with your instructionsname: lowercase letters, numbers, and hyphens only, max 64 chars (required). Cannot contain reserved words 'anthropic' or 'claude'. Cannot contain XML tags.description: include both WHAT the Skill does AND WHEN to use it, max 1024 chars (required). Cannot contain XML tags.model: specify which Claude model to use, e.g., model: claude-sonnet-4-20250514 (optional, defaults to conversation's model)allowed-tools: comma-separated list of tools (optional). Tools listed don't require permission to use when Skill is active. If omitted, Skill doesn't restrict tools.plugin.json paths are relative to plugin root. Do NOT include commands, agents, skills, or hooks fields for standard directories.commands/ directory exists at plugin root with .md files. Do NOT add commands field to plugin.json for standard paths.chmod +x) and use ${CLAUDE_PLUGIN_ROOT} for pathsname matches directory and uses lowercase letters, numbers, and hyphens only (max 64 chars). Ensure description includes both what and when to use (max 1024 chars). Neither field can contain XML tags./agents plugin-reviewer/plugin-development:validate before testing