cost-tracking
Monitora e informa o uso de tokens e custos do agente. É útil para controlar gastos e orçamentos de forma eficiente.
O que ela faz
Esta ferramenta ajuda você a ver quanto dinheiro você gastou e quantos tokens usou com o Claude Code. Ela lê um arquivo de registro que é criado automaticamente quando você termina uma sessão.
Quando usar
- ✓Quando você pergunta quanto gastou ou usou.
- ✓Quando você quer saber o custo por modelo ou por dia.
- ✓Quando você menciona orçamentos ou limites de gastos.
Exemplo do que pedir para a IA
“Quanto eu gastei no Claude Code esta semana?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta verifica um arquivo especial chamado 'costs.jsonl' que o Claude Code cria. Ela lê as informações mais recentes de cada sessão para calcular o total.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill cost-trackingOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/skills/cost-tracking/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Rastreamento de Custos
Use esta habilidade para analisar o histórico de custos e uso do Claude Code a partir do log de métricas que o hook stop:cost-tracker do ECC escreve.
Onde os dados ficam
O rastreador anexa um objeto JSON por parada de sessão em ~/.claude/metrics/costs.jsonl. Cada linha é um snapshot cumulativo para aquela sessão, então para totalizar os gastos, pegue a última linha por session_id e some entre as sessões — somar todas as linhas multiplica a contagem.
O ECC também mantém arquivos internos por sessão em ~/.claude/metrics/cost-snapshots/ para que os hooks de tempo de execução possam ler o total da sessão atual sem reescanear todo o histórico. Trate esses arquivos como um cache reconstruível; cada snapshot armazena um cursor de byte para que apenas as linhas recém-anexadas sejam escaneadas. Leituras estáveis são O(1), enquanto atualizações são O(novos bytes). Entradas desatualizadas são podadas após 30 dias ou quando o diretório excede 512 sessões. O trabalho de recuperação a frio é limitado a 16 MiB por invocação de hook, e linhas malformadas e não terminadas maiores que 1 MiB são descartadas com um cursor reiniciável. Relatórios e exportações devem continuar a usar costs.jsonl.
Esquema da linha:
| Campo | Significado |
|---|---|
timestamp |
Timestamp ISO do snapshot |
session_id |
Identificador da sessão do Claude Code |
transcript_path |
Caminho para a transcrição da sessão |
model |
Modelo utilizado |
input_tokens / output_tokens |
Contagens de tokens |
cache_write_tokens / cache_read_tokens |
Contagens de tokens do prompt-cache |
estimated_cost_usd |
Custo cumulativo pré-calculado em USD para a sessão |
Prefira estimated_cost_usd em vez de calcular os preços manualmente — os preços dos modelos e do cache mudam, e o rastreador é a fonte da verdade.
Quando Usar
- O usuário pergunta "quanto eu gastei?", "quanto custou esta sessão?" ou "qual é o meu uso de tokens?".
- O usuário menciona orçamentos, limites de gastos, estouros ou controles de custos.
- O usuário deseja um detalhamento de custos por modelo, sessão ou data, ou uma exportação CSV.
Como Funciona
Primeiro, verifique se o log existe (use node, não sqlite3 — o rastreador escreve JSONL, e node é multiplataforma):
node -e 'const fs=require("fs"),os=require("os"),p=require("path");const f=p.join(os.homedir(),".claude","metrics","costs.jsonl");console.log(fs.existsSync(f)?"cost log found":"cost log not found: "+f)'
Se o log estiver faltando, não invente dados de uso. Informe ao usuário que o rastreamento de custos é preenchido após o término da primeira sessão com o hook stop:cost-tracker ativado.
Exemplo — resumo, por modelo, últimos 7 dias
node -e '
const fs=require("fs"),os=require("os"),path=require("path");
const f=path.join(os.homedir(),".claude","metrics","costs.jsonl");
if(!fs.existsSync(f)){console.log("cost log not found: "+f);process.exit(0);}
const rows=fs.readFileSync(f,"utf8").split(/\r?\n/).filter(Boolean).map(l=>{try{return JSON.parse(l)}catch{return null}}).filter(Boolean);
const bySession=new Map();
for(const r of rows){const k=r.session_id||r.transcript_path||r.timestamp;const p=bySession.get(k);if(!p||String(r.timestamp)>String(p.timestamp))bySession.set(k,r);}
const latest=[...bySession.values()];
const cost=r=>Number(r.estimated_cost_usd)||0, day=r=>String(r.timestamp||"").slice(0,10), sum=a=>a.reduce((s,r)=>s+cost(r),0), f4=n=>"$"+n.toFixed(4);
const today=new Date().toISOString().slice(0,10), yest=new Date(Date.now()-864e5).toISOString().slice(0,10);
console.log("today: "+f4(sum(latest.filter(r=>day(r)===today)))+" | yesterday: "+f4(sum(latest.filter(r=>day(r)===yest)))+" | total: "+f4(sum(latest))+" ("+latest.length+" sessions)");
const m=new Map();for(const r of latest){const k=r.model||"(unknown)";m.set(k,(m.get(k)||0)+cost(r));}
console.log("by model:");[...m.entries()].sort((a,b)=>b[1]-a[1]).forEach(([k,v])=>console.log(" "+f4(v)+" "+k));
'
Para um detalhamento de sessão ou exportação CSV, itere o mesmo conjunto de latest (ou as linhas brutas para CSV) e imprima os campos que você precisa.
Orientações de Relatório
Ao apresentar dados de custos, inclua os gastos de hoje versus ontem, o total em todas as sessões, um detalhamento por modelo e a contagem de sessões. Formate valores abaixo de um dólar com quatro casas decimais, e valores maiores com duas.
Anti-Padrões
- Não some todas as linhas — elas são cumulativas por sessão; reduza primeiro para a última linha por
session_id. - Não estime custos a partir de contagens de tokens brutas quando
estimated_cost_usdestiver presente. - Não presuma que o log existe sem verificar.
- Não codifique preços atuais de modelos em respostas voltadas para o usuário.
…
Perguntas frequentes
O que são 'tokens'?
Tokens são como pedaços de palavras que o Claude Code usa para entender e gerar texto. Quanto mais texto, mais tokens.
Por que o arquivo 'costs.jsonl' é importante?
É onde todas as informações de custo e uso são salvas. Sem ele, a ferramenta não consegue te mostrar seus gastos.
O que acontece se eu não vir nenhum custo?
Pode ser que o registro de custos ainda não tenha sido criado. Ele só aparece depois que você termina sua primeira sessão com o rastreador ativado.
Detalhes
Descrição original do autor
Track and report Claude Code token usage, spending, and budgets from the local ECC cost-tracker metrics log. Use when the user asks about costs, spending, usage, tokens, budgets, or cost breakdowns by model, session, or date.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #164
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
context-engineering
Otimiza a configuração inicial e as regras para o agente. É útil para garantir que o agente tenha o contexto certo para realizar tarefas de forma eficiente e com qualidade.
addyosmani/agent-skills
doubt-driven-development
Questiona todas as decisões importantes antes de serem tomadas. É útil quando a precisão é crucial, para garantir que não haja falhas escondidas e que o plano seja robusto.
addyosmani/agent-skills
idea-refine
Transforma ideias vagas em planos claros e realizáveis. Ajuda a pensar em diferentes opções e a escolher o melhor caminho a seguir.
addyosmani/agent-skills