Claude-code-templates plugin-forge
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.
git clone https://github.com/davila7/claude-code-templates
T=$(mktemp -d) && git clone --depth=1 https://github.com/davila7/claude-code-templates "$T" && mkdir -p ~/.claude/skills && cp -r "$T/cli-tool/components/skills/development/plugin-forge" ~/.claude/skills/davila7-claude-code-templates-plugin-forge && rm -rf "$T"
cli-tool/components/skills/development/plugin-forge/SKILL.mdCC Plugin Forge
Purpose
Build and manage Claude Code plugins with correct structure, manifests, and marketplace integration. Includes workflows, automation scripts, and reference docs.
When to Use
- Creating new plugins for a marketplace
- Adding/modifying plugin components (commands, skills, agents, hooks)
- Updating plugin versions
- Working with plugin or marketplace manifests
- Setting up local plugin testing
- Publishing plugins
Getting Started
Create New Plugin
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:
- Creates plugin directory structure
- Generates
manifestplugin.json - Creates README template
- Updates
marketplace.json
Bump Version
Use
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:
- major: Breaking changes (1.0.0 → 2.0.0)
- minor: New features, refactoring (1.0.0 → 1.1.0)
- patch: Bug fixes, docs (1.0.0 → 1.0.1)
Development Workflow
1. Create Structure
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
2. Plugin Manifest
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"] }
3. Register in Marketplace
Update
.claude-plugin/marketplace.json:
{ "name": "plugin-name", "source": "./plugins/plugin-name", "description": "Plugin description", "version": "0.1.0", "keywords": ["keyword1", "keyword2"], "category": "productivity" }
4. Add Components
Create in respective directories:
| Component | Location | Format |
|---|---|---|
| Commands | | Markdown with frontmatter |
| Skills | | Directory with |
| Agents | | Markdown definitions |
| Hooks | | Event handlers |
| MCP Servers | | External integrations |
5. Local Testing
# 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
Plugin Patterns
Framework Plugin
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
Utility Plugin
For tools and commands:
plugins/utility-name/ ├── .claude-plugin/plugin.json ├── commands/ │ ├── action1.md │ └── action2.md └── README.md
Domain Plugin
For domain-specific knowledge:
plugins/domain-name/ ├── .claude-plugin/plugin.json ├── skills/ │ └── domain-name/ │ ├── SKILL.md │ ├── references/ │ └── scripts/ └── README.md
Command Naming
Subdirectory-based namespacing with
: separator:
→commands/namespace/command.md/namespace:command
→commands/simple.md/simple
Examples:
→commands/prime/vue.md/prime:vue
→commands/docs/generate.md/docs:generate
Version Management
Important: Update version in BOTH locations:
plugins/<name>/.claude-plugin/plugin.json.claude-plugin/marketplace.json
Use
bump_version.py to automate.
Git Commits
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"
Reference Docs
Detailed documentation included:
| Reference | Content |
|---|---|
| Directory structure, manifest schema, components |
| Marketplace format, plugin entries, distribution |
| Step-by-step workflows, patterns, publishing |
Scripts
| Script | Purpose |
|---|---|
| Scaffold new plugin |
| Update versions |