Harry Nguyen
javascriptechartsedadataviz

What the work cost.

Measuring how the models actually perform on my own work: what each session cost, which models held their reliability and at what price, when output happens across weekday and hour, resource utilization, which skills the output is attributable to, and a full exploratory data analysis rendered with ECharts. Every figure is computed in the browser from my own Claude Code session history. The same revenue-cycle rigor, pointed at my own workflow.

Loading…
Reading the console

What each panel counts.

Every figure above is computed in the browser from a captured snapshot of my own Claude Code session history. Nothing is sampled and nothing is modeled. The terms below are the units those figures are denominated in, so the numbers mean something specific rather than generally impressive.

iclaude-memevent logtypes

Observation

The unit of record, and the denominator under most of this page. One observation is a single captured event from a session, written by claude-mem as the work happens rather than reconstructed afterward, so the counts track effort rather than elapsed time. Each carries a type, and the mix is the shape of the work: bugfix, feature, refactor, change, discovery, decision, and the two security kinds, security_alert for something that needs acting on and security_note for something worth recording. A week heavy on bugfix and light on feature reads differently from the reverse, and neither is visible from a commit count.

iisessionsturnsbudget

Thermodynamics

Each strand is one session, read left to right. A node on the strand is a turn, and its position splits that turn's token spend between what I sent and what Claude returned, measured against the budget for the turn. Color along the spectrum is the cache hit rate, so a strand that stays warm reused context and a strand that cools kept paying to resend it. Read a strand end to end to see who consumed the turn.

iiiprompt cachetokens

Cache resolution

What the prompt cache saved. Every session records the tokens it would have sent without a cache hit against the tokens it actually sent, and the gap between the two is the share resolved from cache. A low rate means context was being resent rather than reused, which costs money and buys nothing, so this is the number that explains a session that felt cheap and was not.

ivattributionskillstools

Resource utilization

The same period re-cut three ways. The toggle switches between attribution, skills, and tools, so one panel answers which skills carried the output, which tools it actually ran through, and how the credit distributes, without changing the window underneath. A tall bar is something doing a lot of the work, which is not the same as something being invoked a lot.

vanthropicmarketplacecustommcp

Provenance × Volume

Every skill and tool sorted into four families by where it came from: Anthropic for what ships with Claude Code, marketplace for installed plugins, custom for the ones I wrote, and MCP for external servers. Each family carries its own color, sized by how much volume ran through it. The question it answers is whether the output leans on what came in the box or on what I built.

visphereattribution

Skill Nexus

Which skills the output is attributable to, read from the attribution record the sphere plugin maintains. A skill earns its share by being the thing that carried a piece of work, not by being invoked, so a skill called often but doing little stays small.

viithroughputerrors

Performance

Throughput against failure. How much output each token of input bought, how fast the work actually moved, and how often a session errored, read together rather than separately. A model that is cheap per token but needs three attempts is not cheap, and this is where that shows up.