Arquitetura de agentes: construindo harnesses de desenvolvimento com IA
# Arquitetura de agentes: construindo harnesses de desenvolvimento com IA
Resumo: Claude Code não é uma caixa de chat com acesso a arquivos. É um runtime programável com 22 eventos de ciclo de vida, cada um conectável com shell scripts que o modelo não pode pular. Empilhe hooks em dispatchers, dispatchers em skills, skills em agents, agents em workflows, e você obtém um harness de desenvolvimento autônomo que aplica restrições, delega trabalho, persiste memória entre sessões e orquestra deliberação multi-agente. Este guia cobre cada camada dessa stack: de um único hook a um sistema de consenso com 10 agentes. Zero frameworks necessários. Tudo em bash e JSON.
Andrej Karpathy cunhou um termo para o que cresce ao redor de um agente LLM: garras. Os hooks, scripts e orquestração que permitem ao agente agarrar o mundo fora da sua janela de contexto.1 A maioria dos desenvolvedores trata agentes de programação com IA como assistentes interativos. Digitam um prompt, observam a edição de um arquivo e seguem em frente. Essa abordagem limita a produtividade ao que você consegue supervisionar pessoalmente.
O modelo mental de infraestrutura é diferente: um agente de programação com IA é um runtime programável com um kernel LLM. Cada ação que o modelo executa passa por hooks que você controla. Você define políticas, não prompts. O modelo opera dentro da sua infraestrutura da mesma forma que um servidor web opera dentro das regras do nginx. Você não senta no nginx e digita requisições. Você o configura, faz deploy e monitora.
A distinção importa porque infraestrutura acumula ganhos. Um hook que bloqueia credenciais em comandos bash protege cada sessão, cada agente, cada execução autônoma. Uma skill que codifica seu critério de avaliação é aplicada consistentemente, seja você quem a invoca ou um agente. Um agente que revisa código por segurança executa as mesmas verificações estando você observando ou não.2
Pontos-chave
- Hooks garantem execução; prompts não. Use hooks para linting, formatação, verificações de segurança e qualquer coisa que precise rodar sempre, independentemente do comportamento do modelo. Exit code 2 bloqueia ações. Exit code 1 apenas alerta.3
- Skills codificam expertise de domínio que auto-ativa. O campo
descriptiondetermina tudo. Claude usa raciocínio LLM (não correspondência de palavras-chave) para decidir quando aplicar uma skill.4 - Subagents evitam inchaço de contexto. Janelas de contexto isoladas para exploração e análise mantêm a sessão principal enxuta. Até 10 podem rodar em paralelo.5
- A memória vive no sistema de arquivos. Arquivos persistem entre janelas de contexto. CLAUDE.md, MEMORY.md, diretórios de rules e documentos de handoff formam um sistema estruturado de memória externa.6
- Deliberação multi-agente captura pontos cegos. Agentes individuais não conseguem desafiar suas próprias suposições. Dois agentes independentes com prioridades de avaliação diferentes capturam falhas estruturais que quality gates não conseguem resolver.7
- O padrão harness é o sistema. CLAUDE.md, hooks, skills, agents e memória não são recursos independentes. Eles se compõem em uma camada determinística entre você e o modelo que escala com automação.
Como usar este guia
| Experiência | Comece aqui | Depois explore |
|---|---|---|
| Usa Claude Code diariamente, quer mais | O padrão Harness | Sistema de Skills, Arquitetura de Hooks |
| Construindo workflows autônomos | Padrões de Subagents | Orquestração multi-agente, Padrões de produção |
| Avaliando arquitetura de agentes | Por que arquitetura de agentes importa | Framework de decisão, Considerações de segurança |
| Configurando um harness para equipe | Design do CLAUDE.md | Arquitetura de Hooks, Cartão de referência rápida |
Cada seção se apoia na anterior. O Framework de decisão no final fornece uma tabela de consulta para escolher o mecanismo certo para cada tipo de problema.
Por que a arquitetura de agentes é importante
Simon Willison enquadra o momento atual em torno de uma única observação: escrever código agora é barato.8 Correto. Mas o corolário é que a verificação agora é a parte cara. Código barato sem infraestrutura de verificação produz bugs em escala. O investimento que compensa não é um prompt melhor. É o sistema ao redor do modelo que captura o que o modelo deixa passar.
Três forças tornam a arquitetura de agentes necessária:
Janelas de contexto são finitas e com perdas. Cada leitura de arquivo, saída de ferramenta e turno de conversa consome tokens. A Microsoft Research e a Salesforce testaram 15 LLMs em mais de 200.000 conversas simuladas e encontraram uma queda média de 39% no desempenho da interação de turno único para múltiplos turnos.9 A degradação começa em apenas dois turnos e segue uma curva previsível: edições precisas em múltiplos arquivos nos primeiros 30 minutos se degradam em visão de túnel de arquivo único por volta do minuto 90. Janelas de contexto maiores não resolvem isso. A condição “Concat” do mesmo estudo (conversa completa como um único prompt) alcançou 95,1% do desempenho de turno único com conteúdo idêntico. A degradação vem das fronteiras entre turnos, não dos limites de tokens.
O comportamento do modelo é probabilístico, não determinístico. Dizer ao Claude “sempre execute o Prettier após editar arquivos” funciona em aproximadamente 80% das vezes.3 O modelo pode esquecer, priorizar velocidade ou decidir que a mudança é “pequena demais”. Para conformidade, segurança e padrões de equipe, 80% não é aceitável. Hooks garantem a execução: cada Edit ou Write aciona seu formatador, sempre, sem exceções. Determinístico supera probabilístico.
Perspectivas únicas perdem problemas multidimensionais. Um único agente revisando um endpoint de API verificou autenticação, validou sanitização de entrada e conferiu cabeçalhos CORS. Aprovado sem ressalvas. Um segundo agente, instruído separadamente como testador de penetração, encontrou que o endpoint aceitava parâmetros de consulta sem limites que poderiam causar negação de serviço por meio de amplificação de consultas no banco de dados.7 O primeiro agente nunca verificou porque nada em seu framework de avaliação tratava a complexidade de consultas como uma superfície de segurança. Essa lacuna é estrutural. Nenhuma quantidade de engenharia de prompt resolve isso.
A arquitetura de agentes aborda todos os três problemas: hooks aplicam restrições determinísticas, subagents gerenciam isolamento de contexto e orquestração multi-agente fornece perspectivas independentes. Juntos, formam o harness.
O padrão Harness
O harness não é um framework. É um padrão: um conjunto combinável de arquivos, scripts e convenções que envolvem um agente de codificação por IA em infraestrutura determinística. Os componentes:
┌──────────────────────────────────────────────────────────────┐
│ THE HARNESS PATTERN │
├──────────────────────────────────────────────────────────────┤
│ ORCHESTRATION │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ Agent │ │ Agent │ │ Consensus │ │
│ │ Teams │ │ Spawning │ │ Validation│ │
│ └────────────┘ └────────────┘ └────────────┘ │
│ Multi-agent deliberation, parallel research, voting │
├──────────────────────────────────────────────────────────────┤
│ EXTENSION LAYER │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Skills │ │ Hooks │ │ Memory │ │ Agents │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ Domain expertise, deterministic gates, persistent state, │
│ specialized subagents │
├──────────────────────────────────────────────────────────────┤
│ INSTRUCTION LAYER │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ CLAUDE.md + .claude/rules/ + MEMORY.md │ │
│ └──────────────────────────────────────────────────────┘ │
│ Project context, operational policy, cross-session memory │
├──────────────────────────────────────────────────────────────┤
│ CORE LAYER │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Main Conversation Context (LLM) │ │
│ └──────────────────────────────────────────────────────┘ │
│ Your primary interaction; finite context; costs money │
└──────────────────────────────────────────────────────────────┘
Camada de instrução: Arquivos CLAUDE.md e diretórios de regras definem o que o agente sabe sobre seu projeto. Eles são carregados automaticamente no início da sessão e após cada compactação. Essa é a memória arquitetural de longo prazo do agente.
Camada de extensão: Skills fornecem expertise de domínio que se ativa automaticamente com base no contexto. Hooks fornecem gates determinísticos que disparam em cada chamada de ferramenta correspondente. Arquivos de memory persistem estado entre sessões. Agents personalizados fornecem configurações especializadas de subagents.
Camada de orquestração: Padrões multi-agente coordenam agentes independentes para pesquisa, revisão e deliberação. Orçamentos de spawn previnem recursão descontrolada. Validação por consenso garante qualidade.
O insight principal: a maioria dos usuários trabalha inteiramente na camada Core, observando o contexto inflar e os custos subirem. Usuários avançados configuram as camadas de instrução e extensão, usando a camada Core apenas para orquestração e decisões finais.2
Como o harness se apresenta no disco
~/.claude/
├── CLAUDE.md # Personal global instructions
├── settings.json # User-level hooks and permissions
├── skills/ # Personal skills (44+)
│ ├── code-reviewer/SKILL.md
│ ├── security-auditor/SKILL.md
│ └── api-designer/SKILL.md
├── agents/ # Custom subagent definitions
│ ├── security-reviewer.md
│ └── code-explorer.md
├── rules/ # Categorized rule files
│ ├── security.md
│ ├── testing.md
│ └── git-workflow.md
├── hooks/ # Hook scripts
│ ├── validate-bash.sh
│ ├── auto-format.sh
│ └── recursion-guard.sh
├── configs/ # JSON configuration
│ ├── recursion-limits.json
│ └── deliberation-config.json
├── state/ # Runtime state
│ ├── recursion-depth.json
│ └── agent-lineage.json
├── handoffs/ # Session handoff documents
│ └── deliberation-prd-7.md
└── projects/ # Per-project memory
└── {project}/memory/MEMORY.md
.claude/ # Project-level (in repo)
├── CLAUDE.md # Project instructions
├── settings.json # Project hooks
├── skills/ # Team-shared skills
├── agents/ # Team-shared agents
└── rules/ # Project rules
Cada arquivo nessa estrutura tem um propósito. A árvore ~/.claude/ é infraestrutura pessoal que se aplica a todos os projetos. A árvore .claude/ em cada repositório é específica do projeto e compartilhada via git. Juntas, formam o harness completo.
Sistema de skills
Skills são extensões invocadas pelo modelo. O Claude as descobre e aplica automaticamente com base no contexto, sem que você precise chamá-las explicitamente.4 O momento em que você se pega re-explicando o mesmo contexto entre sessões é o momento em que deveria criar uma skill.
Quando criar uma skill
| Situação | Crie um(a)… | Por quê |
|---|---|---|
| Você cola a mesma checklist toda sessão | Skill | Expertise de domínio que se ativa automaticamente |
| Você executa a mesma sequência de comandos explicitamente | Slash command | Ação invocada pelo usuário com gatilho previsível |
| Você precisa de análise isolada que não deve poluir o contexto | Subagent | Janela de contexto separada para trabalho focado |
| Você precisa de um prompt único com instruções específicas | Nada | Apenas digite. Nem tudo precisa de abstração. |
Skills são para conhecimento que o Claude sempre tem disponível. Slash commands são para ações que você aciona explicitamente. Se estiver decidindo entre os dois, pergunte: “O Claude deveria aplicar isso automaticamente, ou eu deveria decidir quando executar?”
Criando uma skill
Skills podem existir em quatro locais possíveis, do escopo mais amplo ao mais restrito:4
| Escopo | Localização | Aplica-se a |
|---|---|---|
| Enterprise | Configurações gerenciadas | Todos os usuários na organização |
| Pessoal | ~/.claude/skills/<name>/SKILL.md |
Todos os seus projetos |
| Projeto | .claude/skills/<name>/SKILL.md |
Apenas este projeto |
| Plugin | <plugin>/skills/<name>/SKILL.md |
Onde o plugin está habilitado |
Toda skill requer um arquivo SKILL.md com frontmatter em YAML:
---
name: code-reviewer
description: Review code for security vulnerabilities, performance issues,
and best practice violations. Use when examining code changes, reviewing
PRs, analyzing code quality, or when asked to review, audit, or check code.
allowed-tools: Read, Grep, Glob
---
# Code Review Expertise
## Verificações de segurança
Ao revisar código, verifique:
### Validação de entrada
- Toda entrada do usuário sanitizada antes de operações no banco de dados
- Consultas parametrizadas (sem interpolação de strings em SQL)
- Codificação de saída para conteúdo HTML renderizado
### Autenticação
- Tokens de sessão validados em cada endpoint protegido
- Verificações de permissão antes de mutações de dados
- Nenhuma credencial hardcoded ou chaves de API no código-fonte
Referência de frontmatter
| Campo | Obrigatório | Finalidade |
|---|---|---|
name |
Sim | Identificador único (minúsculas, hifens, máximo 64 caracteres) |
description |
Sim | Gatilho de descoberta (máximo 1024 caracteres). Claude usa isso para decidir quando aplicar a skill |
allowed-tools |
Não | Restringe as capacidades de Claude (ex.: Read, Grep, Glob para somente leitura) |
disable-model-invocation |
Não | Impede ativação automática; a skill só ativa via /skill-name |
user-invocable |
Não | Defina como false para ocultar do menu / completamente |
model |
Não | Sobrescreve qual modelo usar quando a skill está ativa |
context |
Não | Defina como fork para executar em janela de contexto isolada |
agent |
Não | Executa como subagent com seu próprio contexto isolado |
hooks |
Não | Define lifecycle hooks com escopo para esta skill |
$ARGUMENTS |
Não | Substituição de string: substituído pela entrada do usuário após /skill-name |
O campo description é tudo
No início da sessão, Claude Code extrai o name e description de cada skill e os injeta no contexto de Claude. Quando você envia uma mensagem, Claude usa raciocínio de modelo de linguagem para decidir se alguma skill é relevante. Uma análise independente do código-fonte de Claude Code confirma o mecanismo: as descrições das skills são injetadas em uma seção available_skills do system prompt, e o modelo usa compreensão de linguagem padrão para selecionar skills relevantes.10
Descrição ruim:
description: Helps with code
Descrição eficaz:
description: Review code for security vulnerabilities, performance issues,
and best practice violations. Use when examining code changes, reviewing
PRs, analyzing code quality, or when asked to review, audit, or check code.
A descrição eficaz inclui: o que faz (revisar código para tipos específicos de problemas), quando usar (examinar mudanças, PRs, análise de qualidade) e frases-gatilho (review, audit, check) que os usuários digitam naturalmente.
Orçamento de contexto
Todas as descrições de skills compartilham um orçamento de contexto que escala dinamicamente em 2% da janela de contexto, com um fallback de 16.000 caracteres.4 Se você tem muitas skills, mantenha cada descrição concisa. Você pode sobrescrever o orçamento via a variável de ambiente SLASH_COMMAND_TOOL_CHAR_BUDGET,11 mas a melhor solução são descrições mais curtas e precisas. Execute /context durante uma sessão para verificar se alguma skill está sendo excluída.
Arquivos de suporte e organização
Skills podem referenciar arquivos adicionais no mesmo diretório:
~/.claude/skills/code-reviewer/
├── SKILL.md # Required: frontmatter + core expertise
├── SECURITY_PATTERNS.md # Referenced: detailed vulnerability patterns
└── PERFORMANCE_CHECKLIST.md # Referenced: optimization guidelines
Referencie-os a partir do SKILL.md com links relativos. Claude lê esses arquivos sob demanda quando a skill é ativada. Mantenha o SKILL.md com menos de 500 linhas e mova material de referência detalhado para arquivos de suporte.12
Compartilhando skills via Git
Skills de projeto (.claude/skills/ na raiz do repositório) são compartilhadas via controle de versão:4
mkdir -p .claude/skills/domain-expert
# ... write SKILL.md ...
git add .claude/skills/
git commit -m "feat: add domain-expert skill for payment processing rules"
git push
Quando colegas de equipe fazem pull, recebem a skill automaticamente. Sem instalação, sem configuração. Esta é a forma mais eficaz de padronizar expertise em uma equipe.
Skills como biblioteca de prompts
Além de skills de propósito único, a estrutura de diretórios funciona como uma biblioteca de prompts organizada:
~/.claude/skills/
├── code-reviewer/ # Activates on: review, audit, check
├── api-designer/ # Activates on: design API, endpoint, schema
├── sql-analyst/ # Activates on: query, database, migration
├── deploy-checker/ # Activates on: deploy, release, production
└── incident-responder/ # Activates on: error, failure, outage, debug
Cada skill codifica uma faceta diferente da sua expertise. Juntas, formam uma base de conhecimento da qual Claude extrai automaticamente com base no contexto. Um desenvolvedor júnior recebe orientação de nível sênior sem precisar pedir.
Skills se compõem com hooks
Skills podem definir seus próprios hooks no frontmatter que se ativam apenas enquanto a skill está em execução. Isso cria comportamento específico de domínio que não polui outras sessões:2
---
name: deploy-checker
description: Verify deployment readiness. Use when preparing to deploy,
release, or push to production.
hooks:
PreToolUse:
- matcher: Bash
hooks:
- type: command
command: "bash -c 'INPUT=$(cat); CMD=$(echo \"$INPUT\" | jq -r \".tool_input.command\"); if echo \"$CMD\" | grep -qE \"deploy|release|publish\"; then echo \"DEPLOYMENT COMMAND DETECTED. Running pre-flight checks.\" >&2; fi'"
---
Skills de filosofia se ativam automaticamente via hooks SessionStart, injetando restrições de qualidade em cada sessão sem invocação explícita. A skill em si é conhecimento. O hook é aplicação. Juntos, formam uma camada de políticas.
Erros comuns com skills
Descrições muito amplas. Uma skill git-rebase-helper que se ativa em qualquer prompt relacionado a git (rebases, merges, cherry-picks, até git status) polui o contexto em 80% das sessões. A solução é restringir a descrição ou adicionar disable-model-invocation: true e exigir invocação explícita via /skill-name.4
Muitas skills competindo pelo orçamento. Mais skills significa mais descrições competindo pelo orçamento de contexto de 2%. Se você perceber que skills não estão ativando, verifique /context para ver as excluídas. Priorize menos skills bem descritas em vez de muitas vagas.
Informação crítica enterrada em arquivos de suporte. Claude lê o SKILL.md imediatamente, mas só acessa arquivos de suporte quando necessário. Se informação crítica está em um arquivo de suporte, Claude pode não encontrá-la. Coloque informações essenciais diretamente no SKILL.md.4
Arquitetura de Hooks
Hooks são comandos shell disparados por eventos do ciclo de vida do Claude Code.3 Eles rodam fora do LLM como scripts simples, não como prompts interpretados pelo modelo. O modelo quer executar rm -rf /? Um script bash de 10 linhas verifica o comando contra uma lista de bloqueio e o rejeita antes que o shell sequer o veja. O hook dispara independentemente da vontade do modelo.
Eventos Disponíveis
O Claude Code expõe 22 eventos de ciclo de vida em seis categorias:13
| Categoria | Eventos | Pode Bloquear? |
|---|---|---|
| Sessão | SessionStart, SessionEnd, Setup |
Não |
| Ferramenta | PreToolUse, PostToolUse, PostToolUseFailure |
Pre: Sim |
| Usuário | UserPromptSubmit |
Sim |
| Conclusão | Stop, SubagentStop, TeammateIdle, TaskCompleted |
Sim |
| Contexto | PreCompact, PostCompact, InstructionsLoaded |
Não |
| Configuração | ConfigChange, WorktreeCreate, WorktreeRemove, PermissionRequest, Notification, Elicitation, ElicitationResult, StopFailure |
Varia |
Semântica dos Códigos de Saída
Os códigos de saída determinam se os hooks bloqueiam ações:3
| Código de Saída | Significado | Ação |
|---|---|---|
| 0 | Sucesso | A operação prossegue. Stdout exibido no modo verbose. |
| 2 | Erro bloqueante | A operação para. Stderr se torna a mensagem de erro alimentada ao Claude. |
| 1, 3, etc. | Erro não bloqueante | A operação continua. Stderr exibido como aviso. |
Crítico: Todo hook de segurança deve usar exit 2, não exit 1. Exit 1 é um aviso não bloqueante. O comando perigoso ainda é executado. Este é o erro de hook mais comum entre equipes.14
Configuração de Hooks
Hooks ficam em arquivos de configurações. No nível do projeto (.claude/settings.json) para hooks compartilhados. No nível do usuário (~/.claude/settings.json) para hooks pessoais:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/validate-bash.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash -c 'if [[ \"$FILE_PATH\" == *.py ]]; then black --quiet \"$FILE_PATH\" 2>/dev/null; fi'"
}
]
}
]
}
}
O campo matcher é uma regex que corresponde a nomes de ferramentas: Bash, Write, Edit, Read, Glob, Grep, Agent, ou * para todas as ferramentas. Use "" (string vazia) para eventos sem ferramentas como UserPromptSubmit.
Protocolo de Entrada/Saída dos Hooks
Hooks recebem JSON via stdin com contexto completo:
{
"tool_name": "Bash",
"tool_input": {
"command": "npm test",
"description": "Run test suite"
},
"session_id": "abc-123",
"agent_id": "main",
"agent_type": "main"
}
Para controle avançado, hooks PreToolUse podem emitir JSON para modificar a entrada da ferramenta, injetar contexto ou tomar decisões de permissão:
{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"permissionDecisionReason": "Command validated and modified",
"updatedInput": {
"command": "npm test -- --coverage --ci"
},
"additionalContext": "Note: This database has a 5-second query timeout."
}
}
Três Tipos de Garantias
Antes de escrever qualquer hook, pergunte: que tipo de garantia eu preciso?14
Garantias de formatação asseguram consistência após o fato. Hooks PostToolUse em Write/Edit executam seu formatador após cada alteração de arquivo. A saída do modelo não importa porque o formatador normaliza tudo.
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash -c 'if [[ \"$FILE_PATH\" == *.py ]]; then black --quiet \"$FILE_PATH\" 2>/dev/null; elif [[ \"$FILE_PATH\" == *.js ]] || [[ \"$FILE_PATH\" == *.ts ]]; then npx prettier --write \"$FILE_PATH\" 2>/dev/null; fi'"
}
]
}
]
}
}
Garantias de segurança impedem ações perigosas antes que sejam executadas. Hooks PreToolUse em Bash inspecionam comandos e bloqueiam padrões destrutivos com código de saída 2:
#!/bin/bash
# validate-bash.sh — block dangerous commands
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')
if echo "$CMD" | grep -qE "rm\s+-rf\s+/|git\s+push\s+(-f|--force)\s+(origin\s+)?main|git\s+reset\s+--hard|DROP\s+TABLE"; then
echo "BLOCKED: Dangerous command detected: $CMD" >&2
exit 2
fi
Garantias de qualidade validam o estado em pontos de decisão. Hooks PreToolUse em comandos git commit executam seu linter ou suíte de testes e bloqueiam o commit se as verificações de qualidade falharem:
#!/bin/bash
# quality-gate.sh — lint before commit
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')
if echo "$CMD" | grep -qE "^git\s+commit"; then
if ! LINT_OUTPUT=$(ruff check . --select E,F,W 2>&1); then
echo "LINT FAILED -- fix before committing:" >&2
echo "$LINT_OUTPUT" >&2
exit 2
fi
fi
Tipos de Hook Além de Comandos Shell
O Claude Code suporta três tipos de hook:13
Hooks de comando (type: "command") executam scripts shell. Rápidos, determinísticos, sem custo de tokens.
Hooks de prompt (type: "prompt") enviam um prompt de turno único para um modelo rápido do Claude. O modelo retorna { "ok": true } para permitir ou { "ok": false, "reason": "..." } para bloquear. Use para avaliações nuançadas que regex não consegue expressar.
Hooks de agente (type: "agent") criam um subagent com acesso a ferramentas (Read, Grep, Glob) para verificação em múltiplos turnos. Use quando a verificação requer inspecionar arquivos reais ou saída de testes:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "agent",
"prompt": "Verify all unit tests pass. Run the test suite and check results. $ARGUMENTS",
"timeout": 120
}
]
}
]
}
}
Hooks Assíncronos
Hooks podem rodar em segundo plano sem bloquear a execução. Adicione async: true para operações não críticas como notificações e logging:13
{
"type": "command",
"command": ".claude/hooks/notify-slack.sh",
"async": true
}
Use async para notificações, telemetria e backups. Nunca use async para formatação, validação ou qualquer coisa que precise ser concluída antes da próxima ação.
Dispatchers em Vez de Hooks Independentes
Executar sete hooks disparando no mesmo evento, cada um lendo stdin independentemente, cria condições de corrida. Dois hooks escrevendo no mesmo arquivo de estado JSON simultaneamente vão truncar o JSON. Todo hook subsequente que fizer parsing desse arquivo quebra.2
A solução: um dispatcher por evento que executa hooks sequencialmente a partir do stdin em cache:
#!/bin/bash
# dispatcher.sh — run hooks sequentially with cached stdin
INPUT=$(cat)
HOOK_DIR="$HOME/.claude/hooks/pre-tool-use.d"
for hook in "$HOOK_DIR"/*.sh; do
[ -x "$hook" ] || continue
echo "$INPUT" | "$hook"
EXIT_CODE=$?
if [ "$EXIT_CODE" -eq 2 ]; then
exit 2 # Propagate block
fi
done
Depurando Hooks
Cinco técnicas para depurar hooks que falham silenciosamente:14
- Teste scripts de forma independente. Passe JSON de exemplo via pipe:
echo '{"tool_input":{"command":"git commit -m test"}}' | bash your-hook.sh - Use stderr para saída de depuração. Tudo escrito em stderr aparece no contexto do Claude.
- Fique atento a falhas do jq. Caminhos JSON incorretos retornam
nullsilenciosamente. Teste expressõesjqcontra entrada real da ferramenta. - Verifique os códigos de saída. Um hook PreToolUse que usa
exit 1não oferece nenhuma garantia enquanto aparenta funcionar. - Mantenha hooks rápidos. Hooks rodam de forma síncrona. Mantenha todos os hooks abaixo de 2 segundos, idealmente abaixo de 500ms.
Memória e Contexto
Toda conversa com IA opera dentro de uma janela de contexto finita. Conforme a conversa cresce, o sistema comprime turnos anteriores para abrir espaço para novo conteúdo. A compressão tem perdas. Decisões arquiteturais documentadas no turno 3 podem não sobreviver até o turno 15.9
Os Três Mecanismos do Colapso Multi-Turno
O estudo MSR/Salesforce identificou três mecanismos independentes, cada um exigindo uma intervenção diferente:9
| Mecanismo | O que acontece | Intervenção |
|---|---|---|
| Compressão de contexto | Informações anteriores descartadas para caber novo conteúdo | Checkpointing de estado no sistema de arquivos |
| Perda de coerência de raciocínio | O modelo contradiz suas próprias decisões anteriores entre turnos | Iteração com contexto limpo (Ralph loop) |
| Falha de coordenação | Múltiplos agentes mantêm snapshots de estado diferentes | Protocolos de estado compartilhado entre agentes |
Estratégia 1: Sistema de Arquivos como Memória
A memória mais confiável entre limites de contexto reside no sistema de arquivos. Claude Code lê CLAUDE.md e arquivos de memória no início de cada sessão e após cada compactação.6
~/.claude/
├── configs/ # 14 JSON configs (thresholds, rules, budgets)
│ ├── deliberation-config.json
│ ├── recursion-limits.json
│ └── consensus-profiles.json
├── hooks/ # 95 lifecycle event handlers
├── skills/ # 44 reusable knowledge modules
├── state/ # Runtime state (recursion depth, agent lineage)
├── handoffs/ # 49 multi-session context documents
├── docs/ # 40+ system documentation files
└── projects/ # Per-project memory directories
└── {project}/memory/
└── MEMORY.md # Always loaded into context
O arquivo MEMORY.md captura erros, decisões e padrões entre sessões. Quando você descobre que ((VAR++)) falha com set -e no bash quando VAR é 0, você registra isso. Três sessões depois, ao encontrar um caso extremo semelhante com inteiros em Python, a entrada no MEMORY.md traz o padrão à tona.15
Auto Memory (v2.1.32+): Claude Code registra e recupera automaticamente o contexto do projeto. Conforme você trabalha, Claude escreve observações em ~/.claude/projects/{project-path}/memory/MEMORY.md. O auto memory carrega as primeiras 200 linhas no prompt do sistema no início da sessão. Mantenha-o conciso e vincule a arquivos de tópicos separados para notas detalhadas.6
Estratégia 2: Compactação Proativa
O comando /compact do Claude Code resume a conversa e libera espaço de contexto, preservando decisões-chave, conteúdos de arquivos e estado das tarefas.15
Quando compactar: - Após completar uma subtarefa distinta (funcionalidade implementada, bug corrigido) - Antes de iniciar uma nova área do codebase - Quando Claude começa a repetir ou esquecer contexto anterior - Aproximadamente a cada 25-30 minutos durante sessões intensivas
Instruções personalizadas de compactação no CLAUDE.md:
# Summary Instructions
When using compact, focus on:
- Recent code changes
- Test results
- Architecture decisions made this session
Estratégia 3: Handoffs de Sessão
Para tarefas que abrangem múltiplas sessões, crie documentos de handoff que capturam o estado completo:
## Handoff: Deliberation Infrastructure PRD-7
**Status:** Hook wiring complete, 81 Python unit tests passing
**Files changed:** hooks/post-deliberation.sh, hooks/deliberation-pride-check.sh
**Decision:** Placed post-deliberation in PostToolUse:Task, pride-check in Stop
**Blocked:** Spawn budget model needs inheritance instead of depth increment
**Next:** PRD-8 integration tests in tests/test_deliberation_lib.py
A estrutura Status/Files/Decision/Blocked/Next fornece à sessão sucessora contexto completo com custo mínimo de tokens. Iniciar uma nova sessão com claude -c (continuar) ou ler o documento de handoff leva direto à implementação.15
Estratégia 4: Iteração com Contexto Limpo (O Ralph Loop)
Para sessões que excedem 60-90 minutos, inicie uma instância limpa de Claude por iteração. O estado persiste pelo sistema de arquivos, não pela memória conversacional. Cada iteração recebe o orçamento completo de contexto:16
Iteration 1: [200K tokens] -> writes code, creates files, updates state
Iteration 2: [200K tokens] -> reads state from disk, continues
Iteration 3: [200K tokens] -> reads updated state, continues
...
Iteration N: [200K tokens] -> reads final state, verifies criteria
Compare com uma única sessão longa:
Minute 0: [200K tokens available] -> productive
Minute 30: [150K tokens available] -> somewhat productive
Minute 60: [100K tokens available] -> degraded
Minute 90: [50K tokens available] -> significantly degraded
Minute 120: [compressed, lossy] -> errors accumulate
A abordagem de contexto limpo por iteração troca 15-20% de overhead na etapa de orientação (leitura de arquivos de estado, varredura do histórico git) por recursos cognitivos completos por iteração.16 O cálculo de custo-benefício: para sessões com menos de 60 minutos, uma única conversa é mais eficiente. Além de 90 minutos, o contexto limpo produz saída de maior qualidade apesar do overhead.
Os Antipadrões
Ler arquivos inteiros quando você precisa de 10 linhas. Uma única leitura de arquivo com 2.000 linhas consome 15.000-20.000 tokens. Use offsets de linha: Read file.py offset=100 limit=20 economiza a grande maioria desse custo.15
Manter saída verbosa de erros no contexto. Após depurar um bug, seu contexto contém mais de 40 stack traces de iterações fracassadas. Um único /compact após corrigir o bug libera esse peso morto.
Começar toda sessão lendo todos os arquivos. Deixe as ferramentas glob e grep do Claude Code encontrarem arquivos relevantes sob demanda, economizando mais de 100.000 tokens de pré-carregamento desnecessário.15
Padrões de subagents
Subagents são instâncias especializadas de Claude que lidam com tarefas complexas de forma independente. Eles começam com um contexto limpo (sem poluição da conversa principal), operam com ferramentas especificadas e retornam resultados como resumos. Os resultados da exploração não inflam sua conversa principal; apenas as conclusões retornam.5
Tipos de subagents integrados
| Tipo | Modelo | Modo | Ferramentas | Indicado para |
|---|---|---|---|---|
| Explore | Haiku (rápido) | Somente leitura | Glob, Grep, Read, bash seguro | Exploração de codebase, localização de arquivos |
| General-purpose | Herda | Leitura/escrita completa | Todas disponíveis | Pesquisa complexa + modificação |
| Plan | Herda (ou Opus) | Somente leitura | Read, Glob, Grep, Bash | Planejamento antes da execução |
Criando subagents personalizados
Defina subagents em .claude/agents/ (projeto) ou ~/.claude/agents/ (pessoal):
---
name: security-reviewer
description: Expert security code reviewer. Use PROACTIVELY after any code
changes to authentication, authorization, or data handling.
tools: Read, Grep, Glob, Bash
model: opus
permissionMode: plan
---
You are a senior security engineer reviewing code for vulnerabilities.
When invoked:
1. Identify the files that were recently changed
2. Analyze for OWASP Top 10 vulnerabilities
3. Check for secrets, hardcoded credentials, SQL injection
4. Report findings with severity levels and remediation steps
Focus on actionable security findings, not style issues.
Campos de configuração de subagents
| Campo | Obrigatório | Finalidade |
|---|---|---|
name |
Sim | Identificador único (minúsculas + hífens) |
description |
Sim | Quando invocar (inclua “PROACTIVELY” para incentivar delegação automática) |
tools |
Não | Separado por vírgulas. Herda todas as ferramentas se omitido. Suporta Agent(agent_type) para restringir agentes que podem ser gerados |
disallowedTools |
Não | Ferramentas a negar, removidas da lista herdada ou especificada |
model |
Não | sonnet, opus, haiku, inherit (padrão: inherit) |
permissionMode |
Não | default, acceptEdits, delegate, dontAsk, bypassPermissions, plan |
maxTurns |
Não | Número máximo de turnos agênticos antes do subagent parar |
memory |
Não | Escopo de memória persistente: user, project, local |
skills |
Não | Carrega automaticamente conteúdo de skills no contexto do subagent na inicialização |
hooks |
Não | Hooks de ciclo de vida com escopo na execução deste subagent |
background |
Não | Sempre executar como tarefa em segundo plano |
isolation |
Não | Defina como worktree para cópia isolada em git worktree |
Isolamento com worktree
Subagents podem operar em git worktrees temporários, fornecendo uma cópia isolada completa do repositório:5
---
name: experimental-refactor
description: Attempt risky refactoring in isolation
isolation: worktree
tools: Read, Write, Edit, Bash, Grep, Glob
---
You have an isolated copy of the repository. Make changes freely.
If the refactoring succeeds, the changes can be merged back.
If it fails, the worktree is discarded with no impact on the main branch.
O isolamento com worktree é essencial para trabalho experimental que pode quebrar a codebase.
Subagents paralelos
Claude Code suporta até 10 subagents paralelos.5 Use execução paralela para tarefas de pesquisa independentes:
> Have three explore agents search in parallel:
> 1. Authentication code
> 2. Database models
> 3. API routes
Cada agente roda em sua própria janela de contexto, encontra código relevante e retorna um resumo. O contexto principal permanece limpo.
O guard de recursão
Sem limites de geração, agentes delegam para agentes que delegam para agentes, cada um perdendo contexto e consumindo tokens. O padrão de guard de recursão impõe orçamentos:16
#!/bin/bash
# recursion-guard.sh — enforce spawn budget
CONFIG_FILE="${HOME}/.claude/configs/recursion-limits.json"
STATE_FILE="${HOME}/.claude/state/recursion-depth.json"
MAX_DEPTH=2
MAX_CHILDREN=5
DELIB_SPAWN_BUDGET=2
DELIB_MAX_AGENTS=12
# Read current depth
current_depth=$(jq -r '.depth // 0' "$STATE_FILE" 2>/dev/null)
if [[ "$current_depth" -ge "$MAX_DEPTH" ]]; then
echo "BLOCKED: Maximum recursion depth ($MAX_DEPTH) reached" >&2
exit 2
fi
# Increment depth using safe arithmetic (not ((VAR++)) with set -e)
new_depth=$((current_depth + 1))
jq --argjson d "$new_depth" '.depth = $d' "$STATE_FILE" > "${STATE_FILE}.tmp"
mv "${STATE_FILE}.tmp" "$STATE_FILE"
Lição crítica: Use orçamentos de geração, não apenas limites de profundidade. Limites baseados em profundidade rastreiam cadeias pai-filho (bloqueado na profundidade 3), mas ignoram a largura: 23 agentes na profundidade 1 ainda é “profundidade 1”. Um orçamento de geração rastreia o total de filhos ativos por pai, limitado a um máximo configurável. O modelo de orçamento mapeia para o modo de falha real (muitos agentes no total) em vez de uma métrica substituta (muitos níveis de aninhamento).7
Agent Teams (prévia de pesquisa)
Agent Teams coordenam múltiplas instâncias de Claude Code que trabalham de forma independente, se comunicam via uma caixa de mensagens e lista de tarefas compartilhadas, e podem contestar as conclusões umas das outras:5
| Componente | Função |
|---|---|
| Team lead | Sessão principal que cria o time, gera teammates e coordena o trabalho |
| Teammates | Instâncias separadas de Claude Code trabalhando em tarefas atribuídas |
| Task list | Itens de trabalho compartilhados que teammates reivindicam e completam (bloqueio por arquivo) |
| Mailbox | Sistema de mensagens para comunicação entre agentes |
Ative com: export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
Quando usar agent teams vs subagents:
| Subagents | Agent Teams | |
|---|---|---|
| Comunicação | Apenas reportam resultados de volta | Teammates enviam mensagens diretamente entre si |
| Coordenação | O agente principal gerencia todo o trabalho | Lista de tarefas compartilhada com auto-coordenação |
| Ideal para | Tarefas focadas onde apenas o resultado importa | Trabalho complexo que requer discussão e colaboração |
| Custo de tokens | Menor | Maior (cada teammate = janela de contexto separada) |
Orquestração Multi-Agente
Sistemas de IA com um único agente têm um ponto cego estrutural: não conseguem questionar suas próprias suposições.7 A deliberação multi-agente força a avaliação independente de múltiplas perspectivas antes que qualquer decisão seja consolidada.
Deliberação Mínima Viável
Comece com 2 agentes e 1 regra: os agentes devem avaliar de forma independente antes de ver o trabalho um do outro.7
Decision arrives
|
v
Confidence check: is this risky, ambiguous, or irreversible?
|
+-- NO -> Single agent decides (normal flow)
|
+-- YES -> Spawn 2 agents with different system prompts
Agent A: "Argue FOR this approach"
Agent B: "Argue AGAINST this approach"
|
v
Compare findings
|
+-- Agreement with different reasoning -> Proceed
+-- Genuine disagreement -> Investigate the conflict
+-- Agreement with same reasoning -> Suspect herding
Esse padrão cobre 80% do valor. Todo o resto adiciona melhorias incrementais.
O Gatilho de Confiança
Nem toda tarefa precisa de deliberação. Um módulo de pontuação de confiança avalia quatro dimensões:17
- Ambiguidade - A consulta tem múltiplas interpretações válidas?
- Complexidade do domínio - Requer conhecimento especializado?
- Impacto - A decisão é reversível?
- Dependência de contexto - Requer compreensão do sistema mais amplo?
A pontuação mapeia três níveis:
| Nível | Limite | Ação |
|---|---|---|
| ALTO | 0.85+ | Prosseguir sem deliberação |
| MÉDIO | 0.70-0.84 | Prosseguir com nota de confiança registrada |
| BAIXO | Abaixo de 0.70 | Acionar deliberação multi-agente completa |
O limite se adapta por tipo de tarefa. Decisões de segurança exigem consenso de 0.85. Alterações de documentação precisam apenas de 0.50. Isso evita over-engineering em tarefas simples enquanto garante que decisões arriscadas recebam escrutínio.7
A Máquina de Estados
Sete fases, cada uma condicionada pela anterior:7
IDLE -> RESEARCH -> DELIBERATION -> RANKING -> PRD_GENERATION -> COMPLETE
|
(or FAILED)
RESEARCH: Agentes independentes investigam o tópico. Cada agente recebe uma persona diferente (Arquiteto Técnico, Analista de Segurança, Engenheiro de Performance, entre outros). O isolamento de contexto garante que os agentes não possam ver as descobertas uns dos outros durante a pesquisa.
DELIBERATION: Os agentes veem todas as descobertas da pesquisa e geram alternativas. O agente de Debate identifica conflitos. O agente de Síntese combina descobertas não contraditórias.
RANKING: Cada agente pontua cada abordagem proposta em 5 dimensões ponderadas:
| Dimensão | Peso |
|---|---|
| Impacto | 0.25 |
| Qualidade | 0.25 |
| Viabilidade | 0.20 |
| Reusabilidade | 0.15 |
| Risco | 0.15 |
A Arquitetura de Validação com Dois Gates
Dois gates de validação capturam problemas em estágios diferentes:7
Gate 1: Validação de Consenso (hook PostToolUse). Executa imediatamente após cada agente de deliberação concluir: 1. A fase deve ter alcançado pelo menos RANKING 2. Mínimo de 2 agentes concluídos (configurável) 3. A pontuação de consenso atende ao limite adaptativo da tarefa 4. Se algum agente discordou, as preocupações devem estar documentadas
Gate 2: Pride Check (hook Stop). Executa antes que a sessão possa ser encerrada: 1. Métodos diversos: múltiplas personas únicas representadas 2. Transparência de contradições: discordâncias têm razões documentadas 3. Tratamento de complexidade: pelo menos 2 alternativas geradas 4. Confiança de consenso: classificada como forte (acima de 0.85) ou moderada (0.70-0.84) 5. Evidência de melhoria: confiança final supera a confiança inicial
Dois hooks em pontos diferentes do ciclo de vida correspondem a como as falhas realmente ocorrem: algumas são instantâneas (pontuação ruim) e algumas são graduais (baixa diversidade, documentação de discordância ausente).7
Por Que o Consenso É Perigoso
Charlan Nemeth estudou a dissidência minoritária de 1986 até seu livro de 2018 In Defense of Troublemakers. Grupos com dissidentes tomam decisões melhores do que grupos que alcançam consenso rápido. O dissidente não precisa estar certo. O ato de discordância força a maioria a examinar suposições que, de outra forma, seriam ignoradas.18
Wu et al. testaram se agentes LLM conseguem genuinamente debater e descobriram que, sem incentivos estruturais para discordância, os agentes convergem para a resposta inicial que soa mais confiante, independentemente de estar correta.19 Liang et al. identificaram a causa raiz como “Degeneration-of-Thought”: uma vez que um LLM estabelece confiança em uma posição, a autorreflexão não consegue gerar contra-argumentos novos, tornando a avaliação multi-agente estruturalmente necessária.20
Independência é a restrição crítica de design. Dois agentes avaliando a mesma estratégia de deploy com visibilidade das descobertas um do outro produziram pontuações de 0.45 e 0.48. Os mesmos agentes sem visibilidade: 0.45 e 0.72. A diferença entre 0.48 e 0.72 é o custo do efeito manada.7
Detectando Concordância Falsa
Um módulo de detecção de conformidade rastreia padrões que sugerem que os agentes estão concordando sem avaliação genuína:7
Agrupamento de pontuações: Todos os agentes pontuando dentro de 0.3 pontos em uma escala de 10 pontos sinaliza contaminação de contexto compartilhado, não avaliação independente. Quando cinco agentes avaliando uma refatoração de autenticação pontuaram o risco de segurança entre 7.1 e 7.4, a reexecução com isolamento de contexto novo espalhou as pontuações para 5.8-8.9.
Discordância genérica: Agentes copiando a linguagem de preocupação uns dos outros em vez de gerar objeções independentes.
Ausência de perspectivas minoritárias: Aprovação unânime de personas com prioridades conflitantes (um Analista de Segurança e um Engenheiro de Performance raramente concordam em tudo).
O detector de conformidade captura os casos óbvios (aproximadamente 10-15% das deliberações onde os agentes convergem rápido demais). Para os 85-90% restantes, os gates de consenso e pride check fornecem validação suficiente.
O Que Não Funcionou na Deliberação
Rodadas de debate livre. Três rodadas de troca de texto para uma discussão sobre indexação de banco de dados produziram 7.500 tokens de debate. Rodada 1: discordância genuína. Rodada 2: posições reafirmadas. Rodada 3: argumentos idênticos com palavras diferentes. A pontuação estruturada por dimensão substituiu o debate livre, reduzindo o custo em 60% enquanto melhorava a qualidade do ranking.7
Gate de validação único. A primeira implementação executava um único hook de validação no final da sessão. Um agente concluiu a deliberação com uma pontuação de consenso de 0.52 (abaixo do limite), depois continuou em tarefas não relacionadas por 20 minutos antes que o hook de fim de sessão sinalizasse a falha. Dividir em dois gates (um na conclusão da tarefa, outro no fim da sessão) capturou os mesmos problemas em pontos diferentes do ciclo de vida.7
Custo da Deliberação
Cada agente de pesquisa processa aproximadamente 5.000 tokens de contexto e gera 2.000-3.000 tokens de descobertas. Com 3 agentes, são 15.000-24.000 tokens adicionais por decisão. Com 10 agentes, aproximadamente 50.000-80.000 tokens.7
No preço atual do Opus, uma deliberação com 3 agentes custa aproximadamente $0,68-0,90. Uma deliberação com 10 agentes custa $2,25-3,00. O sistema aciona deliberação em aproximadamente 10% das decisões, então o custo amortizado em todas as decisões é $0,23-0,30 por sessão. Se isso vale a pena depende do quanto uma decisão ruim custa.
Quando Deliberar
| Deliberar | Pular |
|---|---|
| Arquitetura de segurança | Erros de digitação em documentação |
| Design de schema de banco de dados | Renomeação de variáveis |
| Alterações de contrato de API | Atualizações de mensagens de log |
| Estratégias de deploy | Reformulação de comentários |
| Atualização de dependências | Atualizações de fixtures de teste |
Design do CLAUDE.md
CLAUDE.md é uma política operacional para um agente de IA, não um README para humanos.21 O agente não precisa entender por que você usa conventional commits. Ele precisa saber o comando exato a executar e como é o resultado esperado.
A Hierarquia de Precedência
| Localização | Escopo | Compartilhado | Caso de Uso |
|---|---|---|---|
| Configurações gerenciadas pela empresa | Organização | Todos os usuários | Padrões corporativos |
./CLAUDE.md ou ./.claude/CLAUDE.md |
Projeto | Via git | Contexto da equipe |
~/.claude/CLAUDE.md |
Usuário | Todos os projetos | Preferências pessoais |
./CLAUDE.local.md |
Local do projeto | Nunca | Notas pessoais do projeto |
.claude/rules/*.md |
Regras do projeto | Via git | Políticas categorizadas |
~/.claude/rules/*.md |
Regras do usuário | Todos os projetos | Políticas pessoais |
Arquivos de regras carregam automaticamente e fornecem contexto estruturado sem poluir o CLAUDE.md.6
O Que É Ignorado
Esses padrões consistentemente não produzem mudança observável no comportamento do agente:21
Parágrafos em prosa sem comandos. “Nós valorizamos código limpo e bem testado” é documentação, não operação. O agente lê e prossegue escrevendo código sem testes porque não há instrução acionável.
Diretivas ambíguas. “Tenha cuidado com migrações de banco de dados” não é uma restrição. “Execute alembic check antes de aplicar migrações. Aborte se o caminho de downgrade estiver ausente.” é.
Prioridades contraditórias. “Mova rápido e entregue logo” mais “Garanta cobertura de testes abrangente” mais “Mantenha o tempo de execução abaixo de 5 minutos” mais “Execute testes de integração completos antes de cada commit.” O agente não consegue satisfazer as quatro simultaneamente e por padrão pula a verificação.21
Guias de estilo sem enforcement. “Siga o Guia de Estilo Python do Google” sem ruff check --select D não dá ao agente nenhum mecanismo para verificar conformidade.
O Que Funciona
Instruções com comando primeiro:
## Build and Test Commands
- Install: `pip install -r requirements.txt`
- Lint: `ruff check . --fix`
- Format: `ruff format .`
- Test: `pytest -v --tb=short`
- Type check: `mypy app/ --strict`
- Full verify: `ruff check . && ruff format --check . && pytest -v`
Definições de closure:
## Definição de conclusão
Uma tarefa está completa quando TODOS os itens a seguir passam:
1. `ruff check .` retorna código 0
2. `pytest -v` retorna código 0 sem falhas
3. `mypy app/ --strict` retorna código 0
4. Os arquivos alterados foram preparados e commitados
5. A mensagem de commit segue o formato convencional: `type(scope): description`
Seções organizadas por tarefa:
## Ao escrever código
- Execute `ruff check .` após cada alteração de arquivo
- Adicione type hints a todas as novas funções
## Ao revisar código
- Verifique problemas de segurança: `bandit -r app/`
- Verifique a cobertura de testes: `pytest --cov=app --cov-fail-under=80`
## Ao fazer releases
- Atualize a versão em `pyproject.toml`
- Execute a suíte completa: `pytest -v && ruff check . && mypy app/`
Regras de escalonamento:
## Quando estiver bloqueado
- Se os testes falharem após 3 tentativas: pare e reporte o teste com falha com a saída completa
- Se uma dependência estiver faltando: verifique `requirements.txt` primeiro, depois pergunte
- Nunca: delete arquivos para resolver erros, force push, ou pule testes
Ordem de escrita
Se estiver começando do zero, adicione seções nesta ordem de prioridade:21
- Comandos de build e teste (o agente precisa deles antes de poder fazer qualquer coisa útil)
- Definição de conclusão (previne conclusões falsas)
- Regras de escalonamento (previne soluções destrutivas)
- Seções organizadas por tarefa (reduz o processamento de instruções irrelevantes)
- Escopo por diretório (monorepos: mantém instruções de serviços isoladas)
Deixe preferências de estilo de lado até que os quatro primeiros itens estejam funcionando.
Importação de arquivos
Referencie outros arquivos dentro do CLAUDE.md:
See @README.md for project overview
Coding standards: @docs/STYLE_GUIDE.md
API documentation: @docs/API.md
Personal preferences: @~/.claude/preferences.md
Sintaxe de importação: relativa (@docs/file.md), absoluta (@/absolute/path.md) ou diretório home (@~/.claude/file.md). Profundidade máxima: 5 níveis de importações.6
Compatibilidade de instruções entre ferramentas
AGENTS.md é um padrão aberto adotado por mais de 60.000 projetos e reconhecido por todas as principais ferramentas de codificação com IA.21 Se sua equipe usa múltiplas ferramentas, escreva o AGENTS.md como fonte canônica e espelhe as seções relevantes nos arquivos específicos de cada ferramenta:
| Ferramenta | Arquivo nativo | Lê AGENTS.md? |
|---|---|---|
| Codex CLI | AGENTS.md | Sim (nativo) |
| Cursor | .cursor/rules |
Sim (nativo) |
| GitHub Copilot | .github/copilot-instructions.md |
Sim (nativo) |
| Amp | AGENTS.md | Sim (nativo) |
| Windsurf | .windsurfrules |
Sim (nativo) |
| Claude Code | CLAUDE.md | Não (formato separado) |
Os padrões do AGENTS.md (comando primeiro, definido por closure, organizado por tarefa) funcionam em qualquer arquivo de instrução independentemente da ferramenta. Não mantenha conjuntos paralelos de instruções que divergem entre si. Escreva uma fonte autoritativa e espelhe.
Testando suas instruções
Verifique se o agente realmente lê e segue suas instruções:
# Check active instructions
claude --print "What instructions are you following for this project?"
# Verify specific rules are active
claude --print "What is your definition of done?"
O teste decisivo: Peça ao agente para explicar seus comandos de build. Se ele não conseguir reproduzi-los literalmente, as instruções estão ou muito verbosas (conteúdo empurrado para fora do contexto), muito vagas (o agente não consegue extrair instruções acionáveis), ou não estão sendo descobertas. A análise da GitHub de 2.500 repositórios constatou que a falta de clareza causa a maioria das falhas.21
Padrões de produção
O quality loop
Um processo de revisão obrigatório para todas as mudanças não triviais:
- Implementar - Escreva o código
- Revisar - Releia cada linha. Identifique erros de digitação, erros lógicos, trechos confusos
- Avaliar - Execute o evidence gate. Verifique padrões, casos extremos, cobertura de testes
- Refinar - Corrija cada problema. Nunca adie para “depois”
- Visão ampla - Verifique pontos de integração, imports, código adjacente em busca de regressões
- Repetir - Se qualquer critério do evidence gate falhar, volte ao passo 4
- Reportar - Liste o que mudou, como foi verificado, cite evidências específicas
O evidence gate
“Eu acredito” e “deveria funcionar” não são evidências. Cite caminhos de arquivos, saída de testes ou código específico.
| Critério | Evidência necessária |
|---|---|
| Segue padrões do codebase | Nomeie o padrão e o arquivo onde ele existe |
| Solução funcional mais simples | Explique quais alternativas mais simples foram rejeitadas e por quê |
| Casos extremos tratados | Liste os casos extremos específicos e como cada um é tratado |
| Testes passam | Cole a saída dos testes mostrando 0 falhas |
| Sem regressões | Nomeie os arquivos/funcionalidades verificados |
| Resolve o problema real | Declare a necessidade do usuário e como isso a atende |
Se você não conseguir produzir evidência para qualquer linha, volte ao Refinar.22
Padrões de tratamento de erros
Escritas atômicas em arquivos. Múltiplos agentes escrevendo no mesmo arquivo de estado simultaneamente corrompe JSON. Escreva em arquivos .tmp e depois faça mv atomicamente. O sistema operacional garante que mv é atômico no mesmo sistema de arquivos.17
# Atomic state update
jq --argjson d "$new_depth" '.depth = $d' "$STATE_FILE" > "${STATE_FILE}.tmp"
mv "${STATE_FILE}.tmp" "$STATE_FILE"
Recuperação de estado corrompido. Se o estado for corrompido, o padrão de recuperação recria a partir de valores padrão seguros em vez de travar:16
if ! jq -e '.depth' "$RECURSION_STATE_FILE" &>/dev/null; then
# Corrupted state file, recreate with safe defaults
echo '{"depth": 0, "agent_id": "root", "parent_id": null}' > "$RECURSION_STATE_FILE"
echo "- Recursion state recovered (was corrupted)"
fi
A armadilha do ((VAR++)) no bash. ((VAR++)) retorna código de saída 1 quando VAR é 0 porque 0++ avalia como 0, que o bash trata como falso. Com set -e habilitado, isso mata o script. Use VAR=$((VAR + 1)) em vez disso.16
Classificação de raio de impacto
Classifique cada ação do agente pelo raio de impacto e aplique controles adequados:2
| Classificação | Exemplos | Controle |
|---|---|---|
| Local | Escritas em arquivos, execução de testes, linting | Aprovação automática |
| Compartilhado | Commits no git, criação de branches | Aviso + prosseguir |
| Externo | Git push, chamadas API, deploys | Requer aprovação humana |
Remote Control (conectar-se ao Claude Code local a partir de qualquer navegador ou app mobile) transforma o controle “Externo” de uma espera bloqueante em uma notificação assíncrona. O agente continua trabalhando na próxima tarefa enquanto você revisa a anterior pelo celular.2
Especificação de tarefas para execuções autônomas
Tarefas autônomas eficazes incluem três elementos: objetivo, critérios de conclusão e ponteiros de contexto:16
OBJECTIVE: Implement multi-agent deliberation with consensus validation.
COMPLETION CRITERIA:
- All tests in tests/test_deliberation_lib.py pass (81 tests)
- post-deliberation.sh validates consensus above 70% threshold
- recursion-guard.sh enforces spawn budget (max 12 agents)
- No Python type errors (mypy clean)
CONTEXT:
- Follow patterns in lib/deliberation/state_machine.py
- Consensus thresholds in configs/deliberation-config.json
- Spawn budget model: agents inherit budget, not increment depth
Os critérios devem ser verificáveis por máquina: resultado de testes passa/falha, saída de linter, códigos de status HTTP, verificações de existência de arquivos. Uma tarefa inicial que pedia ao agente para “escrever testes que passem” produziu assert True e assert 1 == 1. Tecnicamente correto. Praticamente inútil.16
| Qualidade dos critérios | Exemplo | Resultado |
|---|---|---|
| Vago | “Testes passam” | O agente escreve testes triviais |
| Mensurável mas incompleto | “Testes passam E cobertura >80%” | Testes cobrem linhas mas não testam nada significativo |
| Abrangente | “Todos os testes passam E cobertura >80% E sem erros de tipo E linter limpo E cada classe de teste testa um módulo distinto” | Resultado com qualidade de produção |
Modos de falha a observar
| Modo de falha | Descrição | Prevenção |
|---|---|---|
| Espiral de atalhos | Pular etapas do quality loop para terminar mais rápido | O evidence gate exige prova para cada critério |
| Miragem de confiança | “Estou confiante” sem executar verificação | Proibir linguagem evasiva em relatórios de conclusão |
| Verificação fantasma | Alegar que testes passaram sem executá-los nesta sessão | Hook Stop executa testes independentemente |
| Dívida adiada | TODO/FIXME/HACK em código commitado | Hook PreToolUse no git commit verifica o diff |
| Poluição do sistema de arquivos | Artefatos de tentativas abandonadas | Etapa de limpeza nos critérios de conclusão |
Um rastreamento concreto de sessão
Um rastreamento de sessão de uma execução autônoma processando um PRD com 5 stories:2
-
SessionStart dispara. O dispatcher injeta: data atual, detecção de projeto, restrições de filosofia, inicialização de rastreamento de custos. Cinco hooks, 180ms no total.
-
O agente lê o PRD, planeja a primeira story.
UserPromptSubmitdispara. O dispatcher injeta: contexto do projeto ativo, baseline de desvio de sessão. -
O agente chama Bash para executar testes.
PreToolUse:Bashdispara. Verificação de credenciais, validação de sandbox, detecção de projeto. 90ms. Testes executam.PostToolUse:Bashdispara: heartbeat de atividade registrado, verificação de desvio. -
O agente chama Write para criar um arquivo.
PreToolUse:Writedispara: verificação de escopo do arquivo.PostToolUse:Writedispara: verificação de lint, rastreamento de commit. -
O agente finaliza a story.
Stopdispara. Verificações do quality gate: o agente citou evidências? Linguagem evasiva? Comentários TODO no diff? Se qualquer verificação falhar, exit 2 e o agente continua. -
Verificação independente: Um agente novo executa a suíte de testes sem confiar no auto-relato do agente anterior.
-
Três agentes de code review são criados em paralelo. Cada um revisa o diff independentemente. Se qualquer revisor sinalizar CRITICAL, a story volta para a fila.
-
Story aprovada. Próxima story carrega. O ciclo se repete para todas as 5 stories.
Total de hooks disparados nas 5 stories: ~340. Tempo total em hooks: ~12 segundos. Esse overhead evitou três vazamentos de credenciais, um comando destrutivo e duas implementações incompletas em uma única execução noturna.
Considerações de segurança
O Sandbox
Claude Code roda em um sandbox que restringe acesso à rede e operações no sistema de arquivos. O sandbox impede que o modelo faça requisições de rede arbitrárias ou acesse arquivos fora do diretório do projeto.13
Limites de permissão
O sistema de permissões controla operações em múltiplos níveis:
| Nível | Controla | Exemplo |
|---|---|---|
| Permissões de ferramenta | Quais ferramentas podem ser usadas | Restringir subagent a Read, Grep, Glob |
| Permissões de arquivo | Quais arquivos podem ser modificados | Bloquear escritas em .env, credentials.json |
| Permissões de comando | Quais comandos bash podem ser executados | Bloquear rm -rf, git push --force |
| Permissões de rede | Quais domínios podem ser acessados | Lista de permissão para conexões ao servidor MCP |
Defesa contra prompt injection
Skills e hooks oferecem defesa em profundidade contra prompt injection:
Skills com restrições de ferramenta impedem que um prompt comprometido obtenha acesso de escrita:
allowed-tools: Read, Grep, Glob
Hooks PreToolUse validam cada chamada de ferramenta independentemente de como o modelo foi instruído:
# Block credential file access regardless of prompt
if echo "$FILE_PATH" | grep -qE "\.(env|pem|key|credentials)$"; then
echo "BLOCKED: Sensitive file access" >&2
exit 2
fi
Isolamento de subagents limita o raio de impacto. Um subagent com permissionMode: plan não consegue fazer alterações mesmo se seu prompt for comprometido.
Segurança de hooks
Hooks HTTP que interpolam variáveis de ambiente em headers requerem uma lista explícita de allowedEnvVars para prevenir a exfiltração arbitrária de variáveis de ambiente:13
{
"type": "http",
"url": "https://api.example.com/notify",
"headers": {
"Authorization": "Bearer $MY_TOKEN"
},
"allowedEnvVars": ["MY_TOKEN"]
}
A divisão de responsabilidades entre humano e agente
Segurança em arquiteturas de agentes requer uma divisão clara entre responsabilidades humanas e do agente:17
| Responsabilidade humana | Responsabilidade do agente |
|---|---|
| Definição do problema | Execução do pipeline |
| Limites de confiança | Execução dentro dos limites |
| Requisitos de consenso | Computação de consenso |
| Critérios do quality gate | Aplicação do quality gate |
| Análise de erros | Detecção de erros |
| Decisões de arquitetura | Opções de arquitetura |
| Injeção de contexto de domínio | Geração de documentação |
O padrão: humanos são donos das decisões que exigem contexto organizacional, julgamento ético ou direção estratégica. Agentes são donos das decisões que exigem busca computacional em grandes espaços de possibilidades. Hooks impõem essa fronteira.
Aplicação recursiva de hooks
Hooks disparam para ações de subagents também.13 Se Claude cria um subagent via Agent tool, seus hooks PreToolUse e PostToolUse executam para cada ferramenta que o subagent usar. Sem aplicação recursiva de hooks, um subagent poderia contornar seus portões de segurança. O evento SubagentStop permite que você execute limpeza ou validação quando um subagent termina.
Isso não é opcional. Um agente que cria um subagent sem seus hooks de segurança é um agente que pode fazer force-push para main, ler arquivos de credenciais ou executar comandos destrutivos enquanto seus portões ficam assistindo a conversa principal sem fazer nada.
Custo como arquitetura
Custo é uma decisão arquitetural, não algo que se resolve depois.2 Três níveis:
Nível de tokens. Compressão do system prompt. Remova exemplos de código tutorial (o modelo já conhece as APIs), consolide regras duplicadas entre arquivos e substitua explicações por restrições. “Rejeitar chamadas de ferramenta que correspondam a caminhos sensíveis” faz o mesmo trabalho que uma explicação de 15 linhas sobre por que credenciais não devem ser lidas.
Nível de agente. Spawns novos em vez de conversas longas. Cada story em uma execução autônoma recebe um novo agente com contexto limpo. O contexto nunca infla porque cada agente começa do zero. Briefing em vez de memória: modelos executam um briefing claro melhor do que navegam 30 passos de contexto acumulado.
Nível de arquitetura. CLI primeiro em vez de MCP quando a operação não tem estado. Uma chamada claude --print para uma avaliação única custa menos e não adiciona overhead de conexão. MCP faz sentido quando a ferramenta precisa de estado persistente ou streaming.
Framework de decisão
Quando usar cada mecanismo:
| Problema | Use | Por quê |
|---|---|---|
| Formatar código após cada edição | Hook PostToolUse | Precisa acontecer toda vez, deterministicamente |
| Bloquear comandos bash perigosos | Hook PreToolUse | Precisa bloquear antes da execução, exit code 2 |
| Aplicar padrões de revisão de segurança | Skill | Expertise de domínio que auto-ativa por contexto |
| Explorar codebase sem poluir o contexto | Subagent Explore | Contexto isolado, retorna apenas resumo |
| Executar refatoração experimental com segurança | Subagent isolado em worktree | Alterações podem ser descartadas se falharem |
| Revisar código de múltiplas perspectivas | Subagents paralelos ou Agent Team | Avaliação independente previne pontos cegos |
| Decidir sobre arquitetura irreversível | Deliberação multi-agente | Gatilho de confiança + validação de consenso |
| Persistir decisões entre sessões | MEMORY.md | Sistema de arquivos sobrevive aos limites de contexto |
| Compartilhar padrões da equipe | CLAUDE.md do projeto + .claude/rules/ | Distribuído via Git, carrega automaticamente |
| Definir comandos de build/teste do projeto | CLAUDE.md | Instruções command-first que o agente pode verificar |
| Executar desenvolvimento autônomo longo | Loop Ralph (iteração com contexto limpo) | Budget completo de contexto por iteração, estado no filesystem |
| Notificar Slack quando a sessão termina | Hook Stop assíncrono | Não-bloqueante, não desacelera a sessão |
| Validar qualidade antes do commit | Hook PreToolUse no git commit | Bloquear o commit se lint/testes falharem |
| Impor critérios de conclusão | Hook Stop | Impedir que o agente pare antes de concluir a tarefa |
Skills vs Hooks vs Subagents
| Dimensão | Skills | Hooks | Subagents |
|---|---|---|---|
| Invocação | Automática (raciocínio do LLM) | Determinística (orientada a eventos) | Explícita ou auto-delegada |
| Garantia | Probabilística (modelo decide) | Determinística (sempre dispara) | Determinística (contexto isolado) |
| Custo de contexto | Injetado no contexto principal | Zero (roda fora do LLM) | Janela de contexto separada |
| Custo de tokens | Budget da descrição (2% da janela) | Zero | Contexto completo por subagent |
| Melhor para | Expertise de domínio | Aplicação de políticas | Trabalho focado, exploração |
FAQ
Quantos hooks é demais?
Performance, não quantidade, é a restrição. Cada hook roda sincronamente, então o tempo total de execução dos hooks se soma a cada chamada de ferramenta correspondente. 95 hooks entre configurações de nível de usuário e de projeto rodam sem latência perceptível quando cada hook completa em menos de 200ms. O limite a observar: se um hook PostToolUse adiciona mais de 500ms a cada edição de arquivo, a sessão fica lenta. Faça profile dos seus hooks com time antes de implantá-los.14
Hooks podem bloquear Claude Code de executar um comando?
Sim. Hooks PreToolUse bloqueiam qualquer ação de ferramenta saindo com código 2. Claude Code cancela a ação pendente e mostra a saída stderr do hook para o modelo. Claude vê o motivo da rejeição e sugere uma alternativa mais segura. Exit 1 é um aviso não-bloqueante onde a ação continua normalmente.3
Onde devo colocar os arquivos de configuração de hooks?
Configurações de hooks vão em .claude/settings.json para hooks de nível de projeto (commitados no seu repositório, compartilhados com sua equipe) ou ~/.claude/settings.json para hooks de nível de usuário (pessoais, aplicados a todo projeto). Hooks de nível de projeto têm precedência quando ambos existem. Use caminhos absolutos para arquivos de script para evitar problemas com diretório de trabalho.14
Toda decisão precisa de deliberação?
Não. O módulo de confiança pontua decisões em quatro dimensões (ambiguidade, complexidade, impacto, dependência de contexto). Apenas decisões com pontuação abaixo de 0.70 de confiança geral disparam deliberação — aproximadamente 10% do total de decisões. Correções de documentação, renomeação de variáveis e edições rotineiras pulam deliberação completamente. Arquitetura de segurança, mudanças de schema de banco de dados e deploys irreversíveis disparam consistentemente.7
Como testar um sistema projetado para produzir discordância?
Teste tanto caminhos de sucesso quanto de falha. Sucesso: agentes discordam produtivamente e chegam a consenso. Falha: agentes convergem rápido demais, nunca convergem ou excedem budgets de spawn. Testes ponta a ponta simulam cada cenário com respostas determinísticas de agentes, verificando que ambos os portões de validação capturam todos os modos de falha documentados. Um sistema de deliberação em produção roda 141 testes em três camadas: 48 testes de integração bash, 81 testes unitários Python e 12 simulações de pipeline ponta a ponta.7
Qual é o impacto de latência da deliberação?
Uma deliberação com 3 agentes adiciona 30-60 segundos de tempo real (agentes rodam sequencialmente via Agent tool). Uma deliberação com 10 agentes adiciona 2-4 minutos. Os hooks de consenso e pride check rodam cada um em menos de 200ms. O gargalo principal é o tempo de inferência do LLM por agente, não overhead de orquestração.7
Qual deve ser o tamanho de um arquivo CLAUDE.md?
Mantenha cada seção com menos de 50 linhas e o arquivo total com menos de 150 linhas. Arquivos longos são truncados pelas janelas de contexto, então coloque as instruções mais críticas primeiro: comandos e definições de closure antes de preferências de estilo.21
Isso funciona com ferramentas além do Claude Code?
Os princípios arquiteturais (hooks como portões determinísticos, skills como expertise de domínio, subagents como contextos isolados, filesystem como memória) se aplicam conceitualmente a qualquer sistema agêntico. A implementação específica usa os eventos de ciclo de vida, padrões de matcher e Agent tool do Claude Code. AGENTS.md leva os mesmos padrões para Codex, Cursor, Copilot, Amp e Windsurf.21 O padrão de harness é agnóstico de ferramenta mesmo que os detalhes de implementação sejam específicos de cada ferramenta.
Cartão de Referência Rápida
Configuração de Hooks
{
"hooks": {
"PreToolUse": [{"matcher": "Bash", "hooks": [{"type": "command", "command": "script.sh"}]}],
"PostToolUse": [{"matcher": "Write|Edit", "hooks": [{"type": "command", "command": "format.sh"}]}],
"Stop": [{"matcher": "", "hooks": [{"type": "agent", "prompt": "Verify tests pass. $ARGUMENTS"}]}],
"SessionStart": [{"matcher": "", "hooks": [{"type": "command", "command": "setup.sh"}]}]
}
}
Frontmatter de Skills
---
name: my-skill
description: What it does and when to use it. Include trigger phrases.
allowed-tools: Read, Grep, Glob
---
Definição de Subagents
---
name: my-agent
description: When to invoke. Include PROACTIVELY for auto-delegation.
tools: Read, Grep, Glob, Bash
model: opus
permissionMode: plan
---
Instructions for the subagent.
Códigos de Saída
| Código | Significado | Uso |
|---|---|---|
| 0 | Sucesso | Permitir a operação |
| 2 | Bloqueio | Gates de segurança, gates de qualidade |
| 1 | Aviso não bloqueante | Logging, mensagens informativas |
Comandos Principais
| Comando | Finalidade |
|---|---|
/compact |
Comprimir contexto, preservar decisões |
/context |
Ver alocação de contexto e skills ativos |
/agents |
Gerenciar subagents |
claude -c |
Continuar a sessão mais recente |
claude --print |
Invocação CLI única (sem conversa) |
# <note> |
Adicionar nota ao arquivo de memória |
/memory |
Ver e gerenciar auto-memory |
Localização dos Arquivos
| Caminho | Finalidade |
|---|---|
~/.claude/CLAUDE.md |
Instruções globais pessoais |
.claude/CLAUDE.md |
Instruções do projeto (compartilhadas via git) |
.claude/settings.json |
Hooks e permissões do projeto |
~/.claude/settings.json |
Hooks e permissões do usuário |
~/.claude/skills/<name>/SKILL.md |
Skills pessoais |
.claude/skills/<name>/SKILL.md |
Skills do projeto (compartilhadas via git) |
~/.claude/agents/<name>.md |
Definições pessoais de subagents |
.claude/agents/<name>.md |
Definições de subagents do projeto |
.claude/rules/*.md |
Arquivos de regras do projeto |
~/.claude/rules/*.md |
Arquivos de regras do usuário |
~/.claude/projects/{path}/memory/MEMORY.md |
Auto-memory |
Registro de Alterações
| Data | Alteração |
|---|---|
| 24 de março de 2026 | Publicação inicial |
Referências
-
Andrej Karpathy sobre “claws” como uma nova camada sobre agentes LLM. Discussão no HN (406 pontos, 917 comentários). ↩
-
Implementação do autor. 84 hooks, 48 skills, 19 agents, ~15.000 linhas de orquestração. Documentado em Claude Code como Infraestrutura. ↩↩↩↩↩↩↩↩
-
Anthropic, “Claude Code Hooks: Exit Codes.” docs.anthropic.com. Exit 0 permite, exit 2 bloqueia, exit 1 avisa. ↩↩↩↩↩
-
Anthropic, “Estendendo Claude com Skills.” code.claude.com/docs/en/skills. Estrutura de skills, campos de frontmatter, correspondência baseada em LLM, orçamento de 2% do contexto. ↩↩↩↩↩↩↩
-
Anthropic, “Sub-agents do Claude Code.” code.claude.com/docs/en/sub-agents. Contexto isolado, suporte a worktree, equipes de agents. ↩↩↩↩↩
-
Anthropic, “Documentação do Claude Code.” docs.anthropic.com/en/docs/claude-code. Arquivos de memória, CLAUDE.md, auto-memory. ↩↩↩↩↩
-
Sistema de deliberação multi-agente do autor. 10 personas de pesquisa, máquina de estados de 7 fases, 141 testes. Documentado em Deliberação Multi-Agente. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Simon Willison, “Escrever código está barato agora.” Padrões de Engenharia Agêntica. ↩
-
Laban, Philippe, et al., “LLMs se Perdem em Conversas Multi-Turno,” arXiv:2505.06120, maio de 2025. Microsoft Research e Salesforce. 15 LLMs, mais de 200.000 conversas, queda média de 39% no desempenho. ↩↩↩
-
Mikhail Shilkov, “Por Dentro das Skills do Claude Code: Estrutura, Prompts, Invocação.” mikhail.io. Análise independente da descoberta de skills, injeção de contexto e seção
available_skillsdo prompt. ↩ -
Código-fonte do Claude Code,
SLASH_COMMAND_TOOL_CHAR_BUDGET. github.com/anthropics/claude-code. ↩ -
Anthropic, “Melhores Práticas para Criação de Skills.” platform.claude.com. Limite de 500 linhas, arquivos de apoio, convenções de nomenclatura. ↩
-
Anthropic, “Claude Code Hooks: Eventos de Ciclo de Vida.” docs.anthropic.com. 22 eventos de ciclo de vida, tipos de hook, hooks assíncronos, hooks HTTP. ↩↩↩↩↩↩
-
Tutorial de hooks do Claude Code do autor. 5 hooks de produção do zero. Documentado em Tutorial de Hooks do Claude Code. ↩↩↩↩↩
-
Gerenciamento da janela de contexto do autor ao longo de 50 sessões. Documentado em Gerenciamento da Janela de Contexto. ↩↩↩↩↩
-
Implementação do Ralph Loop do autor. Iteração com contexto limpo e estado via sistema de arquivos, orçamentos de spawn. Documentado em O Ralph Loop. ↩↩↩↩↩↩↩
-
Arquitetura do sistema de deliberação do autor. 3.500 linhas de Python, 12 módulos, gatilho de confiança, validação de consenso. Documentado em Construindo Sistemas de IA: De RAG a Agents. ↩↩↩
-
Nemeth, Charlan, In Defense of Troublemakers: The Power of Dissent in Life and Business, Basic Books, 2018. ↩
-
Wu, H., Li, Z., e Li, L., “Agentes LLM Conseguem Realmente Debater?” arXiv:2511.07784, 2025. ↩
-
Liang, T. et al., “Incentivando o Pensamento Divergente em Grandes Modelos de Linguagem através de Debate Multi-Agente,” EMNLP 2024. ↩
-
Análise de AGENTS.md do autor em repositórios reais. Documentado em Padrões de AGENTS.md. Veja também: Blog GitHub, “Como Escrever um Ótimo agents.md: Lições de Mais de 2.500 Repositórios.” ↩↩↩↩↩↩↩↩
-
Metodologia de quality loop e evidence gate do autor. Parte do sistema Jiro Craftsmanship. ↩