PluginBench
Skill
Official
Fail
Audit score 45

session-report

anthropics/claude-plugins-official

Generate an explorable HTML report of Claude Code session usage, tokens, cache, and costs.

What is session-report?

Analyzes Claude Code session transcripts from ~/.claude/projects to produce a self-contained HTML report showing token consumption, cache performance, subagent usage, and expensive prompts. Use this to understand where your agent time and tokens are going over a configurable time window.

  • Analyzes session transcripts from the last 7 days (or custom range: 24h, 30d, all)
  • Generates a self-contained interactive HTML report with sortable tables and drill-down views
  • Breaks down token usage by project, subagent type, and skill
  • Identifies cache-hit rates and cache-break patterns
  • Highlights top-consuming prompts and anomalies as % of total tokens
  • Includes optimization suggestions based on usage patterns

How to install session-report

npx skills add https://github.com/anthropics/claude-plugins-official --skill session-report
Prerequisites
  • Claude Code with ~/.claude/projects transcripts available
  • Node.js installed (to run the bundled analyze-sessions.mjs script)
Claude Code
Cursor
Windsurf
Cline

How to use session-report

  1. 1.Run the bundled analyzer with your desired time window (default 7 days): `node <skill-dir>/analyze-sessions.mjs --json --since 7d > /tmp/session-report.json`
  2. 2.Copy the bundled template.html to your current directory with a timestamped filename
  3. 3.Edit the output HTML file: paste the JSON data into the `<script id="report-data">` block
  4. 4.Add 3–5 key findings to the `<!-- AGENT: anomalies -->` section, expressing figures as % of total tokens
  5. 5.Add 1–4 optimization suggestions to the `<!-- AGENT: optimizations -->` section at the bottom, tied to specific rows
  6. 6.Report the saved file path to the user

Use cases

Good for
  • Audit token spend across multiple Claude Code projects to find cost drivers
  • Detect when a single project or skill is consuming a disproportionate share of tokens
  • Identify cache-hit performance issues (e.g., <85% hit rate) that could be improved
  • Spot subagents spawning inefficiently or prompts that could be optimized
  • Generate weekly or monthly usage reports for billing or performance review
Who it's for
  • Claude Code users managing multiple projects or agents
  • Teams tracking AI agent costs and performance
  • Developers optimizing prompt efficiency and cache strategies

session-report FAQ

What time windows does the analyzer support?

Default is 7 days. Pass `--since 24h`, `--since 30d`, or omit `--since` for all-time data.

Can I customize the HTML report after generation?

Yes, edit the output file to adjust findings and optimization suggestions. The template's JS and CSS are preserved; you only modify the JSON data and narrative blocks.

What does cache-hit % mean in the report?

It shows how often cached prompts were reused vs. new API calls. Rates below 85% may indicate opportunities to structure sessions for better cache reuse.

How do I interpret 'top_prompts' in the report?

These are the prompts consuming the most tokens. The data already rolls subagent tokens and task-notification continuations into the originating prompt for accurate attribution.

What if my session data is very large (>2MB)?

The skill automatically trims top_prompts and cache_breaks to 100 entries each before embedding in the HTML to keep the file manageable.

Full instructions (SKILL.md)

Source of truth, from anthropics/claude-plugins-official.


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:

    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:

    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:
      <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).