Dicas de Desenvolvimento e Economia de Tokens
Esse capítulo é o que separa quem usa o Claude Code de forma casual de quem usa com eficiência real. As dicas aqui são uma mistura de boas práticas oficiais da Anthropic e padrões que reduzem custo, aumentam qualidade do output e evitam os problemas mais comuns. Tudo aqui é referenciado da documentação oficial.
Por que economizar token importa
Token tem três custos. Direto na conta (especialmente se você está na API), no tempo de resposta (mais token = mais latência), e na qualidade. Performance do modelo cai conforme a janela de contexto enche. Acima de 50-60% de uso, ele começa a "esquecer" instruções e cometer mais erros.
Custo médio em deployments enterprise é cerca de $13 por desenvolvedor por dia ativo e $150-250 por dev por mês, com 90% dos usuários abaixo de $30 por dia. Se você está saindo dessa faixa pra cima, provavelmente está deixando contexto inflar sem necessidade.
Princípio 1: Dê uma forma de verificar
Essa é a dica mais importante de todas, segundo a própria Anthropic. O Claude trabalha dramaticamente melhor quando consegue verificar o próprio trabalho.
Antes vs Depois
| Antes | Depois |
|---|---|
| "implemente uma função que valida emails" | "escreva validateEmail. casos de teste: user@example.com → true, invalid → false, user@.com → false. rode os testes depois de implementar" |
| "melhore o dashboard" | "[paste screenshot] implemente esse design. tire screenshot do resultado e compare com o original. liste diferenças e corrige" |
| "o build está falhando" | "o build falha com esse erro: [erro]. corrige e verifica que passa. resolva a causa raiz, não esconde o erro" |
Sem critério de verificação, ele entrega algo que parece certo mas não funciona. Você vira o único feedback loop, e cada erro consome seu tempo.
Princípio 2: Explore, planeje, depois codifique
Deixar o Claude pular direto pro código produz código que resolve o problema errado. Use Plan Mode (Shift+Tab até chegar nele) pra separar exploração de execução:
- Explore (Plan Mode): "leia /src/auth e entenda como tratamos sessões e login"
- Plan (Plan Mode): "quero adicionar Google OAuth. Quais arquivos precisam mudar? Crie um plano". Pressione
Ctrl+Gpra abrir o plano no editor e refinar. - Implement (Normal Mode): "implemente o flow de OAuth do plano. Escreva testes e rode tudo"
- Commit: "commita com mensagem descritiva e abre PR"
Plan mode não é necessário pra mudanças triviais (fix de typo, log line, rename). É essencial pra mudanças multi-arquivo, código que você não conhece, ou quando a abordagem está incerta.
Princípio 3: Contexto específico no prompt
Quanto mais preciso, menos correção depois.
| Antes | Depois |
|---|---|
| "adiciona testes pra foo.py" | "escreve teste pra foo.py cobrindo o edge case onde o usuário está deslogado. Sem mocks" |
| "por que ExecutionFactory tem essa API estranha?" | "olha o git history de ExecutionFactory e resume como a API chegou nesse formato" |
| "adiciona um widget de calendário" | "olha como widgets existentes na home page são implementados. HotDogWidget.php é bom exemplo. Segue o padrão pra implementar um calendar widget que..." |
| "corrige o bug do login" | "usuários reportam que login falha depois de session timeout. Olha o auth flow em src/auth/, especialmente token refresh. Escreva um teste que reproduz, depois corrige" |
Conteúdo rico
@arquivoem vez de descrever onde o código está. O Claude lê antes de responder.- Cole imagens direto (drag and drop ou Ctrl+V).
- Pipe dados:
cat error.log | claude -p "explica". - URLs pra docs externas. Use
/permissionspra allowlistar domínios frequentes.
Princípio 4: Gerencie contexto agressivamente
Rastreie consumo
/cost # Tokens e custo estimado
/context # O que está consumindo a janela
Dica: configure uma statusline customizada pra mostrar uso de contexto continuamente.
/clear entre tarefas
Comando mais subutilizado. Sempre que você muda de tarefa não-relacionada: /clear. Contexto stale gasta tokens em toda mensagem seguinte, mesmo que você não use o conteúdo antigo.
/compact com foco
Em vez de auto-compaction genérica, force foco específico:
/compact Foque nas mudanças de API e nos arquivos modificados
Você também pode customizar comportamento padrão no CLAUDE.md:
# Compact instructions
Quando compactar, sempre preserve a lista de arquivos modificados e os comandos de teste
/rewind em vez de corrigir
Se o Claude foi pra direção errada, Esc Esc ou /rewind pra voltar a um checkpoint. Limpa o contexto poluído com tentativas falhas.
Renomear sessão antes de clear
/rename oauth-implementation
/clear
# depois...
claude --resume oauth-implementation
Sessão preservada, contexto limpo, fácil de achar de novo.
/btw pra perguntas paralelas
Pergunta rápida que você não quer no histórico:
/btw qual a diferença entre Promise.all e Promise.allSettled?
Resposta aparece em overlay dismissível, não entra no contexto da conversa.
Princípio 5: Escolha o modelo certo
| Tarefa | Modelo |
|---|---|
| Coding geral | Sonnet |
| Arquitetura, decisões complexas, raciocínio multi-step | Opus |
| Sumarização, classificação simples, subagent leve | Haiku |
Trocar mid-session: /model. Default em settings: /config. Em subagent: model: haiku no frontmatter.
Sonnet faz a maioria das tarefas de código bem e é significativamente mais barato. Reserve Opus pra quando precisa de fato.
Effort level
/effort ajusta o quanto o modelo "pensa" antes de responder. Levels: low, medium, high, xhigh, max. Pra tarefas simples, baixe pra low e economize tokens de thinking, que são cobrados como output.
/effort low # tarefas mecânicas
/effort high # debugging difícil, refatoração grande
Pra desabilitar thinking completamente: /config. Ou MAX_THINKING_TOKENS=8000 no env.
Princípio 6: Reduza overhead de MCP
MCP tool definitions são deferidas por padrão (só nomes carregam). Mas se você tem muitos servidores ativos, ainda assim adiciona contexto. Audite com /mcp periodicamente:
- Desabilite servidores que você não está usando ativamente
- Prefira CLIs (
gh,aws,gcloud,sentry-cli) quando existirem. Não adicionam tool listing nenhuma - Code intelligence plugins pra linguagens tipadas dão navegação por símbolo, evitam grep + leitura de múltiplos arquivos candidatos
Princípio 7: Hooks pra preprocessar
Hook que filtra output verboso é uma das maiores fontes de economia. Em vez do Claude receber 10.000 linhas do npm test, você devolve só as 50 linhas com falhas.
#!/bin/bash
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command')
if [[ "$cmd" =~ ^(npm test|pytest|go test) ]]; then
filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"
echo "{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"allow\",\"updatedInput\":{\"command\":\"$filtered_cmd\"}}}"
else
echo "{}"
fi
10.000 linhas viram 100. Multiplique por toda chamada de teste numa sessão e a economia é absurda.
Mesma ideia vale pra:
- Logs grandes: filtre por nível
- Output de migration: pegue só erro/warning
findque retorna milhares de arquivos: limite comheade adicione filtro- Diff gigante: filtra por arquivo de interesse
Princípio 8: Mova instruções de CLAUDE.md pra Skills
CLAUDE.md carrega em toda sessão. Se tem instruções pra workflows específicos (review de PR, migration de banco, deploy), esses tokens estão presentes mesmo quando você está fazendo algo não-relacionado.
Skills carregam sob demanda. Mova instruções especializadas pra .claude/skills/<workflow>/SKILL.md. Mantenha CLAUDE.md em menos de 200 linhas com só o essencial que aplica em toda sessão.
Princípio 9: Delegue pra subagents
Operações verbosas (testes longos, leitura de muitos arquivos, processamento de logs) consomem contexto do principal. Delegue:
Use um subagente pra investigar como nosso sistema de auth lida com refresh
de token e se temos utilitários OAuth pré-existentes.
O subagente lê 30 arquivos, retorna um sumário de 500 tokens. Sua janela permanece limpa pra implementação.
Use também pra verificação:
Use um subagente pra revisar esse código por edge cases e race conditions.
Princípio 10: Course-correct cedo
Os melhores resultados vêm de feedback loops apertados. Embora o Claude às vezes resolva tudo na primeira, geralmente é melhor:
Escpra parar mid-action. Contexto preservado, você redirecionaEsc + Escou/rewindpra restaurar conversa e código a um checkpoint- "Undo that" pra reverter mudanças
/clearpra resetar entre tarefas não-relacionadas
Regra de ouro: se você corrigiu o Claude duas vezes no mesmo problema, o contexto está poluído com tentativas falhas.
/cleare começa de novo com prompt mais específico incorporando o que aprendeu. Sessão limpa com bom prompt quase sempre supera sessão longa com correções acumuladas.
Princípio 11: Use --bare pra scripts
Pra automações que rodam claude -p, pule overhead de discovery:
claude --bare -p "extraia todos os TODOs do código e formate como markdown"
--bare skip auto-discovery de hooks, skills, plugins, MCP servers, auto memory e CLAUDE.md. Só Bash + Read + Edit. Subida muito mais rápida pra scripts simples.
Princípio 12: Restrinja tools em batch
Pra operações em loop com claude -p, restrinja tools com --allowedTools:
for file in $(cat files.txt); do
claude -p "Migra $file de React pra Vue. Retorne OK ou FAIL." \
--allowedTools "Edit,Bash(git commit *)"
done
Menos chance de comportamento inesperado quando rodando sem supervisão.
Princípio 13: --exclude-dynamic-system-prompt-sections pra cache
Pra workloads scripted multi-user, essa flag move seções per-machine (working dir, env info, git status) do system prompt pra primeira mensagem do usuário. Isso melhora reuso de prompt cache entre máquinas/usuários diferentes rodando a mesma task.
claude -p --exclude-dynamic-system-prompt-sections "query"