All articles Day 10 · Extending it

One command.
A whole setup.

By Kowshik Kesavarapu 5 min quick start + 27 min full guide Oct 21, 2026

Roadmap row today: Plugins, packaging it all up. Day 7 gave Claude your tools (MCP), Day 8 gave it know-how (skills) and Day 9 gave it helpers and rules (subagents and hooks). A plugin is the box that carries all of those at once. This article is about using plugins, trusting them, and building your own. Publishing a skill as a plugin is covered in the Day 8 companion page, so here we go wider: the whole picture, for the terminal and for VS Code.

01The big picture: one box, one command

What. A plugin is a folder that Claude Code installs and loads as one unit. Inside can be skills, subagents, hooks, MCP servers and a few other things. Instead of setting up each piece by hand, you run one install command and everything arrives together, with a name, a version and a way to update.

Why it matters. Until now every extra you added lived in its own place: a skill folder, an agent file, a hooks block in settings, an MCP entry. That is fine for you on one project. It falls apart the moment you want the same setup on a second project, on a teammate's laptop, or after you reinstall your machine. A plugin turns "my setup" into something you can hand over.

How this article is organised.

Part 1: Use pluginsSections 02 to 12. What plugins and marketplaces are, installing in the terminal and in VS Code, scopes, language-server plugins, managing, cost and safety.
Part 2: Build a pluginSections 13 to 16. A first plugin in five minutes, the folder layout, converting your existing setup, and a real team plugin with a skill, a helper and a hook.
Part 3: Share and fixSections 17 to 22. Team rollout, organisation controls, troubleshooting, a command cheat sheet, questions and exercises.

02What a plugin is, in plain words

What. Think of a phone. The phone is Claude Code. An app is a plugin: something you add, that brings its own screens and abilities, that you can switch off or delete, and that updates itself. The difference is that a plugin app is made of the parts you already know from this series.

Skills (Day 8)Instructions Claude loads when relevant, also runnable as a slash command. Example: /my-plugin:review.
Subagents (Day 9)Helpers with their own context and tools that Claude can hand work to.
Hooks (Day 9)Commands that run on lifecycle events, such as after every file edit.
MCP servers (Day 7)Tool servers Claude connects to while the plugin is enabled.
Language serversGive Claude live error checking and go-to-definition for a language (section 08).
A manifestOne small file, .claude-plugin/plugin.json, that names the plugin and describes it.

Plugin or standalone? Everything above works on its own without a plugin. Keep it standalone while the setup serves only you or one project. Make or install a plugin when you want several pieces packaged as one, installed in many projects, shared with a team, or released with versions.

03Marketplaces: where plugins come from

What. A marketplace is a catalog: a file named marketplace.json in a Git repository that lists plugins and where to fetch each one. It is not a hosted store. You add a marketplace once, then install plugins from it by name, written plugin-name@marketplace-name, for example commit-commands@claude-plugins-official.

Why it matters. The marketplace is what makes installs and updates one command, and it tells you who publishes the catalog. Knowing the three kinds helps you decide how much to trust a plugin.

Official: claude-plugins-officialAdded for you the first time you start an interactive terminal session. Holds plugins Anthropic maintains (such as commit-commands, code-review, feature-dev, the language-server plugins) plus plugins from partner tool vendors and other authors.
Community: claude-communityThird-party plugins that authors submitted to Anthropic. Not added automatically. Add it with /plugin marketplace add anthropics/claude-plugins-community.
Demo: claude-code-pluginsA small set of examples from the anthropics/claude-code repository. Most are also in the official one, so install those from the official marketplace to avoid two copies.
Third-partyEverything else: a coworker's repo, your company's, an open-source author's. Anthropic does not review these, so read section 12 before you add one.

One more name to know: Claude Marketplace at claude.com/marketplace is a website for browsing, not something you add with /plugin marketplace add. Its plugin pages have a Claude Code button that copies the install command for you.

04Install your first plugin in the terminal

What and why. We will install commit-commands, a small official plugin that adds commands for committing, pushing and opening pull requests (it pairs with Day 6). It is a safe first choice because everything it adds is a skill. How: start Claude Code in a project, then:

>_PowerShell — in a Claude Code session
—☐✕
# 1. open the plugin's details page (nothing is installed yet)
> /plugin install commit-commands@claude-plugins-official

# or browse instead: the Discover tab lists plugins, type to search
> /plugin

In a session, /plugin install does not install straight away. It opens the /plugin panel on that plugin so you can review it and pick a scope first. The panel has four tabs you will use: Discover (browse), Installed (manage), Marketplaces (catalogs) and Errors (what failed to load).

Step 1: read the detailsThe Will install section lists the commands, agents, skills, hooks and servers it adds. For official plugins you also see a Context cost estimate (more in section 11).
Step 2: choose a scopeThree choices, explained in section 05: for you everywhere, for everyone on this repo, or for you in this repo only.
Step 3: read the summary"Plugin is now active" means you can use it. "Run /reload-plugins to apply" means one reload is needed. "Needs configuration" means a bundled server wants settings first. "Couldn't be loaded" means look in the Errors tab.
Step 4: check it worksType / and look for /commit-commands:commit. Or in a normal shell run claude plugin list and read its Version, Scope and Status lines.

Then use it: /commit-commands:commit writes a commit message from your changes. If the install fails with Marketplace "claude-plugins-official" not found, add the marketplace by hand (section 07).

No session open? You can install from any shell, for example in a setup script: claude plugin install commit-commands@claude-plugins-official. It installs at user scope unless you add --scope project or --scope local, and the plugin loads the next time you start Claude Code (or after /reload-plugins).

05Scopes: who gets the plugin

What. The scope you pick when installing decides who the plugin is turned on for, and which settings file records it.

User scopeOn for you in every project on this machine. Recorded in enabledPlugins in ~/.claude/settings.json. Default for most personal tools.
Project scopeOn for everyone who works in this repository. Recorded in .claude/settings.json, which you commit. Use it for team standards.
Local scopeOn for you in this repository only. Recorded in .claude/settings.local.json. Use it to try something without affecting teammates.

Why it matters. Choosing project scope is how a team gets the same setup without a wiki page of instructions. One catch worth knowing: committing the entry turns the plugin on for teammates but does not download it to their machines, so each person also runs claude plugin install <name>@<marketplace> --scope project once. When the same plugin is set at several scopes, local beats project, and project beats user.

06Install a plugin in VS Code

What and why. Most readers of this series live in VS Code, and the extension has its own plugin screen, so you never need a terminal. How:

1. Open Manage pluginsIn the Claude Code panel, type /plugins in the prompt box.
2. InstallOn the Plugins tab, search for commit-commands and click Install. If the tab is empty, open the Marketplaces tab and add anthropics/claude-plugins-official first.
3. Choose a scopeInstall for you, Install for this project or Install locally. Same three scopes as the terminal.
4. Use itChanges apply to open sessions with no restart. Type / in the panel and pick commit-commands:commit.

Because the terminal and the VS Code extension read the same settings files, a plugin you install at user scope in either one is available in the other. The integrated terminal (Ctrl+`) is also handy for the shell commands in this article. Two places behave differently: cloud sessions (including claude.ai/code in the browser) do not load your local plugins at all, and non-interactive claude -p runs cannot run /plugin (plugins you already installed still load, so manage them from a shell).

07Add a marketplace that is not built in

What and why. A coworker or an open-source author publishes a plugin in their own marketplace. Claude Code has to know that catalog before you can install from it. You add it once. How: inside a session use /plugin marketplace add (the short form /plugin market add also works). From a shell use claude plugin marketplace add. The source can be any of these:

GitHub repositoryowner/repo. Add #v1.2.0 after it to pin a tag or branch. Example: /plugin marketplace add anthropics/claude-plugins-community.
Git repo on another hostThe full clone URL, such as an https GitLab address. Add #ref to pin.
Local folderA path that holds .claude-plugin/marketplace.json. Start it with ./ or ../, otherwise name/name is read as a GitHub repo.
Hosted fileThe https:// address of a marketplace.json.
>_PowerShell — add, then install
—☐✕
# one step: add the marketplace and install a plugin from it
claude plugin install deploy-helper --marketplace your-org/plugins

# or two steps
claude plugin marketplace add your-org/plugins
claude plugin install deploy-helper@plugins

# see what you have added, and where each one came from
claude plugin marketplace list

The one-step form needs a recent Claude Code (the in-session form v2.1.275 or later, the shell form v2.1.292 or later). Run claude --version and update if yours is older. Include https:// on every URL. For a private repository, Claude Code uses the git credentials already on your machine and never prompts, so sign in first (for example gh auth login for HTTPS, or an SSH key that works without a passphrase prompt).

08Code intelligence plugins: a plugin you will actually keep

What. A code intelligence plugin connects Claude Code to a language server, the same technology behind red squiggles and go-to-definition in your editor. Why it matters. After every edit Claude then sees the type errors and missing imports its own change introduced, without running a build, and can look up symbols precisely instead of searching text. For a beginner this is one of the highest-value plugins because it catches mistakes early.

How. The plugin does not include the language server. Install the binary first, then the plugin. Official plugins exist for C and C++, C#, Go, Java, Kotlin, Lua, PHP, Python, Ruby, Rust, Swift and TypeScript or JavaScript. For TypeScript:

>_PowerShell — TypeScript example
—☐✕
# 1. the language server (needs Node.js)
npm install -g typescript-language-server typescript
Get-Command typescript-language-server     # confirm it is on PATH

# 2. the plugin, inside Claude Code
> /plugin install typescript-lsp@claude-plugins-official

Other languages follow the same pattern: pyright-lsp (Python), gopls-lsp (Go), rust-analyzer-lsp (Rust) and so on, each with its own binary listed in the plugin's README. The server starts the first time Claude edits a matching file. You know it works when a line like Found 1 new diagnostic issues in 1 files appears under an edit (press Ctrl+O to read them). If it does not, open /plugin, check the Errors tab, and look for Executable not found in $PATH, which names the binary to install. These plugins work in terminal sessions, not in cloud sessions. Claude Code may also pop up an LSP plugin recommendation offering the plugin when it sees the binary on your machine.

09Using what you installed

What and why. Everything a plugin adds is prefixed with the plugin's name, so two plugins can both have a review skill without a clash. Knowing the naming tells you where to look when something is missing. How:

Skills/plugin-name:skill-name, for example /commit-commands:commit. Claude can also pick a skill on its own from its description, as on Day 8.
SubagentsNamed plugin-name:agent-name. Ask for one in words, or use @agent-plugin-name:agent-name. They appear in the agents list next to your own.
HooksRun automatically on their events. They are not tied to the plugin's skills: once the plugin is enabled, its hooks fire in every session. Browse them with /hooks.
MCP serversListed in /mcp as plugin:plugin-name:server. Their tools are named mcp__plugin_<plugin>_<server>__<tool>, which is the name to use in a permission rule (Day 5).
ExecutablesIf a plugin has a bin/ folder, those programs are added to the PATH of Claude's shell, so Claude's Bash commands can run them.

10Manage: update, switch off, remove

What and why. Plugins are not install-and-forget. You will want to turn one off for a while, update it, or remove it. How: open /plugin and press Tab to reach the Installed tab. Type to filter, press Space to enable or disable the selected plugin, and Enter to open its details with Update now and Uninstall. When you close the panel with pending changes, Claude Code reloads plugins for you.

>_PowerShell — the same from a shell
—☐✕
claude plugin list                                        # what is installed, with scope and status
claude plugin disable commit-commands@claude-plugins-official
claude plugin enable  commit-commands@claude-plugins-official
claude plugin update  commit-commands@claude-plugins-official
claude plugin uninstall commit-commands@claude-plugins-official --scope user
claude plugin details commit-commands                   # what it adds and what it costs

# in a running session, after editing a plugin or changing settings
> /reload-plugins
UpdatesMarketplaces with auto-update on refresh themselves after a session starts. It is on by default for the official marketplace and off for community, third-party and local ones, so turn it on per marketplace under the Marketplaces tab. The running session keeps the version it loaded and the next session picks up the new one.
No "update all"There is no single command for every plugin. On the Marketplaces tab, choose a marketplace and Update marketplace to refresh it and update the plugins you installed from it.
Removing a marketplaceRemoving it uninstalls every plugin you installed from it. The tab lists them before you confirm.
DependenciesA plugin can depend on others. Installing it installs them too. After you uninstall, auto-installed dependencies stay until you run claude plugin prune.

11What a plugin costs you

What. An enabled plugin is part of every session, even ones where you never touch it. For each skill and agent that Claude may use on its own, a short name and description sits in Claude's context on every turn. Its hooks fire on their events and its servers run alongside the session. Why it matters. Those tokens count toward your usage and take room in the context window you learned to protect on Day 5. Ten plugins you forgot about can quietly make every session a little worse.

How to keep it lean. Before installing, read the Context cost numbers on an official plugin's page: Every turn is what it adds to each message, When invoked is what its skills and agents add once loaded. After installing, run claude plugin details <name> in a shell. The Always-on line is the per-session token cost, and the rows below show which skill or agent contributes most. On the Installed tab, plugins you have not used recently are grouped under Not used recently. Disable or uninstall those. Disabling is the gentle option: the plugin stays installed but stops costing anything.

12Is it safe? Vet a plugin before you install

What. A plugin can run code on your computer with your permissions. Hooks are shell commands, MCP and language servers are programs Claude Code starts, and a bin/ folder puts executables on the PATH. Skills and agents are instructions that steer what Claude does with its tools. Why it matters. Claude Code's permission rules and sandbox cover the tool calls Claude makes, not the code a plugin's hooks and servers run by themselves. So the trust decision is made when you install, and a marketplace's name tells you who publishes the catalog, not what each plugin does. Auto-update also means files you reviewed can change later.

How. A five-minute check that catches most problems:

1. Who publishes it?Run claude plugin marketplace list to see the source each marketplace was added from. Official and community names are only accepted for repositories under github.com/anthropics/, so a third party cannot pose as them.
2. Read the Will install paneIn /plugin, open the plugin. It lists the commands, agents, skills, hooks and servers it adds. A plugin that "only formats code" but adds a network server deserves a question.
3. Read what the hooks runThe pane shows that a hook exists, not what it executes. Open the plugin's repository (use View on GitHub or Open homepage) and read hooks/hooks.json, .mcp.json and everything in bin/.
4. List what it containsClone the repo, then run claude --plugin-dir <folder> plugin details <name> to print a component inventory without starting a session.
5. Start narrowInstall at local scope first, or on a throwaway project, before giving it user scope everywhere.

Changed your mind? claude plugin uninstall <plugin> with the same --scope you installed it at. Its cached files linger for 14 days, and you can delete the folder under ~/.claude/plugins/cache/ yourself to clear them now. If you no longer trust the author, remove the marketplace too.

13Build your first plugin in five minutes

What and why. Building one teaches you the layout, and it is far less work than it sounds: a plugin is a folder, one small JSON file and your existing Markdown. We will make a plugin with a single greeting skill and run it without installing anything, using the --plugin-dir flag, which loads a folder for one session only. How:

>_PowerShell — create the folders
—☐✕
mkdir my-first-plugin\.claude-plugin
mkdir my-first-plugin\skills\hello
>_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" }
}

Only name is required. It also becomes the prefix on everything the plugin adds, so do not use spaces. version is optional: set it and users stay on that version until you change it. Now the skill:

>_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.

The disable-model-invocation: true line means only you can run it, Claude will not trigger it by itself (remove the line for a skill Claude may use on its own). Then check it, run Claude with the plugin loaded, and try it:

>_PowerShell — validate and run
—☐✕
claude plugin validate .\my-first-plugin     # prints: Validation passed
claude --plugin-dir .\my-first-plugin       # loads it for this session only

> /my-first-plugin:hello

Edit the skill while the session is open, then run /reload-plugins to see the change. You can pass --plugin-dir more than once to load several plugins, or point it at a folder that contains several plugin folders. In VS Code: create the folders with the Explorer's New Folder and New File, run the commands in the integrated terminal, and use code my-first-plugin to open it as its own window. JSON files get colour and warnings for stray commas, which saves a common mistake.

Let Claude scaffold it. Install Anthropic's plugin-dev plugin from the official marketplace, then run /plugin-dev:create-plugin followed by a description of what you want. Claude walks you through designing, creating and validating it. And if you only want a personal plugin that loads in every session with no flag, claude plugin init my-tool scaffolds one under ~/.claude/skills/.

14The layout: what goes where

What and why. Each kind of component lives in a fixed place under the plugin's root folder. If a piece does not show up, nine times out of ten it is in the wrong folder. How to read this:

>_A plugin folder
—☐✕
my-plugin\
  .claude-plugin\
    plugin.json          manifest: ONLY this file goes in here
  skills\
    review\
      SKILL.md           one folder per skill
  agents\
    security-reviewer.md one file per subagent
  hooks\
    hooks.json           hooks, same shape as settings.json
  scripts\
    protect_files.py       your own helper scripts (any name)
  .mcp.json                MCP servers
  bin\                     optional: programs added to PATH
Skillsskills/<name>/SKILL.md. The older flat commands/ folder still loads, but use skills/ for anything new.
Agentsagents/<name>.md, using the same frontmatter as Day 9 (name, description, tools, model and more). Plugin agents ignore hooks, mcpServers and permissionMode in that header; declare hooks and servers at plugin level instead.
Hookshooks/hooks.json with a top-level "hooks" key, exactly the object you would put in a settings file. You can copy a hook over unchanged.
MCP servers.mcp.json at the plugin root, same shape as a project .mcp.json from Day 7.
PathsUse ${CLAUDE_PLUGIN_ROOT} in hook commands and server settings to point at files inside the plugin. Every version is installed to its own folder, so never hard-code a path. For files that must survive updates (caches, node_modules), use ${CLAUDE_PLUGIN_DATA}.

The classic mistake: putting skills/, agents/ or hooks/ inside .claude-plugin/. Only plugin.json belongs there. Everything else sits next to that folder at the plugin root.

15Convert your existing setup into a plugin

What and why. If you followed Days 7 to 9 you already have skills, agents and hooks under .claude/. You can move them into a plugin without rewriting them, and then reuse them in other projects. How, run these from the project root:

>_PowerShell — copy into a plugin
—☐✕
mkdir my-plugin\.claude-plugin
mkdir my-plugin\hooks

# copy whichever folders you have
Copy-Item -Recurse .claude\skills my-plugin\
Copy-Item -Recurse .claude\agents my-plugin\
>_my-plugin/.claude-plugin/plugin.json
—☐✕
{
  "name": "my-plugin",
  "description": "Migrated from standalone configuration",
  "version": "1.0.0"
}

Then create my-plugin/hooks/hooks.json and paste in the hooks object from your .claude/settings.json (the format is identical). Test with claude --plugin-dir .\my-plugin. Your skill /deploy is now also /my-plugin:deploy, and the agent reviewer also exists as my-plugin:reviewer. Watch out: while the originals are still in .claude/, skills and agents coexist because of the prefix, but hooks have no prefix, so a hook in both places runs twice. Once the plugin works, delete the originals and remove the hooks object from your settings.

16A real example: one team-standards plugin

What and why. Let us put Days 8 and 9 into one plugin you could give a teammate: a review skill, a read-only reviewer helper, and a hook that refuses edits to your .env. Install it, and a new teammate gets the same guardrails on their first day. How: the folder is

>_team-standards
—☐✕
team-standards\
  .claude-plugin\plugin.json
  skills\review\SKILL.md
  agents\code-reviewer.md
  hooks\hooks.json
  scripts\protect_files.py
>_.claude-plugin/plugin.json
—☐✕
{
  "name": "team-standards",
  "description": "Review skill, read-only reviewer and a guard for secret files",
  "version": "1.0.0"
}
>_skills/review/SKILL.md
—☐✕
---
name: review
description: Review my uncommitted changes with the team's standards
disable-model-invocation: true
---

Use the code-reviewer agent on my uncommitted changes.
Then summarise its findings as: must fix, should fix, nice to have.
>_agents/code-reviewer.md
—☐✕
---
name: code-reviewer
description: Reviews code changes for bugs, security issues and missing tests.
tools: Read, Grep, Glob, Bash
model: sonnet
---

You are a senior code reviewer. Run git diff, review only the changed code,
and report must fix, should fix and nice to have, each with file, line and fix.
Never edit files.
>_hooks/hooks.json
—☐✕
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "python \"${CLAUDE_PLUGIN_ROOT}/scripts/protect_files.py\""
          }
        ]
      }
    ]
  }
}
>_scripts/protect_files.py
—☐✕
import json, sys

event = json.load(sys.stdin)
path = event.get("tool_input", {}).get("file_path", "").replace("\\", "/")

for pattern in (".env", "package-lock.json", ".git/"):
    if pattern in path:
        print(f"Blocked by team-standards: {path} is protected", file=sys.stderr)
        sys.exit(2)
sys.exit(0)

This is the Day 9 protect-files recipe, now shipped inside the plugin. Notice the hook points at the script with ${CLAUDE_PLUGIN_ROOT}, so it works wherever the plugin is installed. On macOS and Linux the Python command is often python3, so change it there if python is not found. Test it:

>_PowerShell — try it
—☐✕
claude plugin validate .\team-standards
claude --plugin-dir .\team-standards

> /team-standards:review              # the helper reviews your diff
> add a comment to my .env file          # refused by the hook

Want the plugin to carry a tool connection too? Add a .mcp.json at its root. A server declared as db in a plugin called team-standards appears in /mcp as plugin:team-standards:db. Once you are happy, claude plugin eval can run test cases with and without the plugin to check that it really changes Claude's behaviour.

17Share it with your team

What and why. A plugin on your laptop helps you. A plugin in a marketplace helps everyone. How. You have three routes, from smallest to largest:

Send the folderZip the plugin folder and send it. A teammate loads it with claude --plugin-dir .\team-standards.zip. No publishing needed, good for two or three people and for testing.
Your own marketplacePut the plugin in a Git repo with a .claude-plugin/marketplace.json that lists it. Teammates run /plugin marketplace add your-org/your-marketplace once and then install by name, and they receive your updates. Day 8's publish-a-skill page shows the two JSON files, validation and the versioning rules step by step.
Per-repository setupRun claude plugin marketplace add your-org/your-marketplace --scope project once in the project and commit the .claude/settings.json it writes. Install the plugin at project scope too. Teammates who trust the folder get the marketplace registered, and each runs claude plugin install team-standards@your-marketplace --scope project once.

Versions. Claude Code only downloads a new copy of a plugin when its version changes, so bump it on every release you want users to receive. Never rename a published plugin, because installs are recorded under the old name.

18For organisations: managed controls

What and why. If you work in a company, plugins are also a governance question. Administrators can use managed settings to allow or block marketplace sources, force-install chosen plugins on every machine, switch off --plugin-dir, and limit hooks to approved ones. As an individual you rarely touch this, but if a plugin you expect is missing or cannot be removed on a work machine, a managed policy is the likely reason. The Managed scope in the Installed tab marks plugins your organisation installed.

19When a plugin does not work

What and why. Plugins have several layers (settings, files on disk, the running session), so the fix depends on which layer failed. How: work through these in order.

1. ValidateIn a shell run claude plugin validate <path>. It checks the manifest and the header of every skill and agent. Add --strict to fail on warnings too.
2. ReloadEdited files on disk? Run /reload-plugins in the session.
3. Read the Errors tabRun /plugin and open Errors. It names the exact problem, for example a path in your manifest that does not exist.
4. Check the listclaude plugin list shows Status for every plugin. Add --plugin-dir <path> before plugin list to include one you are developing.
Skills missingThe skills/ folder is inside .claude-plugin/ by mistake, or a skill folder has no SKILL.md.
Hook never firesCheck the matcher, then read the debug log, which shows which hooks matched and their exit codes. A hook that exits 0 prints nothing in the transcript.
MCP server not thereRun /mcp. It should list plugin:<plugin>:<server> as connected.
Enabled for the project but not installedA committed project-scope entry does not download the plugin. Run claude plugin install <name>@<marketplace> --scope project.
Marketplace not foundAdd it by hand, for example /plugin marketplace add anthropics/claude-plugins-official.
--plugin-dir loads nothingYou pointed it at a marketplace root. It needs a folder that has .claude-plugin/plugin.json, one plugin at a time.

20Cheat sheet: I want this, so run that

"Browse plugins"/plugin, Discover tab. VS Code: /plugins.
"Install one"/plugin install name@marketplace, or in a shell claude plugin install name@marketplace.
"Add a marketplace"/plugin marketplace add owner/repo.
"See what I have"claude plugin list and claude plugin marketplace list.
"Switch one off"claude plugin disable name@marketplace, or Space on the Installed tab.
"What does it cost?"claude plugin details name, the Always-on line.
"Update it"claude plugin update name@marketplace, or Update marketplace in the Marketplaces tab.
"Remove it"claude plugin uninstall name@marketplace --scope user.
"Try a plugin folder"claude --plugin-dir .\folder, then /reload-plugins after edits.
"Check my plugin"claude plugin validate .\folder.
"Make a personal one"claude plugin init my-tool.

21Questions beginners ask

Plugin, skill or MCP server: which do I need?They are different sizes of the same idea. A skill is know-how, an MCP server is a tool connection, a plugin is a package that can hold either plus agents and hooks. Start with a skill, and make a plugin when you need to share or reuse the set.
Is the VS Code extension a "plugin"?No. The VS Code extension and the JetBrains plugin are ways to run Claude Code inside an editor. A Claude Code plugin is the package of skills, agents, hooks and servers this article is about. The confusing shared word is just a naming coincidence.
Do plugins cost money?Installing is free, but an enabled plugin adds context tokens to each session (section 11), which counts toward your usage. Also check whether a partner plugin needs an account with that vendor.
Does a plugin work for my whole team automatically?Only after each person installs it. Project scope turns it on for the repo, but every teammate still runs the install once on their machine.
I installed a plugin and see no new command.Run /reload-plugins, then type / and look for /plugin-name:skill. Then check the Errors tab.
Can I use a plugin from another tool's ecosystem?Only ones published as Claude Code plugins, from a marketplace you added. Claude.ai and Cowork can install the same format, but a different set of components loads there.
Is it safe to turn on auto-update?It is on by default for the official marketplace only. Updates replace files you may have reviewed, so for third-party marketplaces leave it off unless you trust the author, and update by hand after reading the change.

22Try this today

InstallAdd commit-commands from the official marketplace, in the terminal or with /plugins in VS Code, and run /commit-commands:commit on a small change.
InspectRun claude plugin details on it and read the Always-on number. Read its Will install pane before you hit install on the next one.
Add the eyesInstall the language-server plugin for the language you code in and ask Claude to introduce, then fix, a type error. Watch the diagnostics line appear.
BuildCreate my-first-plugin, validate it and run it with --plugin-dir. Then add the protect-files hook from the team-standards example.
CleanOpen the Installed tab, find anything under "Not used recently" and disable it.

That finishes the extending-Claude-Code block of the series: MCP for tools, skills for know-how, subagents and hooks for helpers and rules, and plugins to package and share them all.

Follow along

A new article lands every day. I post the short version on LinkedIn.