Which Extension Fits?
Out of the box, Claude Code already reads, edits and runs. You can extend it in several ways — CLAUDE.md, skills, MCP servers, hooks, subagents and plugins — and beginners mix them up constantly. Each one answers a different need.
The rule
Instructions guide, skills teach, MCP connects, hooks enforce, subagents delegate, plugins package.
| Extension | What it is | Tiffin example |
|---|---|---|
| CLAUDE.md | Instructions read at the start of every session | "Run tests with pytest -q" |
| Skill | A folder with a SKILL.md file of instructions, plus optional scripts, loaded only when a task matches its description |
The checklist for adding a new menu item |
| MCP server | A connector that gives Claude tools for an outside system | Read-only access to the live orders database |
| Hook | A script Claude Code itself runs at set moments, such as before or after a tool call, or when a session starts | Format every Python file after Claude edits it |
| Subagent | A helper with its own separate context, instructions and tools, which reports back a summary | Trawl three months of logs for failed payments |
| Plugin | A bundle of any of the above, installed as one unit | The team's shared tiffin toolkit |
One distinction matters more than the rest. CLAUDE.md and skills are advice: the model reads them and usually follows them, but it can slip. Hooks are code: Claude Code runs them at their moment every time, whatever the model thinks. If a rule must never be broken, it belongs in a hook or a permission rule, not only in a sentence.
Commands such as /agents, /hooks, /mcp and /plugin let you see and manage what is installed. And remember that MCP servers, hooks and plugins run code on your machine, so install only what you trust.
The shortcut
Ask in order. Must it always happen? Hook. Does it need an outside system? MCP. Is it a procedure used only sometimes? Skill. Would it flood the main conversation? Subagent. Does every session need to know it? CLAUDE.md. Sharing a set across projects or a team? Plugin.
"Format every file Claude edits"
Must always happen, with no exceptions. A hook that runs the formatter after each edit.
Drills
Answer fast — trust the rule.
The formatter must run after every edit, with no exceptions. Where does that belong?
You want Claude to query the kitchen's order database. What provides that?
Why hand the three-month log search to a subagent?
What is the key difference between a CLAUDE.md rule and a hook?
Remember
- Instructions guide, skills teach, MCP connects, hooks enforce, subagents delegate, plugins package.
- Shortcut: must it always happen? Then it needs a hook or a permission rule, not just a sentence.
- Trap: installing extensions you have not vetted, since they run code with your access.
