Folha de consulta

Cheatsheet do harness do agente: componentes, arquivos, problemas comuns e checklist de execução

Atualizado: · Skillaria.Top

O harness do agente é formado por cinco subsistemas: instruções, ferramentas, ambiente, estado e feedback. O conjunto mínimo de arquivos inclui o AGENTS.md como roteador curto, um script de verificação (make check e verify.sh), um arquivo de progresso e uma lista de funcionalidades com status. A marcação de «pronto» é feita pelo script, e não pelo agente.

Os cinco subsistemas do harness

SubsistemaO que éArtefatosSintoma de quebra
InstruçõesO que o agente deve saber sobre o projetoAGENTS.md / CLAUDE.md, skills, docs/, ADRsViola convenções conhecidas
FerramentasO que o agente consegue fazershell, testes, linter, navegador, servidores MCP«Quer, mas não consegue»
AmbienteOnde o agente trabalhaarquivos de lock, Docker/devcontainer, git worktree, sandbox, init.shA sessão começa consertando o ambiente
EstadoO que sobrevive a um reinícioPROGRESS.md, DECISIONS.md, feature_list.json, commitsA sessão nova não sabe onde o trabalho parou
FeedbackComo o agente percebe os próprios errosmake check, E2E, hooks, arch-check, avaliadorDiz «pronto», mas não funciona

Ordem para montar do zero: feedback → instruções → estado → ambiente → ferramentas.

Arquivos do harness

ArquivoFinalidadeRegra
AGENTS.md / CLAUDE.mdEntrada: o que é o projeto, como subir, como verificarRoteador curto (cerca de 80 linhas), com links para docs com condição «quando ler»
docs/*.mdDetalhes de cada temaLidos sob demanda, nunca inteiros
.claude/skills/*/SKILL.mdProcedimentos repetitivos (deploy, revisão)Carregados quando a tarefa corresponde à descrição
PROGRESS.mdEstado, feito, bloqueios, próximo passoAtualizado ao fim de cada sessão
DECISIONS.mdDecisão, motivo, alternativas descartadasRegistrar o caminho, e não só a conclusão
feature_list.jsonFuncionalidades: behavior, verification, stateExatamente uma active (WIP = 1)
scripts/verify.shVerifica a funcionalidade e a marca como passingO único que define passing, com o SHA do commit
scripts/arch-check.shVerifica as fronteiras da arquiteturaCódigo de saída 1, com WHY e FIX na saída
scripts/init.shCheca o ambiente antes do trabalhoAmbiente ok, git limpo, make check verde, há uma funcionalidade ativa
sprint contractAcordo sobre a funcionalidade antes do códigoDentro do escopo / fora do escopo / questões em aberto
.claude/settings.jsonPermissões e hooks do Claude CodeVerificações em eventos, não na memória do agente

Esqueleto do AGENTS.md

# Projeto: backend de pagamentos (FastAPI, PostgreSQL)

## Execução
docker compose up -d && ./scripts/init.sh

## Verificação
make check   # lint, tipos, testes unitários, arch-check
make e2e     # cenários de ponta a ponta

## Definição de pronto
- make check e make e2e terminam com código 0
- a funcionalidade é marcada como passing pelo script scripts/verify.sh
- PROGRESS.md atualizado

## MUST
- acesso ao banco apenas pelos repositórios
- segredos lidos apenas de variáveis de ambiente

## Documentos
- docs/payments.md — quando a tarefa envolver pagamentos e estornos
- docs/migrations.md — quando o esquema do banco mudar

Estados da funcionalidade

EstadoSignificadoQuem altera
pendingNa filaPlanejador
activeEm andamento (só uma por vez)Agente, ao começar
passingPassou na verificaçãoSomente verify.sh
blockedPrecisa de decisão humana, com motivoAgente

Níveis de verificação

NívelO queQuando
1Lint, tiposSempre
2Testes unitários e de integraçãoSempre
3E2EAlteração que toca mais de uma camada; antes de «pronto»
4arch-checkQuando surge um import novo entre camadas

O direito de dizer «pronto» vem só depois do nível mais alto. Testes unitários verdes não significam pronto.

Transformar regras em mecanismos

NívelFerramentaCusto
Guarda grepScript que busca um padrão e imprime WHY/FIXMinutos
Regra de linterimport-linter (Python), dependency-cruiser, eslint-plugin-boundaries (JS/TS)Cerca de uma hora
Teste arquiteturalTeste no CI que falha quando as camadas são violadasMais, mas visível no make check
#!/usr/bin/env bash
fail=0
if grep -rn "from app.db" app/services/; then
  echo "WHY: a camada de serviços não acessa o banco diretamente"
  echo "FIX: use o repositório de app/repositories/"
  fail=1
fi
exit $fail

Problemas comuns e soluções

ProblemaSubsistemaSolução
Regra no CLAUDE.md não é respeitadaInstruçõesEnxugar o arquivo, transformar a regra em verificação ou hook
O agente não consegue rodar os testesFerramentasLiberar o comando, instalar as dependências na imagem
Comportamento diferente entre máquinasAmbienteArquivos de lock, Docker/devcontainer, versão do runtime fixada
Amnésia entre sessõesEstadoPROGRESS.md, nota de passagem de sessão, leitura no início
Três funcionalidades começadas, nenhuma terminadaEstadoWIP = 1 em feature_list.json
«Pronto», mas não funcionaFeedbackDefinição de pronto, E2E, verify.sh, avaliador independente
Testes verdes, funcionalidade quebradaFeedbackE2E com banco e configuração reais
O agente copia padrões ruinsFeedbackarch-check desde o primeiro dia
Não se sabe o que o agente fezEstadoCommits pequenos, relato no PROGRESS.md, registro no DECISIONS.md
O agente quebrou o ambiente durante a noiteAmbienteSandbox, git worktree, checkpoints, rollback pelo init.sh
O mesmo comentário de revisão aparece duas vezesHarness como um todoTransformar em verificação no make check e remover o texto das instruções

Papéis em tarefas longas

PapelFazNão faz
PlanejadorFuncionalidades com critérios de aceiteNão escreve código
GeradorImplementa uma funcionalidade, roda os testesNão decide se está pronta
AvaliadorVeredito pela rubrica, com referência a arquivo, linha ou logNão vê o raciocínio do gerador
MergeFaz o commit quando review == passÉ código, não agente

Orçamento do trabalho autônomo

  • O objetivo em uma frase (por exemplo: todas as funcionalidades em passing).
  • WIP = 1, com limite de tempo e de tentativas por funcionalidade.
  • A métrica sobe de forma monotônica; qualquer regressão leva a rollback imediato.
  • Migrations, infraestrutura e dinheiro são encaminhados a uma pessoa.
  • Depois de várias reprovações na revisão, a funcionalidade recomeça com contexto limpo.

Checklist para executar o agente

  1. Existe AGENTS.md: stack, como subir, comando de verificação, definição de pronto.
  2. O make check passa em um clone limpo.
  3. O ambiente é reproduzível: arquivos de lock, Docker ou devcontainer.
  4. O agente tem permissão para os comandos necessários; os perigosos são proibidos ou ficam no sandbox.
  5. Existe pelo menos um E2E para o cenário principal.
  6. Existe PROGRESS.md, e a regra manda lê-lo no início da sessão.
  7. A lista de funcionalidades tem status, e só uma está ativa.
  8. O status passing é definido pelo script.
  9. As mensagens de verificação trazem WHY e FIX.
  10. A tarefa tem critérios de aceite e limites de escopo claros.
  11. Está definido o que exige decisão humana.
  12. O verification gap foi medido antes das mudanças, para servir de comparação.

Métricas do harness

MétricaComo calcular
Verification gapProporção, em 10 tarefas, de «pronto» sem confirmação da verificação
MTTRTempo entre a falha e a volta a um estado funcional
Partida a frioA sessão nova responde «onde estamos e qual é o próximo passo» sem adivinhar
AblaçãoQueda de desempenho ao desligar um subsistema, em um conjunto fixo de tarefas

Conclusão

O harness é um circuito, não um arquivo: instruções, ferramentas, ambiente, estado e feedback. Comece pela verificação, mantenha o AGENTS.md curto, deixe a decisão de «pronto» para o script e revise o harness com regularidade. Tudo isso se reúne no curso de harness engineering, em um harness completo sobre um projeto real.

Perguntas frequentes

Qual é a diferença entre AGENTS.md e CLAUDE.md?

A finalidade é a mesma: ambos são arquivos de instruções para o agente. O CLAUDE.md é lido pelo Claude Code; o AGENTS.md é um formato comum a vários agentes. No CLAUDE.md você pode simplesmente apontar para o AGENTS.md.

Quantas linhas deve ter o AGENTS.md?

Não há um limite rígido, mas o arquivo de entrada deve ser curto, algo em torno de cem linhas, como um sumário. Os detalhes vão para documentos separados.

Um projeto pequeno precisa de feature_list.json?

Para alterações pontuais, não. Ele compensa quando o agente trabalha em várias funcionalidades seguidas ou ao longo de várias sessões.

Onde guardar os segredos que o agente precisa?

Em variáveis de ambiente ou em um gerenciador de segredos, e não nos arquivos de instruções nem no código. O agente recebe acesso ao ambiente, e não valores escritos no texto.