// Use when working on Claude Code plugins (creating, modifying, testing, releasing, or maintaining) - provides streamlined workflows, patterns, and examples for the complete plugin lifecycle
| name | developing-claude-code-plugins |
| description | Use when working on Claude Code plugins (creating, modifying, testing, releasing, or maintaining) - provides streamlined workflows, patterns, and examples for the complete plugin lifecycle |
This 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.