When you type a request, the conductor reads your message and then reads the descriptions
of all the agents that exist. It asks an implicit question: "does any of these texts match what the user asked for?"
If it matches, the agent launches. If it doesnâtâeven if the agent is perfect for the taskâit stays quiet.
The description is the only link between your request and the right specialist.
â Same user message, two agents with different descriptions â opposite results.
Detailed content
đ Why the description triggers
The orchestrator doesnât have a catalog of agents memorized. Each turn, it reads your prompt and the fields
description of all available agents. The decision to invoke one or not is a
semantic match between what you asked for and what the description describes â
itâs not a name, not an emoji, not a title.
âď¸ How the conductor processes
You send: "review the payment code before deploy".
The orchestrator scans the descriptions of all active agents.
If a description says "after changes to payments, use proactively" â it fits. Fire it up.
If the description only says "review agent" â too vague to match. Silence.
The conductor reads the description every turn to decide which agent to use. It's the only text that guides automatic selection.
Agents with vague descriptions are invisible to the orchestrator. Without understanding the mechanism, you create agents that never appear and don't know why.
Semantic matching ¡ read on each turn ¡ description as a routing algorithm.
âď¸ Weak Ă strong: what separates the two
A description weak says what the agent is. A description strong says when to use e for what. The difference seems subtle, but itâs the distance between an agent that never fires and one that fires at exactly the right time.
â Weak descriptions
- â¸
"Agente para revisĂŁo de cĂłdigo."
â vague, with no trigger; fires for everything or nothing - â¸
"Helper de programação."
â so broad that it competes with any agent - â¸
"Especialista em segurança."
â a title with no condition: the orchestrator doesnât know when - â¸
"Faz anĂĄlises."
â one word that covers everything, and therefore covers nothing
â Strong descriptions
- â¸
"Revisa diffs em auth/pagamentos. Use proactively após mudanças nessas åreas."
â domain + condition + instruction for when to use it - â¸
"Pesquisa na web e indexa fontes. Acione quando o usuĂĄrio precisar de dados externos ou quiser verificar fatos."
â a clear, noncompetitive use case - â¸
"Gera e revisa planos de implementação. Use proactively antes de qualquer tarefa de desenvolvimento grande."
â "before" defines the exact moment
The structural difference: a weak one describes identity; a strong one describes a use case.
Weak descriptions create agents that never trigger (underuse) or trigger for everything (over-triggering). A strong description is precise.
Identity vs. situation ¡ conditional trigger ¡ âUse proactivelyâ as a timing instruction.
âąď¸ "Use proactively" â the explicit timing
The phrase Use proactively in the description is a direct instruction to the conductor:
"don't wait for the user to ask explicitly â trigger when the context fits". Without it, the conductor may
hesitate and fail to call the agent even when the context is perfect.
đĄ Anatomy of a description with timing
Use proactively after any change in auth, payments or sessions.
"Review the diffâŚ" â the task itself.
"Use proactively afterâŚ" â the explicit timing.
"auth, payments, sessions" â narrows the scope.
⥠Practical tip
Use "Use proactively" only when you want automatic triggering.
For agents that should only be called by name (@nome), omit the sentence â
the orchestrator will then wait to be explicitly invoked, without stepping in where it wasnât called.
The "Use proactively" instruction in the description authorizes the orchestrator to launch the agent without an explicit user request.
Without this pattern, valuable agents sit idle. Overusing it makes everything fire at onceâwhich is undesirable.
Proactive vs. reactive ¡ "@name" for manual invocation ¡ timing as a dimension of the description.
đĽ Misfires: when the agent triggers incorrectly
There are two types of misfire: more (triggers when it shouldn't) and less (doesnât trigger when it should). Both have the same cause â the description doesnât describe the use case precisely enough.
đ Misfire A more â over-triggering
- Reason: description that's too broad or "Use proactively" without domain restrictions.
- Symptom: the agent shows up in requests that have nothing to do with it.
- Example: "Review code. Use proactively." â triggers for any mention of code.
- Fix: add a domain constraint â "Reviews diffs in auth/payments. Use proactively after changes in these areas."
đ Misfire A less â under-triggering
- Reason: description that's too specific, without synonyms, or without "Use proactively".
- Symptom: the agent never shows up, even when it's ideal for the task.
- Example: "Review agent." â the orchestrator doesnât connect the description with the request.
- Fix: expand the vocabulary and add a trigger â "Review diffs. Use proactively after changes."
How to diagnose a misfire
Observe the behavior
Did the agent fire when it shouldnât have, or should it have fired but didnât appear?
Read the current description
Ask: if I were the conductor, would this text tell me when use this agent?
Adjust the trigger or the domain
To get more: add a constraint. To get less: add "Use proactively" and expand the vocabulary.
Two failure patternsâthe agent triggers too often (broad description) or too rarely (vague description/no trigger).
Misfires are the main cause of distrust in the system. Recognizing the type speeds up the fix to seconds.
Over-triggering vs. under-triggering ¡ domain as a filter ¡ iterative diagnosis.
đĽ Skill Ă agent collision: the plan-roaster case
Skills (files in .claude/commands/) and agents (files in
.claude/agents/) can conflict when both have semantically similar descriptions.
The orchestrator sometimes selects one when the user wanted the other. The case
plan-roaster illustrates this problem and how to solve it.
đ The plan-roaster case
â Before: description that conflicted
description: Analyzes and critiques
  implementation plans.
tools: Read
Problem: âanalyze plansâ also matches the /plan skill â collision.
â Next: a surgical description
description: Critiques plans
  of ready-to-use implementations,
  looking for gaps and risks.
  Use after a plan to be
  generated, not during.
tools: Read
Fix: "after a plan is generated" distinguishes it from /plan (which creates, not critiques).
đ§Ş How to detect collisions
- âAsk the conductor: "list the agents and skills that fit 'create a plan'".
- âIf two have similar semantics, one of them needs a more specific description.
- âWhat sets them apart: skills are actions triggered by the user; agents are automatic workers.
A collision happens when an agent's description and a skill's description overlap semantically â the orchestrator chooses one, but you wanted the other.
As the roster of agents grows, collisions are inevitable without discipline in the description.
Semantic overlap ¡ skill vs. agent ¡ âafterâ as a temporal scope separator.
đ Iterate: ask why it didn't trigger
The orchestrator is your ally in troubleshooting. When an agent doesnât trigger as expected, the fastest strategy is ask directly to the orchestrator why it didn't use that agent â and ask it to propose a corrected description.
Por que o agente [nome] nĂŁo disparou no meu Ăşltimo pedido?
Leia a description dele e explique o mismatch.
Depois proponha uma description corrigida.
O agente [nome] disparou quando eu pedi "[pedido X]",
mas nĂŁo queria isso. Leia a description e diga por que
combinou. Reescreva para evitar esse over-disparo.
đ The iteration loop
The diagnostic flow: ask the conductor about the mismatch, get a suggestion, edit, test.
Trying to guess the problem without asking the maestro is slow. It has access to the description and context â use that.
Assisted diagnosis ¡ short loop ¡ the orchestrator as a detective investigating its own selection.
đ Closing quotes in YAML â the real bug
Agent frontmatter is YAML. YAML has hidden rules about quotation marks and line breaks. The most common (and invisible) bug is a unclosed quote or incorrect indentation that makes the parser cut the description off halfway through â the agent loads, but the trigger is truncated.
---
name: code-reviewer
description: "Revisa o diff após mudanças
em auth e pagamentos. Use proactively
após qualquer alteração nessas åreas.
tools: Read, Grep
---
# Code Reviewer
Revisa o diff do repositĂłrio atual...
Bug: unclosed quotes in " never closed. The YAML parser reads everything up to the next quotation mark (which doesn't exist) â the description gets truncated or the entire front matter breaks.
---
name: code-reviewer
description: Revisa o diff após mudanças
em auth e pagamentos. Use proactively
após qualquer alteração nessas åreas.
tools: Read, Grep
---
# Code Reviewer
Revisa o diff do repositĂłrio atual...
Fix: use a YAML block scalar (no quotes, consistent indentation). The description is read in full.
â Avoid
- ⢠Unclosed quotes
- ⢠Colons without quotes in the middle of a sentence
- ⢠Mixed indentation (tab + space)
- ⢠Continuation lines without a leading space
â Do this
- ⢠Block scalar: no quotes, 2-space indentation
- ⢠Test with
python -c "import yaml; yaml.safe_load(open('agent.md').read())" - ⢠One sentence per line in continuations
đ Diagnostics
- ⢠Agent loads but never triggers? Check the YAML.
- ⢠Ask the maestro: "read the frontmatter of [agent.md] and validate the YAML".
Silent YAML bug that truncates the description â the agent exists, but the trigger is broken.
Itâs the hardest bug to notice: the file is valid, the agent loads, but its behavior changes without warning.
YAML block scalar ¡ frontmatter parsing ¡ validation before trusting the trigger.
Prompts ready to use now
Paste these prompts directly into the orchestrator to diagnose and fix descriptions.
Por que o subagente [nome] nĂŁo disparou nesse prompt?
Leia o arquivo .claude/agents/[nome].md, analise a
description e diga onde estĂĄ o mismatch.
Depois reescreva a description para consertar.
Liste todos os agentes e skills cujas descriptions
combinam com "[pedido X]". Se mais de um combinar,
aponte a colisĂŁo e sugira como diferenciar cada um.
Leia o arquivo .claude/agents/[nome].md e valide o
frontmatter YAML. HĂĄ aspas nĂŁo fechadas, dois pontos
no meio de strings sem aspas, ou indentação mista?
Se sim, corrija e mostre o frontmatter vĂĄlido.
Simulated screen: diagnosing a description
See how the diagnostic loop looks in practiceâthe user asks the orchestrator to explain why the agent didnât launch and gets the corrected description.
Use proactively after changes to auth, payments, or sessions.
â Illustrative terminal recreation. The maestro has access to the agent file and can propose the fix directly.
Exercise: rewrite a weak description
Given the description below, rewrite it so the agent triggers at the right time without over-triggering. Use the three dimensions you learned: what, when e domain.
Original description (weak)
description: Agent that helps with deployments.
tools: Bash, Read
How to do it
- Imagine what useful things this agent would do during a deploy (e.g., check environment variables, validate Docker, check for pending migrations).
- Define when do you want it to appear automatically â before, during, or after deploy?
- Restrict the domain â it should trigger for any mention of code or only for explicit deploy requests?
- Write the description in 2â3 lines, including "Use proactively" with the specific condition.
â Verification criteria
Your description is good when:
- âA colleague can tell in 5 seconds when this agent fires.
- âIt no goes with generic requests like âhelp with codeâ or âlook at this file.â
- âIt yes goes with âdeploy feature Xâ or âIâm going to push to production.â
- âThe YAML is valid: no stray quotation marks, indentation with 2 spaces.
Example of a possible response
description: Checks deploy prerequisites:
  environment variables, pending migrations
  and Docker configuration. Use proactively
  when the user mentions deploy, upload
  for production or feature pushes.
tools: Bash, Read
Observe: what ("check prerequisites"), when ("mention deploy/release/push"), and the specific domain.
â Module summary
Next module:
2.3 â The body is the brain. What goes in the .md file body and how it defines the agent's actual behavior.