CLAUDE.md: como dar instruções permanentes ao Claude Code
Todo projeto tem coisas que você cansa de repetir: como rodar os testes, onde ficam as rotas, qual padrão de código seguir. O CLAUDE.md é o arquivo onde você escreve isso uma vez só. O Claude Code lê esse arquivo no começo de toda sessão e segue as instruções sem você precisar pedir de novo.
Este guia mostra onde colocar o CLAUDE.md, o que escrever nele e como organizar as instruções quando o projeto cresce.
O que colocar no CLAUDE.md
Escreva ali o que você explicaria para uma pessoa nova no time:
- Comandos: como instalar, rodar, testar e fazer o lint.
- Estrutura: onde fica cada parte do código.
- Convenções: padrão de nomes, indentação, idioma dos comentários.
- Regras: o que sempre fazer e o que nunca fazer.
Uma boa regra prática: se o Claude errou a mesma coisa duas vezes, ou se você digitou a mesma correção em duas sessões, isso vai para o CLAUDE.md.
Onde colocar o arquivo
| Arquivo | Vale para | Quem vê |
|---|---|---|
~/.claude/CLAUDE.md |
Todos os seus projetos | Só você |
./CLAUDE.md ou ./.claude/CLAUDE.md |
Este projeto | O time todo (vai para o Git) |
./CLAUDE.local.md |
Este projeto | Só você (coloque no .gitignore) |
O Claude Code carrega os arquivos da pasta onde você abriu a sessão e das pastas acima dela, e junta todos. Arquivos CLAUDE.md em subpastas entram quando o Claude lê arquivos daquela subpasta.
Crie o primeiro com /init
Dentro do projeto, abra o Claude Code e rode:
/init
O Claude analisa o código e cria um CLAUDE.md com os comandos de build e de testes e as convenções que encontrou. Se o arquivo já existe, ele sugere melhorias. Depois, use /memory para abrir e editar.
Um exemplo pronto
Um CLAUDE.md para uma API em Node.js, para você adaptar:
# API da loja
API da loja em Node.js 22 com Express e PostgreSQL.
## Comandos
- Instalar: `npm ci`
- Rodar local: `npm run dev` (porta 3000)
- Testes: `npm test` (rode antes de todo commit)
- Lint: `npm run lint`
## Estrutura
- Rotas em `src/rotas/`, um arquivo por recurso
- Regras de negócio em `src/servicos/`
- Migrações em `db/migracoes/`: nunca edite uma migração já aplicada
## Convenções
- Código e comentários em português
- Indentação de 2 espaços
- Datas em UTC no banco; converta para o horário de Brasília só na resposta
- Valores em centavos, como inteiros, nunca como número decimal
## Cuidados
- Nunca faça commit do arquivo `.env`
- Chamadas a serviços externos passam por `src/clientes/`, sempre com timeout
Como escrever instruções que funcionam
- Seja específico. "Use indentação de 2 espaços" funciona melhor que "formate bem o código". "Rode
npm testantes de todo commit" é melhor que "teste suas mudanças". - Seja curto. Mire em menos de 200 linhas por arquivo. O
CLAUDE.mdentra no contexto de toda sessão: arquivo grande gasta tokens e dilui as instruções importantes. - Organize. Use títulos e listas, como no exemplo.
- Tire as contradições. Se duas regras dizem coisas diferentes, o Claude pode seguir qualquer uma. Revise de vez em quando.
- Deixe notas só para humanos em comentários HTML, como
<!-- revisar em outubro -->. O Claude Code remove esses comentários antes de ler o arquivo, então eles não gastam tokens.
Importe outros arquivos
Em vez de copiar conteúdo, o CLAUDE.md pode importar outros arquivos com @ seguido do caminho:
Visão geral do projeto em @README.md e scripts disponíveis em @package.json.
# Fluxo de Git
- @docs/git.md
O caminho é relativo ao arquivo que faz a importação, e um arquivo importado pode importar outros, até quatro níveis. Um caminho entre crases não é importado: serve para só citar o arquivo.
Regras por pasta em projetos grandes
Quando as instruções crescem, divida em arquivos dentro de .claude/rules/, um por assunto. Uma regra pode valer só para certos arquivos, com o campo paths no começo:
---
paths:
- "src/rotas/**/*.ts"
---
# Regras das rotas
- Toda rota valida a entrada antes de chamar o serviço
- Erros usam o formato padrão de resposta
Essa regra só entra no contexto quando o Claude trabalha com arquivos de src/rotas/. Regras sem paths valem sempre.
E o AGENTS.md?
Se o projeto já tem um AGENTS.md, usado por outras ferramentas de programação, as versões recentes do Claude Code leem esse arquivo quando não há um CLAUDE.md. Para usar os dois, importe o AGENTS.md de dentro do CLAUDE.md com @AGENTS.md.
Quando o Claude não segue o CLAUDE.md
- Confira se o arquivo foi carregado. O comando
/contextlista os arquivos de memória em uso. - Confira o lugar do arquivo, pela tabela acima.
- Deixe a instrução mais específica e tire as contradições.
- Para regras que precisam rodar sempre, como formatar o código antes de todo commit, use um hook do Claude Code, que executa um comando em momentos fixos, em vez de uma instrução.
Perguntas frequentes
Onde fica o CLAUDE.md?
Na raiz do projeto (./CLAUDE.md ou ./.claude/CLAUDE.md) para instruções do time, em ~/.claude/CLAUDE.md para as suas preferências em todos os projetos e em ./CLAUDE.local.md para preferências suas só naquele projeto.
O CLAUDE.md gasta tokens?
Sim. Ele entra no contexto de toda sessão. Por isso vale manter o arquivo curto e mover instruções específicas para regras por pasta, que só carregam quando necessário.
O Claude Code lê o AGENTS.md?
As versões recentes leem o AGENTS.md quando o projeto não tem CLAUDE.md. Se tiver os dois, importe o AGENTS.md dentro do CLAUDE.md com @AGENTS.md.
Posso ter instruções só minhas num projeto do time?
Pode. Crie um CLAUDE.local.md na raiz do projeto e coloque-o no .gitignore. Ele é carregado junto com o CLAUDE.md do time.