Files
AgentHub/plugins/agenthub-sessions/skills/cwd-rollup/SKILL.md
T
nntrivi2001 17d56d0e01 refactor!: rebrand CCAM to AgentHub
Clean break, no compatibility alias. Renames the product name, the CLI
binary (`ccam` -> `agenthub`), the env var prefix (`CCAM_` ->
`AGENTHUB_`), the Prometheus metric namespace (`ccam_*` ->
`agenthub_*`), the tmux session prefix (`ccam-lane-<id>` ->
`agenthub-lane-<id>`), the per-repo runtime profile directory
(`.ccam/profile` -> `.agenthub/profile`), the lanes state root
(`~/.claude/ccam-lanes` -> `~/.claude/agenthub-lanes`), the bundled
plugins (`plugins/ccam*` -> `plugins/agenthub*`) and their slash
commands (`/ccam-doctor` -> `/agenthub-doctor`, `/ccam:*` ->
`/agenthub:*`).

Because there is no alias, an existing install has to be updated by
hand: rename its `.ccam/profile` directory and any `CCAM_*` variables,
and reinstall the plugin under its new name.

Two other name families are deliberately left alone here, since they are
not just strings: the `Claude-Code-Monitor` repository/marketplace name,
and the `agent-dashboard` npm package plus its `~/.claude/agent-dashboard`
runtime directory, which holds the live database and needs a migration
rather than a rename.

Verified: server 1406/1406, client 459/459, `grep -i ccam` clean across
tracked files, `openapi.yaml` regenerated (95 paths, unchanged count).
2026-09-07 12:09:15 +07:00

2.5 KiB

description
description
Roll up Claude Code sessions by working directory (project) from Agent Monitor data — session count, total cost, total tokens, and last-active timestamp per cwd — so per-project activity can be compared at a glance. Use when summarizing where effort and spend went across projects.

CWD Rollup

Aggregate session activity per working directory (project).

Input

The user provides: $ARGUMENTS

  • Empty → roll up all working directories.
  • A path / project substring → restrict the rollup to matching cwds.
  • top N → keep only the N highest-cost (or highest-count) projects.

Data Sources

Endpoint Returns
GET /api/run/cwds the distinct working directories that have sessions — the rollup key set
GET /api/sessions?limit=N session list: id, status, model, cwd, started_at, ended_at, cost, metadata (usage_extras with token counts)
GET /api/pricing/cost fleet cost: total_cost, breakdown[{ model, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, cost, matched_rule }] — for the fleet total to compute each cwd's share

Report Sections

1. Key set

GET /api/run/cwds for the canonical list of working directories. Apply the $ARGUMENTS filter (substring match) if one was given.

2. Pull sessions

GET /api/sessions?limit=1000. Bucket sessions by cwd.

3. Aggregate per cwd

For each working directory compute:

  • sessions — count.
  • cost — sum of the inline cost field across the bucket.
  • tokens — sum of input / output / cache-read / cache-write from each session's metadata usage_extras (sum the four into a total, and keep input + output as the "billable text" subtotal).
  • last active — the max started_at (or ended_at) in the bucket.
  • models — the distinct models seen.

4. Share of fleet

GET /api/pricing/cost for total_cost; show each cwd's cost as a percentage of the fleet total.

5. Ranking

Sort by cost descending by default (or count if the user asked); apply top N.

Output

Markdown table: project (cwd basename) | sessions | total tokens | cost | % of fleet | last active | models. Currency as USD to 4 decimal places; token counts with thousands separators; sort cost-descending. Add a final TOTAL row summing the columns. Only count tokens that the session metadata actually carries — if usage_extras is absent for a session, note it as excluded rather than guessing. If the dashboard is unreachable, tell the user to start it with npm start from the repo root.