session-report — Claude Code skill: what it does, how to install
Generates an interactive HTML report on token usage, cache performance, subagents, and heavy prompts from Claude Code transcripts.
/plugin install session-report@claude-plugins-officialWhat session-report does
The skill runs analyze-sessions.mjs against session transcripts stored in ~/.claude/projects. It scans the last 7 days by default, though you can specify ranges like 24h, 30d, or all. The script outputs a JSON payload covering project stats, subagent types, skills, cache breaks, and top prompts.
Next, it copies the bundled template.html into your current working directory and embeds the JSON. The agent automatically writes 3–5 one-line anomaly notes expressing token percentages, followed by targeted optimization callouts at the bottom. The resulting HTML is self-contained, using client-side JavaScript for sorting and bar charts.
Running the analyzer requires Node.js. It is worth installing if you run heavy multi-session workflows and need to spot runaway subagents or failing cache hits.
What it helps with
- extract token metrics across projects from
~/.claude/projects - identify expensive prompts and heavy subagent types
- inspect cache break clusters and cache-hit drops
- generate a self-contained HTML usage dashboard
Example prompts for the agent
- Generate a session-report for the last 30d
- Run session-report for all time
- Create a session report for the last 24h
How to install session-report
1Plugin marketplace
/plugin install session-report@claude-plugins-officialThis installs the whole session-report plugin with all its skills
2Skills CLI (Vercel)
npx skills add anthropics/claude-plugins-official --skill session-report -a claude-code3Manually: put the files in place
~/.claude/skills/session-report/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/session-report/
Manually: put the files in place
.agents/skills/session-report/SKILL.mdFor all projects use ~/.agents/skills/
Manually: put the files in place
.cursor/skills/session-report/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install anthropics/claude-plugins-official session-report2Manually: put the files in place
.github/skills/session-report/SKILL.mdPlatform CLI
gemini skills install https://github.com/anthropics/claude-plugins-official --path plugins/session-report/skills/session-reportManually: put the files in place
.devin/skills/session-report/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set37
The whole set →Similar
Questions about session-report
How to install session-report in Claude Code?
Run /plugin install session-report@claude-plugins-official in Claude Code, or use npx skills add anthropics/claude-plugins-official --skill session-report -a claude-code.
What does session-report do?
It parses Claude Code session transcripts, analyzes token usage, cache performance, and subagent calls, then writes a stand-alone HTML report.
Where does session-report read data from?
The bundled analyze-sessions.mjs script inspects session transcript files located in ~/.claude/projects.
Source text
SKILL.md · Apache-2.0
---
name: session-report
description: Generate an explorable HTML report of Claude Code session usage (tokens, cache, subagents, skills, expensive prompts) from ~/.claude/projects transcripts.
---
# Session Report
Produce a self-contained HTML report of Claude Code usage and save it to the current working directory.
## Steps
1. **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:
```sh
node <skill-dir>/analyze-sessions.mjs --json --since 7d > /tmp/session-report.json
```
For all-time, omit `--since`.
2. **Read** `/tmp/session-report.json`. Skim `overall`, `by_project`, `by_subagent_type`, `by_skill`, `cache_breaks`, `top_prompts`.
3. **Copy the template** (also bundled alongside this SKILL.md) to the output path in the current working directory:
```sh
cp <skill-dir>/template.html ./session-report-$(date +%Y%m%d-%H%M).html
```
4. **Edit the output file** (use Edit, not Write — preserve the template's JS/CSS):
- Replace the contents of `<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 `<!-- AGENT: anomalies -->` 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:
```html
<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 `<b>`. 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 `<!-- AGENT: optimizations -->` block (at the **bottom** of the page) with 1–4 `<div class="callout">` suggestions tied to specific rows (e.g. "`/weekly-status` spawned 7 subagents for 8.1% of total — scope it to fewer parallel agents").
- Do not restructure existing sections.
5. **Report** the saved file path to the user. Do not open it or render it.
## Notes
- The template is the source of interactivity (sorting, expand/collapse, block-char bars). Your job is data + narrative, not markup.
- Keep commentary terse and specific — reference actual project names, numbers, timestamps from the JSON.
- `top_prompts` already includes subagent tokens and rolls task-notification continuations into the originating prompt.
- If the JSON is >2MB, trim `top_prompts` to 100 entries and `cache_breaks` to 100 before embedding (they should already be capped).
© Anthropic · Apache-2.0 · anthropics/claude-plugins-official