Codeburn Claude Cost Dashboard

reason-machines/trending-skills/skills/codeburn-claude-cost-dashboard

作者 reason-machines2384a003145a無授權條款83 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫3 個月前更新

Interactive TUI dashboard for visualizing Claude Code token usage, costs, and task breakdowns by project, model, and activity type.

AI 產生的概覽

互動式終端機儀表板,讀取本機 Claude Code 工作階段紀錄以顯示 token 用量與費用。

功能
CodeBurn 會從本機 ~/.claude/projects/ 目錄讀取 Claude Code 工作階段紀錄,依專案、模型、活動類型、MCP 伺服器與工具視覺化 token 用量、費用與任務分布。它提供可互動的 TUI(可切換時間範圍)、精簡的狀態摘要、CSV 與 JSON 匯出,以及選用的 macOS 選單列小工具。費用依 LiteLLM 模型價格計算並快取於本機,抓取失敗時改用內建價格,工作階段會依 API 訊息 ID 去重。
適用情境
適合查看今天、最近 7 天或本月的 Claude Code 花費,了解哪些專案、模型或活動類型消耗最多 token,或匯出費用報告供指令碼與定期回報使用。
執行需求
需要 Node.js 20+、已安裝 Claude Code 且工作階段資料位於 ~/.claude/projects/,並需要網路連線以取得 LiteLLM 價格(失敗時改用內建價格)。macOS 選單列小工具需要 SwiftBar。不附指令碼,僅有說明文件。

CodeBurn

Skill by ara.so — Daily 2026 Skills collection.

CodeBurn is an interactive TUI dashboard that reads Claude Code session transcripts directly from disk (~/.claude/projects/) and visualizes token usage, costs, and task breakdowns by project, model, activity type, MCP server, and tool. No API keys, no proxy — pure local file analysis.

Install

bash
npm install -g codeburn# or run without installingnpx codeburn

Requirements: Node.js 20+, Claude Code installed (session data at ~/.claude/projects/)

Key Commands

bash
# Interactive TUI dashboard (default: last 7 days)codeburn
# Time period shortcutscodeburn todaycodeburn monthcodeburn report -p month      # explicit period flag
# Compact one-liner summarycodeburn statuscodeburn status --format json
# Export datacodeburn export               # CSV: today, 7d, 30dcodeburn export -f json       # JSON export
# macOS menu bar widget (requires SwiftBar)codeburn install-menubarcodeburn uninstall-menubar

TUI Keyboard Navigation

KeyAction
← → arrow keysSwitch between Today / 7 Days / Month
1 2 3Period shortcuts
qQuit

What CodeBurn Tracks

13 Task Categories (deterministic, no LLM calls)

CategoryTrigger Pattern
CodingEdit, Write tools
DebuggingError/fix keywords + tool usage
Feature Dev"add", "create", "implement" keywords
Refactoring"refactor", "rename", "simplify"
Testingpytest, vitest, jest in Bash
ExplorationRead, Grep, WebSearch without edits
PlanningEnterPlanMode, TaskCreate tools
DelegationAgent tool spawns
Git Opsgit push/commit/merge in Bash
Build/Deploynpm build, docker, pm2
Brainstorming"brainstorm", "what if", "design"
ConversationNo tools, pure text exchange
GeneralSkill tool, uncategorized

One-Shot Rate

For edit-heavy categories, CodeBurn detects Edit → Bash → Edit retry cycles. The 1-shot rate shows what percentage of edit turns succeeded without retries. 90% means the AI got it right first try 9/10 times.

Pricing

Fetched from LiteLLM model prices, auto-cached 24h at ~/.cache/codeburn/. Covers input, output, cache write, cache read, and web search costs. Falls back to hardcoded prices if fetch fails.

Data Source

Claude Code stores session transcripts as JSONL:

~/.claude/projects/<sanitized-path>/<session-id>.jsonl

Each assistant entry contains: model name, token usage (input/output/cache_read/cache_write), tool_use blocks, timestamps. CodeBurn deduplicates by API message ID to prevent double-counting across sessions.

macOS Menu Bar Setup

bash
# 1. Install SwiftBarbrew install --cask swiftbar
# 2. Install the CodeBurn plugincodeburn install-menubar
# 3. Launch SwiftBar — CodeBurn flame icon appears in menu bar# Refreshes every 5 minutes, shows today's cost + breakdown dropdown

To remove:

bash
codeburn uninstall-menubar

Export Examples

bash
# Export CSV (three sheets: today, 7d, 30d)codeburn export# Output: codeburn-export-2026-04-14.csv
# Export JSONcodeburn export -f json# Output: codeburn-export-2026-04-14.json

JSON Export Structure

json
{  "exported_at": "2026-04-14T10:00:00Z",  "periods": {    "today": {      "total_cost": 1.42,      "total_tokens": 284000,      "by_project": { "my-app": 0.89, "other-project": 0.53 },      "by_model": { "claude-sonnet-4-5": 1.10, "claude-opus-4-5": 0.32 },      "by_activity": {        "Coding": { "cost": 0.65, "turns": 34, "one_shot_rate": 0.88 },        "Debugging": { "cost": 0.41, "turns": 18, "one_shot_rate": 0.72 }      }    },    "7d": { ... },    "30d": { ... }  }}

Project Structure

src/  cli.ts          # Commander.js entry point  dashboard.tsx   # Ink TUI (React for terminals)  parser.ts       # JSONL reader, dedup, date filter  models.ts       # LiteLLM pricing, cost calculation  classifier.ts   # 13-category task classifier  types.ts        # Type definitions  format.ts       # Text rendering (status bar)  menubar.ts      # SwiftBar plugin generator  export.ts       # CSV/JSON multi-period export

Programmatic Usage (TypeScript)

If you want to integrate CodeBurn's parsing logic into your own scripts:

typescript
import { parseSessions } from 'codeburn/parser';import { calculateCost } from 'codeburn/models';import { classifyTurn } from 'codeburn/classifier';
// Parse all sessions for a date rangeconst sessions = await parseSessions({  startDate: new Date('2026-04-01'),  endDate: new Date('2026-04-14'),});
// Sessions are deduplicated by API message IDfor (const turn of sessions.turns) {  const category = classifyTurn(turn);  const cost = await calculateCost(turn.model, turn.usage);  console.log(`${category}: $${cost.toFixed(4)}`);}
typescript
// Get a status summary programmaticallyimport { getStatus } from 'codeburn/format';
const status = await getStatus();console.log(status);// → "🔥 Today: $1.42 (284k tokens) | Month: $18.30 (3.6M tokens)"
// JSON format for scriptingconst statusJson = await getStatus({ format: 'json' });const data = JSON.parse(statusJson);// { today: { cost: 1.42, tokens: 284000 }, month: { cost: 18.30, tokens: 3600000 } }

Common Patterns

Daily Cost Check in CI/Shell Scripts

bash
#!/bin/bash# Add to .zshrc or run in CI to log daily AI spendSPEND=$(codeburn status --format json | jq '.today.cost')echo "Today's Claude spend: \$$SPEND"
# Alert if over thresholdif (( $(echo "$SPEND > 5.00" | bc -l) )); then  echo "⚠️  High AI spend today: \$$SPEND"fi

Export and Analyze with jq

bash
# Export JSON and analyze by modelcodeburn export -f json | jq '.periods["7d"].by_model'
# Find most expensive project this monthcodeburn export -f json | jq '  .periods["30d"].by_project  | to_entries  | sort_by(-.value)  | .[0]'

Automate Weekly Reports

bash
#!/bin/bash# weekly-ai-report.sh — run via cron on MondaysOUTPUT_DIR="$HOME/ai-cost-reports"mkdir -p "$OUTPUT_DIR"
DATE=$(date +%Y-%m-%d)codeburn export -f json > "$OUTPUT_DIR/week-$DATE.json"codeburn status >> "$OUTPUT_DIR/history.log"echo "[$DATE] Report saved to $OUTPUT_DIR/week-$DATE.json"

Troubleshooting

No data shown / "No sessions found"

bash
# Verify Claude Code session files existls ~/.claude/projects/
# Check a specific project's sessionsls ~/.claude/projects/<project-name>/# Should see *.jsonl files
# Confirm Node version is 20+node --version

Pricing fetch fails / shows $0.00

bash
# Clear the price cache and retryrm -rf ~/.cache/codeburn/
# CodeBurn falls back to hardcoded prices automatically# Run again — it will re-fetch from LiteLLMcodeburn today

Menu bar widget not updating

bash
# Reinstall the plugincodeburn uninstall-menubarcodeburn install-menubar
# Ensure SwiftBar is running and plugin directory is set# SwiftBar → Preferences → Plugin folder should point to ~/Library/Application Support/SwiftBar/Plugins/

Double-counted costs

CodeBurn deduplicates by API message ID automatically. If you see unexpectedly high numbers, check for duplicate JSONL files:

bash
# List all session files sorted by sizefind ~/.claude/projects/ -name "*.jsonl" | xargs wc -l | sort -rn | head -20

TUI rendering issues

bash
# Ensure terminal supports 256 colorsecho $TERM# Should be xterm-256color or similar
# Force color modeCOLORTERM=truecolor codeburn

Related

  • ccusage — inspiration for this project
  • LiteLLM — model pricing data source
  • SwiftBar — macOS menu bar plugin host

來源與署名

來源:reason-machines/trending-skills位於skills/codeburn-claude-cost-dashboard提交2384a00

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架