Claude skills vs commands vs subagents vs plugins explained
Claude skills vs commands vs subagents vs plugins is a comparison of four different things: a skill is a SKILL.md file of instructions, a command is anything you run by typing a slash, a subagent is a worker with its own context window, and a plugin is a package that bundles the other three. A skill is a SKILL.md file that Claude loads when relevant or that you run as /skill-name, Skills docs and custom commands have been merged into skills, so a file at .claude/commands/ and a skill at .claude/skills/ both create /deploy. Skills docs A subagent runs in its own context window with a custom system prompt, specific tool access and independent permissions. Subagents docs A plugin is a directory of skills, agents, hooks, MCP servers or other components that Claude Code installs and loads as one unit. Plugins docs
The decision in one line: write a skill for a procedure you keep pasting into chat, a subagent for a side task whose output you do not want in your main conversation, and a plugin only when you want several pieces shipped as one unit. Skills docs Subagents docs Plugins docs The sections below give the exact steps, the file paths, and the symptoms to look for when one of them does not load. Everything comes from four Anthropic pages as they stood on 6 October 2026.
What is a Claude skill?
A skill is a directory with a SKILL.md file in it. The file has two parts: YAML frontmatter between --- markers that tells Claude when to use the skill, and markdown content with the instructions Claude follows when the skill runs. The directory name, or the frontmatter name when you set one, becomes the command you type, and the description helps Claude decide when to load the skill on its own. Skills docs
Create one when you keep pasting the same instructions, checklist or multi-step procedure into chat, or when a section of CLAUDE.md has grown into a procedure rather than a fact. A skill's body loads only when it is used, so long reference material costs almost nothing until you need it. Skills docs For what stays in CLAUDE.md and what carries between sessions, see Claude Code memory.
Claude Code skills follow the Agent Skills open standard, which works across multiple AI tools. Claude Code adds invocation control, subagent execution and dynamic context injection on top of the standard. Skills docs
The docs' first example builds a skill that summarizes uncommitted changes in a git repository, in three steps.
- Create the directory in your personal skills folder, which is available across all your projects:
mkdir -p ~/.claude/. Skills docsskills/ summarize-changes - Save a
SKILL.mdat~/.claude/skills/. Its frontmatter has asummarize-changes/ SKILL.md descriptionline ("Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff."). Below it sits the line!`git diff HEAD`followed by instructions to summarize the changes in two or three bullet points and list risks. Claude Code runs the injected command and replaces the line with its output before Claude sees the skill, so the current diff arrives already inlined. Skills docs - Open a git project, make a small edit to any file, and start Claude Code with
claude. AskWhat did I change?to let Claude invoke the skill, or type/summarize-changesto invoke it directly. Either way Claude should answer with a short summary of the edit and a list of risks. Skills docs
If step 3 does not find the skill, the failure list further down covers the causes the docs name, such as a skill stored somewhere the session does not read.
What is a command in Claude Code?
Commands control Claude Code from inside a session, for example to switch models, manage permissions or clear context. Type / to see the ones available to you. A command is only recognized at the start of your message, and the text after the name becomes its arguments. Commands docs
The word covers three kinds of entry in the commands reference. Most are built-in commands whose behavior is coded into the CLI, such as /help and /compact. Some are bundled skills, marked Skill in the reference, which work like skills you write yourself because each is a prompt handed to Claude. A few are bundled dynamic workflows that fan work out across many subagents and run in the background, and /deep-research is one. Commands docs The skills page draws the same line: bundled skills are prompt-based, while most built-in commands execute fixed logic directly. Skills docs
Your own commands are skills. A file at .claude/commands/ still works, and it supports the same frontmatter as a skill except name and paths. The skills page recommends a skill for new work, since skills also support supporting files. When a skill and a file in .claude/commands/ share a name, the skill runs. Skills docs
Skills can be chained in one message. Typing /skill-a /skill-b do XYZ loads the skills named at the start and passes the trailing text to each as arguments, and up to six skills can be chained. Commands docs
A command sent while Claude is responding is queued and runs after the current turn finishes. Claude Code runs a few immediately without interrupting the response, such as /status, /tasks and /usage. Commands docs
Several commands manage the other three features. /agents prints a reminder to ask Claude to create or manage subagents, or to edit .claude/agents/ or ~/.claude/agents/ directly; on v2.1.197 and earlier it opens an interactive interface instead. Commands docs /plugin opens the plugin browser, where the Discover tab lists plugins from your marketplaces. Plugins docs
What does a subagent do?
A subagent is a specialized AI assistant for one type of task. Use one when a side task would flood your main conversation with search results, logs or file contents you will not reference again: the subagent does that work in its own context and returns only the summary. Define a custom subagent when you keep spawning the same kind of worker with the same instructions. Subagents docs
Each subagent also sends its own requests, and those count toward the same usage limits as your main conversation. Subagents work within a single session. Subagents docs A subagent receives only its own system prompt plus basic environment details such as the working directory, and not the Claude Code system prompt. Subagents docs
Claude uses each subagent's description to decide when to delegate, so write a clear one and keep it short. On 6 October 2026 the Claude Code subagents page said that Claude Code shows a startup warning when the combined descriptions of non-built-in subagents exceed 15,000 tokens. Subagents docs The page's advice is to trim the description fields and move detail into each subagent's system prompt, which loads only when that subagent runs.
Claude Code ships built-in subagents that Claude uses automatically. Explore is a fast, read-only agent for searching and analyzing codebases, with Write and Edit denied. Plan is a research agent used during plan mode, also read-only. General-purpose is a capable agent for complex, multi-step tasks that need both exploration and action, with every tool available to subagents. Explore and Plan skip your CLAUDE.md files and the git status snapshot to keep research fast and inexpensive, while every other built-in and custom subagent loads both unless its definition sets omitClaudeMd. Subagents docs
To create your own, the docs' quickstart uses three steps.
- Ask Claude to write it, saying where to save it. The docs' example prompt asks for a personal
code-improversubagent in~/.claude/agents/that suggests improvements for readability, performance and best practices, is read-only and uses Sonnet. Subagents docs - Open
~/.claude/agents/and check the frontmatter. In the docs' result it holdscode-improver.md name: code-improver, adescription,tools: Read, Grep, Globandmodel: sonnet, followed by the system prompt as Markdown. Onlynameanddescriptionare required. Subagents docs - Ask Claude to delegate:
Use the code-improver agent to suggest improvements in this project. In the transcript the delegation shows as a tool call row with the subagent's name and a short task description, such ascode-improver(Suggest code improvements). Subagents docs
Because that file lives in ~/.claude/agents/, the subagent is available in every project on the machine. Moving it to a project's .claude/agents/ directory scopes it to that project. Subagents docs
What does a plugin add?
A plugin adds nothing that a skill, subagent, hook or MCP server cannot do alone. Those four all work without a plugin, and a skill saved in ~/.claude/skills/ is already available in every project on your machine. What a plugin adds is packaging: use one when you want several skills, subagents, hooks or MCP servers delivered as one unit, installed with one command and updated from its marketplace. Make one to give your setup to teammates, install it in many projects, or publish versioned releases. Plugins docs
A plugin is a directory of components, usually with a manifest. The manifest is a JSON file at .claude-plugin/ that gives the plugin its name and can add a version and a description. The components are skills, agents (subagent definitions), hooks, and MCP servers. A plugin can also hold a hooks module written as JavaScript functions, and a plugin that has one is called a mod. Plugins docs For what hooks do on their own, see Claude Code hooks explained.
Plugin skills are namespaced as /plugin-name:skill-name, so a plugin skill and a skill of the same name in any other location both load. Skills docs A subfolder inside a plugin's agents/ directory becomes part of the identifier: a file at agents/review/ in plugin my-plugin registers as my-plugin:review:security. Subagents docs
To try a plugin, run /plugin in a Claude Code terminal session and install one from the Discover tab. A marketplace is a repository or directory with a .claude-plugin/ file that lists plugins and where to fetch each one, and you install by name, such as commit-commands@. Claude Code adds Anthropic's official marketplace the first time you start an interactive terminal session, unless a managed policy blocks it. While developing your own plugin you can load it straight from its folder with --plugin-dir. Plugins docs
When you install a plugin you pick a scope. User scope enables it for you in every project on this computer. Project scope enables it for everyone who works in the repository through the committed .claude/settings.json, though each collaborator still installs it on their own machine. Local scope enables it for you in this repository only. Plugins docs
The cost of a plugin is worth checking before you install. An enabled plugin is part of every session, and for each skill, agent and command that Claude can invoke on its own, the name and description sit in Claude's context on every turn. Those tokens count toward your usage and leave less room in the context window even in sessions where nothing from the plugin runs, while the full text of a skill or agent loads only when it is used. MCP servers the plugin defines run alongside each session where it is enabled, its hooks fire at their events, and what the plugin runs, it runs as you. Plugins docs
Plugins in Anthropic's official marketplace show a Context cost estimate when you open them from the Marketplaces tab in /plugin. To stop a plugin without uninstalling it, disable it with /plugin or, in your shell, with claude plugin disable. Plugins docs
Which one should I make first?
Work down these questions in order and stop at the first yes.
- Has a section of your CLAUDE.md grown into a procedure rather than a fact, or do you keep pasting the same checklist into chat? Make a skill. Skills docs
- Does a side task flood the conversation with search results, logs or file contents you will not reference again? Use a subagent, and define a custom one if you keep spawning the same kind of worker with the same instructions. Subagents docs
- Do you want the procedure available to everyone who works in one repository? Commit the skill under
.claude/skills/so your team gets it too. Skills docs<skill-name>/SKILL.md - Do you want several skills, subagents, hooks or MCP servers delivered together to many projects, with versioned releases? Build a plugin. Plugins docs
- Do you only want to change a setting or run a built-in action in the session you are in? Use a command; nothing needs to be created. Commands docs
The pieces also combine. The skills page lists subagent execution as one of the Claude Code extensions to the skill standard, and a subagent definition accepts a skills field among its frontmatter fields. Skills docs Subagents docs
One count shows why it is worth checking what you have already built. On 4 October 2026 the publisher counted the skills in its owner's own setup, reading dev/rebase-2026-10/ from the REBASE phase 1 inventory. The ~/.claude/skills folder holds 165 skills. Across 315 recorded Claude Code sessions, 130 never loaded a skill through the Skill tool and 129 never loaded one at all, by the tool or by a slash command. That is one setup. It is not a rate for anyone else's, and it says nothing about any command. The built-in way to run a similar check is /doctor, which finds unused skills, MCP servers and plugins versus their context cost and reports its findings before changing anything. Commands docs
Where do the files go?
Where you save a skill decides which sessions load it. Save it under your home directory to get it in every project, commit it to a repository to share it with the people who work there, or distribute it through a plugin or managed settings to reach a whole team. Skills docs The skill locations, as the docs list them:
- Enterprise:
.claude/skills/in the managed settings directory, for all users on machines where your organization deploys it. Skills docs<skill-name>/SKILL.md - Personal:
~/.claude/skills/, for all your projects on this machine, but not Cowork or cloud sessions. Skills docs<skill-name>/SKILL.md - Project:
.claude/skills/, for sessions in that repository. Skills docs<skill-name>/SKILL.md - Nested:
<subdir>/.claude/, for sessions started in or below that subdirectory. Skills docsskills/... - Plugin:
<plugin>/skills/, wherever the plugin is enabled, invoked as<skill-name>/SKILL.md /plugin-name:skill-name. Skills docs
When two skills share a name, enterprise wins over personal and personal wins over project. With deploy in both ~/.claude/skills/ and the project's .claude/skills/, /deploy runs the personal one. Skills docs
Subagents use a priority order instead, and when several share a name Claude Code uses the one from the higher-priority location. Subagents docs From highest to lowest, the five are:
- Managed settings, organization-wide. Subagents docs
- The
--agentsCLI flag, for the current session only, passed as JSON when launching Claude Code and not saved to disk. Subagents docs .claude/agents/, for the current project. Subagents docs~/.claude/agents/, for all your projects. Subagents docs- A plugin's
agents/directory, where the plugin is enabled. Subagents docs
Project subagents are discovered by walking up from the current working directory, and when nested directories define the same name, the definition closest to the working directory wins. Claude Code scans .claude/agents/ and ~/.claude/agents/ recursively, so you can organize files into subfolders such as agents/review/, and identity comes only from the name field. Subagents docs
An installed plugin has to be present at three layers before it gives you something you can run: your settings list the marketplaces and enabled plugins, ~/.claude/plugins/ holds what Claude Code has fetched and installed, and the session loads plugins at startup or when you reload them. Plugins docs
What goes wrong, and how to tell?
Each item gives the symptom first, then the cause the docs name.
- A new subagent is not found. Restart Claude Code and try again. This happens only when
~/.claude/agents/did not exist before the session started, because a running session does not detect a newly created agents directory. Subagents docs - An edit to a subagent file changes nothing. Claude Code picks up edits in
~/.claude/agents/and.claude/agents/within a few seconds. It does not watch.claude/agents/inside directories added with--add-diror/add-dir, and sessions started with--disable-slash-commandswatch neither location, so restart in those cases. Subagents docs - A subagent file never loads and nothing appears on screen. Check whether its
namecontains a colon, which is reserved for plugin-scoped identifiers: Claude Code does not load such a file and logs an error to the debug log. A misspelled field gives no error either, because Claude Code ignores a field it does not recognize without reporting it, and multi-word names such asmaxTurnsanddisallowedToolsmust match exactly. Subagents docs - One of two same-named subagent files seems to be ignored. When two files under the same
.claude/agents/directory, subfolders included, declare the same name, Claude Code loads only one, chosen by filesystem read order./doctorreports files that share a name and proposes renaming or removing all but one. Subagents docs - A startup warning shows a total token count. It refers to the combined subagent descriptions described earlier, and the fix is to shorten the description fields. Subagents docs
- A subagent fails to launch with an error naming entries. The
toolslist is the likely cause: if no entry in it resolves to a tool, the subagent usually fails to launch. Subagents docs - A skill is missing from the
/menu. Skills in a.claude/skills/directory below where you started do not load at startup. They load the first time Claude reads or edits a file in that subdirectory, and until then you cannot invoke them by name./add-dirwith the subdirectory's path loads them sooner, on Claude Code v2.1.257 or later. Skills docs - A slash command runs something other than what you wrote. Your skill replaces a built-in command of the same name in a local terminal session, but not its aliases: a project
usageskill replaces/usage, and the built-in alias/coststill runs the built-in command. Skills docs - A routine reports that the skill was not found. Cowork and cloud sessions do not read
~/.claude/skills/on your machine, and each routine run starts as a fresh cloud session. Enable the skill for your claude.ai account, or for cloud sessions commit it to the repository's.claude/skills/. Skills docs - An installed plugin gives you no skill. Work through the three layers of settings, disk and session. A cloud session also does not load the plugins in your local settings. Plugins docs
- A plugin subagent ignores the hooks, MCP servers or permission mode you set. Plugin subagents do not support the
hooks,mcpServersorpermissionModefields, which are ignored when the agent loads from a plugin. Copy the agent file into.claude/agents/or~/.claude/agents/if you need them. Subagents docs - An edit to a synced skill disappears. Files under
~/.claude/skills/are downloaded from claude.ai, an edit there is not saved to your account, and a later sync can overwrite or remove it. Change the skill on claude.ai instead. Skills docssynced/
Common questions
Are custom commands still supported?
Yes. Existing files in .claude/commands/ keep working, because custom commands have been merged into skills and both formats create the same /name command. The skills page recommends a skill for new work since skills support supporting files. Skills docs
Can a plugin contain a subagent?
Yes. A plugin is a directory of skills, agents, hooks, MCP servers or other components, and the agents are subagent definitions Claude can delegate to. Plugins docs Plugin subagents ignore the hooks, mcpServers and permissionMode fields. Subagents docs
Do subagent requests count toward my usage?
Yes. A subagent sends its own requests, and they count toward the same usage limits as your main conversation. Subagents docs
Do I need a plugin to share a skill with my team?
No. Commit the skill to the repository's .claude/skills/ directory and it loads in sessions in that repository. Skills docs A plugin is the choice when you want several components packaged as one unit. Plugins docs
How we checked
This page is a reading of four Anthropic documentation pages on 6 October 2026: extend Claude with skills, create custom subagents, plugins overview, and commands. Each page as retrieved ended partway through, so nothing past those points is reported here. No command, file or setup described in the docs was run or tested for this page.
The one count on the page, the 165 skills, 315 sessions, 130 and 129, was made by the publisher on 4 October 2026 from its owner's own inventory file. It covers that one setup only.
Last verified 6 October 2026. Checked against the four Anthropic pages on 6 October 2026; version numbers named in the docs change, so recheck them before relying on one.
Sources
- Anthropic, extend Claude with skills checked 6 October 2026
- Anthropic, create custom subagents checked 6 October 2026
- Anthropic, create plugins checked 6 October 2026
- Anthropic, slash commands checked 6 October 2026
From the publisher
Mover (our product)
Next, pick the one procedure you paste into chat most often and turn it into a skill with the three steps above, then run /doctor to see which skills, MCP servers and plugins you have that go unused.
Mover is a $49 one-time planning tool that runs inside Claude Code or Codex, keeps your plan in plain files on your own computer, and says so when your work drifts from it. It is the wrong choice if you want something that keeps running while your computer is off.
One payment. 30-day money-back guarantee.