MÓDULO 2.1 · Trilha 2 · Criando na prática

📋 O frontmatter completo

O frontmatter é o painel de controle do seu subagente — os campos YAML que ficam entre --- e --- no topo do arquivo .md. Cada campo tem uma responsabilidade precisa: configurar o quê, com quê, como e onde o agente roda.

7
Tópicos
~30
Minutos
Básico
Nível
Prática
Tipo

Imagine o frontmatter como a ficha técnica de um colaborador: nome, ferramentas disponíveis, modelo cognitivo, memória, e o padrão de comportamento geral. O Claude Code lê apenas o frontmatter para decidir se deve chamar este agente — o corpo inteiro só é carregado quando o agente é de fato invocado. Cada campo que você omite vira um valor default; cada campo que você preenche vira uma decisão deliberada.

code-reviewer.md --- frontmatter (YAML) name: code-reviewer description: Revisa o diff em busca de bugs e falhas tools: Read, Grep, Glob model: claude-sonnet-4-5 --- corpo (Markdown — instruções do agente) You are a senior code reviewer… 1. Run git diff to see changes 2. Flag bugs, security holes… 🏷️ name 🎯 description (gatilho) 🔧 tools (permissões) 🧠 model (qual Claude) 📝 corpo (cérebro)

↑ Anatomia de um arquivo .md: frontmatter (YAML) + corpo (Markdown). O Claude Code lê o frontmatter para decidir; o corpo é o comportamento.

Conteúdo detalhado

1

🏷️ name — a identidade do agente

O campo name define o identificador único do seu subagente. É por esse nome que o maestro o chama — e é o nome que aparece na status line quando o agente está rodando. Pense nele como o apelido profissional do colaborador.

📐 Regras de formato

  • Letras minúsculas e hífens — nunca espaços, underscores ou maiúsculas.
  • Deve ser único dentro do projeto ou da pasta global ~/.claude/agents/.
  • Deve ser descritivo do papel, não da tecnologia — prefira code-reviewer a typescript-checker.
  • Máximo prático: 30–40 caracteres — aparece na UI e precisa ser legível.
exemplos de name frontmatter YAML
# BOM — papel claro, minúsculas, hífens
name: code-reviewer
name: doc-writer
name: sql-optimizer
name: security-auditor

# RUIM — espaço, maiúscula, underscore
name: Code Reviewer     # espaço + maiúscula
name: code_reviewer     # underscore
name: TypescriptChecker # camelCase
O que é:

identificador único do agente — minúsculas e hífens, sem espaços.

Por que aprender:

um nome errado faz o Claude Code ignorar o arquivo ou falhar silenciosamente ao carregar o agente.

Conceitos-chave:

kebab-case · unicidade por escopo · legibilidade na UI · papel > tecnologia.

2

🎯 description — o gatilho de invocação

A description é o campo mais estratégico do frontmatter. É o texto que o maestro lê para decidir se deve ou não chamar este agente. Pense nela como a placa de entrada do consultório: "cardiologista — dores no peito, check-up cardíaco". Sem a placa certa, o maestro passa pela porta e não sabe o que tem ali dentro.

Como o maestro usa a description

1

Você faz um pedido

"Revise o código que acabei de escrever e aponte bugs."

2

O maestro lê os name + description de todos os agentes

Não lê o corpo — só o cabeçalho. É rápido e barato em tokens.

3

Faz o match semântico

Se a description do code-reviewer diz "revisa diff em busca de bugs", o pedido bate. O agente é chamado.

4

Só então carrega o corpo inteiro

O custo de tokens do corpo só existe quando o agente é invocado — não no "processo de seleção".

💡 Dica: inclua "quando usar" explicitamente

A description mais eficaz nomeia o gatilho: "Use após qualquer mudança de código" ou "Use quando o usuário pedir otimização de query SQL". Essa instrução direta elimina ambiguidade no match do maestro.

O que é:

o texto que o maestro lê para decidir se chama este agente — o gatilho de invocação.

Por que aprender:

uma description vaga faz o agente nunca ser chamado; uma description específica garante invocação no momento certo.

Conceitos-chave:

match semântico · "quando usar" explícito · custo de seleção zero · progressive disclosure.

3

🔧 tools — permissões declaradas

O campo tools é a lista branca de ferramentas que o subagente pode usar. Se você não declarar nada, ele herda todas as ferramentas do maestro — o que pode ser demais. Restringir ferramentas é uma decisão de segurança e foco: um revisor que só lê não pode acidentalmente escrever arquivos.

✓ Princípio do mínimo privilégio

  • code-reviewer: apenas Read, Grep, Glob
  • doc-writer: Read, Write (sem acesso a Bash)
  • sql-runner: apenas Bash (para psql)
  • Declare só o que a tarefa realmente exige

✗ Armadilhas comuns

  • Deixar sem tools (herda tudo do maestro)
  • Dar Bash a um agente que só lê arquivos
  • Dar Write a um revisor (pode sobrescrever código)
  • Listar ferramentas que o agente nunca usa (ruído)

📊 Ferramentas nativas mais usadas

Read

lê arquivos do projeto

Write

cria / edita arquivos

Edit

edita trechos específicos

Bash

executa comandos shell

Grep

busca em arquivos

Glob

lista arquivos por padrão

WebFetch

busca na web

Agent

lança subagentes aninhados

Task

cria tarefas longas

O que é:

lista branca de ferramentas que o subagente pode usar durante a execução.

Por que aprender:

restringe o que pode dar errado; um revisor sem Write não pode apagar código por engano.

Conceitos-chave:

mínimo privilégio · lista branca · ferramentas nativas · herança do maestro (quando omitido).

4

🧠 model — qual Claude roda a tarefa

O campo model define qual modelo de linguagem executará o agente. Esta é a decisão de custo e qualidade: tarefas simples e repetitivas vão para modelos rápidos e baratos; análises profundas vão para Opus. O tema de modelos por tarefa é a Trilha 3 inteira — aqui aprendemos a sintaxe do campo.

valores aceitos em model junho 2026
model: haiku          # rápido, barato — triagem, classificação
model: sonnet          # equilibrado — maioria dos casos
model: opus            # profundo e caro — análises complexas

# IDs completos (mais estáveis em produção)
model: claude-haiku-4-5
model: claude-sonnet-4-5
model: claude-opus-4-5

# omitido: herda o modelo do maestro (padrão seguro)

💡 Regra prática de inicio

Comece sempre com model: sonnet. Se o agente faz triagens simples, mude para haiku. Se faz raciocínio complexo (arquitetura, auditoria), mude para opus. A T3 te dará o critério exato para cada caso.

O que é:

campo que define qual modelo Claude executa este agente — controla custo e profundidade.

Por que aprender:

sem este campo, todos os agentes rodam no modelo mais caro por padrão — gasto desnecessário.

Conceitos-chave:

haiku/sonnet/opus · IDs completos vs. aliases · herança do maestro · custo × qualidade.

5

🎨 color e 🧠 memory — identidade e persistência

Dois campos que completam a configuração básica: color define a cor de destaque visual do agente na UI, e memory define quais arquivos de memória ele acessa — controlando o que ele "sabe" antes mesmo de a tarefa começar.

🎨 color

Cor hexadecimal ou nome de cor que aparece na status line do terminal ao lado do nome do agente.

color: "#34d399"   # verde
color: "#60a5fa"   # azul
color: "red"       # nome CSS

Opcional — apenas visual. Se omitido, o Claude Code usa uma cor default.

🧠 memory

Controla quais arquivos CLAUDE.md o agente carrega no contexto ao iniciar. Quatro valores possíveis:

  • project — CLAUDE.md do projeto
  • user — ~/.claude/CLAUDE.md global
  • local — CLAUDE.local.md (privado)
  • none — sem memória pré-carregada

📊 Quando usar memory: none

Agentes de triagem ou análise imparcial se beneficiam de memory: none — eles não devem ser influenciados pelas preferências de projeto. Já um agente de documentação precisa de memory: project para conhecer as convenções do repositório.

O que é:

color = identidade visual; memory = arquivos CLAUDE.md que o agente carrega ao iniciar.

Por que aprender:

memory errado faz o agente ignorar convenções do projeto ou carregar contexto irrelevante e caro.

Conceitos-chave:

color (visual) · memory: project/user/local/none · contexto pré-carregado · agente imparcial vs. contextualizado.

6

🚫 disallowed-tools — o bloqueio explícito

Enquanto tools é uma lista branca (só o que está lá pode ser usado), disallowed-tools é uma lista negra explícita: "o agente pode usar tudo, exceto estes". Use quando você quer herdar a maioria das ferramentas do maestro mas bloquear especificamente uma ou duas perigosas.

disallowed-tools em uso frontmatter YAML
---
name: code-analyzer
description: Analisa a base de código. Nunca modifica arquivos.
model: sonnet
disallowed-tools:
  - Write    # não pode criar / sobrescrever
  - Edit     # não pode editar trechos
  - Bash     # não pode rodar comandos
---

⚖️ tools vs. disallowed-tools — quando usar cada um

Use tools quando…

  • • O agente precisa de um conjunto pequeno e bem definido de ferramentas
  • • Quer declarar explicitamente o que o agente pode fazer
  • • O agente é novo e você quer controle total

Use disallowed-tools quando…

  • • O agente precisa de muitas ferramentas mas quer bloquear poucas
  • • Quer herdar expansões futuras de ferramentas automaticamente
  • • Só precisa remover ferramentas destrutivas de um agente genérico
O que é:

lista negra de ferramentas — o agente pode usar tudo exceto o que está aqui listado.

Por que aprender:

alternativa a tools quando a lista de permissões seria enorme — bloquear é mais conciso que listar tudo.

Conceitos-chave:

lista negra · herança com exceção · blocklist vs. allowlist · segurança seletiva.

7

🔌 Campos avançados — MCP e outros

Além dos campos básicos, o frontmatter suporta configurações avançadas para integrar servidores MCP (Model Context Protocol) — que expandem as ferramentas disponíveis com APIs externas, bancos de dados, serviços e muito mais. Estes campos são opcionais e geralmente aparecem em agentes de produção.

campos avançados de MCP frontmatter YAML
---
name: db-analyst
description: Analisa dados no PostgreSQL. Use quando pedir
  insights de banco ou queries de análise.
model: sonnet
tools: mcp__postgres  # ferramenta via MCP
mcp_servers:         # servidores MCP disponíveis
  - postgres         # nome definido em .claude/mcp.json
---

✓ O que MCP expande

  • Consultas diretas a bancos de dados
  • Integração com APIs de terceiros (Slack, GitHub, Jira)
  • Ferramentas customizadas da sua empresa
  • Sistemas de arquivos remotos e S3

📌 Pré-requisito

O servidor MCP precisa estar configurado em .claude/mcp.json antes de referenciar no frontmatter.

// .claude/mcp.json
{
  "postgres": {
    "command": "mcp-postgres",
    "args": ["postgresql://…"]
  }
}
O que é:

campos avançados que conectam o agente a servidores MCP — expandindo para além das ferramentas nativas.

Por que aprender:

MCP é a ponte para integrar subagentes com sistemas reais de produção (bancos, APIs, serviços).

Conceitos-chave:

MCP · mcp_servers · ferramentas externas · .claude/mcp.json · integração de produção.

📄

Exemplo real: frontmatter completo comentado

Um security-auditor.md de produção usando todos os campos que vimos — com comentários explicando cada decisão de design. Este é o ponto de referência que você pode copiar e adaptar.

.claude/agents/security-auditor.md Frontmatter completo
---
name: security-auditor        # kebab-case, papel claro

description: |               # bloco multiline para descrições longas
  Audita o código em busca de vulnerabilidades de segurança:
  SQL injection, XSS, dependências desatualizadas, segredos
  expostos e falhas de autenticação.
  Use quando o usuário pedir revisão de segurança, antes
  de qualquer PR para produção, ou após mudanças em auth.
                               # ↑ "quando usar" explícito = gatilho preciso

tools: Read, Grep, Glob      # só leitura — auditor nunca modifica

model: claude-opus-4-5       # análise crítica → modelo mais capaz

color: "#f87171"              # vermelho = segurança (visual na UI)

memory: project             # carrega CLAUDE.md do projeto
                               # → conhece as convenções de segurança do repo

disallowed-tools:           # bloqueio explícito de ferramentas destrutivas
  - Write                      # não pode alterar arquivos
  - Edit                       # não pode editar trechos
  - Bash                       # não pode executar scripts
---

# Corpo do agente (cérebro) — carregado só quando invocado

You are a senior application security engineer.
Your role is to audit code for vulnerabilities — never to fix them.

When invoked:
1. Run Grep to find patterns: SQL queries, eval(), innerHTML, passwords, tokens.
2. Read each flagged file in full context.
3. Classify each finding by severity: CRITICAL / HIGH / MEDIUM / LOW.

Output format:
- One table: Severity | File | Line | Issue | Recommendation
- Summary paragraph with the 3 most critical risks
- Do NOT rewrite code — only report.

🔒 tools + disallowed

Usa tools para allowlist e disallowed-tools redundantemente para clareza — uma abordagem defense-in-depth.

🧠 model: opus

Auditoria de segurança é crítica — aqui vale o modelo mais caro. Agentes de triagem simples ficariam em haiku.

📝 description multiline

O pipe | no YAML permite múltiplas linhas. Use para descriptions longas com gatilhos explícitos.

⌨️

Prompts prontos (copie e cole)

Três prompts para usar no Claude Code agora: criar um agente via /agents, inspecionar um agente existente, e gerar um frontmatter sob medida para um papel específico.

Prompt 1 — gerar frontmatter via /agents cria o .md inteiro
Crie um subagente chamado "doc-writer" que escreve
documentação técnica em Markdown. Ele deve usar apenas
Read e Write, rodar em sonnet, e ter memória do projeto.
Escreva o frontmatter completo e um corpo de 5 linhas.
Prompt 2 — inspecionar agente existente entende o que está configurado
Leia o frontmatter de todos os arquivos .md em
.claude/agents/ e me diga: quais modelos estão sendo
usados, quais ferramentas cada agente tem, e se algum
agente tem description vaga que pode atrapalhar o match.
Prompt 3 — frontmatter para papel específico geração sob medida
Quero um agente que otimize queries SQL pesadas.
Escreva o frontmatter completo incluindo: name kebab-case,
description com o gatilho "quando usar", tools mínimas,
model adequado ao tipo de análise, e color de destaque.
Depois explique cada campo escolhido e por quê.
🖥️

Tela simulada: /agents e o frontmatter carregado

É assim que o Claude Code exibe seus agentes após carregar os arquivos .md. A UI mostra o nome, a description resumida, as ferramentas e o modelo de cada agente. O campo color aparece como a bolinha colorida ao lado do nome.

claude code · /agents · 4 agentes encontrados 📋 lista
security-auditor claude-opus-4-5 Read Grep Glob
Audita código em busca de vulnerabilidades. Use antes de PRs para produção…
code-reviewer claude-sonnet-4-5 Read Grep Glob
Revisa o diff atual em busca de bugs e falhas de segurança. Use após mudança de código…
doc-writer claude-sonnet-4-5 Read Write
Escreve documentação técnica em Markdown. Use quando pedir README, docstrings ou guias…
sql-optimizer claude-haiku-4-5 Read Bash
Analisa e otimiza queries SQL lentas. Use ao identificar queries com tempo > 500ms…
↑↓ navegar · enter selecionar · esc fechar 4 agentes · 2 project · 2 global

↑ Recriação ilustrativa do painel /agents. O color aparece como bolinha; a description é truncada mas suficiente para o match semântico.

🎯

Exercício

Escreva o frontmatter completo para um subagente chamado test-writer — um agente que lê código-fonte e escreve testes unitários em vitest/jest. Use todos os campos obrigatórios e ao menos um campo avançado.

Como fazer

  1. Decida o name: deve ser kebab-case, descritivo do papel.
  2. Escreva a description: inclua "quando usar" e as situações de trigger.
  3. Liste os tools mínimos: o que um escritor de testes realmente precisa?
  4. Escolha o model: escrita de testes é simples ou complexo? Justifique.
  5. Adicione color e memory com uma justificativa cada.

✅ Critério de verificação — como saber que acertou

  • name está em kebab-case, sem espaços nem maiúsculas.
  • description contém ao menos uma frase do tipo "Use quando…" ou "Use após…".
  • tools inclui Read e Write, e você justificou por que esses dois.
  • model escolhido com justificativa de custo × qualidade.
  • O frontmatter abre e fecha com --- e é YAML válido (sem mistura de tabs e espaços).

Exemplo resolvido

---
name: test-writer
description: |
  Lê código-fonte e escreve testes unitários em vitest/jest.
  Use quando pedir "escreva testes para este arquivo" ou
  após implementar uma nova função ou classe.
tools: Read, Write, Glob   # lê fonte, escreve teste, lista arquivos
model: sonnet              # escrever testes exige raciocínio médio
color: "#4ade80"          # verde = "passou nos testes"
memory: project           # precisa conhecer o framework do projeto
---

Resumo do módulo

name — kebab-case, único, descritivo do papel. É o identificador na UI e no match do maestro.
description — o gatilho: o maestro lê só isso para decidir se chama o agente. Inclua "Use quando…".
tools — lista branca de permissões. Mínimo necessário; agente de leitura não precisa de Write.
model — haiku/sonnet/opus conforme a complexidade da tarefa. Omitir herda o modelo do maestro.
color + memory — identidade visual e contexto pré-carregado (project/user/local/none).
disallowed-tools — lista negra quando você quer herdar tudo mas bloquear poucas ferramentas específicas.
MCPmcp_servers conecta o agente a bancos, APIs e serviços via Model Context Protocol.

Próximo módulo:

2.2 — A descrição é o gatilho. Como escrever descriptions que o maestro reconhece e aciona com precisão.