Ways to extend Claude Code
Extensions plug into different parts of the agentic loop. Each solves a different problem:
| Feature | What it does | When to use it |
|---|---|---|
| CLAUDE.md | Persistent context loaded every conversation | Project conventions, “always do X” rules |
| Skill | Instructions, knowledge, workflows Claude can use | Reusable content, repeatable tasks |
| Subagent | Isolated execution context, returns summaries | Context isolation, parallel tasks |
| MCP | Connect to external services | External data or actions |
| Hook | Script/prompt triggered by lifecycle events | Automation that must run on every matching event |
| Plugin | Packages the above into one installable unit | Reuse a setup across repos, distribute to others |
Context cost by feature — CLAUDE.md loads in full every request; skills, MCP, subagents, and hooks defer.
Build your setup over time. You don't configure everything up front — each feature has a recognizable trigger: Claude gets a convention wrong twice → CLAUDE.md. You keep typing the same prompt → skill. You keep copying data from a browser tab → MCP. A side task floods your conversation → subagent. Something must happen every time → hook. A second repo needs the same setup → plugin.
Check your understanding
Section titled “Check your understanding”Question 1A side task keeps flooding your conversation with output you won't reference again. Add a…
Subagents run in isolated context and return only a summary.
Question 2A rule must hold every single time, no exceptions. Use a…
Hooks and permissions are enforced; prompt instructions can vary.
Question 3Which feature is the packaging layer for the others?
A plugin bundles skills, hooks, subagents, and MCP servers into one installable unit.