Guias

CLAUDE.md demasiado longo? O que cortar e para onde vai

Um CLAUDE.md é demasiado longo quando tem linhas sem as quais o agente não erraria. A Neomanex resolve-o com uma auditoria: testar cada linha, manter o que evita um erro e mover o resto para uma página de documentação, uma skill, uma regra de pasta, um fluxo de trabalho do ConvOps ou um hook, tanto no CLAUDE.md como no AGENTS.md.

DM

David Marsa

Founder & CEO

Iniciante10 min de leituraPublicado em 09/10/2026

Última verificação: 09/10/2026

Ferramentas e modelos abordados:Claude CodeOpenCode
É como fazer uma mala de cabine: o ficheiro guarda aquilo de que o agente precisa em todas as sessões, e todas as outras linhas vão para um sítio etiquetado onde o agente as encontra quando precisa.

O que vai conseguir fazer

  • Medir as palavras que carregam em conjunto no seu projeto face a um orçamento.
  • Aplicar o teste de uma linha a cada linha e registar cada veredito num registo de cortes.
  • Mover cada linha cortada para o destino certo e deixar um apontador de uma linha.
  • Configurar um único ficheiro de instruções que o Claude Code, o OpenCode e o Kimi Code leem.
  • Confirmar que carregou com /context e voltar a verificar a contagem de palavras sempre que muda.

Pontos-chave

  • Um CLAUDE.md é demasiado longo quando tem linhas sem as quais o agente não erraria; a Anthropic aponta para menos de 200 linhas por ficheiro, e nós orçamentamos palavras, não linhas.
  • Faça uma pergunta a cada linha: o agente cometeria um erro sem ela? Mantenha só as respostas sim.
  • Cada linha cortada recebe um destino: uma página de documentação, uma regra de pasta, uma skill, um passo de fluxo de trabalho, um hook ou o lixo.
  • Mantenha o CLAUDE.md como fonte única e faça do AGENTS.md um symlink para ele: é a configuração mais simples em que o Claude Code, o OpenCode e o Kimi Code leem as mesmas instruções.
  • Volte a medir com uma contagem de palavras em cada edição, porque um ficheiro aparado volta a crescer.

Um CLAUDE.md é demasiado longo quando tem linhas sem as quais o agente não erraria. A documentação da Anthropic aponta para menos de 200 linhas por ficheiro CLAUDE.md; nós contamos palavras, porque as linhas escondem a densidade. No fim deste guia terá auditado o seu ficheiro linha a linha, dado um destino a cada linha cortada e configurado um único ficheiro que o Claude Code, o OpenCode e o Kimi Code leem.

Um ficheiro de instruções longo não é um problema de escrita. É um problema de arrumação: quase todas as linhas são verdadeiras, só estão no sítio errado. Uma linha fora do sítio custa contexto em todas as sessões e enterra as regras que importam. A Anthropic di-lo sem rodeios: ficheiros CLAUDE.md inchados fazem com que o Claude ignore as suas instruções reais (Anthropic, Best practices(abre num novo separador)).

Todos os exemplos usam a Mossbank, uma aplicação fictícia de agendamento para empresas de canalização e aquecimento. O ficheiro e os números são inventados; os orçamentos e as regras são os que usamos na Neomanex.

De que precisa antes de começar

Audite os ficheiros que carregam em conjunto, não aquele que por acaso tem aberto. O agente nunca vê um ficheiro sozinho: o Claude Code carrega todos os CLAUDE.md desde o topo do projeto até à pasta onde está a trabalhar, mais tudo o que importam.

Precisa dePorquê
Todos os ficheiros de instruções que carregam na sua pasta de trabalhoO agente paga a soma
Uma contagem de palavras (wc -w em macOS ou Linux)O orçamento é em palavras
/context no Claude CodeMostra que ficheiros carregaram de facto

Meça o que carrega de facto

Deixámos de contar linhas. Uma linha de tabela pode conter um parágrafo, por isso orçamentamos palavras e tratamos um ficheiro denso como um ficheiro longo.

O custo de um ficheiro são as suas palavras: dois ficheiros de 180 linhas podem estar muito longe um do outro, por isso o orçamento é definido em palavras para cada tipo de ficheiro e para tudo o que carrega em conjunto.

Execute wc -lw em cada ficheiro, some as palavras e divida as palavras pelas linhas. Acima de cerca de 15 palavras por linha, as células das tabelas tornaram-se parágrafos: divida a célula ou mova o conteúdo para fora.

FicheiroObjetivoMáximo absolutoPorquê
Ficheiro filho (uma subpasta)500 palavras750 palavrasSó acrescenta o que falta ao pai
Raiz do projeto1.200 palavras1.800 palavrasIdentidade, mapa de pastas, testes, deploy, armadilhas; os filhos levam o resto
Raiz do espaço de trabalho (vários projetos)2.000 palavras2.800 palavrasCarrega em todas as sessões, para todo o tipo de trabalho
Tudo o que carrega em conjunto5.000 palavras7.000 palavrasO agente paga a soma, não um ficheiro

O objetivo de linhas da Anthropic existe porque «ficheiros mais longos consomem mais contexto e reduzem a adesão» (Anthropic, Memory(abre num novo separador)). Os imports contam por inteiro: os ficheiros importados também carregam no arranque.

O ficheiro raiz da Mossbank tem 420 linhas e cerca de 9.600 palavras: 23 palavras por linha, muito acima do máximo absoluto de 1.800 palavras para a raiz de um projeto.

Aplique o teste de uma linha a cada linha

A pergunta de poda da Anthropic é a auditoria inteira: remover esta linha faria o Claude cometer um erro? A disciplina está em fazê-la a cada linha, incluindo as que escreveu na semana passada.

O que é um registo de cortes? Um registo de cortes é uma tabela com uma linha por cada linha ou bloco do ficheiro: a linha, se o agente erra alguma coisa sem ela, porquê, e para onde vai a linha.

#Linha no ficheiro da MossbankErra sem ela?PorquêVai para
1«Corra os testes com make test, nunca só com pytest»SimO pytest sozinho salta as fixtures da base de dadosFica
2«price é guardado em cêntimos (ver models/job.py)»SimUm palpite errado corrompe dadosFica, com a sua fonte
3Um mapa de módulos de 60 linhasÀs vezesReferência, necessária para navegarPágina de documentação
4Como acrescentar um fornecedor de pagamentos, 14 passosSó nessa tarefaUm procedimentoSkill
5«Em migrations/, nunca edite uma migração que já correu»Só nessa pastaUma subárvoreRegra de pasta
6«NUNCA execute db reset contra staging»Nunca pode acontecerA prosa é só um conselhoHook
7Release: versão, changelog, tag, deploy, página de estado, pedir autorização à Dana antes da tagSó no releaseUma ordem e uma aprovaçãoPasso de fluxo de trabalho
8«Use indentação de 4 espaços»NãoO formatador já o impõeApagar
9«A API tem 37 endpoints»NãoErrado no commit seguinteApagar
10A lista de parâmetros das ferramentas MCP da equipaNãoA ferramenta envia o seu próprio esquemaApagar

Ficam duas linhas. A linha 2 só fica porque indica o ficheiro que a prova.

Dê um destino a cada linha cortada

Apagar é o último recurso, não o primeiro. A maior parte das linhas cortadas é conhecimento que pertence a um sítio que o agente só lê quando precisa.

Uma linha que falha o teste de uma linha vai para o primeiro destino cuja pergunta tem resposta sim: hook, passo de fluxo de trabalho, regra de pasta, skill, página de documentação ou apagar.

Faça as perguntas por esta ordem. O primeiro sim escolhe o destino.

DestinoRecebeCarrega quando
HookAlgo que tem de acontecer sempre ou nuncaEm cada chamada a uma ferramenta, e bloqueia
Passo de fluxo de trabalhoUm processo com uma ordem ou uma aprovaçãoNesse passo
Regra de pastaAlgo que só é verdade numa pastaQuando o agente lê, escreve ou edita um ficheiro nessa pasta
SkillUm procedimento de que algumas tarefas precisamQuando a tarefa corresponde; até lá só carrega a descrição curta
Página de documentaçãoReferência: mapas, explicaçõesQuando o agente segue o apontador
ApagarContagens, histórico, cópias, tudo o que o agente já faz bemNunca

O hook vem primeiro porque o ficheiro é só um conselho: a documentação da Anthropic diz que, para bloquear uma ação independentemente do que o Claude decida, se deve usar um hook PreToolUse. O nosso guia para impedir que o Claude Code apague os seus ficheiros constrói um, passo a passo. Uma regra de pasta no Claude Code é um ficheiro .claude/rules/ com frontmatter paths:, aqui a corresponder a migrations/**, ou um CLAUDE.md filho nessa pasta. Nós limitamos as nossas por caminho.

A checklist de release da Mossbank é o exemplo clássico de linha mal arrumada: uma ordem e a aprovação da Dana, lidas por inteiro em todas as sessões, com a paragem entregue à memória. Guardamos processos deste tipo como fluxos de trabalho no ConvOps(abre num novo separador), para que o agente leia um passo de cada vez e a aprovação seja um passo próprio (como gerimos a nossa empresa com fluxos de trabalho). Tire todos os processos do ficheiro e ele encolhe até ser um ficheiro de identidade: é o caminho radical, o graph engineering (engenharia de grafos).

Mova cada linha e deixe um apontador de uma linha

Um corte que perde conhecimento não é um corte. É um bug futuro, por isso cada linha movida deixa um apontador para trás.

O CLAUDE.md de 420 linhas da Mossbank mantém as linhas que evitam erros e move todas as outras para um destino de onde só carregam quando são precisas.

O mapa de módulos da Mossbank passa a ser docs/module-map.md, e o ficheiro mantém uma linha que indica a página. Das 420 linhas, 90 ficam, 150 vão para três páginas de documentação, 60 para duas skills, 30 para uma regra de pasta, 25 para o fluxo de trabalho de release, 10 para dois hooks, e 55 são apagadas. O ficheiro acaba com cerca de 100 linhas, as 90 que ficaram mais 10 linhas de apontadores, e 1.100 palavras, abaixo do objetivo de 1.200 palavras.

Um import com @ não é um corte. @docs/module-map.md carrega a página no arranque na mesma. Um apontador simples não carrega nada até o agente o seguir.

Faça com que um só ficheiro sirva de CLAUDE.md e AGENTS.md

Ter dois ficheiros de instruções para três ferramentas significa que cada ferramenta lê um ficheiro diferente. Nós mantemos uma fonte e ligamos o outro nome a ela.

Com dois ficheiros, o Claude Code lê o CLAUDE.md enquanto o OpenCode e o Kimi Code leem o AGENTS.md; com o AGENTS.md como symlink para o CLAUDE.md, as três leem o mesmo ficheiro uma só vez (testado em outubro de 2026).

Testámos cada configuração a 9 de outubro de 2026, com uma palavra-código diferente em cada ficheiro:

Configuração na pasta do projetoClaude Code 2.1.295OpenCode 1.18.31Kimi Code 0.31.1
Só AGENTS.mdCarrega o AGENTS.mdCarrega o AGENTS.mdCarrega o AGENTS.md
CLAUDE.md e AGENTS.md, dois ficheirosCarrega só o CLAUDE.mdCarrega só o AGENTS.mdCarrega só o AGENTS.md
AGENTS.md como symlink para CLAUDE.mdCarrega-o uma vezCarrega-o uma vezCarrega-o uma vez
Só CLAUDE.mdCarrega o CLAUDE.mdCarrega o CLAUDE.mdNão o carrega

Dois ficheiros separados divergem, e cada ferramenta segue instruções diferentes. Só o CLAUDE.md deixa o Kimi Code sem nada. Mantenha o CLAUDE.md como fonte e execute ln -s CLAUDE.md AGENTS.md: das quatro configurações que testámos, é a única em que as três ferramentas leem o mesmo texto uma só vez. O nosso é gerado: um script cria um AGENTS.md ao lado de cada CLAUDE.md, para que cada pasta tenha uma só fonte.

Segundo a documentação da Anthropic, as ferramentas Edit e Write do Claude Code recusam escrever através de um symlink, por isso edite o CLAUDE.md; em Windows, faça do CLAUDE.md um import de uma linha, @AGENTS.md. Apague ou mova os dois em conjunto: um CLAUDE.md apagado deixa a ligação AGENTS.md a apontar para nada.

Confirme que carregou e volte a verificar sempre que cresce

Um ficheiro aparado volta a crescer por defeito, porque cada lição quer viver no ficheiro que todos leem. A nova verificação faz parte da edição, não de um dia de limpezas.

VerificaçãoComoO que vê
Carregou?/context no Claude CodeA lista Memory files (ficheiros de memória) indica cada ficheiro carregado; com o symlink, só o CLAUDE.md
Está dentro do orçamento?wc -w somado sobre os ficheiros que carregam em conjuntoUm número para comparar com o orçamento, em cada edição
Há contradições? (opcional)/doctor prompt-audit, Claude Code 2.1.283 ou posteriorInstruções desatualizadas ou contraditórias com edições propostas; nada muda até o pedir

O ficheiro da Mossbank ganha duas linhas na primeira semana, ambas lições reais, e a contagem de palavras deteta-as. A regra: uma lição nova vai primeiro para o seu destino, e só por último para o ficheiro.

Comece pelo seu processo mais longo. Crie uma conta gratuita no ConvOps(abre num novo separador), peça à sua IA que escreva esse processo como fluxo de trabalho e depois apague-o do ficheiro. Quer um segundo olhar sobre os ficheiros de instruções da sua equipa? Marque uma sessão de descoberta gratuita.

Erros comuns e as regras que deixaram

Cada regra do nosso orçamento existe porque um ficheiro errou alguma coisa, não porque um guia de estilo o mandou. Cada erro abaixo aconteceu connosco, recontado com a Mossbank.

ErroNa MossbankRegra que produziu
Contar linhasUm ficheiro de 180 linhas a 33 palavras por linha tem cerca de 6.000 palavrasOrçamentar palavras; assinalar acima de cerca de 15 palavras por linha
Um contrato sem fonteO ficheiro diz que price está em euros; está em cêntimos, por isso o agente escreve um desconto em eurosUma linha que define um campo, um tipo ou uma forma cita o ficheiro que o prova
Passos de deploy num ficheiro filhoworker/CLAUDE.md ainda descreve o deploy antigo e contradiz a raizO pai é dono de cada facto; um filho tem no máximo um apontador
Contagens«A API tem 37 endpoints» está errado no commit seguinteDescrever, nunca contar
Repetir uma regra que já carregaO ficheiro copia as regras de testes partilhadas, com uma flag antigaApontar para a regra; nunca a repetir

Passos

  1. Meça o que carrega de facto

    Execute wc -lw em cada ficheiro de instruções que carrega na sua pasta de trabalho, imports incluídos, e some as palavras. Compare cada ficheiro e o total com o orçamento de palavras, e assinale qualquer ficheiro acima de cerca de 15 palavras por linha.

  2. Aplique o teste de uma linha a cada linha

    Para cada linha ou bloco, pergunte se o agente cometeria um erro sem ela. Registe a linha, a resposta e o motivo num registo de cortes, e mantenha só as respostas sim.

  3. Dê um destino a cada linha cortada

    Pergunte por esta ordem: tem de acontecer sempre ou nunca (hook), tem uma ordem ou uma aprovação (passo de fluxo de trabalho), só é verdade numa pasta (regra de pasta), é um procedimento para algumas tarefas (skill), é referência (página de documentação). Se todas as respostas forem não, apague-a.

  4. Mova cada linha e deixe um apontador de uma linha

    Mova cada linha para o seu destino e deixe um apontador de uma linha no ficheiro onde quer que o agente precise de a encontrar. Nunca conte um import com @ como corte, porque os ficheiros importados carregam no arranque.

  5. Faça com que um só ficheiro sirva de CLAUDE.md e AGENTS.md

    Mantenha o CLAUDE.md como fonte e execute ln -s CLAUDE.md AGENTS.md na mesma pasta, para que o Claude Code, o OpenCode e o Kimi Code leiam o mesmo texto uma só vez. Apague ou mova os dois ficheiros em conjunto.

  6. Confirme que carregou e volte a verificar sempre que cresce

    Execute /context no Claude Code e confirme que o ficheiro aparece em Memory files. Em cada edição, execute de novo wc -w face ao orçamento, e envie cada lição nova para o seu destino antes do ficheiro.

Perguntas frequentes

A partir de que tamanho um CLAUDE.md é demasiado longo?

A documentação da Anthropic aponta para menos de 200 linhas por ficheiro CLAUDE.md. Na Neomanex orçamentamos palavras, porque um ficheiro curto feito de linhas de tabela densas continua a custar muito: cerca de 1.200 palavras para a raiz de um projeto, 2.000 para a raiz de um espaço de trabalho grande e 5.000 para tudo o que carrega em conjunto. Acima disso, ou acima de cerca de 15 palavras por linha, o ficheiro é demasiado longo. O teste real é linha a linha: manter só o que evita um erro.

Quem deve aparar o seu CLAUDE.md ou AGENTS.md?

Os programadores e líderes de equipa cujo agente de programação ignora regras que recebeu, ou cujo ficheiro de instruções cresce a cada lição, devem apará-lo. Na Neomanex a regra é auditar um ficheiro assim que ultrapassa o seu orçamento de palavras. O resultado é um ficheiro que o agente segue e que custa menos contexto em cada sessão, com o conhecimento cortado guardado em páginas de documentação, skills, regras de pasta, fluxos de trabalho e hooks.

O que devo remover primeiro do meu CLAUDE.md?

Apague aquilo de que o agente nunca precisa: contagens que ficam desatualizadas, histórico do projeto, cópias de outros ficheiros, listas de parâmetros de ferramentas que a própria ferramenta já envia e regras de estilo que um formatador impõe. A norma da Neomanex trata estas linhas como eliminações diretas, porque custam contexto e não dão nada. Depois mova o material de referência para páginas de documentação e os processos com uma ordem ou uma aprovação para fluxos de trabalho, que é onde a Neomanex os guarda, no ConvOps.

Importar ficheiros com @ torna o meu CLAUDE.md mais curto?

Não. Na Neomanex contamos cada import com @ no orçamento de palavras, porque a documentação da Anthropic diz que os ficheiros importados também carregam no arranque, por isso um import muda o texto de sítio sem cortar o seu custo. Um corte real é uma página de documentação com um apontador de uma linha, uma skill ou uma regra limitada por caminho, porque cada um deles só carrega quando o agente precisa.

Porque é que o Claude não usa o meu AGENTS.md?

O Claude Code só lê o AGENTS.md quando não existe nenhum CLAUDE.md na pasta ou acima dela. A Neomanex testou isto no Claude Code 2.1.295 em outubro de 2026: com os dois ficheiros presentes, carregou só o CLAUDE.md. A solução é uma fonte por pasta: manter o CLAUDE.md e fazer do AGENTS.md um symlink para ele ou, em Windows, fazer do CLAUDE.md um import de uma linha, @AGENTS.md.

Um AGENTS.md demasiado longo é o mesmo problema que um CLAUDE.md demasiado longo?

Sim, e pede a mesma auditoria. A Neomanex testou o OpenCode 1.18.31 e o Kimi Code 0.31.1 em outubro de 2026: ambos leem o AGENTS.md, o OpenCode ignora o CLAUDE.md quando existe um AGENTS.md, e o Kimi Code não carrega o CLAUDE.md do projeto. Um único CLAUDE.md aparado, com o AGENTS.md como symlink para ele, serve o Claude Code, o OpenCode e o Kimi Code com o mesmo texto.

Como resolvo o erro «prompt is too long» (prompt demasiado longo) no Claude?

Execute /context no Claude Code para ver o que enche a janela de contexto e depois execute /compact ou comece uma sessão nova. Na Neomanex tratamos este erro como uma conversa cheia, que é um problema diferente de um ficheiro de instruções longo. Um CLAUDE.md conciso ajuda na mesma, porque carrega antes da sua primeira mensagem e cada sessão começa mais pequena.