Claude Code plugins, mods, skills and MCP servers compared
A Claude Code plugin is a folder that Claude Code installs as one unit. It can hold skills, subagents, settings hooks, MCP servers and a hooks module. A plugin with a hooks module is called a mod.
Updated
Side by side
| What it is | What it changes | You write | |
|---|---|---|---|
| Skill | A SKILL.md file of instructions Claude loads when it needs them | What Claude knows and how it works | Markdown |
| Subagent | A definition of a helper Claude can hand work to | Who does a task, with which tools | Markdown |
| Settings hook | A command, HTTP request or prompt that runs on an event | Whether a tool call or prompt goes ahead; extra context for Claude | A script and a JSON entry |
| MCP server | A separate process or service that gives Claude tools | Which tools Claude has | A server, in any language |
| Mod | Functions Claude Code runs inside its own process | Tool calls, prompts, commands, and what the screen shows | JavaScript or TypeScript |
A mod is the only one of these that can draw: a pane, a band above the prompt, a status line entry, a toast.
Do you need a plugin at all?
Skills, subagents, hooks and MCP servers all work without a plugin. A skill you save in ~/.claude/skills/ already works in every project on your machine. Package things as a plugin when you want to share them, install them in one go, or ship updates through a marketplace. A mod is the exception: its hooks module only loads as part of a plugin.
Which one fits
- You keep pasting the same instructions into chat: write a skill.
- Claude needs to reach a database, an API or a ticket tracker: add an MCP server.
- You want to block
git push --forceor log every command with a script you have: add a settings hook. The hooks guide shows how. - You want a live view of your token usage, a new slash command, or a check that asks you before a risky command runs: use a mod. Browse them by category.
Every plugin costs a little context
An enabled plugin is part of every session, even when you don't use it. For each skill, agent and command Claude can call on its own, Claude sees its name and description on every turn, and the plugin's MCP servers start with the session. Turn off the plugins you stopped using in /plugin.