#006

The 6 Extension Points in Claude Code Everyone Confuses

Skills, Hooks, MCP, Sub-agents, Agent Teams, and Plugins: a quick map to know when to use each one.

Claude Code offers six different ways to extend its behavior: Skills, Hooks, MCP, Sub-agents, Agent Teams, and Plugins. They solve different problems, but their boundaries blur quickly. This tip gives you a mental model to tell them apart.

TL;DR Most people only need Skills and MCP. Add hooks when you want automation, sub-agents when context window pressure hits, and plugins when you need to share. Agent Teams are experimental — explore them when sub-agents aren't enough.

The core distinction: each one answers a different question.

Question Mechanism
What should Claude do? Skills
What can Claude access? MCP
Who does the work? Sub-agents
Who does the work, collaboratively? Agent Teams
When should something happen automatically? Hooks
How do you package and share all of the above? Plugins

The 6 mechanisms

1. Skills — What Claude should do

Markdown files with instructions that Claude follows as slash commands or auto-activates when relevant. Reusable prompts with structure: arguments, frontmatter, subagent forking.

~/.claude/skills/review/SKILL.md → /review src/App.tsx

2. MCP — What Claude can access

Model Context Protocol connects Claude to external tools: databases, APIs, GitHub, Notion. MCP doesn't tell Claude what to do — it gives Claude hands to reach beyond its sandbox.

claude mcp add --transport http notion https://mcp.notion.com/mcp

3. Sub-agents — Who does the work

Separate Claude instances that handle tasks in isolation. Each gets its own context window, tools, and permissions. They work independently and report results back.

"Use the code-reviewer subagent to check the auth module"
→ Subagent works independently → Returns summary

4. Agent Teams — Who does the work, together (experimental)

Multiple Claude instances working as a coordinated team. Unlike sub-agents, teammates message each other, share a task list, and challenge each other's findings.

"Create a team: one on security, one on performance, one on tests"
→ 3 independent sessions → Cross-team discussion → Synthesis

5. Hooks — When things happen automatically

Shell commands triggered at specific lifecycle points: before a tool runs, after a file is edited, when a session starts. No AI involved — pure automation.

{ "PostToolUse": [{ "matcher": "Write", "hooks": [{ "type": "command", "command": "npm run lint" }] }] }

6. Plugins — How you share everything

Distributable packages that bundle skills, agents, hooks, and MCP servers into an installable unit. Think npm packages for Claude Code extensions.

my-plugin/
├── .claude-plugin/plugin.json
├── skills/        ← reusable skills
├── agents/        ← custom subagents
├── hooks/         ← lifecycle automation
└── .mcp.json      ← external tool connections

Comparison

Mechanism Question it answers Defined in AI involved?
Skills What to do SKILL.md (markdown) Yes — Claude follows them
MCP What to access .mcp.json / CLI config No — protocol bridge
Sub-agents Who works .claude/agents/ (markdown) Yes — separate instance
Agent Teams Who collaborates Natural language Yes — multiple instances
Hooks When to automate settings.json (JSON) No — shell commands
Plugins How to distribute .claude-plugin/ (package) No — packaging format

For a deep dive into Skills with advanced patterns, see the full Skills article.

Official docs: Skills · MCP · Sub-agents · Agent Teams · Hooks · Plugins

Get only what matters

If I have nothing worth saying, you won't hear from me. When I do, you'll be the first to know. 7,000+ professionals already trust this.

Are you a professional Web developer?
No

Unsubscribe at any time.