MISTAKES.md e Claude Code: transformar erro recorrente em regra
Guia para entradas concisas de MISTAKES.md, política de zero segredos, promoção a testes ou regras e validação de proteções do Claude Code.
Ao trabalhar com Claude Code em repositórios complexos, o agente inevitavelmente encontra particularidades pouco óbvias: definições TypeScript desatualizadas, dependências ocultas de runtime ou comportamentos específicos de bundler. Corrigir o mesmo erro repetidas vezes no chat desperdiça contexto e tempo. Por outro lado, despejar transcrições de sessão de muitas páginas nas instruções cria ruído no prompt e reduz a atenção do modelo.
Um padrão prático é manter um MISTAKES.md leve na raiz do repositório. Ele registra somente incidentes reproduzíveis, causas verificadas e ações preventivas, que depois são promovidos para testes do projeto, regras de linter e configuração persistente.
1. MISTAKES.md versus transcrição de sessão
Não confunda um log de incidentes com uma transcrição bruta do terminal:
MISTAKES.md precisa ficar conciso para que Claude Code o absorva no início da sessão sem consumir tokens de contexto em excesso.
2. Anatomia de um registro de incidente
Cada entrada possui quatro campos obrigatórios:
- Incident: o que quebrou exatamente e em quais condições—código de erro, comando e ferramenta.
- Impact: efeito posterior, como build quebrado, migração corrompida ou suíte de testes abortada.
- Root Cause: origem técnica confirmada; se não comprovada, marque explicitamente
[Hypothesis]. - Prevention: regra ou verificação concreta para impedir repetição.
Exemplo de registro
ERR-014: migração PostgreSQL falhou em DROP COLUMN sem CASCADE
- Incident: Claude Code executou
ALTER TABLE orders DROP COLUMN customer_ref;na migração 0042. - Impact: o deploy de staging falhou por causa da view dependente
v_active_orders. - Root Cause: views que referenciam tabelas base exigem recriação explícita com cascade ou atualização prévia.
- Prevention: toda migração DDL de remoção de coluna deve verificar views dependentes por
pg_dependantes da execução.
3. Limiar de promoção: do log ao teste ou regra
Nem todo erro isolado merece regra permanente. Promova entradas a barreiras automatizadas usando um limiar claro:
- Primeira ocorrência: acrescente registro conciso ao
MISTAKES.md. - Segunda ocorrência: se o problema pode ser detectado deterministicamente, escreva teste ou regra de linter. Barreiras automáticas superam prompts textuais.
- Verificações não mecânicas: formule regra negativa explícita em
CLAUDE.md, por exemplo “Nunca execute jest sem --runInBand no CI”. - Arquivamento: quando teste ou hook for implantado, arquive ou remova a entrada do
MISTAKES.mdpara evitar crescimento do arquivo.
4. Verificação na próxima tarefa
Para confirmar que a nova proteção funciona:
- inicie uma sessão nova do Claude Code;
- forneça um prompt que antes provocava a falha;
- verifique se o agente respeita a regra ou é interrompido pelo hook pre-commit;
- se o agente contornar instruções de texto, transforme a restrição em wrapper estrito de comando ou verificação automática.
Esse ciclo de feedback transforma falhas aleatórias de desenvolvimento em uma base de engenharia robusta e autoaperfeiçoável.