Claude skills vs MCP, subagents, plugins, commands and hooks
Skills teach the agent how to do something. MCP servers give it access to something. Subagents give work its own context, plugins package all of these for installation, and hooks enforce rules every time. Here is how to tell them apart and when to reach for each.
Updated · Skill Index docs
At a glance
| What it is | Loaded | Use it for | Where it lives | |
|---|---|---|---|---|
| Skill | A folder with SKILL.md instructions, plus optional scripts and reference files | Description always; full instructions only when the task matches or you type /skill-name | Teaching a procedure: how to review a PR, write a migration, design a UI | .claude/skills/ or ~/.claude/skills/ |
| MCP server | A program that exposes tools and data to the agent over the Model Context Protocol | Its tools are available for the whole session | Access to something outside: a database, a browser, an issue tracker, an API | .mcp.json or claude mcp add |
| Subagent | A separate worker with its own context window, prompt and tool set | When the main agent delegates a task to it | Isolating noisy or parallel work so it doesn’t fill the main conversation | .claude/agents/ or ~/.claude/agents/ |
| Plugin | A package that bundles skills, subagents, hooks, MCP servers and commands | When installed and enabled | Distributing a set of extensions as one install | Installed with /plugin from a marketplace |
| Slash command | A Markdown prompt you run by name | Only when you type it | A saved prompt you trigger by hand (now merged into skills) | .claude/commands/ |
| Hook | A shell command Claude Code runs on an event, such as before every file edit | Every time the event fires | Rules that must hold every time: formatting, blocking a command, notifications | settings.json, or a skill’s hooks field |
| CLAUDE.md | Standing project instructions | At the start of every session | Facts and conventions that apply to all work in the repo | Repo root, ~/.claude/CLAUDE.md |
Skills vs MCP
An MCP server is a capability: it lets the agent query Postgres, drive a browser, or file a Jira ticket. A skill is expertise: the steps, conventions and pitfalls for a kind of task. If the agent can't reach the system, you need MCP (or a CLI it can call). If it can reach it but does the job badly, you need a skill.
They combine naturally: Anthropic's mcp-builder is a skill for writing MCP servers, and vendors such as Supabase and Neon publish skills that explain how to use their platforms correctly.
Skills vs subagents
A subagent is a separate worker with its own context window, defined as a Markdown file in .claude/agents/. Use one when a task would flood the main conversation with output (a broad code search, a long test run) or should run in parallel. The two mix: a skill with context: fork runs in a forked subagent, so the procedure and the isolation come together.
Skills vs plugins
A plugin is not an alternative to a skill, it is a way to ship one. A plugin can bundle skills, subagents, hooks, MCP server configs and commands, and installs from a marketplace with /plugin. Plugin skills are namespaced as /plugin-name:skill-name, so they never clash with yours. A single skill doesn't need a plugin: copying the folder or running npx skills add is enough.
Skills vs slash commands
In Claude Code, custom commands have been merged into skills: .claude/commands/deploy.md and .claude/skills/deploy/SKILL.md both create /deploy, and existing command files keep working. A skill adds a folder for supporting files, control over who can invoke it, and automatic loading when a task matches. If a skill and a command share a name, the skill wins.
Skills vs hooks
Claude applies a skill with judgment and can drift from it in a long session. A hook is code Claude Code runs on an event, every time, regardless of what the model decides. Anthropic's guidance: if a rule must hold every time (run the formatter after each edit, never touch a file), move it into a hook; a skill can register hooks through its hooks field.
Skills vs CLAUDE.md and rules files
CLAUDE.md (and AGENTS.md in other agents) is read at the start of every session, so it suits short facts that always apply: build commands, code style, where things live. Anything long or only occasionally relevant belongs in a skill, which costs almost no context until it is used.
Do skills work outside Claude Code?
Yes. SKILL.md follows the open Agent Skills format, and Codex, Cursor, GitHub Copilot, Gemini CLI and others load the same files from their own folders (see where skills are stored). Claude-only fields such as context: fork are ignored elsewhere. To write one, start with the SKILL.md format guide; to find one, browse skills by topic.