Onde guardar as specs do projeto para o Claude Code achar sem colar tudo de novo

Guardar as specs Claude Code no lugar certo é o que evita recolar a mesma especificação toda sessão. O Claude Code lê os arquivos CLAUDE.md no início de cada sessão: o do diretório atual, os dos diretórios pais e o do usuário, todos aditivos. A receita prática é manter um CLAUDE.md curto e commitado (raiz ou .claude/), deixar a especificação detalhada num arquivo versionado e apontar ele com @ no começo da conversa, mandando referência pesada para .claude/rules/ com frontmatter paths ou para Skills. Depois rode /context e veja o que a abertura já consumiu.
Toda sessão nova, o mesmo ritual: abre o chat e cola de novo aquele documentão de especificação que você já colou ontem, e anteontem
Só que o Claude Code não precisa disso
Ele já tem lugares definidos onde lê instrução sozinho no começo de cada sessão, e a escolha do arquivo certo é o que decide se a sua spec chega ao contexto ou fica dormindo no repositório sem ninguém abrir 🙂
Bora organizar isso de vez?
O que você precisa antes de organizar as specs
Nada de PC da Nasa aqui, a lista é curta:
- Claude Code instalado e rodando de dentro da pasta do projeto
- o projeto num repositório git, porque a memória automática é gravada por repositório, em ~/.claude/projects/<project>/memory/, ou seja, FORA do seu projeto (todos os worktrees do mesmo repositório dividem esse mesmo diretório)
- e a parte que quase todo mundo pula: saber quais são os quatro níveis da hierarquia de instrução
Esses quatro níveis são aditivos, todos contribuem conteúdo pro contexto ao mesmo tempo:
Domine o Claude Code do básico ao avançado
Você vai aprender a criar sistemas completos com Claude Code, sem precisar ser programador. Inscreva-se para ter acesso a um desconto de lançamento e bônus especiais!
| Nível | Onde fica | Observação |
|---|---|---|
| Managed policy | macOS: /Library/Application Support/ClaudeCode/CLAUDE.md, Linux e WSL: /etc/claude-code/CLAUDE.md, Windows: C:\Program Files\ClaudeCode\CLAUDE.md | sempre se aplica, independentemente das configurações do usuário |
| Usuário | ~/.claude/CLAUDE.md | suas manias, valem em qualquer projeto |
| Projeto | ./CLAUDE.md ou ./.claude/CLAUDE.md | é este que você versiona junto do código |
| Configuração local | ./.claude/settings.local.json | ajuste da sua máquina |
E um aviso pra tu não perder tempo: o ./CLAUDE.local.md consta como deprecated na documentação de memória
Se algum dia foi ali que você guardou a spec, é hora de mudar de lugar
Quer espiar o que o Claude já anotou por conta própria? O comando /memory abre a pasta de auto memory de dentro da sessão, e os arquivos são markdown puro, editáveis e apagáveis
Passo a passo: deixar a spec no lugar que o Claude Code lê sozinho
A lógica aqui é simples: o que precisa valer SEMPRE vai pro arquivo que carrega sozinho, o que é detalhe de um trabalho específico fica num arquivo versionado que você aponta na hora certa
- Rode /init na pasta do projeto
Ele analisa o projeto e gera um CLAUDE.md inicial com comandos de build, instruções de teste, diretórios-chave e as convenções que detectou
cd meu-projeto
claude
/init
O erro comum deste passo: achar que /init só serve em projeto zerado
Ele também roda em projeto que JÁ tem o arquivo, revisando o que está lá e sugerindo melhorias, então não tem medo de rodar de novo
- Escolha entre a raiz e a pasta .claude, e commite
A instrução de projeto pode ficar em ./CLAUDE.md ou em ./.claude/CLAUDE.md, tanto faz, o importante é que ela entra no git junto com o código
git add CLAUDE.md
git commit -m "docs: instrucoes do projeto pro Claude Code"
O erro comum deste passo: deixar o arquivo no gitignore "porque é config minha"
Aí o colega clona o repo, abre a sessão e o Claude não sabe nada do projeto
- Mantenha o CLAUDE.md curto
Esse arquivo é carregado INTEIRO, independentemente do tamanho, e a documentação é direta ao dizer que arquivos menores geram melhor adesão às instruções
O erro comum deste passo: transformar o CLAUDE.md no manual do projeto, com histórico, decisões antigas e explicação de cada endpoint
Ele não é a spec, ele é o mapa que diz onde a spec mora
- Quebre em imports quando fizer sentido, sabendo o que isso resolve
Dentro do CLAUDE.md você importa outros arquivos com a sintaxe @caminho/do/arquivo, aceitando caminho relativo e absoluto, inclusive na home do usuário
# Projeto X
Regras de commit: @docs/commits.md
Padrão de teste: @docs/testes.md
As importações podem ser recursivas, com um limite de 5 saltos
O erro comum deste passo (e esse é o mais caro): achar que quebrar em imports economiza contexto
Não economiza
Os arquivos importados carregam junto na abertura da sessão, você ganha ORGANIZAÇÃO, não espaço
- Aponte o documento certo no começo da sessão com @
Dentro do prompt, o @ referencia arquivos e pastas com correspondência aproximada do nome, então @auth acha auth.js ou AuthService.ts
@prd.md leia a spec e me diga por onde começar
Tem um bônus que pouca gente sabe: ao referenciar um arquivo com @, os CLAUDE.md do diretório desse arquivo e dos diretórios pais entram automaticamente no contexto
O erro comum deste passo: colar a especificação inteira no chat mesmo tendo ela salva no repositório
É o mesmo conteúdo, ocupando contexto duas vezes
- Mova a referência que não é usada sempre pra .claude/rules/ ou pra Skills
O Claude Code suporta regras com escopo por caminho, gravadas em arquivos markdown dentro de .claude/rules/, um tópico por arquivo (testing.md, api-design.md, por aí vai)
O segredo é o frontmatter YAML com o campo paths:
---
paths:
- "src/api/**/*.ts"
---
Toda rota nova precisa de teste de contrato
Essa regra só carrega quando o Claude trabalha em arquivos que casam com o padrão, e não a cada uso de ferramenta
Isso sim economiza contexto
A própria documentação recomenda tirar conteúdo de referência do CLAUDE.md sempre carregado e mover convenções e material de referência pra Skills, Plugins ou servidores MCP, que carregam só quando são relevantes
- Confira com /context o que realmente foi carregado
Ele mostra o uso do contexto por categoria, ao vivo, incluindo quais arquivos CLAUDE.md e de auto memory entraram, com sugestões de otimização
/context
O erro comum deste passo: nem rodar
Antes de você digitar UMA letra, o CLAUDE.md, a auto memory, os nomes de ferramentas MCP e as descrições de skills já estão ocupando contexto
Monorepo, regras por caminho e Skills: quando cada lugar ganha
Não existe um lugar único certo, existe o lugar certo pro TIPO de conteúdo
Monorepo: o pacote onde você abre a sessão importa
O Claude Code carrega o CLAUDE.md do diretório de trabalho e de todos os diretórios pais no início da sessão
Na prática, iniciando a sessão de dentro de packages/api/, carregam o packages/api/CLAUDE.md e o CLAUDE.md da raiz
E nada de packages/web/ entra no contexto
Já o CLAUDE.md de um subdiretório carrega SOB DEMANDA: ele entra quando o Claude lê um arquivo daquela pasta com a ferramenta Read, não na abertura da sessão
Isso muda seu ritual: se a spec é do pacote, abra a sessão dentro do pacote
Regras de escopo estreito: .claude/rules/ com paths
Aquele monte de convenção que só vale pra uma parte do código (padrão de teste, desenho de API, regra de migration) não merece morar no arquivo que carrega sempre
Um tópico por arquivo, o paths no frontmatter, e pronto: a regra aparece quando o Claude toca nos arquivos daquele escopo
Material de referência longo: Skills
Skills vivem em arquivos SKILL.md, com frontmatter YAML (o campo description é recomendado) mais o conteúdo em markdown
O ponto forte: por padrão, só as DESCRIÇÕES carregam no início da sessão, o conteúdo completo vem sob demanda
E tem divulgação progressiva: o essencial fica no SKILL.md e a referência detalhada vai pra arquivos separados, que o Claude lê só quando precisa
É o oposto do CLAUDE.md, que entra inteiro sempre
O que aprendi levando um plano pronto para o Claude Code executar
No vídeo do projeto completo eu comecei querendo montar um prompt único, gigante, com tudo que o app precisava ter
Olhei aquilo e troquei de ideia na hora
Virou um PRD, e o motivo é bem prático: prompt muito grande atrapalha o Claude Code e faz ele pular partes do pedido
Aí o fluxo ficou assim: copiei o PRD, criei um arquivo prd.md dentro da pasta do projeto e colei o conteúdo lá
Detalhe bobo que economiza tempo: o texto já sai formatado em Markdown, bastou apagar a primeira linha de resposta do assistente antes de salvar
Depois eu abri o Claude Code numa pasta vazia e dei a primeira instrução referenciando o prd.md junto de um prompt curto, em vez de despejar a especificação inteira no chat
Mudou a execução
O documento fica no projeto, versionado, e a conversa fica leve
Uma coisa que eu recomendo antes de soltar a ferramenta pra editar arquivo: use o modo plano
Nele o Claude pesquisa e propõe as mudanças SEM editar nada
O Shift+Tab entra e sai do modo plano, o /plan prefixa um prompt único, a barra de status mostra o ⏸ plan mode e o Ctrl+G abre o plano proposto no seu editor de texto padrão
Ler o plano antes é o mesmo hábito de entender o fluxo do primeiro projeto ao deploy: você para, lê, discorda, e só então deixa rodar
E aqui vai o lembrete honesto pra fechar: instruções em CLAUDE.md são seguidas de forma probabilística
O Claude lê e tenta seguir, sem garantia de cumprimento estrito, ainda mais quando as instruções são vagas ou conflitantes
Por isso vale saber o que perguntar antes de aceitar qualquer coisa que ele te devolve, mesmo com a spec redondinha no lugar certo
Ali você me vê montando o plano, salvando ele em arquivo dentro do projeto e mandando o Claude Code executar em cima do documento, sem colar a spec no chat
Próximo passo
A regra prática cabe em três linhas:
- CLAUDE.md curto e commitado, com o mapa do projeto
- spec detalhada em arquivo versionado, apontado com @ no começo da sessão
- referência pesada em .claude/rules/ com paths ou em Skills
Seu próximo passo concreto é rodar /init e, na MESMA sessão, rodar /context
Você vai ver, por categoria, quanto a abertura já consome antes de digitar qualquer coisa: CLAUDE.md, auto memory, nomes de ferramentas MCP e descrições de skills
Esse número é o seu ponto de partida real
E tem uma convenção de comunidade que combina bem com isso: modo plano, CLAUDE.md e uma pasta /specs commitada no repositório, pro spec ficar diffável no pull request
Deixo explícito: isso NÃO é padrão oficial da Anthropic, é prática de quem usa (inclusive já existe plugin de spec-driven development de terceiros, tipo o sdd, com agentes especializados e planos de implementação em fases)
A ideia por trás é a mesma do spec-driven development: a especificação versionada como fonte única da verdade, primeiro o spec, depois o plano, depois as tarefas, depois o código
Testa aí e me conta se o teu /context deu um susto…
até o próximo post! 😀
Perguntas frequentes
O CLAUDE.md de política gerenciada pode ser desligado pelas configurações do usuário?
Não. O managed policy CLAUDE.md sempre se aplica, independentemente das configurações do usuário, e fica em local fixo (no Windows, por exemplo, C:\Program Files\ClaudeCode\CLAUDE.md). É o único dos quatro níveis que ninguém consegue desativar por conta própria.
O CLAUDE.md de uma subpasta carrega junto no começo da sessão?
Não, e essa é uma pegadinha comum. O Claude Code carrega o CLAUDE.md do diretório atual e dos pais logo no início, mas o de subdiretório só entra quando o Claude lê um arquivo daquela pasta com a ferramenta Read.
Em monorepo, abrir a sessão num pacote carrega o CLAUDE.md dos outros pacotes?
Não. Iniciando a sessão dentro de packages/api/, por exemplo, carregam packages/api/CLAUDE.md e o CLAUDE.md da raiz, e nada de packages/web/ entra no contexto. É outro motivo pra não jogar spec genérica lá dentro achando que ela vale pro monorepo inteiro.
Quebrar o CLAUDE.md em imports com @ economiza contexto?
Não. Os arquivos importados com a sintaxe @caminho/do/arquivo carregam junto na abertura da sessão, então você ganha organização, não espaço. As importações podem ser recursivas, com limite de 5 saltos. Pra economizar contexto de verdade, o caminho é regra com escopo por caminho em .claude/rules/ ou Skills, que carregam sob demanda.
Spec-driven development é um recurso nativo do Claude Code?
Não, é convenção de comunidade, não padrão oficial da Anthropic. A metodologia trata a especificação versionada como fonte única da verdade: primeiro o spec, depois o plano, depois as tarefas, depois o código.
O CLAUDE.local.md ainda serve pra guardar spec do projeto?
Não, o ./CLAUDE.local.md consta como deprecated na documentação de memória do Claude Code. Se sua spec ainda mora ali, é hora de migrar pra ./CLAUDE.md ou ./.claude/CLAUDE.md, que são os locais de instrução de projeto.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
