Create and manage Claude Code plugins with proper structure, manifests, and marketplace integration. Use when creating plugins for a marketplace, adding plugin components (commands, agents, hooks), bumping plugin versions, or working with plugin.json/marketplace.json manifests.
Install with Tessl CLI
npx tessl i github:softaworks/agent-toolkit --skill plugin-forgeOverall
score
93%
Does it follow best practices?
Validation for skill structure
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/marketplaceSemantic 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/skillsFile: 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-nameFor 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.mdFor tools and commands:
plugins/utility-name/
├── .claude-plugin/plugin.json
├── commands/
│ ├── action1.md
│ └── action2.md
└── README.mdFor domain-specific knowledge:
plugins/domain-name/
├── .claude-plugin/plugin.json
├── skills/
│ └── domain-name/
│ ├── SKILL.md
│ ├── references/
│ └── scripts/
└── README.mdSubdirectory-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 |
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.