Plugins and marketplaces
Package commands, skills, hooks, and MCP servers into one installable bundle. Worth it once a dozen or more people need identical setup.
- A plugin bundles slash commands, subagents, skills, hooks, and MCP servers into one installable pack.
- A marketplace is just a public GitHub repo. No npm package, no hosting required.
- Reach for this once roughly a dozen or more people need identical setup. Below that, shared skills in a shared repo are simpler.
- Do not put a plugin-level
CLAUDE.mdin the bundle expecting it to load. The plugin system ignores it. Use a skill instead.
What it is
Everything else on this reference, commands, skills, hooks, MCP servers, is something you set up once, in one project. A plugin packages several of those together so a whole team can install identical tooling in one step, instead of copying files around by hand.
The smallest working example
my-plugin/
├── .claude-plugin/
│ └── plugin.json # required: name, version, description
├── commands/
├── agents/
├── skills/
│ └── api-tester/
│ └── SKILL.md
├── hooks/
└── .mcp.json{
"name": "api-tester",
"version": "1.0.0",
"description": "Shared API testing commands and a skill."
}plugin.jsonneeds at minimum aname.version,description,author, andkeywordsare all optional but worth setting.- Anything under
commands/,agents/,skills/, andhooks/is picked up automatically by folder convention. No manifest entry per file.
Run claude --plugin-dir ./my-plugin from anywhere. Its commands and skills are available immediately, without publishing anything.
Publishing one for your team
A marketplace is a public GitHub repository with a marketplace.json at its root, listing one or more plugins by name and source.
{
"name": "acme-plugins",
"owner": "Acme Inc",
"plugins": [
{ "name": "api-tester", "source": "./plugins/api-tester" }
]
}Install from it with /plugin install api-tester@acme-plugins, a direct GitHub URL, or a local path. No npm registry or hosting step required.
When to reach for this
Plugins are worth the extra packaging step once a dozen or more people need the exact same setup. The install becomes one command instead of a setup document everyone has to follow by hand. Below that scale, a shared skill or a shared .claude/ folder in your repo does the same job with less machinery.
Enterprise distribution▾
Organizations can enforce a managed marketplace and, with strictPluginOnlyCustomization, lock out file-based skills, commands, and agents entirely. Plugins then become the only way anyone can customize Claude Code, giving IT a single audited distribution channel. This is a managed-settings-only policy. It is not something an individual project can turn on for itself.