This skill should be used when creating plugins, publishing to marketplaces, or when plugin.json, marketplace, create plugin, or distribute plugin are mentioned.
Manages the complete plugin lifecycle from scaffolding to marketplace distribution for Claude Code.
npx claudepluginhub outfitter-dev/outfitterThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/audit.mdreferences/caching.mdreferences/distribution.mdreferences/marketplace.mdreferences/structure.mdscripts/create-marketplace.shscripts/scaffold-plugin.shComplete lifecycle for developing, validating, and distributing Claude Code plugins.
plugin.jsonclaude-craft skillclaude-craft skillclaude-craft skillskillcraft skill# 1. Scaffold plugin
./scripts/scaffold-plugin.sh my-plugin --with-commands
# 2. Add components (commands, agents, hooks, skills)
# 3. Test locally
/plugin marketplace add ./my-plugin
/plugin install my-plugin@my-plugin
# 4. Distribute
git push origin main --tags
Discovery -> Init -> Components -> Validate -> Distribute -> Marketplace
| | | | | |
v v v v v v
Purpose Scaffold Commands Structure Package Catalog
Scope plugin.json Agents Testing Version Publish
Type README Hooks Quality Release Share
Before creating a plugin, clarify:
| Question | Impact |
|---|---|
| What problem does this solve? | Plugin scope and features |
| Who will use it? | Distribution method |
| What components are needed? | Commands, agents, hooks, MCP servers |
| Where will it live? | Personal, project, or marketplace |
Standalone plugins need their own .claude-plugin/plugin.json:
my-plugin/
├── .claude-plugin/
│ └── plugin.json # Required for standalone
├── README.md # Required for distribution
├── commands/ # Optional components
├── agents/
├── skills/
└── hooks/
{
"name": "my-plugin",
"version": "1.0.0",
"description": "Brief description of what this plugin does",
"author": {
"name": "Your Name",
"email": "you@example.com"
},
"license": "MIT"
}
For marketplaces where all plugins live in the same repo, use strict: false to consolidate metadata. Plugins don't need their own manifests:
my-marketplace/
├── .claude-plugin/
│ └── marketplace.json # All metadata here (strict: false)
├── plugin-a/
│ └── commands/
├── plugin-b/
│ └── skills/
└── README.md
{
"name": "my-marketplace",
"owner": {
"name": "Team Name",
"email": "team@example.com"
},
"strict": false,
"plugins": [
{
"name": "plugin-a",
"source": "./plugin-a",
"version": "1.0.0",
"description": "Plugin A",
"license": "MIT"
},
{
"name": "plugin-b",
"source": "./plugin-b",
"version": "1.0.0",
"description": "Plugin B",
"license": "MIT"
}
]
}
Benefits: Single source of truth, no version drift between marketplace and plugin manifests.
For external plugins (GitHub repos), use minimal entries and let the external repo own its manifest.
See structure.md for complete plugin.json schema.
Add components based on plugin needs. See Steps section for which skills to load.
Create custom commands in commands/ directory:
---
description: "Review code for quality issues"
---
Review the following code: {{0}}
Check for: code style, bugs, performance, security
For complex commands, load the claude-craft skill.
Define specialized agents in agents/ directory:
---
name: security-reviewer
description: "Security-focused code reviewer"
---
You are a security expert. When reviewing code:
1. Check for vulnerabilities
2. Verify input validation
3. Report issues with severity levels
For agent design patterns, load the claude-craft skill.
Two ways to define hooks:
File-based (auto-discovered from hooks/hooks.json):
{
"hooks": {
"PreToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"
}
]
}
]
}
}
Inline in plugin.json - same structure, add "hooks" key directly.
Hook types: PreToolUse, PostToolUse, UserPromptSubmit, Stop, SessionStart, SessionEnd
For hook implementation, load the claude-craft skill. See structure.md for hook JSON format and script interface.
Add reusable methodology patterns in skills/ directory. For skill authoring, load the skillcraft skill.
{
"mcpServers": {
"my-server": {
"command": "${CLAUDE_PLUGIN_ROOT}/servers/my-server",
"args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
"env": { "API_KEY": "${MY_API_KEY}" }
}
}
}
Path variables: ${CLAUDE_PLUGIN_ROOT} (plugin directory), ${VAR_NAME} (env var)
When plugins are installed, Claude Code copies them to a cache directory. This has implications:
../../shared/file.md will not work after installskill-name) instead of file referencesSee caching.md for workarounds and best practices.
Before distribution, validate the plugin. See audit.md for detailed per-component checklists, severity levels, and output format.
Structure:
strict: falseComponents:
chmod +x)Documentation:
# Add as local marketplace
/plugin marketplace add ./my-plugin
# Install and test
/plugin install my-plugin@my-plugin
# Test commands
/my-command arg1 arg2
See structure.md for validation commands and detailed component schemas.
Follow semver (MAJOR.MINOR.PATCH):
# 1. Update version in plugin.json
# 2. Update CHANGELOG.md
# 3. Commit and tag
git add plugin.json CHANGELOG.md
git commit -m "chore: release v1.0.0"
git tag v1.0.0
git push origin main --tags
# 4. Create GitHub release
gh release create v1.0.0 --title "v1.0.0" --notes "Initial release"
| Method | Best For | Setup |
|---|---|---|
| GitHub repo | Public/team plugins | Push to GitHub |
| Git URL | GitLab, Bitbucket | Full URL in source |
| Local path | Development/testing | Relative path |
See distribution.md for packaging, CI/CD, and release automation.
A marketplace catalogs plugins for discovery and installation.
Create .claude-plugin/marketplace.json:
{
"name": "my-marketplace",
"owner": { "name": "Team Name", "email": "team@example.com" },
"plugins": [{ "name": "my-plugin", "source": "./plugins/my-plugin" }]
}
// Relative path
{"source": "./plugins/my-plugin"}
// GitHub
{"source": {"source": "github", "repo": "owner/plugin-repo", "ref": "v1.0.0"}}
// Git URL
{"source": {"source": "url", "url": "https://gitlab.com/team/plugin.git"}}
/plugin marketplace add owner/repo # Add marketplace
/plugin marketplace list # List available
/plugin install plugin-name@marketplace # Install from marketplace
/plugin marketplace update marketplace # Update
See marketplace.md for full schema, team configuration, and hosting strategies.
dev-tools)review-pr)security-reviewer)Plugin not loading:
jq empty .claude-plugin/plugin.jsonstrict: false if no plugin.jsonCommands not appearing:
commands/ directoryHooks not executing:
chmod +xMCP servers failing:
~/Library/Logs/Claude/ALWAYS:
.claude-plugin/plugin.jsonstrict: false and consolidate metadata in marketplace.jsonNEVER:
../) for cross-plugin resourcesclaude-craft - Agents, commands, hooks, skills, rules, and configskillcraft - Cross-platform skill creation patternsActivates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.