Releases: gauravkrp/claude-contextlens
Release list
v0.2.1
Fixes a correctness bug in the 0.2.0 setup audit that could recommend removing the most expensive thing in your setup.
Plugins are credited with what they ship
Claude Code's plugin counter only moves when one of that plugin's commands runs. It says nothing about the MCP server, skills or agents the plugin installed.
So a plugin whose MCP server answered a thousand calls read as never used. On a real setup that meant playwright showed 0 uses while its server accounted for $1,177, and the audit pointed at it for removal.
A plugin's usage is now its own counter plus the measured usage of everything it provides. The raw counter stays available as ownUsage, and plugins get a real cost column instead of n/a.
Plugins (enabled only, credited with what they ship)
PROVIDES USES LAST USED COST
playwright mcp 1982 5m 51s ago $1.2k
deploy-on-aws 3 skills, mcp, hooks 8633 51s ago $94
figma 12 skills, mcp 26 51d 4h ago $180
figma is the case worth noting: its own counter is 0, but what it ships has 26 calls and $180 behind it.
Tests
Five more covering the rollup, including that a plugin's items are not credited to a different plugin. 31 total.
v0.2.0
See what your Claude Code setup costs you, and what it does not earn.
Setup inventory
contextlens config and the new Setup tab read every MCP server, plugin, skill and agent you have installed and join each to the cost your transcripts actually recorded for it.
Your setup
INSTALLED USED NEVER USED COST
MCP servers 27 10 17 $2.3k
Plugins (enabled) 50 17 33 n/a
Skills 194 12 182 $3.0k
Agents 32 4 28 $482
Config files know what is installed. Transcripts know what was used. Nothing else has both, which is what makes "installed and never called" answerable. An idle MCP server still loads its tool schemas into every session.
Secrets in MCP configs are masked to a short tail before they leave the reader, and nothing reports a connection status: Claude Code does not persist one, so measured calls are the honest answer.
The dashboard opens on Now
All-time totals were the landing view, which is not the question anyone opens a usage dashboard to ask. Now leads with the current billing window and burn rate, then today against yesterday, then what is driving cost, then what you are carrying without using. Totals moved to their own tab.
- Every table sorts and filters, on raw values rather than formatted strings
- Setup switches sections instead of stacking them, so 194 skills no longer bury what is below
- Light, dark and follow-system, stamped before first paint
It keeps itself current
serve used to read a database that only a manual ingest updated. It now rescans every 60 seconds. Scans resume from saved byte offsets, so a repeat pass over 1.8 GB costs milliseconds. --no-watch restores the old behaviour.
Fixes
servecrashed with an unhandledEADDRINUSEinstead of reporting a taken port. Running it twice now opens the dashboard that is already there.- Unknown
/api/*routes returned the HTML shell, so callers saw a JSON parse error naming<!doctypeand nothing else. - Attribution now reports tokens alongside cost. The two diverge, because a cache read is a tenth the price of fresh input.
- A stale staging copy of the dashboard survived packing and shadowed local builds.
- Usage no longer double counts when several scopes declare the same MCP server name.
Tests
26 covering redaction, frontmatter parsing, and how usage splits between declarations sharing a name. Wired into CI.