📄 O que e e por que existe
🧠 Imagine assim: o CLAUDE.md e como um manual de operações que voce deixa na mesa do novo funcionario. Toda vez que o Claude Code abre uma sessão, 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 sessão. Ele funciona como um system prompt persistente: tudo que voce escrever ali vai influenciar como o Claude se comporta dentro do seu projeto.
Sem CLAUDE.md, o Claude Code e genérico. Ele nao sabe que seu projeto usa TypeScript, que voce prefere tabs em vez de spaces, que ha uma convenção de nomes especifica. Com CLAUDE.md, ele vira um especialista no seu projeto desde a primeira mensagem. A diferença e dramatica.
💡 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.
Em 1 frase: CLAUDE.md = system prompt persistente que transforma o Claude Code de genérico em especialista no seu projeto.
🏗️ Hierarquia: global, projeto e pasta
🧠 Imagine assim: imagine tres camadas de instrução 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.
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).
A cascata funciona por adição: o conteúdo de cada nivel se soma ao anterior. O global define preferências pessoais ("nunca use em dashes", "prefira TypeScript"). O de projeto define stack e convenções. O de pasta define regras especificas daquela area do código. Os tres juntos formam o contexto completo.
~/.claude/CLAUDE.md ← global (todas as sessões) ./CLAUDE.md ← projeto (raiz do repo) ./src/CLAUDE.md ← pasta (regras do /src) ./src/api/CLAUDE.md ← subpasta (regras do /api) # Todos são lidos e somados. Mais específico refina o geral.
Em 1 frase: tres niveis (global > projeto > pasta) se somam para formar o contexto completo.
✏️ Sintaxe e convenções 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 instruções claras; ignora instruções vagas.
O formato e Markdown puro. Use headings (## Stack, ## Convenções), 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".
Algumas convenções que funcionam bem: agrupar por seção (Stack, Convenções, Proibições), 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.
✓ Bom CLAUDE.md
- • Headings claros: ## Stack, ## Regras
- • Tom imperativo: "Sempre use..."
- • Exemplos de codigo concretos
- • 50-200 linhas, focado
✗ Mau CLAUDE.md
- • Texto corrido sem estrutura
- • Tom vago: "talvez considere..."
- • Sem exemplos praticos
- • 500+ linhas (entope o contexto)
Em 1 frase: seja direto, use headings + listas + exemplos, mantenha entre 50-200 linhas.
🎯 Instruções que fazem diferença
🧠 Imagine assim: nao sao todas as instruções 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 instrução que mais impactam sao: stack e tecnologias ("este projeto usa Next.js 14 com App Router"), convenções de codigo ("nomes de arquivo em kebab-case"), proibições explicitas ("NUNCA delete arquivos sem confirmar"), e padrões do projeto ("use o pattern de service layer em src/services/").
Proibições em caixa alta (NUNCA, SEMPRE) sao respeitadas com mais consistência. Isso nao e superstição: o modelo da mais peso a tokens enfaticos. Use com moderação para nao virar ruido.
## Stack - Next.js 14 (App Router) - TypeScript strict - Tailwind CSS - Prisma ORM + PostgreSQL ## Convenções - Arquivos: kebab-case (user-profile.ts) - Componentes: PascalCase (UserProfile.tsx) - NUNCA usar any. Sempre tipar explicitamente. - Testes: colocar em __tests__/ ao lado do arquivo. ## Padrões - API routes usam o pattern em src/app/api/[resource]/route.ts - Validação com Zod em todo input de API
Em 1 frase: foque em stack, convenções, proibições e padrões; 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 genérico), e incluem pelo menos uma seção de proibições explicitas.
Um anti-pattern comum e o CLAUDE.md que tenta ensinar programação 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.
📊 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 referências. Copie a estrutura, adapte o conteúdo.
Em 1 frase: estude exemplos reais, copie a estrutura, adapte para seu projeto.
🔄 Manutenção e versionamento
🧠 Imagine assim: CLAUDE.md e um documento vivo. Commite no git, revise mensalmente, e use /memory como complemento rapido entre revisões.
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 configuração: versionado, revisado, e atualizado junto com o projeto.
Uma rotina saudavel: revise o CLAUDE.md uma vez por mês ou quando mudar algo significativo no projeto (nova lib, novo padrão). Entre revisões, use /memory para adicionar notas rápidas que persistem sem editar o arquivo diretamente.
CLAUDE.md desatualizado e pior que nenhum, porque o agente vai seguir instruções erradas com confiança. Se removeu uma lib do projeto mas o CLAUDE.md ainda diz "use lib X", o Claude vai tentar usar e falhar.
⚠️ CLAUDE.md desatualizado e perigoso
Instruções obsoletas no CLAUDE.md geram bugs sistematicos. O agente segue o que esta escrito, nao o que voce tem na cabeça. Mantenha atualizado ou delete as seções que mudaram.
Em 1 frase: commite no git, revise mensalmente, e lembre: desatualizado e pior que inexistente.
🧾 Resumo do Modulo
Proximo modulo:
1.4 — Configuração Avançada: settings.json, permissões e providers.