This skill should be used when creating, configuring, or distributing Claude Code plugins and marketplaces. Use when users ask about the plugin system architecture, how to package multiple components together, create marketplaces, or set up team-wide plugin distribution.
Guide Claude through creating, configuring, and distributing complete Claude Code plugins and marketplaces.
Plugins are packages that bundle multiple Claude Code extensions (commands, agents, skills, hooks, MCP servers) for distribution. This skill helps understand the plugin architecture, create well-structured plugins, set up marketplaces, and configure team-wide plugin distribution.
Use this skill when:
Do NOT use this skill for:
claude-code-slash-commands skill insteadclaude-code-subagents skill insteadclaude-code-hooks skill insteadskill-creator skill insteadClaude Code's extensibility system has two levels:
Components can be installed directly in projects or user directories:
.claude/commands/ or ~/.claude/commands/.claude/agents/ or ~/.claude/agents/.claude/settings.json or ~/.claude/settings.jsonPlugins bundle multiple components for distribution:
my-plugin/
├── .claude-plugin/
│ └── plugin.json # Plugin metadata (required)
├── commands/ # Slash commands (optional)
│ └── deploy.md
├── agents/ # Subagents (optional)
│ └── reviewer.md
├── skills/ # Agent Skills (optional)
│ └── code-quality/
│ └── SKILL.md
├── hooks/ # Event handlers (optional)
│ └── hooks.json
└── .mcp.json # MCP servers (optional)
To create a plugin, follow this process in order:
Skip this step only when the plugin's purpose and components are already clearly defined.
To create an effective plugin, clearly understand what components the plugin should include and how they work together. This understanding can come from existing workflows that need packaging or new requirements.
For example, when building a deployment automation plugin, relevant considerations include:
For a code quality plugin:
Conclude this step when there is a clear sense of:
To turn requirements into an effective plugin, analyze the use case by:
Example: For a deployment automation plugin, the analysis shows:
/deploy, /rollback, /deploy-statusdeployment-manager for handling complex deploymentsdeployment-analysis for automatic deployment planningExample: For a code quality plugin, the analysis shows:
/format, /lint, /review-codecode-reviewer for comprehensive reviewscode-quality-checker for automatic analysisReview the component-specific skills for detailed guidance:
claude-code-slash-commands skill for command creationclaude-code-subagents skill for agent creationclaude-code-hooks skill for hook creationskill-creator skill for Skills creationAt this point, create the basic plugin structure:
Create plugin directory - Choose a descriptive kebab-case name:
mkdir my-plugin
cd my-plugin
Create plugin manifest - Required .claude-plugin/plugin.json:
mkdir .claude-plugin
cat > .claude-plugin/plugin.json << 'EOF'
{
"name": "my-plugin",
"version": "1.0.0",
"description": "Brief plugin description",
"author": {
"name": "Your Name",
"email": "your.email@example.com"
},
"license": "MIT"
}
EOF
Important: This plugin.json should contain ONLY basic metadata (name, version, description, author, license). Do NOT include component specifications like skills, commands, agents, etc. here - those belong in the marketplace.json to avoid manifest conflicts.
Create component directories - Only create directories for components you'll include:
mkdir -p commands # If including commands
mkdir -p agents # If including agents
mkdir -p skills # If including Skills
mkdir -p hooks # If including hooks
mkdir -p scripts # If including helper scripts
Add documentation - Create README.md explaining the plugin:
cat > README.md << 'EOF'
# My Plugin
Brief description of what this plugin does.
## Components
- Commands: List commands provided
- Agents: List agents provided
- Skills: List Skills provided
- Hooks: Describe automation provided
## Installation
/plugin marketplace add owner/repo /plugin install my-plugin@marketplace-name
EOF
When implementing the plugin, create components using their respective creation processes:
Use the claude-code-slash-commands skill and creation script:
# From plugin root
./path/to/scripts/create_slash_command.sh command-name --plugin
Or activate claude-code-slash-commands skill for guidance.
Use the claude-code-subagents skill and creation script:
# From plugin root
./path/to/scripts/create_subagent.sh agent-name --plugin
Or activate claude-code-subagents skill for guidance.
Use the skill-creator skill and follow the Agent Skills specification:
# From plugin root, create skill directory
mkdir -p skills/my-skill
Then activate skill-creator skill for full guidance on writing SKILL.md.
Use the claude-code-hooks skill for guidance. Create hooks/hooks.json:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh"
}
]
}
]
}
}
Create .mcp.json at plugin root:
{
"mcpServers": {
"plugin-server": {
"command": "${CLAUDE_PLUGIN_ROOT}/servers/server",
"args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"]
}
}
}
Writing Style: Focus on how components work together. Ensure commands, agents, and Skills reference each other appropriately. Use ${CLAUDE_PLUGIN_ROOT} for all plugin-relative paths.
Once the plugin components are implemented, set up distribution:
For development and testing:
Create marketplace directory - Parallel to plugin:
cd ..
mkdir -p dev-marketplace/.claude-plugin
Create marketplace manifest:
cat > dev-marketplace/.claude-plugin/marketplace.json << 'EOF'
{
"name": "dev-marketplace",
"owner": {
"name": "Developer"
},
"plugins": [
{
"name": "my-plugin",
"source": "./my-plugin",
"description": "Plugin under development",
"version": "1.0.0",
"strict": true,
"skills": [
"./skills/my-skill"
]
}
]
}
EOF
Note: Always set "strict": true and specify components (skills, commands, agents, etc.) in the marketplace.json, not in the individual plugin.json files.
Test installation:
claude
# In Claude Code:
/plugin marketplace add ./dev-marketplace
/plugin install my-plugin@dev-marketplace
For team or community distribution:
Create repository - Create GitHub repository for plugins
Organize structure:
my-plugins-repo/
├── .claude-plugin/
│ └── marketplace.json
└── plugins/
├── plugin-one/
└── plugin-two/
Create marketplace manifest:
{
"name": "my-marketplace",
"owner": {
"name": "Team Name",
"email": "team@example.com"
},
"plugins": [
{
"name": "plugin-one",
"source": "./plugins/plugin-one",
"description": "First plugin description",
"version": "1.0.0",
"author": {
"name": "Team Name"
},
"license": "MIT",
"strict": true,
"skills": [
"./skills/my-skill"
]
},
{
"name": "plugin-two",
"source": "./plugins/plugin-two",
"description": "Second plugin description",
"version": "1.0.0",
"author": {
"name": "Team Name"
},
"license": "MIT",
"strict": true,
"commands": [
"./commands/my-command.md"
]
}
]
}
Important: Set "strict": true in each plugin entry. This tells Claude Code to use component specifications from the marketplace.json and ignore any component specs in individual plugin.json files, avoiding manifest conflicts.
Distribute:
/plugin marketplace add owner/repo
/plugin install plugin-one@my-marketplace
For complete marketplace setup, see references/plugin-marketplaces-guide.md.
For automatic team-wide plugin installation, configure project-level settings:
Create or edit .claude/settings.json in project repository:
{
"extraKnownMarketplaces": {
"team-tools": {
"source": {
"source": "github",
"repo": "company/claude-plugins"
}
}
},
"enabledPlugins": {
"deployment-tools@team-tools": true,
"code-quality@team-tools": true
}
}
Commit to repository - Team members who trust the folder will automatically:
Document for team - Add installation instructions to project README.
Once the plugin is distributed, test thoroughly:
${CLAUDE_PLUGIN_ROOT}Iteration workflow:
Use this decision tree to determine the right approach:
Question 1: Are you creating multiple related components?
.claude/ or ~/.claude/Question 2: Will these components be shared across projects or with others?
.claude/ directoryQuestion 3: Do you need to include Skills?
Question 4: Do you need version control and updates for components as a unit?
Components:
/format, /lint, /reviewcode-reviewercode-quality-checkerUse case: Enforce code standards across team projects
Components:
/deploy, /rollback, /statusdeployment-managerUse case: Streamline deployment workflows
Components:
/docs, /api-docs, /changelogdocumentation-writerdoc-generatorUse case: Automate documentation generation
Components:
/test, /coverage, /benchmarktest-runnertest-analyzerUse case: Comprehensive testing workflows
For detailed information, refer to:
Load these references when users need detailed technical information beyond the workflow guidance in this skill.
.claude/settings.json for automatic installationSymptoms: Plugin installed but components not available
Solutions:
.claude-plugin/plugin.json exists and has valid JSON.claude-plugin//plugin → Manage Plugins/plugin uninstall then /plugin installSymptoms: Plugin loads but specific components missing
Solutions:
commands/, agents/, etc.)Symptoms: Hooks configured but not firing
Solutions:
hooks/hooks.json has valid JSON syntaxchmod +x script.sh${CLAUDE_PLUGIN_ROOT} for plugin-relative pathsclaude --debug to see hook execution detailsSymptoms: MCP servers configured but not accessible
Solutions:
.mcp.json has valid JSON syntax${CLAUDE_PLUGIN_ROOT} for plugin-relative pathsThis skill works alongside other claude-code-meta skills:
claude-code-slash-commands - For creating individual commands within pluginsclaude-code-subagents - For creating individual agents within pluginsclaude-code-hooks - For creating hook configurations within pluginsskill-creator - For creating Skills within pluginsActivate these skills when deep-diving into specific component creation while building plugins.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer