Use when working on Claude Code plugins (creating, modifying, testing, releasing, or maintaining) - provides streamlined workflows, patterns, and examples for the complete plugin lifecycle
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
references/common-patterns.mdreferences/plugin-structure.mdreferences/polyglot-hooks.mdreferences/troubleshooting.mdThis skill provides efficient workflows for creating Claude Code plugins. Use it to make plugin development fast and correct - it synthesizes official docs into actionable steps and provides working examples.
Use this skill when:
For comprehensive official documentation, use the working-with-claude-code skill to access full docs.
| Need to... | Read This | Official Docs |
|---|---|---|
| Understand directory structure | references/plugin-structure.md | plugins.md |
| Choose a plugin pattern | references/common-patterns.md | plugins.md |
| Make hooks work cross-platform | references/polyglot-hooks.md | hooks.md |
| Debug plugin issues | references/troubleshooting.md | Various |
| See working examples | examples/ directory | N/A |
Before writing code:
Define your plugin's purpose
Choose your pattern (read references/common-patterns.md)
Review examples
examples/simple-greeter-plugin/ - Minimal pluginexamples/full-featured-plugin/ - All components~/.claude/plugins/Create directories (see references/plugin-structure.md for details):
mkdir -p my-plugin/.claude-plugin
mkdir -p my-plugin/skills
# Add other component directories as needed
Write plugin.json (required):
{
"name": "my-plugin",
"version": "1.0.0",
"description": "What your plugin does",
"author": {"name": "Your Name"}
}
See references/plugin-structure.md for complete format.
Create development marketplace (for local testing):
Create .claude-plugin/marketplace.json:
{
"name": "my-dev",
"plugins": [{
"name": "my-plugin",
"source": "./"
}]
}
See references/plugin-structure.md for complete format.
Use TodoWrite to track component creation:
Example:
- Create skill: main-workflow
- Add command: /hello
- Configure hooks
- Write README
- Test installation
For each component type, see:
references/plugin-structure.mdreferences/common-patterns.mdexamples/ directoryInstall for testing:
/plugin marketplace add /path/to/my-plugin
/plugin install my-plugin@my-dev
Then restart Claude Code.
Test each component:
/your-commandIterate:
/plugin uninstall my-plugin@my-dev
# Make changes
/plugin install my-plugin@my-dev
# Restart Claude Code
If something doesn't work, read references/troubleshooting.md for:
Common issues are usually:
${CLAUDE_PLUGIN_ROOT})Write README with:
Version your release using semantic versioning:
version in .claude-plugin/plugin.json"version": "1.2.1" (major.minor.patch)Commit and tag your release:
git add .
git commit -m "Release v1.2.1: [brief description]"
git tag v1.2.1
git push origin main
git push origin v1.2.1
Choose distribution method:
Option A: Direct GitHub distribution
/plugin marketplace add your-org/your-plugin-repoOption B: Marketplace distribution (recommended for multi-plugin collections)
.claude-plugin/marketplace.json with plugin references:
{
"name": "my-marketplace",
"owner": {"name": "Your Name"},
"plugins": [{
"name": "your-plugin",
"source": {
"source": "url",
"url": "https://github.com/your-org/your-plugin.git"
},
"version": "1.2.1",
"description": "Plugin description"
}]
}
/plugin marketplace add your-org/your-marketplaceOption C: Private/team distribution
.claude/settings.json:
{
"extraKnownMarketplaces": {
"team-tools": {
"source": {"source": "github", "repo": "your-org/plugins"}
}
}
}
Test the release:
# Test fresh installation
/plugin marketplace add your-marketplace-source
/plugin install your-plugin@marketplace-name
# Verify functionality, then clean up
/plugin uninstall your-plugin@marketplace-name
Announce and maintain:
Always follow these (from references/plugin-structure.md):
.claude-plugin/ contains ONLY manifests (plugin.json and optionally marketplace.json)
Use ${CLAUDE_PLUGIN_ROOT} for all paths in config files
Use relative paths in plugin.json
./Make scripts executable
chmod +x script.shreferences/plugin-structure.md - Directory layout, file formats, component syntaxreferences/common-patterns.md - When to use each plugin pattern, examplesreferences/polyglot-hooks.md - Cross-platform hook wrapper for Windows/macOS/Linuxreferences/troubleshooting.md - Debug guide for common issuesexamples/simple-greeter-plugin/ - Minimal working plugin (one skill)examples/full-featured-plugin/ - Complete plugin with all components (includes run-hook.cmd)For deep dives into official documentation, use the working-with-claude-code skill to access:
plugins.md - Plugin development overviewplugins-reference.md - Complete API referenceskills.md - Skill authoring guideslash-commands.md - Command formathooks.md, hooks-guide.md - Hook systemmcp.md - MCP server integrationplugin-marketplaces.md - DistributionPlan → Choose pattern, review examples
Create → Make structure, write manifests
Add → Build components (skills, commands, etc.)
Test → Install via dev marketplace
Debug → Use troubleshooting guide
Release → Version, tag, distribute via marketplace
Maintain → Monitor, update, support users
The correct path is the fast path. Use references, follow patterns, test frequently.