Comparison · Updated

Skills vs MCP vs hooks vs subagents vs slash commands: what each does and when to use it

Skills vs MCP explained: what Claude skills, MCP servers, hooks, subagents, slash commands and plugins each do, what they cost in context, and when to use each.

MCP gives an agent tools; a skill gives it know-how. An MCP server connects the agent to an outside system (a database, Slack, a browser), while a skill is a folder of instructions and scripts the agent loads only when a task needs it. Hooks are scripts that always fire on an event, subagents are separate workers that return a summary, slash commands are now just skills you call by name, and plugins package all of these for sharing. Most good setups use several at once.

Each piece side by side

Based on Anthropic's Claude Code docs, as of October 2026. Most of it applies to other agents that support the same features.

PieceWhat it isWhen it loadsWho triggers itUse it for
CLAUDE.mdProject rules and contextEvery sessionAlways onBuild commands, conventions, "never do X"
SkillSKILL.md with instructions, optional scripts and referencesDescription at start, body when usedClaude (by description) or you (/name)Repeatable workflows, reference docs
Slash commandA skill you invoke by nameWhen you type itYou/deploy, /release-notes
MCP serverA connection to an external service, exposing toolsTool names at start, schemas on demandClaude calls the toolsDatabases, Slack, Jira, browsers
HookA command, HTTP call, MCP tool call, prompt or subagentNever, it runs outside the contextA lifecycle event, every timeLint after edits, block unsafe commands, notify
SubagentA worker with its own context windowWhen spawnedClaude or youBig searches, parallel work, reviews
PluginA bundle of skills, hooks, subagents and MCP serversWhen enabledYou install itSharing a setup across repos or a team

Skills: know-how on demand

A skill is a folder with a SKILL.md file: YAML frontmatter (at least a description) and Markdown instructions, plus optional supporting files and scripts.

.claude/skills/weekly-report/
├── SKILL.md          # what the skill does and the steps
├── template.md       # loaded only when needed
└── scripts/fetch.py  # run, not loaded

Only the name and description sit in context at the start of a session. The body loads when Claude decides the skill fits your request, or when you type /weekly-report. That makes skills cheap to keep around, which is why Anthropic recommends moving long reference material out of CLAUDE.md and into skills. Add disable-model-invocation: true for skills with side effects, such as a deploy, so they run only when you ask.

Skills live in ~/.claude/skills/ (all your projects), .claude/skills/ (one repository, shared with the team) or inside a plugin. They follow the open Agent Skills standard, so the same folder works in Codex (~/.agents/skills), Gemini CLI, Copilot CLI, Cursor, OpenCode, Kiro and Antigravity, as long as you stick to the standard fields.

For ready-made examples, the Briefkin skills library has skills that pull a report from an app (Stripe, GitHub, Google Analytics and more) on a schedule and post it as one card. See also what Claude skills are.

MCP servers: tools and data

The Model Context Protocol is an open standard for connecting agents to external systems. An MCP server exposes tools (query the database, create a Jira ticket, read a Slack channel) and handles the connection and authentication. In Claude Code you add one with claude mcp add or a .mcp.json file in the repo.

Claude Code loads only tool names at the start and fetches full schemas when it needs a tool, so idle servers cost little context. Run /mcp to check connections. Our guide to what an MCP server is covers the basics.

Skills vs MCP: use both

They answer different questions. MCP answers "can the agent reach this system?" A skill answers "does the agent know how we do this here?"

Example: you want a weekly revenue summary. Stripe's official MCP server (claude mcp add --transport http stripe https://mcp.stripe.com/) gives Claude access to subscriptions and invoices. A skill says which numbers matter (MRR, new, churned, failed payments), how to compute them, and what the summary looks like. Without the server the skill has no data; without the skill the agent pulls data but reports it differently every week.

Hooks: things that must always happen

A hook is your code, run by Claude Code at a lifecycle event such as PreToolUse, PostToolUse, Stop or SessionEnd (33 events as of October 2026). It can be a shell command, an HTTP request, an MCP tool call, a prompt, or a subagent.

The key difference from a skill is certainty. An instruction like "never edit .env" in a skill or CLAUDE.md is a request; a PreToolUse hook that blocks the edit is enforcement. Hooks also cost no context unless they return output. Typical uses: format on save, run tests after edits, block rm -rf, and send a notification when a session stops. Briefkin's own integration is a hook: it posts each session's state to a board. More in our Claude Code hooks guide.

Subagents: separate workers

A subagent runs its own loop with a fresh context window and returns a summary. Use one when a side task would flood your conversation (reading 40 files to find where a value is set) or to run work in parallel. Custom subagents can have their own instructions and tools, and can preload skills with a skills: field. A skill can also run in a forked subagent with context: fork. For several agents working together, see Claude Code agent teams.

Slash commands are skills now

In Claude Code, custom commands were merged into skills. A file at .claude/commands/deploy.md and a skill at .claude/skills/deploy/SKILL.md both create /deploy, and existing command files keep working. The skill format adds supporting files and lets Claude call it on its own.

Plugins: the packaging layer

A plugin bundles skills, hooks, subagents and MCP servers into one install, with namespaced skills (/my-plugin:review) so plugins don't collide. Use one when a second repository or teammate needs the same setup. In the Claude app, plugins made for Cowork also work in chat and Claude Code.

Which to use

  • Claude gets a convention wrong twice: add it to CLAUDE.md.
  • You paste the same procedure for the third time: make it a skill.
  • You keep copying data from a tool Claude can't see: connect an MCP server.
  • Something must happen on every edit or every stop: write a hook.
  • A side task fills your context: send it to a subagent.
  • A second repo needs the same setup: package a plugin.

Questions

Do skills replace MCP?

No. A skill tells the agent how to do something; an MCP server gives it the tools and data access to do it. They are designed to work together, for example an MCP server for your database plus a skill with your schema and query patterns.

Are slash commands and skills the same thing now?

In Claude Code, yes. Custom commands were merged into skills: .claude/commands/deploy.md and .claude/skills/deploy/SKILL.md both create /deploy, and old command files keep working.

What is the difference between a skill and a subagent?

A skill is content loaded into the current conversation. A subagent is a separate worker with its own context window that does a task and returns only a summary. A subagent can preload skills, and a skill can run in a forked subagent.

Do skills work outside Claude?

Yes. Claude Code skills follow the open Agent Skills standard, and Codex, Gemini CLI, GitHub Copilot CLI, Cursor, OpenCode, Kiro and Antigravity all read skills too. Stick to the standard frontmatter fields if you want one skill to work everywhere.

When should I use a hook instead of a skill?

When something must happen every time, the same way, with no judgment: formatting after an edit, blocking a dangerous command, logging, notifications. A skill is guidance the model interprets; a hook always fires on its event.

More comparisons

All comparisons

Know when your agents need you

Briefkin puts your Claude Code, Codex and Cursor sessions on one board: working, needs you, done or failed. Telegram pings you when one is waiting on you, and scheduled skills post their reports next to them.

Free during the open beta. No card.