claude-usage

Ground-truth token usage and cost reporting for Claude Code sessions. Parses JSONL files directly—parent sessions and subagent sidechains—to produce accurate numbers.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "claude-usage" with this command: npx skills add tdimino/claude-code-minoan/tdimino-claude-code-minoan-claude-usage

Claude Usage

Ground-truth token usage and cost reporting for Claude Code sessions. Parses JSONL files directly—parent sessions and subagent sidechains—to produce accurate numbers.

Why This Exists

ccusage (v18+, the standard community tool with 10.6k stars) undercounts output tokens by 77-94% for heavy users:

Source Output Tokens Notes

Raw JSONL (all files) 1,076,691 Ground truth

Raw JSONL (date-filtered) 412,987 Properly filtered

ccusage --timezone UTC 93,960 77% undercount

ccusage default 62,375 94% undercount

Three compounding bugs:

  • Ignores subagent files at {session-uuid}/subagents/{agent-id}.jsonl —132 files missed on a typical day with Agent Teams

  • Timezone confusion between UTC entry timestamps and local time filtering

  • Drops entries in parent files—even at UTC, reports only 23% of actual tokens

This script reads every JSONL file to produce correct totals.

Usage

Today's usage (default)

python3 ~/.claude/skills/claude-usage/scripts/claude_usage.py

Last 7 days, broken down by day

python3 ~/.claude/skills/claude-usage/scripts/claude_usage.py --since 7d

Weekly breakdown for the past month

python3 ~/.claude/skills/claude-usage/scripts/claude_usage.py --by week --since 30d

Per-model breakdown

python3 ~/.claude/skills/claude-usage/scripts/claude_usage.py --by model --since 7d

Per-session with human-readable summaries

python3 ~/.claude/skills/claude-usage/scripts/claude_usage.py --by session --since 1d

Per-project breakdown

python3 ~/.claude/skills/claude-usage/scripts/claude_usage.py --by project --since 7d

Filter to one project

python3 ~/.claude/skills/claude-usage/scripts/claude_usage.py --project Thera --since 30d

Custom date range

python3 ~/.claude/skills/claude-usage/scripts/claude_usage.py --since 2026-02-01 --until 2026-02-28

JSON output (pipe to jq)

python3 ~/.claude/skills/claude-usage/scripts/claude_usage.py --since 7d --json | jq '.grand_total'

CSV output

python3 ~/.claude/skills/claude-usage/scripts/claude_usage.py --since 7d --csv

Compare against ccusage (shows delta)

python3 ~/.claude/skills/claude-usage/scripts/claude_usage.py --compare

PDF report (dark editorial, CTO-ready)

python3 ~/.claude/skills/claude-usage/scripts/claude_usage_report.py --since 30d

PDF with custom output path

python3 ~/.claude/skills/claude-usage/scripts/claude_usage_report.py --since 30d -o ~/Desktop/feb-usage.pdf

HTML only (no Playwright needed)

python3 ~/.claude/skills/claude-usage/scripts/claude_usage_report.py --since 7d --html

Output Columns

Column Description

Input Prompt tokens (charged at input rate)

Output Response tokens (most expensive category)

CacheW Cache write tokens (cache_creation_input_tokens )

CacheR Cache read tokens (significantly cheaper than input)

Total Sum of all four token types

Cost Estimated USD from the hardcoded pricing table

Aggregation Modes (--by )

Mode Groups by Example key

day (default) Calendar date in local timezone 2026-02-20

week

ISO week number 2026-W08

month

Month 2026-02

session

Session UUID (resolved to summary from sessions-index.json) 8a6c801a Working on Claudicle...

model

Model name claude-opus-4-6

project

Project directory (decoded to path) ~/Desktop/Programming

Pricing Table

Prices are hardcoded in the PRICING dict at the top of claude_usage.py . Update when Anthropic changes rates. Keys are model name substrings matched most-specific-first.

Current defaults (USD per million tokens, verified 2026-02-21):

Model Input Output Cache Write (1h) Cache Read

Opus 4.5 / 4.6 $5.00 $25.00 $10.00 $0.50

Opus 4.0 / 4.1 $15.00 $75.00 $30.00 $1.50

Sonnet 4.x $3.00 $15.00 $6.00 $0.30

Haiku 4.5 $1.00 $5.00 $2.00 $0.10

Sonnet 3.7 / 3.5 $3.00 $15.00 $6.00 $0.30

Haiku 3.5 $0.80 $4.00 $1.60 $0.08

Opus 3 $15.00 $75.00 $30.00 $1.50

Haiku 3 $0.25 $1.25 $0.50 $0.03

Cache write column shows the 1-hour rate (2x base input). Claude Code uses 1-hour prompt caching exclusively. The 5-minute rate (1.25x base input) is also supported when the JSONL cache_creation sub-object provides a TTL split.

Timezone Handling

JSONL timestamps are UTC. The script converts to the system's local timezone (or --tz America/New_York ) before applying --since /--until filters. This prevents the midnight-boundary confusion that causes ccusage to drop entries when the UTC date differs from the local date.

Data Sources

JSONL files at ~/.claude/projects/{encoded-path}/ :

  • Parent sessions: {session-uuid}.jsonl

  • Subagent sidechains: {session-uuid}/subagents/{agent-id}.jsonl

  • Session metadata: sessions-index.json (summaries for --by session )

The script uses streaming line-by-line reads (O(1) memory) to handle files exceeding 300MB.

PDF Reports

claude_usage_report.py generates a dark editorial PDF with Crimson Pro + JetBrains Mono typography, gold Minoan accents, bar charts, model distribution with color-coded stacked bars, token composition breakdown, and detailed tables. Designed for executive sharing.

Requires Playwright (uv pip install --system playwright && playwright install chromium ). Uses Chromium for pixel-perfect CSS rendering—same engine as the Aldea Slide Deck skill. Falls back to HTML output with --html flag.

Caveats

  • Estimated accuracy: ~95%. The remaining gap comes from data residency multipliers (1.1x for US-only inference, not tracked) and potential edge cases in streaming chunk boundaries.

  • Streaming chunks are deduplicated by message ID using last-wins strategy—output_tokens monotonically increases across chunks, so only the final chunk per message ID has the correct value. Without dedup, costs were overcounted by 2-5x.

  • Cost is estimated from the pricing table. Anthropic billing may differ due to batch discounts or promotional pricing.

  • Cache write pricing uses the 1-hour rate by default (Claude Code's caching mode). When JSONL provides cache_creation.ephemeral_5m_input_tokens / ephemeral_1h_input_tokens , rates are split accordingly.

  • Synthetic entries (model: "<synthetic>" ) and billing error entries (all-zero token counts) are automatically filtered.

  • Malformed JSON lines and duplicate streaming chunks are counted and reported in the output footer.

  • Requires Python 3.9+ for zoneinfo module.

  • PDF reports require Playwright with Chromium (playwright install chromium ). Includes a Pricing Methodology section with full rate table, formula, and confidence badge.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

travel-requirements-expert

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

twilio-api

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

twitter

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

academic-research

No summary provided by upstream source.

Repository SourceNeeds Review