O que é e porque importa
De certeza que já te aconteceu: estás há horas no mesmo chat com o Claude Code e, a certa altura, alguma coisa escapa. Volta a fazer uma escolha que já tinham posto de parte, esquece uma regra que lhe deste no início, volta a propor-te uma tentativa que não funcionava.
A razão é a janela de contexto, a memória de trabalho do Claude. Lá dentro está tudo: as tuas mensagens, as respostas, os ficheiros lidos, o output dos comandos, o CLAUDE.md. Quando se aproxima do limite, o Claude Code arranja espaço sozinho: primeiro tira os resultados antigos dos comandos, depois resume a conversa. Os teus pedidos e o código importante ficam. As instruções detalhadas que deste no início podem desaparecer.
E há também o consumo: a cada mensagem, o Claude Code volta a enviar ao modelo a conversa inteira. Quanto mais longo o chat, mais te custa cada pergunta, mesmo a de uma linha.
O que eu faço: quando acabo uma parte, peço ao Claude que resuma onde estamos, que escreva as decisões num ficheiro do projeto, e recomeço com um chat limpo. As coisas importantes ficam no ficheiro, não na conversa.
1. O prompt de resumo
Quando acabas uma parte do trabalho (um ecrã, uma ligação, uma correção) e antes de passares à seguinte, escreve isto:
Resume onde estamos em cinco pontos: o que decidimos, o que está feito, o que falta, os problemas ainda em aberto, os ficheiros em que mexemos. Depois atualiza o DECISOES.md com as decisões novas. Nada de código no resumo.
Os cinco pontos dão-te uma fotografia completa do trabalho, não só da última coisa feita. «Os ficheiros em que mexemos» serve-te se alguma coisa se partir depois: sabes onde procurar. «Nada de código no resumo» porque o código já está nos ficheiros: aqui precisas de perceber em que ponto estás, não de reler cem linhas.
Esse resumo lê-o tu. Se houver uma decisão que não te lembras de ter tomado, ou um problema em aberto que te tinha escapado, pergunta agora, enquanto o chat ainda lá está.
2. O ficheiro das decisões
Cria na pasta do projeto um ficheiro DECISOES.md. Curto, uma linha por decisão, com o porquê. O meu é assim:
# Decisões ## Login - Só com email, nada de redes sociais (menos coisas para manter) ## Perfil - Uma só foto, nome visível para todos ## Não mexer - A base de dados real: só se testa na de testes ## Perguntas em aberto - Notificações sim ou não?
As secções são as partes da app, mais duas que uso sempre. «Não mexer» é a lista do que o Claude não deve mudar sem perguntar: a base de dados real, os pagamentos, o que para ti for delicado. «Perguntas em aberto» guarda o que ainda não está decidido, assim o Claude não escolhe por ti e tens essas perguntas à frente quando chegar a altura.
O porquê é o que conta. Daqui a uma semana, uma escolha sem motivo parece um erro, e o Claude pode acabar por a «arranjar». Com o motivo escrito ao lado, sabe porque é que está assim.
E mantém-no curto. Daqui a pouco vamos pô-lo a carregar em cada sessão, e tudo o que lá estiver ocupa memória de cada vez. Nada de atas: uma linha por decisão. Quando uma pergunta em aberto fica resolvida, passa-la para a secção certa. Quando uma decisão muda, reescreve a linha em vez de acrescentar outra.
3. Recomeçar limpo
Com o resumo feito e o ficheiro atualizado, no Claude Code tens dois caminhos.
/clear: um chat novo
/clear abre uma conversa nova, vazia. Não mexe nos ficheiros do projeto, e o chat anterior não desaparece: se precisares, reabre-lo com /resume. No chat novo escreve:
Lê o DECISOES.md e recomeça a partir daí: a próxima parte é [o que falta].
Em vez dos parênteses retos, põe a próxima parte numa frase, tipo «a página do perfil, só a parte da foto». Se tens o resumo de antes, o ponto «o que falta» já to diz. Assim o chat novo arranca só com o que precisa.
/compact: o mesmo chat, mais leve
/compact resume a conversa e liberta espaço sem a fechar. Podes dar-lhe instruções para o resumo, escritas a seguir ao comando. Eu digo-lhe o que guardar e o que deitar fora:
/compact mantém as decisões, o que está feito e o que falta; esquece as tentativas falhadas
O resumo automático, o que o Claude Code faz sozinho quando a memória está quase cheia, funciona da mesma maneira. A diferença é quem escolhe: aí decide o Claude Code o que é importante; com as instruções, escolhes tu.
Qual dos dois
Uso /clear quando acabei uma parte ou passo para um trabalho que não tem nada a ver: recomeça a partir do ficheiro, sei o que lá está e não custa nada. Uso /compact quando estou a meio de uma parte e ainda preciso do fio da conversa. Lembra-te de que o /compact não é grátis: para resumir tem de reler o chat todo, por isso num chat enorme é um pedido grande.
/context: quão cheia está
Se quiseres ver quão cheia está a memória, o /context mostra-ta: uma grelha colorida com o que ocupa espaço, desde o CLAUDE.md aos ficheiros lidos. Eu olho para ele quando o Claude começa a perder coisas, antes de decidir se recomeço.
4. Pô-lo a ler sempre
O CLAUDE.md é o ficheiro de instruções do projeto, o que o Claude Code carrega no início de cada sessão. Se não o tens, cria-o na pasta principal do projeto, ou deixa o /init prepará-lo. Depois acrescenta esta linha:
@DECISOES.md
Com a @ à frente, o ficheiro é carregado juntamente com o CLAUDE.md, mesmo depois de um /clear. E depois de uma compactação o Claude Code volta a ler do disco o CLAUDE.md principal do projeto, por isso as decisões também voltam aí. O caminho parte da pasta do CLAUDE.md: se os dois ficheiros estão lado a lado, basta o nome.
Por baixo acrescenta:
Quando tomarmos uma decisão importante, escreve-a no DECISOES.md.
Assim o ficheiro cresce enquanto trabalhas, não só quando te lembras. O prompt de resumo no fim de cada parte continua a ser o controlo: é aí que vês se falta alguma coisa. E o «Lê o DECISOES.md» depois de um /clear torna-se quase desnecessário, mas eu escrevo-o na mesma: diz ao Claude de onde recomeçar.
Uma coisa a saber: com a @, o DECISOES.md entra em cada sessão, mesmo quando não é preciso. Por isso tem de continuar curto. O mesmo vale para o CLAUDE.md: a documentação recomenda mantê-lo abaixo das 200 linhas.
Extra: instruções para o resumo automático
Se quiseres que também o resumo automático guarde as coisas certas, podes escrever no CLAUDE.md uma secção com instruções para a compactação. O Claude Code tem-na em conta quando resume:
# Compact instructions Quando resumires a conversa, mantém as decisões, o que está feito e o que falta; esquece as tentativas falhadas.
A regra: chats curtos, ficheiros longos. O chat deita-lo fora, o ficheiro fica.
Os erros mais comuns
- Esperar que o chat encha sozinho: o resumo automático escolhe por si o que guardar. No fim de cada parte, faz tu o resumo e recomeça.
- Fazer /clear sem ter atualizado o DECISOES.md: o que decidiram fica só no chat antigo. Primeiro o prompt de resumo, depois /clear.
- Escrever as decisões sem o porquê: passada uma semana parecem erros e o Claude pode «corrigi-las». Acrescenta o motivo entre parênteses.
- Deixar o DECISOES.md crescer como um diário: com a @ entra em cada sessão e ocupa memória. Uma linha por decisão, e quando uma mudar, reescreve essa linha.
- Usar o /compact para mudar de trabalho: arrastas um resumo que não serve e pagas a releitura. Quando mudas de assunto, /clear.
Checklist
- O DECISOES.md está na pasta do projeto
- Cada decisão tem o seu porquê
- O CLAUDE.md tem a linha @DECISOES.md
- No fim de cada parte uso o prompt de resumo
- Antes do /clear o ficheiro está atualizado
- /clear quando mudo de trabalho, /compact só a meio de uma parte
Perguntas frequentes
Como percebo que é altura de recomeçar?
Quando acabas uma parte ou passas para um trabalho que não tem nada a ver. Ou quando o Claude começa a perder coisas: volta a uma escolha já posta de parte ou esquece uma regra. Se quiseres ver os números, o /context diz-te quão cheia está a memória.
Com /clear perco o chat anterior?
Não. O /clear abre uma conversa nova, mas a anterior recupera-la com /resume. Os ficheiros do projeto, incluindo o DECISOES.md, ficam como estão.
Qual é a diferença entre o DECISOES.md e o CLAUDE.md?
O CLAUDE.md guarda as regras que valem sempre, tipo como se correm os testes ou o que nunca fazer. O DECISOES.md guarda as escolhas sobre este projeto e as perguntas em aberto, e muda muitas vezes. Separados, atualizas as decisões sem mexer nas regras.
Tenho mesmo de lhe chamar DECISOES.md?
Não, o nome escolhes tu. Basta que seja o mesmo na linha com a @, nos prompts e no próprio ficheiro.