Lição 5 de 10: O CLAUDE.md e a memória do projeto
- 3 seções do
CLAUDE.mdpersonalizadas pro seu produto - Um commit
feat(claude-md): personalize for <produto>no GitHub - Prova: segunda sessão do Claude que cita os termos do **seu** domínio na primeira resposta, sem você pedir
Um Project Overview que muda a primeira resposta
Olha o CLAUDE.md do CEAP (dashboard público, em produção):
# CEAP — Análise de Gastos Parlamentares
## Project Overview
Dashboard público de transparência sobre a cota parlamentar (CEAP) de deputados federais.
SPA estática que consome JSON pré-processado dos dados abertos da Câmara.
Público-alvo: jornalistas de dados, auditores e cidadãos.Três linhas. Quando o Claude abre uma sessão nesse projeto, a primeira resposta dele já cita "cota parlamentar", "dados abertos da Câmara" e "dashboard de transparência", sem você pedir.
Agora compara com o CLAUDE.md do Starter que você clonou na lição 04:
## Project Overview
<!-- TODO: substitua os 2 placeholders abaixo por 2-4 frases que descrevem seu produto. -->
**O que é:** [um produto que faz X para Y]
**Por que existe:** [problema específico que resolve, com 1 número quando possível]Mesma estrutura, conteúdo placeholder. O Claude lê isso e responde genérico: "seu projeto Next.js...". Esta lição troca o placeholder por brief real, em 3 seções, e prova que mudou.
Passo 1: Escreva o brief do seu produto
Antes de pedir pro Claude editar qualquer coisa, você precisa contar pra ele o que está construindo. Preenche os 4 campos abaixo. Eles substituem as variáveis do prompt: você preenche uma vez aqui e vale pra página inteira.
Aqui vai um brief curto do meu produto. Use isso pra personalizar o CLAUDE.md.
Produto:
Para quem:
Dor que resolve:
Termos do domínio que você precisa usar literalmente:
Quero que você faça três coisas no CLAUDE.md, **mantendo todo o resto exatamente como está**:
1. Preencha a seção `Project Overview` (substitua os placeholders `[um produto que faz X para Y]` e `[problema específico...]` pelo brief acima, em pt-BR, mantendo as marcações em negrito e os `<!-- TODO -->` removidos).
2. Adicione uma nova seção chamada `## Domain Vocabulary` logo depois de `## Tech Stack`, com cada termo do domínio numa linha, em formato `**termo** — definição curta em pt-BR.` Se algum termo for regulatório (ex: NFS-e, MEI, LGPD), marque com `(regulatório)` no fim.
3. Olhe a seção `## Tech Stack` e me diga se algo deveria mudar pra esse produto específico (ex: se eu vou precisar de Postgres em vez do default, ou se Tailwind+shadcn não faz sentido pra um product mais formal). Não edite ainda — só me proponha as mudanças.
Mostre o diff antes de aplicar a edição.Passo 2: Cole o prompt no Claude e aprove os edits
Cola o prompt renderizado acima dentro da interface do Claude e aperta Enter. O Claude pede aprovação ([y/n]) antes de cada mudança no CLAUDE.md. Se algo no diff não bate, responde n e corrige. Esse arquivo molda toda sessão futura, então vale os 30 segundos extras pra acertar.
O Claude responde em três blocos:
1. A edição proposta da seção Project Overview, em formato de diff. Vai aparecer algo assim (linhas exatas variam; o que importa é a região marcada Project Overview):
Edit file CLAUDE.md
Around the "## Project Overview" section:
- **O que é:** [um produto que faz X para Y]
- **Por que existe:** [problema específico que resolve, com 1 número quando possível]
+ **O que é:** {{PRODUTO}}
+ **Por que existe:** {{DOR}}
Do you want to proceed? [y/n]Aprova com y se o conteúdo bate com o seu brief.
2. A nova seção Domain Vocabulary, também em diff. Mesmo procedimento.
3. Sugestões de ajuste no Tech Stack em formato de texto (sem edição automática). Ex: "você mencionou que precisa armazenar histórico de recibos, sugiro adicionar Postgres na stack." Se concordar, pede: "aplica essa mudança no Tech Stack também."
Passo 3: Primeiro commit do projeto
Com o CLAUDE.md personalizado, é hora do primeiro commit. Pede pro Claude fazer:
Faz o primeiro commit do projeto seguindo Conventional Commits. Stage só o CLAUDE.md, com mensagem feat(claude-md): personalize for <nome curto do produto>.O Claude pede aprovação pra rodar dois comandos:
Bash command
git add CLAUDE.md
Stage the personalized CLAUDE.md
Do you want to proceed? [y/n]Bash command
git commit -m "feat(claude-md): personalize for {{PRODUTO}}"
Commit the staged changes
Do you want to proceed? [y/n]Aprova os dois. Confere no GitHub: abre https://github.com/seu-usuario/{nome-do-projeto}/commits/main e o seu primeiro commit deve estar lá.
Passo 4: A prova. Feche o Claude, reabra, e veja o que mudou
Esse passo separa "editei um arquivo" de "configurei a memória do projeto."
Sai do Claude. Isso encerra a sessão atual: ele esquece a conversa, mas o CLAUDE.md fica em disco e é relido na próxima abertura.
- Terminal: aperta
Ctrl+D(ou digitaexit+ Enter). - Cursor / VS Code: fecha o painel do Claude (X no canto do painel).
- Desktop app: fecha a janela e reabre.
Agora abre o Claude de novo do mesmo jeito da lição 04 (claude no terminal, ou painel/janela na sua IDE/app). Cola este prompt:
Em uma frase, o que este projeto faz, e quem é o usuário?A resposta deve falar do seu produto especificamente: algo que reflete o que você escreveu em PRODUTO e PARA_QUEM, e idealmente usa pelo menos um dos termos que você listou em Domain Vocabulary.
Se não usar nenhum termo, pede o segundo teste:
Como você implementaria a feature de criar um novo registro principal nesse produto? Use os termos do domínio.Aqui ele tem que usar os seus termos. Se ainda não usar, é sinal de que o CLAUDE.md não foi recarregado. Veja o troubleshooting abaixo.
Takeaways
CLAUDE.mdé do projeto: ele molda o que o Claude faz por padrão em toda sessão futura, não só descreve o repo pra um leitor humano.- Três seções fazem a diferença:
Project Overview(o produto),Tech Stack(a stack real) eDomain Vocabulary(termos que ele tem que usar literalmente). - A prova de que funcionou: nova sessão, pergunta genérica, resposta que cita os seus termos sem você pedir.
- O CEAP cabe em 3 linhas de
Project Overview. Três linhas específicas rendem mais que um parágrafo vago.