Session Report Produce a self-contained HTML report of Claude Code usage and save it to the current working directory. Steps Get data. Run the bundled analyzer (default window: last 7 days; honor a different range if the user passed one, e.g. 24h , 30d , or all ). The script analyze-sessions.mjs lives in the same directory as this SKILL.md — use its absolute path: node < skill-dir
<script id="report-data" type="application/json"> with the full JSON from step 1. The page's JS renders the hero total, all tables, bars, and drill-downs from this blob automatically. Fill the block with 3–5 one-line findings . Express figures as a % of total tokens wherever possible (total = overall.input_tokens.total + overall.output_tokens ). One line per finding, exact markup: < div class = " take bad " > < div class = " fig " > 41.2% div > < div class = " txt " > < b > cc-monitor b > consumed 41% of the week across just 3 sessions div > div > Classes: .take bad for waste/anomalies (red), .take good for healthy signals (green), .take info for neutral facts (blue). The .fig is one short number (a %, a count, or a multiplier like 12× ). The .txt is one plain-English sentence naming the project/skill/prompt; wrap the subject in . Look for: a project or skill eating a disproportionate share, cache-hit <85%, a single prompt >2% of total, subagent types averaging >1M tokens/call, cache breaks clustering. Fill the block (at the bottom of the page) with 1–4/analyze-sessions.mjs --json --since 7d
/tmp/session-report.json For all-time, omit --since . Read /tmp/session-report.json . Skim overall , by_project , by_subagent_type , by_skill , cache_breaks , top_prompts . Copy the template (also bundled alongside this SKILL.md) to the output path in the current working directory: cp < skill-dir
/template.html ./session-report- $( date +%Y%m%d-%H%M ) .html Edit the output file (use Edit, not Write — preserve the template's JS/CSS): Replace the contents of