Async

Claude Code layers — skills, MCP, subagents, and plugins

Students ask "skill or CLAUDE.md or MCP or subagent or hook?" often enough that it is worth stating the decision cleanly. Use this as a reference while you build Week 2.

CLAUDE.md

Every turn

Always-on project context. Stable facts: stack, folder layout, conventions. Keep it small — only what Claude needs every single time.

Skill

When description matches

On-demand expertise in a SKILL.md folder, model-invoked. Repeatable workflows; bundle scripts for exact, deterministic steps.

Slash command

When you type /name

User-invoked actions you trigger yourself — explicit, on-demand.

MCP server

When the tool is called

Connection to external tools and data: vector DB, graph DB, external services.

Subagent

When you delegate

Isolated context for noisy work (evals, ingestion) so the main conversation stays clean.

Hook

On the bound event

Deterministic enforcement in the harness — policies that must hold regardless of what the model decides.

Plugin

On install

Package bundling skills, MCP, agents, and hooks — hand the whole capability to your team.

Ready when

The one-line rule

CLAUDE.md is what Claude always knows. A skill is what Claude knows when it needs to. MCP is what Claude can reach. A subagent is where Claude does messy work. A hook is what Claude cannot skip. A plugin is how you hand all of it to someone else.

Portability: Skills follow an open standard. A `SKILL.md` using only the portable core (name, description, plain markdown) works across Claude Code, Claude.ai, and the API. Keep descriptions tight — platform limits cap description at 1,024 characters and name at 64 lowercase-hyphen characters.