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 de | Porquê |
|---|---|
| Todos os ficheiros de instruções que carregam na sua pasta de trabalho | O agente paga a soma |
Uma contagem de palavras (wc -w em macOS ou Linux) | O orçamento é em palavras |
/context no Claude Code | Mostra 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.

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.
| Ficheiro | Objetivo | Máximo absoluto | Porquê |
|---|---|---|---|
| Ficheiro filho (uma subpasta) | 500 palavras | 750 palavras | Só acrescenta o que falta ao pai |
| Raiz do projeto | 1.200 palavras | 1.800 palavras | Identidade, mapa de pastas, testes, deploy, armadilhas; os filhos levam o resto |
| Raiz do espaço de trabalho (vários projetos) | 2.000 palavras | 2.800 palavras | Carrega em todas as sessões, para todo o tipo de trabalho |
| Tudo o que carrega em conjunto | 5.000 palavras | 7.000 palavras | O 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 Mossbank | Erra sem ela? | Porquê | Vai para |
|---|---|---|---|---|
| 1 | «Corra os testes com make test, nunca só com pytest» | Sim | O pytest sozinho salta as fixtures da base de dados | Fica |
| 2 | «price é guardado em cêntimos (ver models/job.py)» | Sim | Um palpite errado corrompe dados | Fica, com a sua fonte |
| 3 | Um mapa de módulos de 60 linhas | Às vezes | Referência, necessária para navegar | Página de documentação |
| 4 | Como acrescentar um fornecedor de pagamentos, 14 passos | Só nessa tarefa | Um procedimento | Skill |
| 5 | «Em migrations/, nunca edite uma migração que já correu» | Só nessa pasta | Uma subárvore | Regra de pasta |
| 6 | «NUNCA execute db reset contra staging» | Nunca pode acontecer | A prosa é só um conselho | Hook |
| 7 | Release: versão, changelog, tag, deploy, página de estado, pedir autorização à Dana antes da tag | Só no release | Uma ordem e uma aprovação | Passo de fluxo de trabalho |
| 8 | «Use indentação de 4 espaços» | Não | O formatador já o impõe | Apagar |
| 9 | «A API tem 37 endpoints» | Não | Errado no commit seguinte | Apagar |
| 10 | A lista de parâmetros das ferramentas MCP da equipa | Não | A ferramenta envia o seu próprio esquema | Apagar |
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.

Faça as perguntas por esta ordem. O primeiro sim escolhe o destino.
| Destino | Recebe | Carrega quando |
|---|---|---|
| Hook | Algo que tem de acontecer sempre ou nunca | Em cada chamada a uma ferramenta, e bloqueia |
| Passo de fluxo de trabalho | Um processo com uma ordem ou uma aprovação | Nesse passo |
| Regra de pasta | Algo que só é verdade numa pasta | Quando o agente lê, escreve ou edita um ficheiro nessa pasta |
| Skill | Um procedimento de que algumas tarefas precisam | Quando a tarefa corresponde; até lá só carrega a descrição curta |
| Página de documentação | Referência: mapas, explicações | Quando o agente segue o apontador |
| Apagar | Contagens, histórico, cópias, tudo o que o agente já faz bem | Nunca |
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 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.

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 projeto | Claude Code 2.1.295 | OpenCode 1.18.31 | Kimi Code 0.31.1 |
|---|---|---|---|
| Só AGENTS.md | Carrega o AGENTS.md | Carrega o AGENTS.md | Carrega o AGENTS.md |
| CLAUDE.md e AGENTS.md, dois ficheiros | Carrega só o CLAUDE.md | Carrega só o AGENTS.md | Carrega só o AGENTS.md |
| AGENTS.md como symlink para CLAUDE.md | Carrega-o uma vez | Carrega-o uma vez | Carrega-o uma vez |
| Só CLAUDE.md | Carrega o CLAUDE.md | Carrega o CLAUDE.md | Nã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ção | Como | O que vê |
|---|---|---|
| Carregou? | /context no Claude Code | A 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 conjunto | Um 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 posterior | Instruçõ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.
| Erro | Na Mossbank | Regra que produziu |
|---|---|---|
| Contar linhas | Um ficheiro de 180 linhas a 33 palavras por linha tem cerca de 6.000 palavras | Orçamentar palavras; assinalar acima de cerca de 15 palavras por linha |
| Um contrato sem fonte | O ficheiro diz que price está em euros; está em cêntimos, por isso o agente escreve um desconto em euros | Uma linha que define um campo, um tipo ou uma forma cita o ficheiro que o prova |
| Passos de deploy num ficheiro filho | worker/CLAUDE.md ainda descreve o deploy antigo e contradiz a raiz | O pai é dono de cada facto; um filho tem no máximo um apontador |
| Contagens | «A API tem 37 endpoints» está errado no commit seguinte | Descrever, nunca contar |
| Repetir uma regra que já carrega | O ficheiro copia as regras de testes partilhadas, com uma flag antiga | Apontar para a regra; nunca a repetir |
Passos
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.
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.
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.
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.
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.
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.
