CLAUDE.md e AGENTS.md: o que são, o que escrever neles e por que o agente ignora regras
CLAUDE.md e AGENTS.md são arquivos de texto na raiz do repositório com instruções para o agente de IA: como montar e verificar o projeto, quais regras não podem ser violadas e onde estão os detalhes. O Claude Code lê o CLAUDE.md; o AGENTS.md é um formato comum que a maioria dos agentes de programação entende. O arquivo deve ser um mapa curto do projeto, e não um texto de centenas de linhas, senão as regras importantes se perdem.
O que são CLAUDE.md e AGENTS.md
São arquivos Markdown comuns na raiz do repositório, que o agente carrega automaticamente no contexto no início da sessão. Por meio deles você comunica o que o agente não consegue deduzir sozinho pelo código: como subir o ambiente, quais comandos usar para verificar o trabalho, quais regras do projeto não se discutem e onde ficam os documentos detalhados.
CLAUDE.md é o arquivo que o Claude Code lê. AGENTS.md é um formato aberto com a mesma ideia, suportado por muitos agentes de programação. Se a equipe usa mais de um agente, vale manter o conteúdo principal em AGENTS.md e fazer o CLAUDE.md apontar para ele. O Claude Code permite importar outro arquivo com o símbolo @:
# CLAUDE.md
@AGENTS.md
Assim, as regras ficam em um só lugar e não divergem entre dois arquivos.
Como o agente lê esses arquivos
O conteúdo do arquivo de instruções entra na janela de contexto do modelo junto com o prompt de sistema e permanece ali durante toda a sessão. Daí decorrem três consequências importantes.
- Cada linha ocupa espaço no contexto.O arquivo é lido por inteiro a cada execução, mesmo que a tarefa atual precise de um décimo dele.
- É texto, não uma regra executável.O modelo leva o conteúdo em consideração como qualquer outro contexto, e nada garante 100% de obediência. Proibições rígidas precisam de mecanismos de apoio: verificações, hooks e permissões de acesso.
- Os arquivos podem ser aninhados.O Claude Code carrega o
CLAUDE.mdda raiz do projeto e o da pasta do usuário~/.claude/; arquivos em subpastas são carregados quando o agente trabalha com arquivos dessas pastas. Assim, as regras de um módulo podem ficar ao lado do próprio módulo.
O que escrever no CLAUDE.md e no AGENTS.md
Um bom arquivo de instruções é um mapa, não um livro-texto. Ele responde às perguntas que o agente faria a um colega experiente no primeiro dia.
1. Como montar e verificar o projeto
É a seção mais valiosa: os comandos concretos que o agente é obrigado a rodar antes de dizer «pronto». Testes, linter, checagem de tipos, subir o ambiente. Sem eles, o agente verifica o próprio trabalho «a olho».
2. Restrições rígidas
Uma lista curta do que não pode ser violado em hipótese alguma: invariantes de segurança e de dados. Escreva como invariantes, e não como instruções de implementação: «todas as consultas SQL são parametrizadas» é melhor do que «use tal função naquele arquivo».
3. Mapa do projeto
Onde está cada coisa: algumas linhas sobre a estrutura de pastas e onde procurar detalhes. Para cada tema grande, um link para um documento próprio, que o agente abre apenas quando for trabalhar nele.
4. Onde fica o estado do trabalho
Para onde olhar para retomar do ponto em que a sessão anterior parou: arquivo de plano, diário de progresso, backlog. Isso trata a «amnésia» do agente entre sessões.
O que não escrever
- O que o agente lê no código.A lista de dependências está em
package.jsonoupyproject.toml, e a estrutura das classes está no próprio código. - Conselhos genéricos.«Escreva código limpo» ou «seja cuidadoso» não mudam o comportamento e só ocupam espaço.
- Histórico do projeto e anotações pontuais.«Em março migramos do MySQL 5.7» não ajuda a tarefa atual.
- Instruções detalhadas para tarefas raras.O procedimento de deploy ou de migração de dados é necessário uma vez por semana; mova-o para um documento separado ou para uma skill.
- Segredos.O arquivo fica no repositório e vai inteiro para o modelo. Tokens e senhas ficam apenas em variáveis de ambiente.
Por que o agente ignora uma regra escrita no arquivo
A história costuma ser esta: o agente erra, alguém acrescenta uma regra. Ele erra de novo, acrescenta-se outra. Depois de alguns meses, o arquivo tem centenas de linhas, e uma regra de segurança crítica é violada como se não existisse. Normalmente há quatro causas, e elas atuam ao mesmo tempo.
Arquivo inchado
Um arquivo de 600 linhas equivale a algo como 10 a 20 mil tokens. A janela de contexto parece enorme, mas o código, a saída dos comandos e o histórico da conversa disputam o mesmo espaço. Quanto mais as instruções ocupam, menos atenção cada regra recebe e menos espaço sobra para a tarefa.
Regra no meio do texto
Modelos de linguagem usam pior as informações do meio de um texto longo do que as do início e do fim. A regra na linha 300 de 600 cai justamente na posição mais fraca.
Ausência de prioridades
Uma proibição inegociável e uma observação passageira sobre estilo estão escritas do mesmo jeito: uma linha em uma lista. O agente não tem como saber o que é mais importante. Se há três regras de estilo que se contradizem, o comportamento vira aleatório de uma execução para outra.
Apodrecimento
Acrescentar uma regra é de graça, mas remover dá medo: «e se algo depende dela?». Por isso o arquivo cresce monotonamente e a proporção de linhas úteis cai. Dá para medir isso pela relação sinal/ruído: quantas linhas são de fato necessárias para uma tarefa típica e quantas não são.
Como corrigir: um roteador em vez de um texto enorme
Corrigir uma única causa não basta: se você encurtar o arquivo sem organizá-lo, as regras continuam misturadas. Funciona um conjunto de medidas.
- Transforme o arquivo de entrada em um roteador.Entre 50 e 150 linhas: comandos de verificação, restrições rígidas, mapa do projeto e links para documentos temáticos.
- Mova os temas para arquivos separados.Por exemplo,
docs/agents/deploy.mdedocs/agents/database.md. O agente os abre quando precisa. No Claude Code, skills são ótimas para procedimentos repetitivos, pois só são carregadas quando necessárias. - Coloque o crítico no topo.As restrições rígidas no início do arquivo, em um bloco curto marcado com MUST.
- Elimine contradições.Para cada tema, uma única regra. Se houver exceção, escreva-a ao lado da regra.
- Reforce a regra com um mecanismo.Se a violação é inaceitável, o texto não basta. É preciso uma verificação que pegue a infração: linter, teste, hook de pre-commit, hook do agente ou uma restrição de permissão de acesso.
- Revise com regularidade.Defina um limite de linhas e, a cada acréscimo, pergunte o que pode ser removido ou movido para outro lugar.
Regra ou verificação?
| Situação | Onde fixar |
|---|---|
| Estilo de código e formatação | Formatador e linter; no arquivo, apenas o comando de execução |
| Proibir alterar uma pasta ou arquivo | Permissões de acesso do agente, ou um hook que bloqueia a edição |
| Rodar os testes obrigatoriamente | Comando no arquivo, mais um hook ou CI que impede concluir com testes vermelhos |
| Decisão de arquitetura e seu motivo | Documento temático, linkado a partir do arquivo de entrada |
| Ordem de um procedimento raro | Documento separado ou skill |
Exemplo de AGENTS.md enxuto
# AGENTS.md — backend de pagamentos (FastAPI, PostgreSQL)
## MUST — não violar
- Valores monetários são int, em centavos; nunca float
- SQL apenas parametrizado, sem f-strings
- Não alterar migrations já aplicadas; só adicionar novas
- Segredos são lidos apenas de variáveis de ambiente
## Verificação antes de dizer «pronto»
docker compose up -d # ambiente
make lint # ruff + mypy
make test # pytest
make e2e # cenário de compra
Testes unitários verdes sem e2e não significam «pronto».
## Mapa
- app/payments/ — cálculo de valores, descontos, webhooks do provedor
- app/api/ — endpoints HTTP
- tests/e2e/ — cenários do usuário
Detalhes: docs/agents/architecture.md, docs/agents/database.md
## Estado do trabalho
- PLAN.md — objetivo atual, critérios de conclusão, próximo passo
- PROGRESS.md — o que foi feito e como foi verificado, becos sem saída
- BACKLOG.md — o que foi notado «de passagem»: anotar aqui, não corrigir agora
No fim da sessão, atualize PROGRESS.md e o próximo passo no PLAN.md.
Repare no que não está lá: não há lista de bibliotecas, dicas de estilo nem histórico do projeto. Ou isso se deduz do código, ou é garantido por verificações, ou está em documentos temáticos.
Amnésia entre sessões: arquivo de instruções mais arquivo de plano
O arquivo de instruções descreve como trabalhar no projeto, mas não o que está acontecendo agora. Para isso é preciso um arquivo de estado separado, que o agente lê no início e atualiza no fim da sessão. Nele ficam: o objetivo, o que foi feito com a indicação de como foi verificado, as decisões com seus motivos, as alternativas descartadas e um único próximo passo. A verificação da qualidade é simples: abra uma sessão nova, escreva «continue» e veja se o agente começa um trabalho útil sem fazer perguntas.
Não misture os dois arquivos. As instruções mudam raramente e valem para todas as tarefas. O plano muda a cada sessão e vale só para a tarefa atual. Se você misturar, o arquivo de instruções logo se enche de notas desatualizadas.
Como saber se o arquivo funciona
O arquivo de instruções também precisa ser testado. Escolha algumas tarefas típicas, como correção de bug, pequena funcionalidade e refatoração, e observe o que o agente faz sem dicas: roda os comandos certos? Abre o documento temático adequado? Respeita as restrições rígidas? Se uma regra for violada, pergunte primeiro: ela está visível? Há outra regra que a contradiz? Dá para trocá-la por uma verificação automática? Acrescentar uma linha é o último recurso.
Conclusão
CLAUDE.md e AGENTS.md são a porta de entrada do agente no projeto. Eles funcionam quando continuam sendo um mapa curto: comandos de verificação, restrições rígidas no topo, links para os detalhes e para o arquivo de plano. Se uma regra é ignorada, o motivo quase sempre é um arquivo inchado e sem estrutura, e as regras realmente críticas precisam ser reforçadas por verificações e hooks. Como montar as instruções e o estado do agente é explicado na prática no curso de harness engineering.
Perguntas frequentes
Preciso dos dois arquivos, CLAUDE.md e AGENTS.md?
Basta uma fonte para as regras. Se a equipe usa apenas o Claude Code, o CLAUDE.md é suficiente. Se usa vários agentes, mantenha as regras no AGENTS.md e importe-o no CLAUDE.md com @AGENTS.md.
Qual deve ser o tamanho do CLAUDE.md?
Não existe um padrão rígido, mas a referência prática para o arquivo de entrada é algo entre 100 e 150 linhas. Tudo o que a maioria das tarefas não usa deve ir para documentos temáticos ou skills.
Posso pedir ao agente que escreva o CLAUDE.md?
Sim. No Claude Code existe o comando /init, que gera um rascunho a partir do código. Mas o rascunho deve ser enxugado e completado à mão: os comandos de verificação e as restrições rígidas o agente não tem como saber só pelo código.
O CLAUDE.md deve ser versionado no git?
Sim. O arquivo do projeto é commitado para que toda a equipe e todas as sessões do agente sigam as mesmas regras. As preferências pessoais ficam no arquivo do usuário em ~/.claude/, que não entra no repositório.
Escrever as regras em maiúsculas ou com a palavra «IMPORTANTE» ajuda?
Um pouco, para separar o essencial do secundário, mas não resolve o problema do arquivo inchado. O mais eficaz é enxugar o arquivo, colocar as restrições no topo e reforçá-las com uma verificação automática.
Este tema é abordado em profundidade, com prática, no curso “Harness Engineering: инженерия надёжности AI-агентов”.
- AGENTS.md: почему большой файл инструкций не работает и как устроить роутер
- Память AI-агента между сессиями: session handoff, PROGRESS.md и bootstrap-контракт