Claude Code Plugins: Install, Manage and Build Your Own
A Claude Code plugin bundles skills, subagents, hooks and MCP servers into one installable unit, distributed through marketplaces. How to install plugins and choose a scope, what an enabled plugin costs you in context, the official marketplace, sharing a team setup, and building your own with plugin.json.
Claude Code has several ways to extend it: skills, subagents, hooks and MCP servers. A plugin packages any combination of them into one directory you install, update and share as a unit.
Use a plugin when you want someone else's whole setup with one command, or want to hand your own setup to a team.
What's in a plugin
A plugin is a directory with a manifest at .claude-plugin/plugin.json and any of these components:
my-plugin/
├── .claude-plugin/plugin.json # name, version, description
├── skills/review/SKILL.md # skills (also runnable as /my-plugin:review)
├── agents/reviewer.md # subagent definitions
├── hooks/hooks.json # lifecycle hooks
└── .mcp.json # MCP servers
Plugins can also carry LSP "code intelligence" servers, monitors, and "mods" — hooks written as JavaScript that can draw panes and add commands.
Marketplaces
Plugins are distributed through marketplaces: a Git repository (or folder) containing .claude-plugin/marketplace.json, a catalogue of plugins and where to fetch each. It's a catalogue, not a hosted store.
Claude Code adds Anthropic's official marketplace (claude-plugins-official) the first time you start an interactive session. Add others with:
/plugin marketplace add your-org/claude-plugins
Installing a plugin
Browse with /plugin (the Discover tab), or install by name:
/plugin install commit-commands@claude-plugins-official
In a session this opens the plugin's details so you can review it first — a plugin runs hooks and MCP servers as you, so read what it does — then choose a scope:
| Scope | Who gets it | Recorded in |
|---|---|---|
| User | You, every project on this machine | ~/.claude/settings.json |
| Project | Everyone in this repository | .claude/settings.json (committed) |
| Local | You, this repository only | .claude/settings.local.json |
If the summary says Run /reload-plugins to activate, do that instead of restarting.
From your shell (scripts, CI, onboarding):
claude plugin install formatter@your-org --scope project
claude plugin list
claude plugin disable formatter@your-org
The cost of an enabled plugin
An enabled plugin is part of every session, not just ones where you use it:
- Context — the name and description of each skill, agent and command Claude can invoke on its own sit in context on every turn, using tokens and room.
- Processes — its MCP servers start, its hooks fire.
- Permissions — it runs as you.
So install deliberately. The official marketplace shows a context cost estimate before you install; the Installed tab groups plugins you haven't used recently; and /doctor points out unused plugins and their context cost. Disable rather than uninstall if you only need something occasionally. (How to keep Claude Code costs down)
Sharing a team setup
The best use for plugins in a team: package your conventions — a /deploy skill, a review subagent, formatting hooks, the project's MCP servers — and enable it at project scope in .claude/settings.json:
{
"enabledPlugins": {
"team-setup@your-org": true
}
}
Committing that entry turns the plugin on for collaborators (they're prompted to install it). Version the plugin, and everyone gets updates from the marketplace instead of copying files around. Organisations can also allow-list marketplaces and plugins through managed settings.
Building your own
Start with a folder and a manifest:
// .claude-plugin/plugin.json
{
"name": "team-setup",
"version": "1.0.0",
"description": "Our deploy skill, review agent and formatting hooks"
}
Add components in their standard folders, then load it for one session without a marketplace:
claude --plugin-dir ./team-setup
Skills from the plugin are namespaced: /team-setup:deploy. When it works, publish it by adding it to a marketplace repository's marketplace.json. Plugins can declare dependencies on other plugins with version ranges, and claude plugin eval lets you test a plugin's behaviour with eval cases. (Evals for coding agents)
Converting an existing .claude/ setup into a plugin is mostly moving files — the docs cover it step by step.
When not to use a plugin
A single skill or hook works fine on its own in .claude/ or ~/.claude/. Reach for a plugin when you need packaging: several pieces together, distribution to others, or versioned updates.
Security
Treat plugins like any code you install: prefer known publishers, read the hooks and MCP server commands, and pin your team's marketplace to repositories you control. A plugin that adds an MCP server reading untrusted content brings prompt-injection risk with it. (Securing MCP servers, Prompt injection in coding agents)
EasySpawn runs Claude Code on a persistent server where your plugins, skills and settings stay installed between sessions, from any device. See how it works or join the waitlist.
Related: Claude Code Skills · Claude Code Hooks · Claude Code Settings Explained · The Best MCP Servers for Coding
Keep reading
Claude Code GitHub Actions: Set Up @claude on Issues and Pull Requests
How to set up the Claude Code GitHub Action so you can mention @claude on issues and PRs: quick setup with /install-github-app, manual setup, API key vs subscription token, interactive vs automation mode, scheduled runs, cost controls, and security.
Running Claude Code Agents in Parallel With Git Worktrees
Two agents in one checkout will overwrite each other's work. Git worktrees give each Claude Code session its own files and branch on the same repository. How to set it up, and the parts nobody warns you about: ports, databases, and dependencies.