What goes in a plugin, and whether you need one
In a Claude Code session, /plugin install commit-commands@claude-plugins-official installs a plugin from Anthropic's official marketplace. The name before the @ is the plugin, and the one after it is the marketplace.
Build your own when pieces have to be installed together, such as a team's review skill and the formatting hook that goes with it, so everyone gets both in one step. We wouldn't wrap a single personal skill, because a skill saved in ~/.claude/skills/ already shows up in every project on your machine.
A plugin can carry any mix of these:
- Skills, which load when they're relevant.
- Subagents, which take the tasks Claude delegates.
- Hooks, which run at set points in Claude Code's lifecycle.
- MCP servers, which connect while the plugin is enabled.
- Language servers, monitors, output styles, color themes and command-line tools.
| A skill in ~/.claude/skills/ | A plugin | |
|---|---|---|
| Available in every project on your machine | Yes | Yes |
| Several skills, subagents, hooks or MCP servers as one unit | No | Yes |
| Updates from a marketplace | No | Yes |
| Skill names carry a prefix, as in /my-plugin:review | No | Yes |
Source: Claude Code docs: Plugins overview (read November 3, 2026)
A plugin's code runs with your user privileges, even from the official marketplace. Once enabled, it's part of every session, not only the ones where you use it. The name and description of each skill, agent and command Claude can invoke on its own sit in context on every turn. Its MCP servers run beside each session, and its hooks fire on their events.
Plugin marketplaces: a catalog you can host yourself
Anthropic opened plugins to every Claude Code user as a public beta on October 9, 2025, and its announcement said anyone can host a marketplace. A git repository, GitHub repository or URL with a properly formatted marketplace.json is enough.
Claude Code adds claude-plugins-official the first time you start an interactive terminal session. You add any other marketplace once with /plugin marketplace add, followed by a GitHub owner/repo, a git URL, a local path or the https address of a marketplace.json. Start a local path with ./ or ../, because Claude Code reads a bare name/name as a GitHub repository.
Official names such as claude-plugins-official and community names such as claude-community are accepted only for marketplaces sourced from github.com/anthropics/ repositories. Everything else is third-party, your company's marketplace included.
Your own marketplace is the one file below, .claude-plugin/marketplace.json, with a name, an owner and a plugins array at the top. Anthropic's marketplace guide also requires a name and a source in every plugin entry. A relative source starts from the marketplace root, the folder that holds .claude-plugin/. An entry can also point elsewhere, such as another GitHub repository or an npm package.
The entry name is the install id, while the name in the plugin's plugin.json becomes the prefix on its skills. If they differ, installing by the manifest name fails with a not-found error. Make them equal in the first commit, and from then on rename both or neither. Run claude plugin validate ./my-marketplace before you push: it checks the JSON, the required fields and each plugin stored inside.
{
"name": "my-marketplace",
"description": "Plugins for my team",
"owner": {
"name": "Your Name"
},
"plugins": [
{
"name": "my-first-plugin",
"source": "./plugins/my-first-plugin",
"description": "A greeting plugin to learn the basics"
}
]
}
X's own embed of the post, captured on 3 November 2026 with the time in US Pacific time and the link preview left out. Select it to open the post on X.
Install and manage plugins with /plugin
Before it installs anything, /plugin install opens the plugin's details: the commands, agents, skills, hooks and MCP and LSP servers it will add. For a plugin in the official marketplace, the pane also estimates the context it costs, per turn and once its skills load. Run /plugin with no name and you get a panel of everything your marketplaces list.
Pick user scope to have a plugin on in every project: it goes into enabledPlugins in ~/.claude/settings.json. Project scope writes the committed .claude/settings.json, and local scope writes .claude/settings.local.json. When one plugin is set at several scopes, local beats project and project beats user.
For a team, project scope puts the entry in a file everyone pulls. It switches the plugin on for each collaborator but downloads nothing, so everyone still installs it once with --scope project.
Type / afterwards and look for skills like /commit-commands:commit. The Installed tab of /plugin lists the plugin with its scope, and if it failed to load, the Errors tab says why.
Plugins from claude-plugins-official update automatically. Community, third-party and local marketplaces start with auto-update off, and you switch it on per marketplace in the Marketplaces tab. Removing a marketplace uninstalls every plugin you installed from it. A running session keeps the versions it loaded until you run /reload-plugins.
# Inside a Claude Code session
/plugin
/plugin marketplace add your-org/plugins
/plugin install commit-commands@claude-plugins-official
/reload-plugins
# From your shell, for setup scripts
claude plugin install formatter@your-org --scope project
claude plugin list
claude plugin disable formatter@your-org
claude plugin update formatter@your-org
Settings
Records the marketplaces you added and which plugins are enabled.
Disk
~/.claude/plugins/holds what Claude Code fetched and installed.Session
Plugins load at startup, or when you run
/reload-plugins.
Source: Claude Code docs: Plugins overview (read November 3, 2026)
Build a plugin: layout, manifest and a first run
A plugin starts with its manifest at .claude-plugin/plugin.json, and the only required field is name. It identifies the plugin and becomes the prefix on every skill and agent, and it can't hold spaces. Users see description in /plugin. An optional version keeps them on that version until you change it.
Put nothing else in .claude-plugin/. Components saved there don't load, and Anthropic's troubleshooting names a skills/ folder inside it as one cause of a plugin that loads with its skills missing.
{
"name": "my-first-plugin",
"description": "A greeting plugin to learn the basics",
"version": "1.0.0",
"author": {
"name": "Your Name"
}
}
- Create the plugin folder and its manifest folder with
mkdir -p my-first-plugin/.claude-plugin. - Save the manifest above as
my-first-plugin/.claude-plugin/plugin.json. - Add a skill at
my-first-plugin/skills/hello/SKILL.md, with a name and a description in its frontmatter. - Run
claude plugin validate ./my-first-plugin. Anthropic's guide shows✔ Validation passedon success, or one line for each field to fix. - Start a session with
claude --plugin-dir ./my-first-pluginand run/my-first-plugin:hello. The flag loads the plugin for that session only and writes nothing to your settings. After an edit,/reload-pluginspicks up the change.
Already keep skills, agents or hooks under .claude/? Copy those folders into the plugin root, and move the hooks object from your settings into hooks/hooks.json. Both copies load until you delete the originals. Skills won't collide, since the plugin's carry a prefix, but a hook in both places runs twice.
Can you get a plugin from Mindket?
Not through /plugin. Mindket is an independent store, not affiliated with Anthropic, and it serves no marketplace.json, so /plugin marketplace add has nothing to read there. Its skills page won't help either: those are ready-made prompts you paste into an AI chat.
A kit laid out like a plugin does load, though. What you download is a zip of plain text files, such as skills, rules, prompts and templates, and its page shows the README and file list. Point claude --plugin-dir at the zip or at the folder you unzip it into, and it loads for one session with its hooks firing like any plugin's.
A kit's zip keeps its files at the top level, with no folder named after the kit around them. Nothing in it runs by itself, and a moderator reads any kit with scripts in it before buyers get it.
We read Anthropic's Claude Code pages on November 2 and 3, 2026 and didn't install these plugins ourselves, so the commands and flags are as documented on those days.
Reference: where each part goes in a plugin
Claude Code ignores a CLAUDE.md at the plugin root, so any instructions belong in a skill.
Subagents go in agents/, one Markdown file each, written like the standalone ones in our Claude Code subagents guide with one difference. Inside a plugin, an agent's hooks, mcpServers and permissionMode fields are ignored, so hooks and servers are declared at the plugin level.
| Location | What goes there |
|---|---|
.claude-plugin/plugin.json | The manifest, and nothing else in that folder |
skills/ | One folder per skill, each with a SKILL.md |
commands/ | Flat Markdown files, the older form of skills |
agents/ | One Markdown file per subagent |
hooks/hooks.json | Hook configuration under a top-level "hooks" key |
.mcp.json | MCP server definitions, shown in /mcp as plugin:my-plugin:db |
.lsp.json | Language servers for diagnostics and code navigation |
bin/ | Executables on the PATH of Claude's shell while the plugin is enabled |
Frequently asked questions
Is a Claude Code plugin the same as the Claude Code extension for VS Code or JetBrains?
The VS Code extension and the JetBrains plugin run Claude Code inside those editors. The plugins on this page are bundles that Claude Code itself loads, wherever you run it.
Is a plugin marketplace the same as Claude Marketplace?
Claude Marketplace is a website, claude.com/marketplace, for browsing plugins, connectors and partner products, and /plugin marketplace add can't add it. A plugin you find there has a Claude Code button that copies its install command for your shell.
Do plugins work in a cloud session or on claude.ai?
Only in part. A cloud session, including claude.ai/code in the browser, doesn't load the plugins in your local settings. The plugin format itself installs on claude.ai and in Cowork, though a different set of components loads there, and a plugin with a top-level bin/ folder won't install there at all.
Can a plugin load in every session without a marketplace?
Yes, by keeping it in your skills folder instead of installing it. Run claude plugin init my-tool and it writes a starter plugin to ~/.claude/skills/my-tool/, which loads with no flag and no install step, under the id my-tool@skills-dir. Its root SKILL.md runs as /my-tool, while skills in its skills/ folder take the /my-tool: prefix.
How do I stop a plugin without uninstalling it?
Disable it: press Space on the Installed tab of /plugin, or run claude plugin disable in your shell. A monitor the plugin already started keeps running until the session ends, though. To pick what to turn off, run claude plugin details, which shows how many tokens a plugin adds to every session.
Sources
- Claude Code docs: Plugins overview https://code.claude.com/docs/en/plugins
- Claude Code docs: Create a Claude Code plugin https://code.claude.com/docs/en/plugins/create
- Claude Code docs: Add components to a plugin https://code.claude.com/docs/en/plugins/components
- Claude Code docs: Install and manage plugins https://code.claude.com/docs/en/plugins/install
- Claude Code docs: Create a marketplace https://code.claude.com/docs/en/plugins/create-marketplace
- Claude blog: Customize Claude Code with plugins https://claude.com/blog/claude-code-plugins

