Use before creating or editing marketplace.json files, setting up marketplace repositories, or when user asks about plugin distribution. Provides expert guidance on marketplace structure, manifest configuration, plugin organization, semantic versioning, and git-based distribution workflows. Invoke when working with marketplace files or discussing how to share multiple plugins to ensure correct manifest structure and installation compatibility.
Provides expert guidance for creating and managing Claude Code plugin marketplaces, including manifest structure, plugin organization, and git-based distribution workflows. Use when working with marketplace.json files or discussing plugin sharing to ensure correct structure and installation compatibility.
/plugin marketplace add bbrowning/bbrowning-claude-marketplace/plugin install bbrowning-claude@bbrowning-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
reference/best-practices.mdA marketplace is a collection of Claude Code plugins that can be shared as a cohesive unit. Marketplaces enable:
A marketplace follows this structure:
my-marketplace/
├── .claude-plugin/
│ └── marketplace.json # Marketplace manifest (REQUIRED)
├── plugin-one/
│ └── .claude-plugin/
│ └── plugin.json # Individual plugin manifest
├── plugin-two/
│ └── .claude-plugin/
│ └── plugin.json
└── README.md # Documentation (recommended)
.claude-plugin/marketplace.json in the marketplace rootplugin.json manifestThe marketplace manifest MUST be located at:
.claude-plugin/marketplace.json
This file defines the marketplace metadata and lists all available plugins.
{
"name": "my-marketplace",
"owner": {
"name": "Your Name"
},
"plugins": []
}
Field Descriptions:
name: Marketplace identifier in kebab-case (e.g., "team-tools", "data-science-plugins")owner.name: Maintainer's name (REQUIRED)owner.email: Maintainer's email (OPTIONAL)plugins: Array of plugin entries (can be empty initially){
"name": "my-marketplace",
"description": "Marketplace description",
"version": "1.0.0",
"owner": {
"name": "Your Name",
"email": "you@example.com"
},
"homepage": "https://github.com/username/marketplace",
"plugins": []
}
Additional Fields:
description: Brief overview of the marketplace's purposeversion: Marketplace version (semantic versioning)homepage: URL to marketplace documentation or repositoryEach plugin in the plugins array requires:
{
"plugins": [
{
"name": "plugin-name",
"source": "./plugin-directory",
"description": "Brief description"
}
]
}
Plugin Entry Fields:
name: Plugin identifier (MUST match the plugin's plugin.json name)source: Path or URL to plugin (see Plugin Sources section)description: Brief description (optional but recommended for discoverability){
"name": "team-productivity",
"owner": {
"name": "Engineering Team"
},
"description": "Productivity tools for our engineering team",
"plugins": [
{
"name": "code-review-helper",
"source": "./code-review-helper",
"description": "Automated code review assistance"
},
{
"name": "pr-templates",
"source": "./pr-templates",
"description": "Standardized PR templates and workflows"
},
{
"name": "testing-utils",
"source": "./testing-utils",
"description": "Test generation and coverage tools"
}
]
}
Plugin sources in marketplace.json support multiple formats:
{
"name": "local-plugin",
"source": "./local-plugin"
}
Use for plugins stored within the marketplace directory. Paths must be relative to the marketplace root.
{
"name": "github-plugin",
"source": "github:username/repo"
}
Use for plugins hosted on GitHub. Claude Code will clone the repository.
{
"name": "git-plugin",
"source": "https://github.com/username/repo.git"
}
Use for plugins hosted on any Git provider. Full git URLs are supported.
{
"plugins": [
{
"name": "internal-tool",
"source": "./internal-tool",
"description": "Internal team tool"
},
{
"name": "community-plugin",
"source": "github:community/awesome-plugin",
"description": "Community-maintained plugin"
},
{
"name": "external-tool",
"source": "https://gitlab.com/team/tool.git",
"description": "External Git repository"
}
]
}
mkdir my-marketplace
cd my-marketplace
mkdir .claude-plugin
Create .claude-plugin/marketplace.json:
{
"name": "my-marketplace",
"owner": {
"name": "Your Name"
},
"plugins": []
}
git init
Version control enables:
For each plugin you want to include:
Create plugin directory:
mkdir my-plugin
mkdir my-plugin/.claude-plugin
Create plugin manifest (my-plugin/.claude-plugin/plugin.json):
{
"name": "my-plugin",
"version": "1.0.0",
"description": "Plugin description"
}
Add plugin components (skills, commands, agents, etc.)
Update marketplace.json:
{
"plugins": [
{
"name": "my-plugin",
"source": "./my-plugin",
"description": "Plugin description"
}
]
}
Add marketplace to Claude Code:
/plugin marketplace add /path/to/my-marketplace
Install and test plugins:
/plugin install my-plugin@my-marketplace
Verify installation:
/plugin to see installed plugins/help for new commandsWhen modifying plugins in your marketplace:
Uninstall old version:
/plugin uninstall plugin-name@marketplace-name
Reinstall updated version:
/plugin install plugin-name@marketplace-name
Alternatively, restart Claude Code to reload all plugins.
Recommended workflow:
Use debug mode to troubleshoot:
claude --debug
This shows:
Commit to git:
git add .
git commit -m "Add marketplace with plugins"
Push to remote repository:
git remote add origin <repository-url>
git push -u origin main
Share with users: Users add your marketplace:
/plugin marketplace add <repository-url>
Or for local paths:
/plugin marketplace add /path/to/marketplace
Install plugins:
/plugin install plugin-name@marketplace-name
Users can manage installed plugins:
# Enable plugin
/plugin enable plugin-name@marketplace-name
# Disable plugin
/plugin disable plugin-name@marketplace-name
# Uninstall plugin
/plugin uninstall plugin-name@marketplace-name
Before distributing your marketplace:
./claude --debug for warningsFor comprehensive best practices on organization, versioning, distribution, and collaboration, see reference/best-practices.md.
.claude-plugin/marketplace.json (not root)name, source, and optionally description./plugin), GitHub repos (github:user/repo), or Git URLs/plugin marketplace add <path-or-url>/plugin install plugin-name@marketplace-name.claude-plugin/marketplace.jsonplugin.json manifests/plugin marketplace add /local/pathFor detailed examples of personal, team, community, and hybrid marketplace patterns, see reference/best-practices.md.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
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.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.