Guides · Updated
Claude Skills vs Agents, Plugins and Commands
How Claude Code skills differ from subagents, plugins, slash commands and hooks, when to use each, and how they fit together.
Skills, agents, plugins and commands are four ways to extend Claude Code, and they are different kinds of thing. A skill is a set of instructions Claude loads when a task calls for it. An agent, which Claude Code calls a subagent, is a separate worker with its own context. A plugin is a package that can contain skills, subagents and more. A custom command is now the same thing as a skill. This guide covers each, then how to choose.
The short version
| What it is | Where it runs | Reach for it when | |
|---|---|---|---|
| Skill | A folder with SKILL.md: instructions, plus optional files | In your current conversation | You repeat the same instructions or procedure |
| Subagent | A worker with its own system prompt and tools | In a separate context window | A side task would flood your conversation with output |
| Plugin | A directory of skills, subagents, hooks, MCP servers | Loads its parts into every session | You want several components installed as one unit |
| Command | A Markdown file in .claude/commands/ | Same as a skill | You already have them; they still work |
| Hook | A command Claude Code runs at a lifecycle event | Outside the model | A rule must hold every time |
Skills
A skill is a folder containing SKILL.md. Claude keeps each skill's name and description in context and loads the full instructions when your request matches, or when you type /skill-name.
Skills are the lightest option. They are text, they need no running process, and they follow an open standard that other agents read too. For the details, see what are Claude skills.
Commands
Custom slash commands used to be a separate feature: a Markdown file in .claude/commands/ that you ran by name. Anthropic's documentation now states that custom commands have been merged into skills. A file at .claude/commands/deploy.md and a skill at .claude/skills/deploy/SKILL.md both create /deploy and work the same way.
Existing command files keep working. For new work the documentation recommends a skill, because skills add things a single command file cannot have: a directory for supporting files, frontmatter that controls whether you or Claude can invoke it, and automatic loading when relevant.
So "skills vs commands" has a simple answer. Every skill is a command you can type, and a skill that sets disable-model-invocation: true behaves exactly like an old-style command: it runs only when you call it.
Built-in commands such as /help and /compact are a different matter. They are part of Claude Code and most of them run fixed logic.
Agents (subagents)
When people say "Claude Code agents" they usually mean subagents. A subagent is a specialized assistant that handles a specific type of task. Each one runs in its own context window with a custom system prompt, specific tool access and independent permissions. Claude delegates a task to it, the subagent works independently, and it returns the result.
The point is isolation. The documentation recommends a subagent when a side task would fill your main conversation with search results, logs or file contents you will not look at again. The subagent does the reading in its own context and hands back a summary.
A custom subagent is a Markdown file with frontmatter, stored in .claude/agents/ for one project or ~/.claude/agents/ for all your projects. As with skills, Claude uses the description to decide when to delegate.
The difference from a skill:
- A skill adds instructions to the conversation you are in. Claude keeps everything it already knows about your task.
- A subagent starts fresh in a separate context. It does not see your conversation history, and you get back only what it reports.
They also combine. A skill with context: fork in its frontmatter runs in a new subagent, with the skill's content as the task. A subagent definition can name skills to preload as reference material.
Plugins
A plugin is packaging. In the documentation's words, a Claude Code plugin is a directory of skills, agents, hooks, MCP servers or other components that Claude Code installs and loads as one unit. It usually has a manifest at .claude-plugin/plugin.json that gives it a name.
Most plugins come from a marketplace, which is a catalog listing plugins and where to fetch each one. Anthropic's official marketplace is added automatically the first time you start an interactive session. You browse with /plugin and install by name:
/plugin install commit-commands@claude-plugins-official
Skills inside a plugin are namespaced with the plugin's name, so a review skill in my-plugin becomes /my-plugin:review.
Skills, subagents, hooks and MCP servers all work without a plugin. The documentation's advice is to use a plugin when you want several of them packaged together: install one to get a setup someone else built, or make one to share your own setup with teammates.
Two things to know before installing. An enabled plugin is part of every session, so the names and descriptions of its skills and agents take up context even when you do not use them. And a plugin can run hooks and MCP servers with your user privileges, so review what it adds first.
Hooks, briefly
Hooks come up in this comparison because they solve a problem skills cannot. A hook is a command Claude Code runs at a point in its lifecycle, such as after every file edit. It runs every time, whether or not Claude remembers an instruction.
Anthropic's troubleshooting advice makes the distinction clear: if Claude skipped a rule that must hold every time, move the rule into a hook. Guidance that needs judgment stays in a skill.
How to choose
Work through these in order.
- Do you keep typing the same instructions? Write a skill.
- Must something happen every time, without exception? Use a hook.
- Does a task produce a lot of output you do not need to keep? Delegate it to a subagent.
- Does Claude need access to an outside system? That is an MCP server; see Claude skills vs MCP.
- Do you want to hand the whole setup to someone else? Package it as a plugin.
Most people need only the first. A skill is the smallest unit, and the others either run skills somewhere else (subagents) or deliver them (plugins).
Where to find them
This directory lists skills, and marks which agents each one works with. Browse all skills, or start with the best Claude Code skills. For plugins, see the best Claude Code plugins list.
Questions people ask
Are slash commands and skills the same thing now?
In Claude Code, yes for custom commands. Custom commands have been merged into skills. A file at .claude/commands/deploy.md and a skill at .claude/skills/deploy/SKILL.md both create /deploy and work the same way, and existing command files keep working. Built-in commands such as /help are separate.
What is the difference between a skill and a subagent?
A skill is instructions that load into the conversation you are already in. A subagent is a separate worker with its own context window, system prompt and tool access, which does a task and returns a summary.
Is a plugin a kind of skill?
No. A plugin is a package. It is a directory that can contain skills, subagents, hooks and MCP servers, and Claude Code installs it as one unit. Many plugins contain only skills.
Can a skill run inside a subagent?
Yes. In Claude Code, adding the line context: fork to a skill's frontmatter runs it in a new subagent. In the other direction, a subagent definition can list skills to preload.
Do I need a plugin to use skills?
No. A skill saved in ~/.claude/skills/ or in a project's .claude/skills/ works with no plugin. Use a plugin when you want several components installed and updated together.