📄 O que e e por que existe
🧠 Imagine assim: o CLAUDE.md e como um manual de operacoes que voce deixa na mesa do novo funcionario. Toda vez que o Claude Code abre uma sessao, ele le esse arquivo primeiro. E o jeito de dizer ao agente: "este projeto funciona assim, siga estas regras".
O CLAUDE.md e um arquivo Markdown que o Claude Code le automaticamente no inicio de cada sessao. Ele funciona como um system prompt persistente: tudo que voce escrever ali vai influenciar como o Claude se comporta dentro do seu projeto. Nao e uma sugestao, e uma instrucao. O modelo trata o conteudo do CLAUDE.md como diretriz de alta prioridade.
Sem CLAUDE.md, o Claude Code e generico. Ele nao sabe que seu projeto usa TypeScript, que voce prefere tabs em vez de spaces, que ha uma convencao de nomes especifica. Com CLAUDE.md, ele vira um especialista no seu projeto desde a primeira mensagem. A diferenca e dramatica: em vez de perguntar "qual framework voce usa?", ele ja sabe e age de acordo.
O mecanismo e simples: quando voce inicia uma sessao com claude, o agente procura arquivos CLAUDE.md no seu ambiente, le o conteudo e injeta como parte do system prompt. Isso acontece antes de voce digitar qualquer coisa. E como um briefing automatico que o agente recebe toda manhã antes de comecar a trabalhar.
💡 Analogia pratica
Pense no CLAUDE.md como o onboarding document de um time. Quando um dev novo entra, voce nao explica tudo do zero toda vez. Voce entrega o doc de onboarding. O CLAUDE.md e exatamente isso, mas para o agente IA. A diferenca e que o "dev novo" precisa desse doc toda sessao, porque cada sessao e um inicio fresco.
Em 1 frase: CLAUDE.md = system prompt persistente que transforma o Claude Code de generico em especialista no seu projeto.
🏗️ Hierarquia: global, projeto e pasta
🧠 Imagine assim: imagine tres camadas de instrucao empilhadas. A de baixo (global) vale pra tudo. A do meio (projeto) e especifica. A de cima (pasta) e hiper-especifica. Cada camada refina a anterior sem apagar.
O Claude Code le CLAUDE.md de tres locais, nesta ordem: ~/.claude/CLAUDE.md (global, vale pra todos os projetos), ./CLAUDE.md (na raiz do projeto) e subdir/CLAUDE.md (em qualquer subpasta onde voce esta trabalhando). Os tres sao lidos e concatenados para formar o contexto completo.
A cascata funciona por adicao: o conteudo de cada nivel se soma ao anterior. O global define preferencias pessoais ("nunca use em dashes", "prefira TypeScript"). O de projeto define stack e convencoes. O de pasta define regras especificas daquela area do codigo. Os tres juntos formam o contexto completo que o agente recebe.
Essa hierarquia e poderosa porque permite separacao de responsabilidades. Voce define suas preferencias pessoais uma vez (global) e nunca mais precisa repetir em cada projeto. Cada projeto define suas proprias regras sem interferir nos outros. E subpastas especiais (como src/api/) podem ter regras adicionais sem poluir o CLAUDE.md principal.
~/.claude/CLAUDE.md ← global (todas as sessoes) ./CLAUDE.md ← projeto (raiz do repo) ./src/CLAUDE.md ← pasta (regras do /src) ./src/api/CLAUDE.md ← subpasta (regras do /api) # Todos sao lidos e somados. Mais especifico refina o geral.
Em 1 frase: tres niveis (global > projeto > pasta) se somam para formar o contexto completo.
✏️ Sintaxe e convencoes eficazes
🧠 Imagine assim: escrever CLAUDE.md e como escrever um briefing para um profissional competente. Seja direto, use listas, de exemplos concretos. O Claude segue instrucoes claras; ignora instrucoes vagas.
O formato e Markdown puro. Use headings (## Stack, ## Convencoes), listas com bullets, e blocos de codigo para exemplos. O tom ideal e imperativo e concreto: "Sempre use async/await" funciona melhor que "seria bom considerar usar async/await quando possivel". O modelo obedece instrucoes diretas com muito mais consistencia do que sugestoes vagas.
Algumas convencoes que funcionam bem: agrupar por secao (Stack, Convencoes, Proibicoes), usar negrito para destaques, incluir exemplos de codigo quando a regra for tecnica, e manter o arquivo entre 50 e 200 linhas. Mais que isso, o retorno diminui e voce gasta contexto desnecessariamente. Cada linha do CLAUDE.md consome tokens da janela de contexto.
Evite redundancia com o que o modelo ja sabe. Nao precisa dizer "escreva codigo legivel" ou "use boas praticas". O Claude ja faz isso por padrao. O CLAUDE.md deve conter o que e diferente neste projeto ou na sua forma de trabalhar. Se o padrao funciona, nao gaste linhas com ele.
✓ Bom CLAUDE.md
- • Headings claros: ## Stack, ## Regras
- • Tom imperativo: "Sempre use..."
- • Exemplos de codigo concretos
- • 50-200 linhas, focado
- • Proibicoes explicitas em MAIUSCULA
✗ Mau CLAUDE.md
- • Texto corrido sem estrutura
- • Tom vago: "talvez considere..."
- • Sem exemplos praticos
- • 500+ linhas (entope o contexto)
- • Repete o que o modelo ja sabe
# Projeto XYZ ## Stack - Next.js 14 (App Router) - TypeScript strict - Tailwind CSS - Prisma ORM + PostgreSQL ## Convencoes - Arquivos: kebab-case (user-profile.ts) - Componentes: PascalCase (UserProfile.tsx) - NUNCA usar `any`. Sempre tipar explicitamente. ## Proibicoes - NUNCA deletar arquivos sem confirmar - NUNCA commitar .env ou secrets - NUNCA usar console.log em producao
Em 1 frase: seja direto, use headings + listas + exemplos, mantenha entre 50-200 linhas.
🎯 Instrucoes que fazem diferenca
🧠 Imagine assim: nao sao todas as instrucoes que mudam comportamento. As que funcionam sao as que descrevem o que fazer diferente do padrao. Se o padrao ja funciona, nao gaste linhas com isso.
Os tipos de instrucao que mais impactam sao: stack e tecnologias ("este projeto usa Next.js 14 com App Router"), convencoes de codigo ("nomes de arquivo em kebab-case"), proibicoes explicitas ("NUNCA delete arquivos sem confirmar"), e padroes do projeto ("use o pattern de service layer em src/services/").
Proibicoes em caixa alta (NUNCA, SEMPRE) sao respeitadas com mais consistencia. Isso nao e supersticao: o modelo da mais peso a tokens enfaticos. Use com moderacao para nao virar ruido, mas nao hesite em usar quando a regra for critica. Um "NUNCA use sudo" bem posicionado pode prevenir acidentes serios.
Outra categoria poderosa: instrucoes de workflow. "Sempre rode testes antes de commitar", "peca confirmacao antes de deletar", "use git commit com mensagens em portugues". Essas instrucoes moldam como o agente trabalha, nao apenas o que ele produz. Elas transformam o Claude de ferramenta passiva em colega de trabalho com disciplina.
Stack e tecnologias
Define o que o projeto usa. O agente escolhe as APIs e padroes corretos desde a primeira resposta.
Convencoes de codigo
Naming, formatacao, organizacao de pastas. Garante consistencia em todo codigo gerado.
Proibicoes explicitas
NUNCA e SEMPRE em caixa alta. Previne erros criticos e garante seguranca.
Padroes do projeto
Patterns de arquitetura (service layer, repository, etc). O agente replica a estrutura existente.
Instrucoes de workflow
Como o agente trabalha: testes, confirmacoes, commits. Transforma o Claude em colega disciplinado.
## Stack - Next.js 14 (App Router) - TypeScript strict - Tailwind CSS - Prisma ORM + PostgreSQL ## Convencoes - Arquivos: kebab-case (user-profile.ts) - Componentes: PascalCase (UserProfile.tsx) - NUNCA usar any. Sempre tipar explicitamente. - Testes: colocar em __tests__/ ao lado do arquivo. ## Padroes - API routes usam o pattern em src/app/api/[resource]/route.ts - Validacao com Zod em todo input de API ## Workflow - Sempre rode npm test antes de commitar - Commit messages em portugues, imperativo
Em 1 frase: foque em stack, convencoes, proibicoes, padroes e workflow; o resto o Claude ja faz sozinho.
📂 Exemplos reais de bons CLAUDE.md
🧠 Imagine assim: o melhor jeito de aprender e ver exemplos reais. Projetos open source e repositorios da propria Anthropic publicam CLAUDE.md que voce pode estudar e copiar.
Bons exemplos de CLAUDE.md compartilham algumas caracteristicas: sao curtos (raramente passam de 150 linhas), focam no que e diferente naquele projeto (nao repetem conhecimento generico), e incluem pelo menos uma secao de proibicoes explicitas. Estudar exemplos reais e o atalho mais rapido para escrever um CLAUDE.md eficaz.
Um anti-pattern comum e o CLAUDE.md que tenta ensinar programacao ao modelo ("use boas praticas de codigo"). O Claude ja sabe boas praticas. O que ele precisa saber e quais sao as suas praticas especificas. Outro anti-pattern: copiar a documentacao inteira do framework. O modelo ja conhece React, Next.js, etc. Diga qual versao usa e como usa, nao o que e.
Um exemplo excelente e o CLAUDE.md do proprio repositorio do Claude Code da Anthropic. Ele e conciso, foca em convencoes internas (como rodar testes, como commitar, quais padroes de arquitetura seguir), e tem proibicoes claras. Outro bom exemplo: projetos open source populares que adotaram a pratica e publicam seus CLAUDE.md no GitHub.
Projeto SaaS
Stack, auth pattern, database schema conventions, API response format. ~80 linhas.
CLI Tool
Build system, flag conventions, error handling pattern, release workflow. ~60 linhas.
Monorepo
Package structure, shared types, dependency rules, per-package CLAUDE.md em subpastas. ~120 linhas.
📊 Onde encontrar exemplos
Busque por "CLAUDE.md" no GitHub. Projetos como o proprio claude-code da Anthropic, alem de repos populares que adotaram a pratica, sao boas referencias. Copie a estrutura, adapte o conteudo pro seu projeto. Nao reinvente a roda.
Em 1 frase: estude exemplos reais, copie a estrutura, adapte para seu projeto.
🔄 Manutencao e versionamento
🧠 Imagine assim: CLAUDE.md e um documento vivo. Commite no git, revise mensalmente, e use /memory como complemento rapido entre revisoes. Desatualizado e pior que inexistente.
O CLAUDE.md deve ir no git, junto com o codigo. Isso garante que qualquer pessoa (ou agente) que clonar o repo receba o contexto automaticamente. Trate como um arquivo de configuracao: versionado, revisado, e atualizado junto com o projeto. Pull requests que mudam a stack ou convencoes devem incluir a atualizacao correspondente no CLAUDE.md.
Uma rotina saudavel: revise o CLAUDE.md uma vez por mes ou quando mudar algo significativo no projeto (nova lib, novo padrao, novo membro no time). Entre revisoes, use /memory para adicionar notas rapidas que persistem sem editar o arquivo diretamente. O /memory e o atalho; o CLAUDE.md e a fonte canonica.
CLAUDE.md desatualizado e pior que nenhum, porque o agente vai seguir instrucoes erradas com confianca. Se removeu uma lib do projeto mas o CLAUDE.md ainda diz "use lib X", o Claude vai tentar usar e falhar. Se mudou de ORM, atualize o CLAUDE.md. Se mudou convencoes de naming, atualize. A regra e simples: se mudou no codigo, mude no CLAUDE.md.
⚠️ CLAUDE.md desatualizado e perigoso
Instrucoes obsoletas no CLAUDE.md geram bugs sistematicos. O agente segue o que esta escrito, nao o que voce tem na cabeca. Mantenha atualizado ou delete as secoes que mudaram. Um CLAUDE.md vazio e melhor que um CLAUDE.md mentiroso.
Manutencao do CLAUDE.md: [ ] Commitar no git junto com o codigo [ ] Revisar mensalmente ou ao mudar stack [ ] Remover instrucoes obsoletas imediatamente [ ] Usar /memory pra notas rapidas entre revisoes [ ] Incluir atualizacao em PRs que mudam convencoes [ ] Manter entre 50-200 linhas (nao deixar inchar)
Em 1 frase: commite no git, revise mensalmente, e lembre: desatualizado e pior que inexistente.
🧾 Resumo do Modulo
Proximo modulo:
1.4 — Configuracao Avancada: settings.json, permissoes e providers.