Executando verificação de segurança...
7

Como criei uma Skill que Economiza 84% dos Tokens no Claude Code

O problema: tokens queimando em silêncio

Toda vez que você abre uma sessão no Claude Code, ele carrega automaticamente os arquivos de contexto do projeto: CLAUDE.md, AGENTS.md, hooks, skills. O que pouca gente percebe é que esses arquivos consomem tokens antes mesmo de você digitar a primeira mensagem.

No nosso projeto — um app React Native com arquitetura Clean Architecture — a situação era essa:

CLAUDE.md (1 linha) → referenciava @AGENTS.md (713 linhas)
.claude/CLAUDE.md → 116 linhas
hooks.json → 5 hooks (rodando em cada mensagem e cada write)
MEMORY.md → 70 linhas (redundante com CLAUDE.md)
────────────────────────────────────
Total por sessão: ~830+ linhas de contexto automático

Eram 830 linhas carregadas antes de qualquer prompt. E pior: muitas eram duplicadas entre os arquivos.


Passo 1: Auditar o que está sendo carregado

A primeira coisa foi entender exatamente o que o Claude Code carrega em cada sessão. A regra é simples:

  • CLAUDE.md (raiz do projeto): sempre carregado
  • .claude/CLAUDE.md: sempre carregado
  • Referências @arquivo: expandidas inline (o @AGENTS.md estava injetando 713 linhas)
  • MEMORY.md: sempre carregado (memória persistente entre sessões)
  • Hooks: executados nos eventos configurados (cada hook "prompt" faz uma chamada de API)
  • Skills: só carregam quando invocadas (custo zero se não usadas)

O diagnóstico foi claro: AGENTS.md era o vilão, e os hooks estavam multiplicando chamadas desnecessárias.


Passo 2: Compactar o MEMORY.md

O MEMORY.md tinha 70 linhas com informações que já existiam no CLAUDE.md:

  • Diagrama de arquitetura (duplicado)
  • Code Standards (duplicado)
  • Histórico detalhado de sessão anterior (desnecessário)

Ação: Removemos tudo que já estava coberto pelos arquivos de projeto e mantivemos apenas informação exclusiva da memória:

# project - Memory

## Dark Premium Theme (actual hex values)
- Background: #031426
- Emerald: #2BAE7B, #23C98E, #0A3D2E
...

## Pre-existing TS Errors (not ours)
- CreateGroupScreen: disabled prop on TextInput
- PaywallScreen: plan type mismatches
...

## Screens Redesigned (Feb 2026)
- Bets: BetsHub, MarketsList, MyBets...

Resultado: 70 linhas → 22 linhas (~70% de redução).

A regra de ouro: a memória só deve conter o que NÃO existe em nenhum outro arquivo de contexto.


Passo 3: Unificar os hooks

Os hooks eram o custo oculto mais caro. Veja o que tínhamos:

HookEventoFrequência
Style validatorPreToolUse (Write/Edit)Cada write/edit
i18n validatorPreToolUse (Write)Cada write
Accessibility validatorPreToolUse (Write)Cada write
Commit formatUserPromptSubmitCada mensagem
Session contextSessionStart1x por sessão

O problema: cada Write disparava 3 chamadas de API separadas (uma para cada hook de validação). E o hook de commit rodava em toda mensagem do usuário, mesmo que 99% das vezes não fosse sobre commits.

Ação: Unificamos tudo em um único hook:

{
  "PreToolUse": [
    {
      "matcher": "Write|Edit",
      "hooks": [
        {
          "type": "prompt",
          "prompt": "Check if the tool input contains React Native/TypeScript code. If so, WARN about:\n1. STYLES: Inline StyleSheet.create()...\n2. I18N: Hardcoded user-facing strings...\n3. ACCESSIBILITY: Missing accessibilityRole..."
        }
      ]
    }
  ]
}

Resultado: 5 hooks → 1 hook. De até 4 chamadas extras por turno para no máximo 1 (e só quando escreve arquivo).

O SessionStart foi removido porque o .claude/CLAUDE.md já carrega o mesmo contexto. O UserPromptSubmit de commit foi removido porque rodava em toda mensagem para um caso raríssimo.


Passo 4: Eliminar a duplicação AGENTS.md ↔ CLAUDE.md

Este foi o passo com maior impacto. Tínhamos dois arquivos carregados toda sessão:

  • AGENTS.md (713 linhas): guia completo com exemplos de código, checklists, padrões
  • .claude/CLAUDE.md (116 linhas): resumo conciso do projeto

O problema: 80% do AGENTS.md era redundante com o CLAUDE.md. Ambos tinham:

  • Overview do projeto
  • Diagrama de arquitetura
  • Naming conventions
  • Lista de "Don'ts"
  • Theme tokens
  • Padrões de estilo

Ação em 3 passos:

  1. Identificamos o conteúdo único do AGENTS.md (Real-Time Sync, UI Component structure, BDD refs, Firebase schema, Feature checklist)
  2. Migramos esse conteúdo para o .claude/CLAUDE.md de forma compacta
  3. Removemos a referência @AGENTS.md do CLAUDE.md raiz

O CLAUDE.md raiz ficou assim:

See .claude/CLAUDE.md for full project context and rules.
Pay special attention to Real-Time Sync, Optimistic UI, and Component Guidelines.

E o .claude/CLAUDE.md absorveu o conteúdo único de forma concisa. Por exemplo, a seção de Real-Time Sync que tinha 6 linhas no AGENTS.md virou:

### Real-Time Sync & Optimistic UI
- **Local-First**: Use onSnapshot listeners, not getDoc/getDocs
- **Domain naming**: Repository subscriptions use watch prefix and return () => void unsubscribe
- **UI**: Call watch* in useEffect — avoid useFocusEffect refetch after CRUD

Resultado: 830 linhas → 135 linhas (~84% de redução).

O AGENTS.md continua existindo como documentação de referência — ele não foi deletado. Apenas não é mais carregado automaticamente em cada sessão.


Passo 5: Criar o Smart Dispatch (a cereja do bolo)

Com o contexto otimizado, criamos uma skill global para resolver outro problema: usar o modelo certo para cada tarefa.

O Claude Code permite especificar o modelo ao criar subagents via o parâmetro model do Agent tool. Isso significa que podemos rotear tarefas automaticamente:

opus   → arquitetura, planejamento, decisões complexas
sonnet → implementação de lógica de negócio
haiku  → estilos, testes, i18n, boilerplate

Criamos a skill em ~/.claude/skills/smart-dispatch/SKILL.md:

---
name: smart-dispatch
description: Automatically routes tasks to optimal Claude models
  (opus/sonnet/haiku) based on complexity. Use when implementing
  features, fixing bugs, or any multi-step development work.
---

# Smart Model Dispatch

## Model Routing Rules

### opus — Complex reasoning & architecture
- Architecture planning and design
- Complex business logic implementation
- Feature planning and requirement analysis

### sonnet — Standard implementation
- Business logic (use cases, repositories, stores)
- Screen/component implementation with logic
- Firebase/API integration

### haiku — Fast, mechanical tasks
- Generating .styles.ts files
- Writing i18n translation files
- Creating boilerplate and mocks
- Writing unit tests
```markdown

A skill inclui regras claras de quando usar cada modelo e exemplos de dispatch paralelo:

```markdown
Exemplo: "Implementa a feature Watchlist"

1. [opus]   Planeja arquitetura
2. [sonnet] Implementa domain + data layers
3. [sonnet] Implementa screen com ViewModel
4. [haiku]  Gera .styles.ts, i18n, mocks
5. [haiku]  Escreve testes unitários

Por ser uma skill global (em ~/.claude/skills/), ela funciona em qualquer projeto, não apenas no Vai ter fut.


Resultado final

Antes e depois em números:

MétricaAntesDepoisRedução
Contexto por sessão830 linhas135 linhas84%
Hooks executados5 (até 4 por turno)1 (só em Write/Edit)80%
MEMORY.md70 linhas22 linhas70%
Chamadas de API extras~4 por turno~1 por turno75%

E o Smart Dispatch garante que cada subtarefa usa o modelo com melhor custo-benefício, sem intervenção manual.


Lições aprendidas

1. Audite seus arquivos de contexto regularmente. Conforme o projeto cresce, os arquivos vão acumulando duplicações. O que era útil há 3 meses pode estar redundante hoje.

2. Hooks "prompt" são chamadas de API. Cada hook do tipo prompt faz uma chamada separada ao modelo. Três hooks no mesmo evento = três chamadas. Unifique sempre que possível.

3. Nem tudo precisa rodar em toda mensagem. O hook de commit format rodava em 100% das mensagens para ser útil em 1% delas. Se algo é raro, não coloque no UserPromptSubmit.

4. Skills são grátis até serem invocadas. Diferente de hooks e CLAUDE.md, skills só consomem tokens quando chamadas. Use skills para conteúdo detalhado e mantenha o CLAUDE.md enxuto.

5. O modelo certo para a tarefa certa. Não faz sentido usar o Opus para gerar um arquivo .styles.ts. O Haiku faz o mesmo trabalho com fração do custo e tempo. Reserve poder computacional para onde ele importa.


Reproduza no seu projeto

O processo completo em 5 comandos mentais:

  1. Conte as linhas dos seus arquivos de contexto (CLAUDE.md, AGENTS.md, MEMORY.md)
  2. Marque duplicações entre eles — provavelmente 50%+ é redundante
  3. Unifique hooks do mesmo evento em um só
  4. Remova hooks desnecessários (SessionStart redundante, UserPromptSubmit para casos raros)
  5. Crie a skill de dispatch para rotear modelos automaticamente

O arquivo de skill é simples, global, e funciona em qualquer projeto. Copie o nosso como ponto de partida.

Carregando publicação patrocinada...
2

Vejo o ChatGPT como algo mais simples e que não se precisa ter essa preocupação de consumo de tokens. Uso o Plus e o plugin do Codex no VSCode. Não me falta nada. Não preciso monitorar nada. Pago meus U$ 20 por mês e não sou aporrinhado.

Já usários de Claude eu vejo aqui e ali uma preocupação legítima com o consumo pois ele é tem alguns quotas de consumo além de queimar "fácil" tokens.

Por enquanto não tem porquê eu trocar o ChatGPT pelo Claude, sendo que vejo tanto sofrimento por aí e não estou afim de me estressar com consumo e limitações após atingimento de quotas.

2

Olá Caio.

Sua resposta fez eu deixar de ser um mero expectador do TabNews. Fui obrigado a criar uma conta para te responder hehe.

Amigo, eu sempre usei o plano pro do ChatGPT e estava bem acomodado com isso. Minhas personalizações nele já eram tantas.. eu tinha muita coisa lá. Já vinha usando o codex desde o lançamento e estava com o mesmo pensamento que você. É sério, heavy user do GPT.
Com a atualização do modelo 5.2 de janeiro/fevereiro as respostas começaram a ficar horríveis.
Eu fiquei muito P. porque as respostas regrediram absurdamente.

Foi então que resolvi dar uma chance ao claude code e confesso que me arrependo de não ter migrado antes.

Eu te faço um desafio.

Use o claude code por 2 horas.

Espero muito que sua cabeça exploda como a minha explodiu ao ver do que essa ferramenta é capaz.

1

Eu uso o codex tbm, chat gpt pra chat e usor diversos. Mas o claude code se supera em muitos aspectos. Velocidade, qualidade e mais, O limite hoje é jm problema com o agravante de ser compartilhado entre chat, Web e code pro claude.

Porem como o Mauricio comentou vale testar.

Abs