β—†

Skill vs Plugin vs MCP

A plain-language source of truth

← Back to viewer

Three terms get used interchangeably and shouldn't be. Here's the clean mental model, with one common mistake corrected up front.

The correction: a plugin is NOT an MCP. A plugin is a bundle of skills (and optionally agents / commands). An MCP is a capability connection (tools, APIs, auth). They sit on different layers β€” a plugin can ship skills that use an MCP, but the plugin is not the MCP. Older notes conflated "plugins/MCP = capabilities"; that's the conflation this page fixes.

The three layers

🧠 Skill β€” the intelligence

A workflow, expertise, or procedure written as SKILL.md + optional supporting files. It's what to do and how. Lazy-loaded: ~200 tokens at startup, full body loaded only when its description matches the task.

πŸ”Œ MCP β€” the capability

A connection to external tools, APIs, data, or execution (Gmail, a database, a browser). It's what's possible. Eagerly loaded β€” every tool's schema enters context at startup (no progressive disclosure), which is why heavy MCPs are expensive.

πŸ“¦ Plugin β€” the bundle

A packaged collection of skills (and possibly agents, commands, hooks, or MCP configuration) distributed as one unit. It's how you ship a set of capabilities together. A plugin is a delivery wrapper, not a runtime thing.

How they relate

Skills orchestrate MCPs β€” a skill says "run my morning digest" and handles the 3–4 MCP tool calls underneath; the user never sees the tool names. A plugin packages one or more such skills so they install together.

SkillMCPPlugin
LayerIntelligenceCapabilityDistribution
AnswersHow to do itWhat's possibleHow to ship a set
LoadingLazy (~200 tok)Eager (all schemas)n/a (install-time)
UnitSKILL.md + filesServer + toolsBundle of skills (+agents)
Example"Morning digest"Gmail / M365 connectorA client's whole skill pack

Skills ≑ Commands (a settled point)

In current Claude Code, custom slash commands and skills are the same mechanism. A file at .claude/commands/deploy.md and a skill at .claude/skills/deploy/SKILL.md both create /deploy and work the same way. The only practical difference: skills get a supporting-files directory; legacy commands don't. Turning model-invocation off makes a skill behave purely as a slash command. So "that's a command, not a skill" is a distinction that doesn't exist at the platform level.

The rule of thumb

Need logic / a workflowWrite a skill
Need to reach an external systemConnect an MCP
Need to hand someone a set of skills at onceShip a plugin

Source of truth seeded from _brain/knowledge/skills/skills.md (Skills vs Plugins; Skills and Commands merged, 260504; Skill vs MCP loading asymmetry, 260504), corrected for the stale plugin≑MCP conflation per planning/DECISION-TREE.md Β§D7.2. Part of the Skill Viewer rung-1 build.