AIDive

Transformei cada hábito do Claude Code em comando

Por AIDive · Publicado em

Agentes de códigoAutomação e workflows

Cinco hábitos, cinco comandos

Toda lista de hábitos do Claude Code diz o que fazer. Esta transforma cada hábito em um comando que o Claude Code executa, para que o hábito se sustente quer o modelo leia a regra ou não. Rodamos os cinco em um repo de verdade, o ledgerly, uma pequena API de faturamento em Node 20 e TypeScript, com o Claude Code 2.1.294.

O motivo está nas próprias boas práticas da Anthropic: uma linha como "Always typecheck before you finish" no seu CLAUDE.md "funciona quase sempre, não sempre". Os cinco comandos abaixo são /goal, um hook PreToolUse, /context com /clear, /skill-doctor e um subagent revisor somente leitura.

Por que um hábito anotado falha

O CLAUDE.md é o arquivo de instruções que o Claude lê no início de cada sessão, um readme escrito para um colega novo: comandos, convenções e regras. É onde a maioria dos hábitos vai parar, muitas vezes com os mais importantes em maiúsculas, como "NEVER edit src/store/migrations.ts".

A documentação de memória da Anthropic é explícita sobre o que esse arquivo é: o Claude o lê como contexto, não como configuração imposta. Cada linha é um conselho pesado contra a tarefa em andamento. A diferença é a mesma entre um checklist de code review numa página de wiki e uma verificação no seu pipeline de CI: o primeiro depende de alguém ler, o segundo roda de qualquer jeito.

O gesto: abra o seu CLAUDE.md e marque cada linha que precisa valer todas as vezes. Deixe o resto onde está, já que o arquivo continua sendo o lugar certo para o que o Claude não consegue deduzir do seu código, e a documentação recomenda menos de 200 linhas por arquivo.

Hábito um: dizer o que é pronto

O Claude para quando o trabalho parece pronto. Se nada diz a ele se o trabalho está mesmo pronto, notam as boas práticas da Anthropic, você vira a suíte de testes.

O /goal define uma linha de chegada uma vez só. Depois de cada turno, um modelo pequeno e rápido lê a conversa e responde: atendida, ainda não atendida ou impossível. Ele não executa comandos nem lê arquivos, então escreva a condição como algo que a própria saída do Claude consiga mostrar, como a saída completa dos testes.

Rodado no ledgerly O que vimos
Sessão normal, mesmo pedido de feature Os testes rodaram dentro de uma chamada de ferramenta recolhida; a resposta dizia "pnpm test passes (37/37)"
Com /goal e a condição "full pnpm test output printed" A resposta imprimiu a execução inteira, "Tests 44 passed (44)", e depois "Goal achieved (45s · 1 turn · 5.1k tokens)"

Digite /goal sozinho para ver o status e /goal clear para removê-lo. Para um conserto de uma linha você não precisa dele; a documentação diz que ele importa mais em execuções longas, em que o Claude às vezes encerra um turno com itens ainda em aberto.

Hábito dois: uma regra que não quebra

Uma regra em maiúsculas é respeitada na maioria das vezes, e esse é justamente o problema. Um hook é um pequeno script que o Claude Code executa sozinho em um momento fixo; um hook PreToolUse roda antes de cada chamada de ferramenta. O nosso lê o caminho do arquivo e, quando é src/store/migrations.ts, imprime "migrations.ts is append-only: add a new migration file instead" e sai com o código 2. O guia de hooks diz que o código de saída 2 bloqueia a chamada e devolve a mensagem ao Claude, e o bloqueio vale mesmo com os pedidos de permissão desligados.

Nas nossas execuções: com a regra no CLAUDE.md, o Claude recusou a edição por conta própria. Com a regra removida, o Claude foi atrás do arquivo de migrations duas vezes e o hook bloqueou as duas edições; o Claude editou o resto e relatou "A project hook blocked both of my edits to that file." Em duas execuções posteriores, ele leu o script do hook primeiro e nunca tentou o arquivo.

Um hook só bloqueia o que consegue casar, um caminho ou um comando. Regras de julgamento, como "escreva código limpo", ficam no CLAUDE.md, e um padrão estreito evita que o hook bloqueie o seu próprio trabalho.

Hábito três: uma tarefa, um contexto

O contexto é tudo o que o modelo vê a cada turno: suas instruções, os arquivos que ele leu e a conversa inteira. O /context o mostra como uma grade; o /clear esvazia a conversa, e os arquivos e as configurações continuam.

/context no ledgerly Total Mensagens
Depois da tarefa concluída 57.5k de 1m tokens 26.4k tokens
Depois do /clear 31.1k de 1m tokens 130 tokens

Segundo a documentação, usar /clear entre tarefas sem relação não custa nada, e depois de duas correções que falharam você limpa e escreve um prompt melhor. No meio de uma tarefa, use /compact com um foco.

Hábito quatro: carregue só o que você usa

Uma skill é uma instrução empacotada que o Claude carrega quando uma tarefa combina com ela. A skill completa só é carregada quando roda, mas a sua linha de listagem fica no prompt a cada turno, e o orçamento das listagens é de cerca de 1% da janela de contexto, então as skills menos usadas perdem as descrições primeiro.

O /skill-doctor lista todas as skills com o seu custo de contexto e a frequência com que você as usou. Na nossa máquina ele relatou:

Tipo Carregadas mas nunca invocadas
Skills pessoais 13
Sincronizadas do claude.ai 14
Skills de plugin 25

Ele também listou 4 plugins não usados recentemente. Desligue uma skill em /skills; as skills sincronizadas voltam se você as apagar, então desligue-as no claude.ai; as skills de plugin passam pelo gerenciador de plugins. Uma linha de listagem é pequena, então isso reduz ruído em vez de liberar metade do seu contexto.

Hábito cinco: olhos novos no diff

Um subagent é uma segunda sessão do Claude iniciada para um único trabalho, com seu próprio contexto vazio, que devolve um resumo. A documentação da Anthropic diz sem rodeios: entregar a mesma tarefa a um subagent não melhora a resposta, mas um revisor novo ajuda porque não viu o seu raciocínio.

Nosso revisor mora em .claude/agents/reviewer.md com ferramentas somente leitura: Read, Grep, Glob, Bash(git diff:*) e Bash(git status:*). No diff das faturas vencidas, a própria revisão da sessão autora achou um bug real: faturas com a mesma data de vencimento eram ordenadas por id como texto. O revisor achou o mesmo bug e o teste que faltava em 28 segundos, e depois conferiu uma a uma todas as convenções do README. Ele também afirmou que a checagem de tipos estava limpa, algo que as ferramentas dele não podiam rodar, e a sessão principal o marcou como não verificado. Chame-o uma vez por feature, antes do merge.

Qual hábito configurar primeiro

Comece pelo hook, na regra que já foi quebrada mais de uma vez no seu repo. O /clear e o /skill-doctor não custam nada. Guarde o /goal para execuções longas e o revisor para o merge. A regra a manter: se um hábito precisa valer todas as vezes, faça dele algo que o Claude Code executa, não algo que o Claude lê.

Recursos gratuitos

Fontes

Perguntas frequentes

Por que o Claude Code ignora regras do CLAUDE.md?
O Claude lê o CLAUDE.md como contexto, não como configuração imposta, então uma regra ali funciona quase sempre, não sempre. Para uma regra que precisa valer sempre, use um hook.
Como impeço o Claude Code de editar um arquivo específico?
Adicione um hook PreToolUse em Edit e Write no .claude/settings.json, cujo script sai com o código 2 quando o caminho combina. A chamada é bloqueada e a mensagem volta ao Claude.
O que o comando /goal faz no Claude Code?
Ele define uma condição de pronto; depois de cada turno, um modelo pequeno lê a conversa e diz atendida ou ainda não atendida. Escreva a condição como algo que o Claude precise mostrar, como a saída completa dos testes.
O que é o /skill-doctor no Claude Code?
Um comando que lista cada skill carregada com seu custo de contexto e uso e destaca as nunca invocadas, para você poder desligá-las.
Um subagent revisor é melhor do que deixar o Claude revisar o próprio código?
Um revisor novo ajuda porque não viu o raciocínio da sua sessão. Dê a ele ferramentas somente leitura, chame-o uma vez por feature e rode as checagens você mesmo.

Vídeos relacionados