62  62. Plugins and Marketplaces

Skills, subagents, hooks, and MCP servers each work on their own. A plugin packages several of them into one unit that you can install with one command, share with classmates, and keep up to date. This page covers what plugins are, where they come from, how to install and manage them, how to judge whether to trust one, and how to build a tiny plugin of your own.

62.1 What a plugin is

As of Oct 6, 2026 · Official docs: Plugins overview

A plugin is a folder of components that Claude Code installs and loads as one unit. Think of an app on your phone: one install, and you get a bundle of features. The usual components are:

  • Skills: instructions Claude loads when relevant, which you can also run as / commands.
  • Agents: subagent definitions.
  • Hooks: commands that run at lifecycle events.
  • A hooks module: hooks written as JavaScript functions; a plugin that has one is a mod.
  • MCP servers: extra tools for Claude.

Plugins can also carry language servers (for code intelligence), output styles, color themes, and executable programs. Each part has a fixed place in the plugin’s folder:

my-plugin/
├── .claude-plugin/
│   └── plugin.json      <- the manifest: the plugin's name, description, version
├── skills/
│   └── review/
│       └── SKILL.md     <- a skill, run as /my-plugin:review
├── agents/
│   └── reviewer.md      <- a subagent
├── hooks/
│   └── hooks.json       <- hooks
└── .mcp.json            <- MCP servers

The manifest (plugin.json) names the plugin. That name becomes a prefix on its skills and agents, such as /my-plugin:review, so two plugins can both have a review skill without colliding.

Do you need a plugin? Not to use these features yourself: a skill saved in ~/.claude/skills/, for example, already works in all your projects. Use a plugin to install a setup someone else built, or to share your own setup with teammates and several projects.

62.2 Marketplaces

As of Oct 6, 2026 · Official docs: Anthropic’s marketplaces

A marketplace is a catalog of plugins: a repository or folder with a .claude-plugin/marketplace.json file that lists plugins and where to fetch each one. It’s a catalog, not a store. You add a marketplace once, then install plugins from it as plugin-name@marketplace-name, for example commit-commands@claude-plugins-official.

Anthropic publishes three general-purpose marketplaces:

Official Community Demo
Name (after @) claude-plugins-official claude-community claude-code-plugins
GitHub repository anthropics/claude-plugins-official anthropics/claude-plugins-community anthropics/claude-code
What’s in it Plugins Anthropic maintains, plus plugins from partners and other authors Third-party plugins submitted to Anthropic A few example plugins
How you get it Added automatically the first time you start an interactive terminal session /plugin marketplace add anthropics/claude-plugins-community /plugin marketplace add anthropics/claude-code

Anthropic also has a few topic-specific marketplaces. Any marketplace without one of Anthropic’s reserved names is third-party, such as one a classmate or a company publishes on GitHub. Anthropic doesn’t review third-party marketplaces. To browse the official catalog on the web, see Claude Marketplace (a website, not a marketplace you add).

62.3 Installing and managing plugins

As of Oct 6, 2026 · Official docs: Install and manage plugins

Inside Claude Code, /plugin opens the plugin panel. Press Tab to move between its tabs: Discover (plugins from your marketplaces; type to search), Installed, Marketplaces, and Errors.

To install the official commit-commands plugin (commands for committing, pushing, and opening pull requests):

/plugin install commit-commands@claude-plugins-official

This doesn’t install right away. It opens the plugin’s details, which list what it will add (“Will install”) and, for official plugins, a Context cost estimate. Then you choose a scope:

Scope Who gets the plugin Recorded in
User You, in every project on this computer ~/.claude/settings.json
Project Everyone who works in this repository .claude/settings.json (committed)
Local You, in this repository only .claude/settings.local.json

The install summary tells you whether the plugin is active now or whether to run /reload-plugins. Its skills then appear under its name: type / and look for /commit-commands:commit.

The same actions work from your shell (Mac Terminal or Git Bash), without starting a session:

claude plugin install commit-commands@claude-plugins-official
claude plugin list
claude plugin disable commit-commands@claude-plugins-official
claude plugin enable commit-commands@claude-plugins-official
claude plugin uninstall commit-commands@claude-plugins-official

claude plugin install uses user scope unless you add --scope project or --scope local. A plugin installed from the shell loads in your next session, or after /reload-plugins in an open one.

  • Disable vs uninstall. Disabling keeps the plugin installed but turns it off; uninstalling removes it. Both are also on the Installed tab.
  • Updates. Plugins from the official marketplace update automatically by default; for the community marketplace and third-party marketplaces, auto-update is off unless you turn it on. Update one by hand with claude plugin update <plugin>@<marketplace>. A running session keeps the old version until /reload-plugins or the next session.
  • Marketplaces. claude plugin marketplace add <owner>/<repo>, list, update, and remove manage marketplaces (inside a session, use /plugin marketplace ...). Removing a marketplace uninstalls every plugin you installed from it.

In the desktop app’s Code tab, click + next to the prompt box, then Plugins. In VS Code, type /plugins in the Claude Code panel. The terminal, the desktop app’s local sessions, and the VS Code extension on one computer share the same settings files, so a user-scope plugin installed in one is available in the others. Cloud sessions (such as claude.ai/code) don’t load the plugins installed on your computer. Plugins you turn on in your claude.ai account can also sync into Claude Code; they show up with the ID <name>@synced.

62.4 What an enabled plugin costs

As of Oct 6, 2026 · Official docs: Plugins overview: What an enabled plugin adds to your sessions

An enabled plugin is part of every session, not only the ones where you use it:

  • Context and usage. The name and description of each skill and agent Claude can use on its own sit in Claude’s context on every turn, so Claude knows they exist. That uses tokens and room in the context window even when nothing from the plugin runs.
  • Processes. Its MCP servers run, and its hooks fire on their events.

To check: look at the Context cost in the plugin’s details, run claude plugin details <name> in your shell (its Always-on line shows the tokens added to every session), and look for the Not used recently group on the Installed tab. Disable what you don’t use.

62.5 Trust and security

As of Oct 6, 2026 · Official docs: Plugin security and trust

A plugin can run code as you

“A Claude Code plugin you install can execute arbitrary code on your machine with your user privileges.” This is true whichever marketplace it comes from.

What makes a plugin powerful also makes it risky:

  • Its hooks, MCP servers, and mod code run on your computer with your permissions, outside Claude Code’s sandbox. Your permission rules cover the tool calls Claude makes, not the code a plugin runs by itself.
  • Programs in its bin/ folder can be run by Claude’s Bash commands.
  • Its skills and agents enter Claude’s context as instructions, which shape what Claude does.
  • With auto-update on, the files you reviewed can change later.

Before installing, especially from a third-party marketplace:

  1. Check where the marketplace comes from: claude plugin marketplace list prints each marketplace’s source.
  2. Read the Will install list in the plugin’s details in /plugin.
  3. Open the plugin’s source (Open homepage or View on GitHub) and read hooks/hooks.json (what each hook runs), .mcp.json (each server’s command or URL), and everything in bin/.
  4. If you don’t understand it or don’t trust the author, don’t install it.

Marketplace names help a little: Claude Code accepts Anthropic’s official and community marketplace names only from github.com/anthropics/ repositories, so a stranger can’t publish a fake claude-plugins-official. But the name tells you who publishes the catalog, not what each plugin does.

To remove a plugin you no longer trust, run claude plugin uninstall <plugin> --scope <the scope you used>.

62.6 Create a minimal plugin

As of Oct 6, 2026 · Official docs: Create a Claude Code plugin

This plugin has one component, a greeting skill. Run these commands in your shell (Mac Terminal or Git Bash), from a folder such as ~/projects:

mkdir -p my-first-plugin/.claude-plugin
mkdir -p my-first-plugin/skills/hello

Save the manifest as my-first-plugin/.claude-plugin/plugin.json:

{
  "name": "my-first-plugin",
  "description": "A greeting plugin to learn the basics",
  "version": "1.0.0",
  "author": {
    "name": "Your Name"
  }
}

Save the skill as my-first-plugin/skills/hello/SKILL.md:

---
name: hello
description: Greet the user with a friendly message
disable-model-invocation: true
---

Greet the user warmly and ask how you can help them today.

(disable-model-invocation: true means only you can start this skill; Claude won’t run it on its own.) Check the files, then start Claude Code with the plugin loaded for this session only:

claude plugin validate ./my-first-plugin
claude --plugin-dir ./my-first-plugin

The first command should end with ✔ Validation passed. In the session, run /my-first-plugin:hello and Claude greets you. If you edit the files during the session, run /reload-plugins to load your changes.

Only plugin.json goes in .claude-plugin/

Put skills/, agents/, hooks/, and .mcp.json at the plugin’s top level, next to .claude-plugin/. Components saved inside .claude-plugin/ don’t load.

To share the plugin, you can send the folder (or a .zip), list it in a marketplace of your own (a GitHub repository with a marketplace.json), or submit it to Anthropic’s directory.

  • claude plugin init my-tool scaffolds a starter plugin in ~/.claude/skills/my-tool/, which then loads in every session as my-tool@skills-dir.
  • If you already have skills, agents, or hooks under a project’s .claude/ folder, you can copy them into a plugin folder; hooks move from your settings file into hooks/hooks.json (same format).
  • Anthropic’s plugin-dev plugin (in the official marketplace) adds /plugin-dev:create-plugin, which walks you through designing and validating a larger plugin.

62.7 Key takeaways

  • A plugin bundles skills, agents, hooks, MCP servers, and more under one name; a marketplace is a catalog you install plugins from.
  • Use /plugin (or claude plugin ... in your shell) to browse, install, disable, update, and uninstall; pick a user, project, or local scope.
  • Enabled plugins cost context and run processes in every session.
  • Plugins run code with your permissions: review them before installing.

Practice Questions

Easy

Question 1 · Short answer

What is a Claude Code plugin? Name three kinds of components it can contain.

A plugin is a folder of components that Claude Code installs and loads as one unit, named by a manifest (.claude-plugin/plugin.json). It can contain, for example, skills, agents (subagents), hooks, MCP servers, and a hooks module (which makes it a mod), as well as language servers, output styles, themes, and executables.

Question 2 · Multiple choice

What is a plugin marketplace?

  1. A store where you pay for plugins with a credit card
  2. A catalog (a marketplace.json file in a repository or folder) that lists plugins and where to fetch them
  3. The ~/.claude/plugins/ folder on your computer
  4. Another name for an MCP server

b. A marketplace is a catalog, not a store (a). ~/.claude/plugins/ (c) is where Claude Code keeps installed plugin files, and an MCP server (d) provides tools; neither is a catalog.

Question 3 · Fill in the blank

Anthropic’s official marketplace is named ________, and Claude Code adds it automatically the first time you start an ________ terminal session.

claude-plugins-official; interactive.

Question 4 · Matching

Match each file or folder in a plugin with what it provides.

Path Provides
1. .claude-plugin/plugin.json A. A subagent Claude can delegate to
2. skills/review/SKILL.md B. Tools from an MCP server
3. agents/reviewer.md C. The plugin’s name and description (the manifest)
4. hooks/hooks.json D. Commands that run at lifecycle events
5. .mcp.json E. A skill run as /<plugin>:review

1 → C, 2 → E, 3 → A, 4 → D, 5 → B.

Question 5 · True or false

Plugins from Anthropic’s official marketplace run in a sandbox, so they can’t run code on your computer.

False. Any installed plugin can execute code with your user privileges (through hooks, MCP servers, mod code, or bin/ programs), whichever marketplace it comes from. Hooks and MCP servers run outside Claude Code’s sandbox. Review plugins before installing them.

Question 6 · Multiple choice

In the /plugin panel, which tab shows the plugins you have installed and lets you enable, disable, update, or uninstall them?

  1. Discover
  2. Installed
  3. Marketplaces
  4. Errors

b. Installed. Discover (a) lists plugins available from your marketplaces, Marketplaces (c) manages the catalogs themselves, and Errors (d) shows what failed to load and why.

Medium

Question 7 · Write the command

From your shell (not inside Claude Code), install the commit-commands plugin from Anthropic’s official marketplace so that it is enabled for everyone who works in the current repository.

claude plugin install commit-commands@claude-plugins-official --scope project

Without --scope project, claude plugin install uses user scope.

Question 8 · Short answer

After installing commit-commands, Sam types /commit, and the command menu suggests /commit-commands:commit. Why does the plugin’s skill have that longer name?

Plugin skills are named /<plugin>:<skill>, with the plugin’s name as a prefix, so different plugins can have skills with the same name without colliding. (The / menu also finds a plugin skill by its short name, so typing /commit lists it and choosing it inserts the full name. If it doesn’t appear at all, the install summary may have asked him to run /reload-plugins.)

Question 9 · Scenario

Maria installs a formatting plugin at project scope and commits .claude/settings.json. Her teammate pulls the change. Is the plugin now working for the teammate? Explain.

Not automatically. Project scope records in the committed .claude/settings.json that the plugin is enabled for the repository, but it doesn’t download the plugin to other machines. Each teammate still installs it once, for example with claude plugin install <name>@<marketplace> --scope project.

Question 10 · Short answer

What is the difference between disabling and uninstalling a plugin, and when would you choose each?

Disabling turns the plugin off but keeps it installed, so you can switch it back on later (good for a plugin you use only sometimes, to save context and avoid running its servers and hooks). Uninstalling removes it (good when you no longer want it or no longer trust it).

Question 11 · Write the command

Inside a Claude Code session, add Anthropic’s community marketplace, then start installing a plugin named example-tool from it.

/plugin marketplace add anthropics/claude-plugins-community
/plugin install example-tool@claude-community

Note that the marketplace’s name is claude-community, not the repository name. The install command opens the plugin’s details, where you choose a scope.

Question 12 · Multiple choice

You are developing a plugin in the folder ./my-first-plugin. Which command starts Claude Code with that plugin loaded for this session only, without installing it?

  1. claude plugin install ./my-first-plugin
  2. claude --plugin-dir ./my-first-plugin
  3. claude plugin validate ./my-first-plugin
  4. claude --agent my-first-plugin

b. --plugin-dir loads a plugin folder (or .zip) for one session. claude plugin install (a) installs from a marketplace by name. claude plugin validate (c) only checks the files, and --agent (d) runs a subagent as the session’s main agent.

Question 13 · Short answer

You are in a session started with --plugin-dir and you just edited your plugin’s SKILL.md. How do you load the change without restarting?

Run /reload-plugins. It reloads the active plugins and reports what it loaded.

Hard

Question 14 · Find the bug

Sam’s plugin loads, but its skill never appears. Here is his layout. What is wrong?

my-plugin/
└── .claude-plugin/
    ├── plugin.json
    └── skills/
        └── hello/
            └── SKILL.md

Only plugin.json belongs inside .claude-plugin/. Components saved there don’t load. Move skills/ up to the plugin’s top level, next to .claude-plugin/ (so the path is my-plugin/skills/hello/SKILL.md), then run /reload-plugins or restart.

Question 15 · Scenario

A classmate sends you a link to a third-party marketplace with a plugin that “makes Claude 10x faster”. List the steps you would take before installing it.

  • Check who publishes the marketplace and where it comes from (after adding, claude plugin marketplace list prints the source).
  • Open the plugin in /plugin and read the Will install list.
  • Read the source: hooks/hooks.json (what each hook runs), .mcp.json (each server’s command or URL), and everything in bin/.
  • Optionally clone it and run claude --plugin-dir <folder> plugin details <name> to list its components.
  • Be skeptical of vague claims; if you don’t understand what it runs or don’t trust the author, don’t install it. If you do install it, consider the narrowest scope and remember it runs with your permissions.

Question 16 · Long answer

You installed eight plugins but use only two. Explain why the other six still cost you something, and how you would find and fix the problem.

An enabled plugin is part of every session: the names and descriptions of its skills and agents sit in Claude’s context on every turn (using tokens and context space), its MCP servers run, and its hooks fire, even if you never use it. To find the cost, check claude plugin details <name> (the Always-on line), the Context cost shown in the details pane, and the Not used recently group on the Installed tab. Fix it by disabling (or uninstalling) the plugins you don’t use.

Question 17 · Predict

Someone creates a GitHub repository github.com/evil-dev/plugins whose marketplace is named claude-plugins-official, and tricks you into adding it. What does Claude Code do, and why?

Claude Code refuses to load it. Anthropic’s official and community marketplace names are accepted only for marketplaces sourced from github.com/anthropics/ repositories, so a third-party marketplace can’t pretend to be Anthropic’s (the error says the marketplace is registered from an untrusted source). Note that this protects the name; it says nothing about whether a plugin in a genuine third-party marketplace is safe.

Question 18 · Compare

You have permission deny rules and the sandbox turned on. Does that protect you from a malicious hook inside a plugin? Explain.

No. Permission rules and the sandbox cover the tool calls Claude makes. A plugin’s hooks and MCP server processes are run by Claude Code itself, with your full user permissions and outside the sandbox. A malicious hook could read or delete your files no matter what your deny rules say. The protection is to review the plugin (especially hooks/hooks.json, .mcp.json, and bin/) before installing it.

Question 19 · Long answer

Plugins from the official marketplace auto-update by default, while third-party marketplaces don’t. Give one advantage and one risk of automatic updates for a plugin.

  • Advantage: you get bug fixes, security fixes, and new features without doing anything.
  • Risk: the files you reviewed before installing can change on disk later, so a plugin that was safe could start running different code (for example if its author’s account is compromised). For third-party plugins, keeping auto-update off and updating deliberately (with claude plugin update <plugin>@<marketplace>) after a review is safer.

Challenge

Question 20 · Hands-on

Install commit-commands from the official marketplace at local scope in a practice Git repository. Before installing, note what the details pane says it will install and its context cost. Use /commit-commands:commit to commit a small change, then run claude plugin details commit-commands in your shell and finally disable the plugin.

A good answer records:

  • the Will install list and the Context cost numbers (Every turn / When invoked) from the details pane;
  • the scope chosen (“Install for you, in this repo only”) and that the entry went into .claude/settings.local.json;
  • the commit Claude made (message and files) and a check with git log;
  • the Always-on token count from claude plugin details;
  • how the plugin was disabled (Installed tab or claude plugin disable commit-commands@claude-plugins-official).

Question 21 · Hands-on

Build my-first-plugin from this page, validate it, and run /my-first-plugin:hello. Then add a second skill, skills/explain/SKILL.md, that explains a file in plain English for a beginner, and load it with /reload-plugins.

A good answer shows the folder tree, the plugin.json, both SKILL.md files, the ✔ Validation passed output, and the result of running /my-first-plugin:hello and /my-first-plugin:explain <file>. The second skill needs its own folder under skills/ with frontmatter (name, description) and instructions such as “Explain the file the user names in plain English for a beginner: what it does, its main parts, and how it fits into the project.”

Question 22 · Long answer

Your student team wants everyone to have the same two skills, one code-review subagent, and one formatting hook. Explain whether you would share them by committing them to the project’s .claude/ folder or by building a plugin, and why.

Either can work; a good answer weighs them:

  • Project .claude/ folder: simplest for one repository. Everything is committed with the code, so teammates get it when they pull, and nothing has to be installed.
  • Plugin: better when the same setup is needed in several repositories, when you want versioned releases and updates, or when other people outside the repository should install it. It needs a marketplace (or a shared folder) and each person installs it.

For one team project, committing to .claude/ is usually enough; if the team starts several projects that need the same setup, package it as a plugin.

© 2025-2026 Y. Rosenthal. All rights reserved.