2026-05-12 14:23:46 -04:00

2.9 KiB

description, argument-hint
description argument-hint
Generate a local Claude Code cost report from a cost-tracker SQLite database.
csv

Cost Report

Query the local cost-tracking database and present a spending report by day, project, tool, and session. This command assumes a cost-tracking hook or plugin is already writing usage rows to ~/.claude-cost-tracker/usage.db.

What This Command Does

  1. Check that sqlite3 is available.
  2. Check that ~/.claude-cost-tracker/usage.db exists.
  3. Run aggregate queries against the usage table.
  4. Present a compact report, or export recent rows as CSV when the argument is csv.

Prerequisites

The database must be populated by a local cost tracker. If the file is missing, tell the user the tracker is not set up and suggest installing or enabling a trusted Claude Code cost-tracking hook/plugin first.

test -f ~/.claude-cost-tracker/usage.db && echo "Database found" || echo "Database not found"

Summary Query

sqlite3 -header -column ~/.claude-cost-tracker/usage.db "
  SELECT
    ROUND(COALESCE(SUM(CASE WHEN date(timestamp) = date('now') THEN cost_usd END), 0), 4) AS today_cost,
    ROUND(COALESCE(SUM(CASE WHEN date(timestamp) = date('now', '-1 day') THEN cost_usd END), 0), 4) AS yesterday_cost,
    ROUND(COALESCE(SUM(cost_usd), 0), 4) AS total_cost,
    COUNT(*) AS total_calls,
    COUNT(DISTINCT session_id) AS sessions
  FROM usage;
"

Project Breakdown

sqlite3 -header -column ~/.claude-cost-tracker/usage.db "
  SELECT project, ROUND(SUM(cost_usd), 4) AS cost, COUNT(*) AS calls
  FROM usage
  GROUP BY project
  ORDER BY cost DESC;
"

Tool Breakdown

sqlite3 -header -column ~/.claude-cost-tracker/usage.db "
  SELECT tool_name, ROUND(SUM(cost_usd), 4) AS cost, COUNT(*) AS calls
  FROM usage
  GROUP BY tool_name
  ORDER BY cost DESC;
"

Last Seven Days

sqlite3 -header -column ~/.claude-cost-tracker/usage.db "
  SELECT date(timestamp) AS date, ROUND(SUM(cost_usd), 4) AS cost, COUNT(*) AS calls
  FROM usage
  GROUP BY date(timestamp)
  ORDER BY date DESC
  LIMIT 7;
"

CSV Export

If the user asks for /cost-report csv, export the most recent usage rows with an explicit column list:

sqlite3 -csv -header ~/.claude-cost-tracker/usage.db "
  SELECT timestamp, project, tool_name, input_tokens, output_tokens, cost_usd, session_id, model
  FROM usage
  ORDER BY timestamp DESC
  LIMIT 100;
"

Report Format

Format the response as:

  1. Summary: today, yesterday, total, calls, sessions.
  2. By project: projects ranked by total cost.
  3. By tool: tools ranked by total cost.
  4. Last seven days: date, cost, call count.

Use four decimal places for sub-dollar amounts. Do not estimate pricing from raw tokens in this command; rely on the precomputed cost_usd values written by the tracker.

Source

Salvaged from stale community PR #1304 by MayurBhavsar.