CLAUDE.md e Memória
Toda sessão do Claude Code começa com uma janela de contexto vazia. Dois mecanismos carregam conhecimento entre sessões: CLAUDE.md (instruções que você escreve) e auto memory (notas que o Claude escreve sozinho). Os dois são context engineering puro: o que você coloca aqui dita como o agente se comporta em todas as conversas seguintes.
CLAUDE.md vs Auto Memory
| CLAUDE.md | Auto memory | |
|---|---|---|
| Quem escreve | Você | O Claude |
| O que contém | Instruções e regras | Aprendizados e padrões |
| Escopo | Projeto, usuário ou organização | Por working tree |
| Carrega em | Toda sessão | Toda sessão (primeiras 200 linhas/25KB) |
| Pra que serve | Padrões de código, workflows, arquitetura | Comandos de build, insights de debug, preferências aprendidas |
CLAUDE.md é pra você guiar comportamento. Auto memory deixa o Claude aprender com correções sem você precisar escrever nada.
CLAUDE.md
Onde Colocar
Diferentes localizações, escopo diferente. Mais específico vence o mais geral.
| Escopo | Localização | Compartilhado com |
|---|---|---|
| Managed policy | /Library/Application Support/ClaudeCode/CLAUDE.md (macOS), /etc/claude-code/CLAUDE.md (Linux/WSL), C:\Program Files\ClaudeCode\CLAUDE.md (Windows) | Toda a organização |
| Projeto | ./CLAUDE.md ou ./.claude/CLAUDE.md | Time via git |
| Usuário | ~/.claude/CLAUDE.md | Só você, todos os projetos |
| Local | ./CLAUDE.local.md (no .gitignore) | Só você, projeto atual |
Todos os arquivos descobertos são concatenados (não sobrescrevem). O Claude sobe o diretório procurando, então em monorepo ele pega o CLAUDE.md da raiz e do package que você está editando.
Como Escrever
CLAUDE.md carrega na janela de contexto a cada sessão. Cada token aqui é um token a menos pro resto do trabalho. Por isso, regras de ouro:
Tamanho: alvo abaixo de 200 linhas. Arquivos longos consomem contexto e reduzem aderência (o Claude começa a ignorar). Se está crescendo, quebre em path-scoped rules.
Estrutura: headers e bullets. Escaneabilidade importa pro modelo igual importa pra leitor humano.
Especificidade: instruções concretas e verificáveis.
| Bom | Ruim |
|---|---|
| "Use 2-space indentation" | "Format code properly" |
"Run npm test before committing" | "Test your changes" |
"API handlers live in src/api/handlers/" | "Keep files organized" |
Consistência: se duas regras se contradizem, o Claude pode escolher uma arbitrariamente. Revise periodicamente.
O que incluir
| ✅ Incluir | ❌ Excluir |
|---|---|
| Comandos Bash que o Claude não consegue adivinhar | Qualquer coisa que ele descobre lendo o código |
| Regras de estilo que diferem do default da linguagem | Convenções padrão da linguagem |
| Instruções de teste e runner preferido | Documentação de API detalhada (linka pro doc) |
| Etiqueta de repositório (branch naming, PR conventions) | Informação que muda toda hora |
| Decisões arquiteturais específicas do projeto | Descrição arquivo-por-arquivo do codebase |
| Quirks do ambiente de dev (env vars obrigatórias) | "Escreva código limpo" |
| Gotchas e comportamentos não-óbvios | Tutoriais longos |
Use /init pra Começar
/init
Analisa seu codebase, detecta build system, framework de teste, padrões, e cria um CLAUDE.md inicial. Se já existe um, sugere melhorias em vez de sobrescrever.
Existe também o modo interativo (CLAUDE_CODE_NEW_INIT=1) que pergunta o que configurar (CLAUDE.md, skills, hooks), explora com subagente e propõe um plano antes de escrever.
Imports
CLAUDE.md pode importar outros arquivos com sintaxe @path/to/file:
See @README.md for project overview and @package.json for available npm commands.
# Additional Instructions
- Git workflow: @docs/git-instructions.md
- Personal overrides: @~/.claude/my-project-instructions.md
Paths são relativos ao arquivo que importa. Recursão até 5 níveis. Imports carregam no launch igual o resto.
CLAUDE.local.md
Pra preferências pessoais que não vão pro git. Vai no .gitignore. Útil pra:
- URLs de sandbox que só você usa
- Dados de teste pessoais
- Atalhos de tooling individuais
AGENTS.md
Se seu repo já usa AGENTS.md pra outros agentes, crie um CLAUDE.md que importa:
@AGENTS.md
## Claude Code
Use plan mode pra mudanças sob `src/billing/`.
Comments HTML
Comentários block-level HTML são removidos antes do conteúdo entrar no contexto:
<!-- Notas pro mantenedor sobre por que essa regra existe -->
Não gastam tokens, mas você lê quando abrir o arquivo.
Organizar em .claude/rules/
Pra projetos maiores, em vez de inflar o CLAUDE.md, quebre em arquivos modulares em .claude/rules/. Cada arquivo cobre um tópico:
your-project/
├── .claude/
│ ├── CLAUDE.md # Instruções gerais
│ └── rules/
│ ├── code-style.md
│ ├── testing.md
│ └── security.md
Path-Specific Rules
Aqui mora a economia. Rules com paths no frontmatter só carregam quando o Claude abre arquivos que casam:
---
paths:
- "src/api/**/*.ts"
---
# API Development Rules
- Endpoints precisam de validação de input
- Use o formato padrão de error response
- Inclua comentários OpenAPI
Rules sem paths carregam sempre, igual CLAUDE.md.
Patterns suportam glob:
| Pattern | Mata |
|---|---|
**/*.ts | Todo TypeScript |
src/**/* | Tudo sob src/ |
*.md | Markdown na raiz |
src/**/*.{ts,tsx} | Brace expansion |
Auto Memory
Auto memory é o Claude tomando notas sozinho. Ele decide o que vale lembrar baseado em se a informação seria útil em conversa futura.
Storage
Cada projeto tem seu próprio diretório:
~/.claude/projects/<project>/memory/
├── MEMORY.md # Index, carrega em toda sessão (primeiras 200 linhas/25KB)