Name
agent-wrapped
A wrapped card for how you actually work with Claude Code —
read from your own logs, rendered on your machine, sent nowhere.
Synopsis
npx @lfgcampos/agent-wrapped
Node 22+. No install, no account, no config.
Output
CLAUDE CODE · 33 OF 41 DAYS ACTIVE 2026-07-16 → 2026-08-25 394 : 1 tokens read for every token written 4-day streak · longest 18 · 5h 48m at a stretch · you work most at 3pm ▂▂▂▅▅▁▁▁▁▁▁▂▁▁▂█▆▇▃▄▅▆▆▃ 19% of your writing is weekend work 00 23 98% of what it read was cache — the same context, re-sent 42% of your calls were subagents… 6% …but they wrote only that share of the words 58% of your writing went to 3 of your 19 repos 96% of your writing came from Opus 5, of 4 models you used WHAT YOU REACH FOR (% of 49,566 tool calls) ██████████████ 62% Bash ███░░░░░░░░░░░ 14% Read ██░░░░░░░░░░░░ 13% Edit █░░░░░░░░░░░░░ 4% Write 15.2 agent turns for every message you send · 733 sessions BATTLE SCARS 4 times you hit the usage limit, across 3 weeks 14 times the server was overloaded on you agent-wrapped.dev
Privacy
Everything happens on your machine. There is no server to send anything to.
- No network calls. No account, no analytics, no version check.
- Zero runtime dependencies. No third-party code to audit but this.
- About a thousand lines. Read it and confirm both claims yourself.
It reads two paths, both read-only: ~/.claude/projects and
~/.claude/settings.json. Your repository names are never rendered,
never logged, and never written to --json — they are grouping keys,
discarded before display. A screenshot is safe to post.
What the numbers mean
Every percentage names its denominator, because the same figure can be honest two different ways.
- 394 : 1
- Context tokens read per token written. Rate-free and comparable between people, however heavily they use Claude Code.
- 98% cache
- Cache reads over all context read — not over all tokens.
- 42% / 6% subagents
- Share of calls, then share of words written. Reported as a pair on purpose: subagents read heavily and write little.
- 96% Opus 5
- Tokens written by that model over all tokens written. Two context tiers of one model are one model, not two.
- 33 of 41 days active
- Days you worked over the span from your first to your last active day. For most people that span is the retention window rather than a period they chose, which is why the window is printed beside it.
- 5h 48m at a stretch
- The longest run of calls with no pause over 30 minutes in it. Deliberately not the span of a session: Claude Code resumes sessions, so one session id can cover days of wall clock with a weekend in the middle.
- Skill, repo and model shares
- Weighted by tokens written, never by total tokens. Totals are dominated by cache reads, which would flatten everything to the same value.
- Tool mix
- Calls to that tool over all tool calls — the one share counted by calls rather than by tokens written.
- Omitted sections
- A source that cannot know a figure omits that section rather than printing 0%. An absent panel means "not knowable here", never "none".
There are no costs anywhere, deliberately. Pricing local usage at API rates values a behaviour that only exists because it is not billed that way, so the number would be fiction rather than a saving.
Options
- --since 30d
- Limit to a window:
30d,12w,6m, or a date. Faster than a full run — older transcripts are never opened. - --source claude-code
- Read only one agent. Without it, every agent found on the machine is read — detection, not configuration.
- --html
- Write a self-contained page to
~/.agent-wrapped/card.html, with a Save-as-image button that renders a shareable PNG in your browser. - --json
- Raw stats, for your own charts.
Each full run saves a ~1 KB snapshot and compares against the last one, so you can keep a year of history without keeping a year of transcripts.
Questions
How do I see my Claude Code usage statistics?
Run npx @lfgcampos/agent-wrapped in a terminal. It reads the transcripts Claude
Code already keeps on your machine and prints a summary card: token read:write
ratio, cache share, subagent share, model mix, tool mix, session counts, streaks
and your hourly rhythm. Nothing is uploaded and no model is called, so it
returns in seconds.
Where does Claude Code store its transcripts and conversation history?
In ~/.claude/projects, as JSONL files — one directory per project,
one file per session. Your settings, including retention, live in
~/.claude/settings.json. Those are the only two paths agent-wrapped
reads, both read-only.
How long does Claude Code keep transcripts?
About 30 days by default, after which older transcripts are deleted. The setting
is cleanupPeriodDays in ~/.claude/settings.json. Most
people therefore have a month of history rather than a year, which is why
agent-wrapped warns you before that window closes on data you have not summarised
yet. Raising it is a disk decision: a heavy user writes roughly 25 MB a day,
so a full year is around 9 GB.
Does agent-wrapped send my data anywhere?
No. There are no network calls at all — no server, no account, no analytics, no
version check — and zero runtime dependencies, so there is no third-party code in
the package. Your repository names are never rendered, never logged and never
written to --json, so a screenshot of the card is safe to post.
How is this different from Claude Code’s /insights?
They answer different questions. /insights asks a model to write a
narrative about what it was like working with Claude — friction,
satisfaction, interruptions. It costs tokens and takes time. agent-wrapped answers
what does my usage look like as a number, deterministically and instantly,
with no model call, in a form you can share.
Does it work with Cursor, Codex, or other coding agents?
Not yet — Claude Code is the only implementation today. Architecturally it is no longer Claude-Code-only: agents sit behind a source interface, and every agent found on your machine is read without a flag, so adding one is a new source rather than a rewrite. Cursor and Codex support are tracked as issue 3 and issue 4, not something to file a new issue for.
See also
- Source and issues — on GitHub
- The package — on npm
- Changelog — what changed in each version
- This page in Markdown — plain text, for agents and scripts
- llms.txt — a machine-readable index of everything above
- whatkindof.dev — asks how you think you work; this reads what your logs say
Author
Lucas Campos · Substack · LinkedIn · GitHub