Think of a professional kitchen. The agent is the chef who talks with you the whole time and leads the way. The skill is a recipe the chef pulls from the drawer: instructions that go at their workstation and guide the next action. The subagent is a cook sent to a separate kitchen with a well-defined task—they work alone and return only when the dish is ready. Same building, different roles; mixing them up delays dinner.
↑ The three primitives side by side. Notice: the skill runs in the same context; the subagent works in a separate context and returns only the summary.
Detailed content
🧩 The three primitives in one sentence
Before any table, write down a pocket definition for each one. If you take only this away from the module, it will already be worth your time: the agent leads, the skill instructs, the subagent runs separately.
Agent
O chat you talk to. It leads the conversation, uses skills, and launches subagents. It can be built-in or a .md yours.
Skill
One instruction block (a recipe) that goes in in the same context from the agent and guides the next action. It doesn't have its own window.
Subagent
One worker triggered by the agent, which runs on a own, separate window and returns only a report.
💡 The mental shortcut that clears up 90% of the confusion
Ask: "does this open a new window or not?" Skill doesn't open — it is text that enters the current context. A subagent opens — is a separate session. The agent is the window you're already in.
the pocket definition of the three primitives — agent (leads), skill (instructs in the same context), subagent (executes in a separate context).
almost every beginner mistake is using one where the other would fit: creating a subagent for something that should be a skill, or expecting a skill to run in parallel. The right sentence prevents that.
agent = chat · skill = instruction in context · subagent = its own window · filter question "opens a new window?".
🪟 Context: dedicated and clean × shared
This is the axis that matters most. The skill runs in shared context — everything it does and reads stays in the yours window, adding tokens. The subagent runs in a clean, own context — it uses as many tokens as it needs internally, and your window only receives the report at the end.
📜 Skill — shared context
- •Everything it reads and writes stays in the yours session
- •Adds to your context usage (the bar goes up)
- •Great when you wants the result in the workflow
- •Bad if the task dumps a lot of things you won't reread
🛰️ Subagent — its own context
- •Separate window, isolated from your conversation
- •Can burn 200k tokens and no keep up with your pace
- •Its session disappears when it ends (disposable)
- •You’re left with just the conclusion, without the clutter
📊 The same work, two context costs
Imagine “read 40 files and find the bug.” How skill, all 40 files enter your window — it can get heavy. Since subagent, all 40 files stay in its window; you get "it’s at auth.js:88" and your progress bar barely moves. That’s exactly reason #1 for subagents—the topic of module 1.2.
⚡ Parallelism: many at once vs. one at a time
Subagents run in parallel: the agent can launch five at once, each in its own window, all at the same time. Skill isn't parallel — it is an instruction that runs in the thread of your conversation, one step at a time. Wanting "five skills at once" is a sign that the work belonged to subagents.
Skill: one step in your thread
Sequential by nature.
The skill injects instructions and the agent acts immediately, in the same session. If you have three recipes, it follows one, then the next—there’s no “three at once.”
Subagents: many, side by side
True parallelism.
The agent launches five subagents at once — for example, reviewing a text from five perspectives. All five work simultaneously; the agent launches them, collects and combines their five reports at the end (they don’t talk to each other — a 1-to-1 relationship from module 1.1).
🎚️ Model: own × inherited from the agent
A subagent can choose its own model — run Haiku for a cheap scan, or Opus for heavy reasoning — regardless of the agent's model. A skill doesn't choose a model: it’s an instruction, so it runs on the model that already is driving the conversation. A skill always inherits it; the subagent can switch.
🛰️ Subagent — its own model
- •Define
model:in its frontmatter - •Haiku for scanning · Sonnet for building · Opus for deciding
- •Or
inherit— inherits the purpose-built agent's model - •It’s the foundation of savings (the topic of Track 3)
📜 Skill — always inherits
- •No model field — it doesn't have its own window
- •Runs on the model in the conversation at that moment
- •Want another model? Change the agent’s model, not the skill’s
- •Simplicity: it's just text guiding the action
💡 Why this is a superpower
An own model is what lets a expensive agent (Opus) coordinate a low-cost fleet (Haiku): the manager thinks, the workers execute at a fraction of the cost. A skill doesn't give you that control — and that's fine, because it does a different job.
model: · expensive lead + cheap fleet · inherit.🔀 Who calls whom (the rule that catches everyone)
Here's the most overlooked rule — and the one that most often breaks orchestration designs. Skill and agent call each other both ways: the agent uses a skill, and a skill can launch a subagent. But a agent doesn't call another agent straightforward: subagents don't invoke subagents. If you need a sequence A→B→C, the main agent handles the chaining.
✓ Calls that happen
- ✓Agent → uses a skill
- ✓Agent → triggers a subagent
- ✓Skill → can trigger a subagent
- ✓Subagent → uses skills within from their window
✗ What doesn’t work
- ✗Subagent A → subagent B (without going through the agent)
- ✗Two subagents “combining” with each other
- ✗A skill running “on its own” without an agent
- ✗You typing directly to a subagent
⚠️ The most common orchestration mistake
Designing “the research subagent calls the writing subagent, which calls the review subagent.” It doesn’t work: who chains is the agent. It receives A's report, decides, and only then launches B. A subagent isn't a node that commands another node — it's a leaf that responds to the agent.
📊 The canonical table: where it lives and when to prefer it
Everything we’ve seen fits in a single table — the backbone of this module. Keep this image in mind: it answers at a glance which primitive to use. Notice the last line (when to prefer): it’s what you’ll refer to whenever you’re unsure.
| Axis | 🎼 Agent (built-in) | 📜 Skill | 🛰️ Subagent |
|---|---|---|---|
| Context | Shared — it’s the window you’re in | Shared — enters the agent’s context | Proprietary and clean — separate, disposable window |
| Parallelism | It’s what orchestrates the parallel work | No — it runs in the conversation thread | Yes — several at the same time |
| Model | The model for your session | Inherits — runs on the agent’s model | Proprietary — choose (or inherit) |
| Who calls whom | Uses skills · launches subagents · doesn't call another agent | Called by the agent · can launch a subagent | Triggered by the agent · doesn't launch another subagent |
| Where it lives | Built-in (already included) or .claude/agents/*.md |
.claude/skills/<nome>/SKILL.md |
.claude/agents/*.md (project or global) |
| What it returns | The ongoing conversation with you | Actions/effects in the current flow | One report — not the entire session |
| When to prefer | Always present—it’s the conductor of the work | Standardize a procedure in the workflow (steps, rules, format) you want to see happen | Isolate heavy or parallel work whose output pollutes the context and you only want the conclusion |
↑ The "When to prefer" line is your decision map: procedure in the workflow → skill; heavy, isolated, or parallel work → subagent.
💡 Final rule of thumb
Want to guide how the agent does something in your workflow? Skill. Want to outsource a heavy/parallel task and receive only the result? Subagent. Want to discuss and coordinate? You’re already in the agent. The three complement each other—they don’t compete.
Real example: the SAME job, as a skill × as a subagent
Nothing makes the difference clearer than taking a single task — "run the release checklist"—and writing it both ways. Notice: the instruction content is almost the same; what changes is where they run e what you get back.
--- # frontmatter de SKILL
name: release-check
description: Roda a checklist de release no
fluxo atual. Use quando o usuário disser
"checar release" ou "pronto pra publicar".
# sem campo model: herda o do agente
---
# corpo: guia a ação do AGENTE, aqui mesmo
Ao ser acionada, no contexto atual:
1. Conferir CHANGELOG e versão.
2. Rodar os testes e mostrar o resultado.
3. Listar pendências aqui na conversa.
Tudo acontece na janela do usuário.
→ The steps run in your context. You see everything in the flow. Good when you want to follow along and act together.
--- # frontmatter de SUBAGENTE
name: release-checker
description: Roda a checklist de release numa
janela própria e devolve só um resumo. Use
pra checar release sem poluir o contexto.
tools: Read, Grep, Bash # só o necessário
model: haiku # barato: é varredura
---
# corpo: roda na janela DELE, isolado
You are a release checker.
1. Conferir CHANGELOG e versão.
2. Rodar os testes.
3. Devolver só: pronto? sim/não + pendências.
Reporte um resumo. Não cole logs brutos.
→ The steps run in their window. You get only "done: no — 2 tests missing". Good when the output is long and you don't want to reread it.
🔍 What changes between the two files
Same logic, three differences that reveal the primitive: a folder (skills/<nome>/SKILL.md × agents/<nome>.md); the fields (the skill doesn't have model or tools; the subagent has both, because its own window needs to declare tools and model); and the output (a skill shows everything in the flow; a subagent returns a summary and disappears).
Ready-made prompts (copy and paste)
Three prompts to help you feel the difference firsthand: one triggers a skill (in the workflow), one delegates to a subagent (isolated), and one asks the agent to choose between the two — that way you can hear the reasoning.
Rode a checklist de release aqui mesmo, passo a passo,
me mostrando cada item conforme for conferindo. Quero
acompanhar no fluxo, não em separado.
Abra um subagente pra rodar a checklist de release numa
janela própria e me devolva só: pronto pra publicar
(sim/não) + a lista de pendências. Não despeje os logs
no meu contexto.
Preciso revisar 25 arquivos atrás de senhas hardcoded.
Isso é melhor como skill (no meu fluxo) ou como subagente
(janela própria)? Decida e me explique em 2 linhas por que.
Simulated screen: skill in the workflow × parallel subagent
Side by side, the same work in both modes. At left, the skill runs within from your session — you see every step and the context bar rising. At right, the subagent runs in a separate session—you only see its panel, and the your context barely changes.
↑ Illustrative recreation (not a real screenshot). Same job: the skill fills your context (58%); the subagent preserves it (9%) because the clutter stayed in its window.
Exercise: classify 6 scenarios
For each scenario below, decide: is it skill, subagent or simply the agent in a conversation? Write your answer before opening the answer key.
The 6 scenarios
- Standardize how the assistant formats every commit (message, co-author, tone) — you want to see it happen in the workflow.
- Search through 50 PDFs of contract behind a clause and get only "found it on page X of each".
- Review a text about 5 different perspectives at the same time (beginner, technical, editor…).
- Help you think aloud about which architecture to choose, exchanging ideas.
- Whenever you ask for “deploy,” run a fixed sequence of checks in the workflow before proceeding.
- Run a inexpensive security checker (Haiku) across 30 files without filling up your context.
✅ Verification criteria — how to know you got it right
Use these three questions, in this order, for each scenario:
- 1.Does it open a new window? If the output is large/parallel and you only want the conclusion → subagent.
- 2.Is this a procedure you want to see in the workflow? Standardize steps/rules/format in the current context → skill.
- 3.Is it conversation/coordination? Think together, decide, exchange ideas → the agent same.
You got it right if your justification mentions context (shared × custom) and/or parallelism — not just a "feeling".
Annotated answer key
- 1 → Skill. Format procedure in the workflow; you want to review and adjust it. Same context.
- 2 → Subagent. 50 files is a heavy read that shouldn't clutter your context; you only want the conclusion.
- 3 → Subagent (×5, in parallel). "5 at the same time" only works with subagents; each in its own window.
- 4 → Agent. It’s dialogue and reasoning with you — it needs the full conversation; you can’t delegate it.
- 5 → Skill. Fixed sequence of steps in the workflow, triggered by an event ("deploy"). Shared context.
- 6 → Subagent (Haiku). Parallel, low-cost work across 30 files, isolated, with its own model — protects the context.
Scorecard: 5–6 correct = you've internalized the key dimensions. 3–4 = review context and parallelism. 0–2 = reread the table in topic 6.
✅ Module summary
Next module:
1.5 — Built-in × Custom. The subagents that come ready-made × the ones you create, and why Claude only reads the name+description until it decides (progressive disclosure).