~ / rigs / simantaturja / cccost-dashboard

simantaturja/cccost-dashboard

Local, zero-setup dashboard for Claude Code token usage and cost — per project, client, model, and prompt, with an efficiency advisor.

↗ GitHub ★ 7 MIT updated 15d ago project Claude CodeCodex
share on X
ARCHETYPE
Pragmatist
A balanced, no-drama setup: some rules, some tools, nothing extreme.
CONTEXT TAX · EVERY TURN
~796 tokens
Featherweight · median rig: 2.3k · breakdown
GUARDRAILS
3/5
Blocks destructive commands · Pre-tool screening hook · No YOLO mode · details

Copy this rig

# review before running: this installs third-party code
$ npx degit simantaturja/cccost-dashboard/.claude ./rig-cccost-dashboard  # inspect, then merge into .claude/

MCP servers are added to Claude Code at local scope; env vars are shown as YOUR_… placeholders — we never store values. Files are fetched with degit into a separate folder so you can review before merging.

$ npx degit simantaturja/cccost-dashboard/.claude/skills/cccost-product-owner .claude/skills/cccost-product-owner
$ npx degit simantaturja/cccost-dashboard/.claude/skills/issue-to-pr .claude/skills/issue-to-pr
$ npx degit simantaturja/cccost-dashboard/.claude/skills/loop-design .claude/skills/loop-design
$ npx degit simantaturja/cccost-dashboard/.claude/skills/loop-issue .claude/skills/loop-issue
$ npx degit simantaturja/cccost-dashboard/.claude/skills/loop-pipeline .claude/skills/loop-pipeline
$ npx degit simantaturja/cccost-dashboard/.claude/skills/loop-plan .claude/skills/loop-plan
$ npx degit simantaturja/cccost-dashboard/.claude/skills/loop-watchdog .claude/skills/loop-watchdog
$ npx degit simantaturja/cccost-dashboard/.claude/skills/release .claude/skills/release
$ curl -fsSL --create-dirs -o .claude/agents/loop-drafter.md https://raw.githubusercontent.com/simantaturja/cccost-dashboard/master/.claude/agents/loop-drafter.md
$ curl -fsSL --create-dirs -o .claude/agents/loop-verifier.md https://raw.githubusercontent.com/simantaturja/cccost-dashboard/master/.claude/agents/loop-verifier.md

Merge into .claude/settings.json (project) or ~/.claude/settings.json (user). Hook commands reference scripts in the source repo — copy those too.

{
  "permissions": {
    "deny": [
      "Bash(npm publish:*)",
      "Bash(gh pr merge:*)",
      "Bash(gh pr review:*)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "in=$(cat); c=$(jq -r '.tool_input.command // \"\"' <<<\"$in\"); if printf '%s' \"$c\" | grep -Eq -- '(--add-label|--label)[ =][^ ]*loop:(go|build)'; then echo \"Applying loop:go or loop:build is a human gate (gate 1 / gate 2). Refusing.\" >&2; exit"
          }
        ]
      }
    ]
  }
}

Skills (8)

Subagents (2)

loop-drafterImplements ONE loop finding in a git worktree against explicit acceptance criteria. Runs unattended — no human will answer questions. Used by the loop-pipeline skill.
loop-verifierAdversarially reviews a loop-produced diff, spec, or plan against AGENTS.md and the tests, and returns a verdict. Has no Edit or Write tool and never repairs what it judges. Used by the loop-pipeline

Hooks (3)

eventmatcherruns
Stop*npm run lint --silent || exit 2
PostToolUseEdit|Writein=$(cat); f=$(jq -r '.tool_input.file_path // ""' <<<"$in"); case "$f" in */web/src/*) echo 'web/src changed — npm run test:ui must pass before this is done.' ;; esac; exit 0
PreToolUseBashin=$(cat); c=$(jq -r '.tool_input.command // ""' <<<"$in"); if printf '%s' "$c" | grep -Eq -- '(--add-label|--label)[ =][^ ]*loop:(go|build)'; then echo "Applying loop:go or loop:build is a human gate (gate 1 / gate 2). Refusing." >&2; exit

Permissions

deny (3)
Bash(npm publish:*)
Bash(gh pr merge:*)
Bash(gh pr review:*)
ask (0)
—
allow (0)
—

Similar rigs

copied ✓