agent-wrapped(1)User Commands

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.

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

Author

Lucas Campos · Substack · LinkedIn · GitHub

MIT licenceagent-wrapped.dev