Create and manage Claude Code plugins with proper structure, manifests, and marketplace integration...
Build and manage Claude Code plugins with correct structure, manifests, and marketplace integration. Includes workflows, automation scripts, and reference docs.
Use create_plugin.py to generate plugin structure:
python scripts/create_plugin.py plugin-name \
--marketplace-root /path/to/marketplace \
--author-name "Your Name" \
--author-email "your.email@example.com" \
--description "Plugin description" \
--keywords "keyword1,keyword2" \
--category "productivity"
This automatically:
plugin.json manifestmarketplace.jsonUse bump_version.py to update versions in both manifests:
python scripts/bump_version.py plugin-name major|minor|patch \
--marketplace-root /path/to/marketplace
Semantic versioning:
Manual approach (if not using script):
mkdir -p plugins/plugin-name/.claude-plugin
mkdir -p plugins/plugin-name/commands
mkdir -p plugins/plugin-name/skills
File: plugins/plugin-name/.claude-plugin/plugin.json
{
"name": "plugin-name",
"version": "0.1.0",
"description": "Plugin description",
"author": {
"name": "Your Name",
"email": "your.email@example.com"
},
"keywords": ["keyword1", "keyword2"]
}
Update .claude-plugin/marketplace.json:
{
"name": "plugin-name",
"source": "./plugins/plugin-name",
"description": "Plugin description",
"version": "0.1.0",
"keywords": ["keyword1", "keyword2"],
"category": "productivity"
}
Create in respective directories:
| Component | Location | Format |
|---|---|---|
| Commands | commands/ |
Markdown with frontmatter |
| Skills | skills/<name>/ |
Directory with SKILL.md |
| Agents | agents/ |
Markdown definitions |
| Hooks | hooks/hooks.json |
Event handlers |
| MCP Servers | .mcp.json |
External integrations |
# Add marketplace
/plugin marketplace add /path/to/marketplace-root
# Install plugin
/plugin install plugin-name@marketplace-name
# After changes: reinstall
/plugin uninstall plugin-name@marketplace-name
/plugin install plugin-name@marketplace-name
For framework-specific guidance (React, Vue, etc.):
plugins/framework-name/
āāā .claude-plugin/plugin.json
āāā skills/
ā āāā framework-name/
ā āāā SKILL.md
ā āāā references/
āāā commands/
ā āāā prime/
ā āāā components.md
ā āāā framework.md
āāā README.md
For tools and commands:
plugins/utility-name/
āāā .claude-plugin/plugin.json
āāā commands/
ā āāā action1.md
ā āāā action2.md
āāā README.md
For domain-specific knowledge:
plugins/domain-name/
āāā .claude-plugin/plugin.json
āāā skills/
ā āāā domain-name/
ā āāā SKILL.md
ā āāā references/
ā āāā scripts/
āāā README.md
Subdirectory-based namespacing with : separator:
commands/namespace/command.md ā /namespace:commandcommands/simple.md ā /simpleExamples:
commands/prime/vue.md ā /prime:vuecommands/docs/generate.md ā /docs:generateImportant: Update version in BOTH locations:
plugins/<name>/.claude-plugin/plugin.json.claude-plugin/marketplace.jsonUse bump_version.py to automate.
Use conventional commits:
git commit -m "feat: add new plugin"
git commit -m "fix: correct plugin manifest"
git commit -m "docs: update plugin README"
git commit -m "feat!: breaking change"
Detailed documentation included:
| Reference | Content |
|---|---|
references/plugin-structure.md |
Directory structure, manifest schema, components |
references/marketplace-schema.md |
Marketplace format, plugin entries, distribution |
references/workflows.md |
Step-by-step workflows, patterns, publishing |
| Script | Purpose |
|---|---|
scripts/create_plugin.py |
Scaffold new plugin |
scripts/bump_version.py |
Update versions |