Skip to content

onblueroses/claude-code-wrapped

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

claude-code-wrapped

Your Claude Code year in review. Same idea as Spotify Wrapped, except for your dev sessions with Claude.

I built this because I couldn't answer basic questions about my own usage. How much have I spent? Is my caching actually doing anything? Am I reaching for Opus when Haiku would do just fine? The Claude dashboard has token counts and a cost total - that's it. I wanted something that reads the data and tells me what it means.

It reads ~/.claude/projects/**/*.jsonl directly - nothing leaves your machine - and writes a terminal recap, an HTML report, a shareable card, and an optional per-project prompt archive.

Opening slide showing archetype and hero stats

Season spend and power hour slides Cache grade and favorite tool slides

Model mix, projects, sessions, and subagents

The --card flag generates a shareable story card (no project names, no paths):

Shareable card for social media

I want to... Go to
Install and run it Quick start
See all flags Flags
Understand what it computes What it measures
Contribute or hack on it Development

Quick start

cargo install --git https://github.com/onblueroses/claude-code-wrapped
ccwrapped

That's it. It finds your Claude Code history automatically at ~/.claude/projects/.

Flags

ccwrapped [YEAR]               # default: current year, terminal output only
ccwrapped --html               # also write claude-code-wrapped.html
ccwrapped --card               # write a shareable 1080x1920 HTML card
ccwrapped --markdown           # write claude-code-wrapped.md
ccwrapped --all                # write all formats (html + card + markdown)
ccwrapped --open               # open written files in browser
ccwrapped --archive            # write per-project prompt files to ./wrapped-archive/ (contains prompt excerpts - don't share)
ccwrapped --json               # print raw JSON to stdout, no other output
ccwrapped --plain              # disable colors (also respects NO_COLOR env var)

By default, ccwrapped prints a full report to your terminal and writes nothing to disk. Use --html, --card, or --all to export files. Use --plain when running in environments that don't render ANSI colors (e.g. piped output, Claude Code bash tool).

The --card flag writes a 1080x1920 HTML file: CSS animations, no JavaScript, no project names or paths. It screenshots cleanly and shares without leaking anything about what you're working on.

What it measures

Cost — total spend and per-model breakdown, using costUSD from your JSONL records directly (not estimated from tokens).

Cache health — hit rate, efficiency ratio, estimated savings, and an A–F grade. The grade factors in both your cache hit rate and how often your cache gets invalidated.

Model routing — distribution across Opus/Sonnet/Haiku and what it implies about your workflow. If you're running Opus on everything, it'll say so.

Session shape — busiest hour, favorite weekday, longest streak, burst vs. steady-tempo pattern. These feed into your archetype.

Prompt ratio — how many messages came from you vs. tool callbacks. A low human percentage usually means long agentic runs.

Archetypes — one of four patterns (Precision Maximalist, Delegation Director, Flow-State Builder, Balanced Operator) derived from your model mix and message cadence. A separate momentum card (Burst-mode Operator or Measured Tempo) captures your day-to-day pacing.

Recommendations — data-driven suggestions based on what the data actually shows: cache patterns, model routing, session structure.

How it works

~/.claude/projects/**/*.jsonl
         │
         ▼
    readers/          parse JSONL, group by session, count prompts
         │
         ▼
    analyzers/        cost, cache grade, model routing, wrapped story
         │
         ▼
    renderers/        terminal, HTML, markdown, share card
         │
         ▼
    output files

Privacy

Everything runs locally — no network calls, no telemetry.

The --card output is designed for sharing: it contains only aggregate stats, no project names or file paths. The --archive output contains prompt excerpts — don't share it.

The main HTML report includes project names and directory paths derived from your JSONL history. If you screenshot it, be aware those are visible. The terminal output and markdown output also include project names.

Development

git clone https://github.com/onblueroses/claude-code-wrapped
cd claude-code-wrapped
cargo build --release
cargo test
./target/release/ccwrapped --no-open

See CONTRIBUTING.md for PR conventions.

License

MIT — see LICENSE.

About

Spotify Wrapped for Claude Code. One command turns your local Claude history into a terminal recap and HTML report.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages