Skip to content
Back to skills

Cost

ASecurity

Show fleet spend — per-session, per-model, per-day, and per-group USD cost rollups for every claude/codex session, sourced live from ainb's burndown analytics (which already prices every provider call). Use when you need spend visibility across a multi-session fleet, want to find the most expensive session/model, or are checking whether any session/group has crossed a configured budget cap. Budget breaches are also delivered as notifyd alerts. Default output: text tables. Pass --format json f...

  • 23 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 3, 2026
ai-agentsgobash

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add stevengonsalvez/claudecode-bootstrap --skill cost --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cost?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Cost
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/stevengonsalvez-cost/badge)](https://www.skillsdirectory.com/skills/stevengonsalvez-cost)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ainb-fleet:cost
description: |
  Show fleet spend — per-session, per-model, per-day, and per-group USD
  cost rollups for every claude/codex session, sourced live from ainb's
  burndown analytics (which already prices every provider call). Use when
  you need spend visibility across a multi-session fleet, want to find the
  most expensive session/model, or are checking whether any session/group
  has crossed a configured budget cap. Budget breaches are also delivered
  as notifyd alerts.
  Default output: text tables. Pass --format json for LLM consumption.
version: "0.1.0"
user-invocable: true
triggers:
  - ainb-fleet:cost
  - fleet cost
  - fleet spend
  - how much have my sessions cost
  - which session is most expensive
  - fleet budget
allowed-tools:
  - Bash
---

# ainb fleet:cost

Fleet-shaped spend rollups. ainb already tracks `cost_usd` per provider call
(the burndown plugin aggregates it); this verb reshapes that data into
per-session / per-model / per-day / per-group USD totals joined to the live
fleet, and evaluates configured budget caps.

## Run

```bash
ainb fleet cost                                  # text tables (default)
ainb --format json fleet cost                    # JSON for piping
ainb --format json fleet cost --period week      # window: today|week|30days|month|all
```

`--format` is a **global** flag — it goes before `fleet`, not after `cost`.
The `--period` window scopes the data (default `month`): burndown date-bounds
its call set and re-aggregates, so a narrower period returns less spend; `all`
reports lifetime totals.

## Output fields (JSON)

| field | meaning |
|---|---|
| `totals` | fleet-wide `{cost_usd, bucket, session_count, model_count}` |
| `sessions[]` | per-session `{session_id, provider, project, cwd?, group?, cost_usd, bucket}`, sorted by descending cost |
| `models[]` | per-model `{model, cost_usd, bucket}`, sorted by descending cost |
| `daily[]` | per-day `{date, cost_usd, bucket}` |
| `groups[]` | per-workspace `{group, cost_usd, session_count, bucket}` (only sessions that match a live fleet cwd) |
| `budget_breaches[]` | `{scope, subject, cwd?, cost_usd, limit_usd}` — caps crossed this run (also delivered to notifyd) |

`bucket` is the token breakdown: `input_tokens`, `cache_creation_tokens`,
`cache_read_tokens`, `output_tokens`, `reasoning_tokens`, `call_count`,
`cost_usd`.

## Budget caps

Configure spend ceilings in `config.toml` (project config overrides user
config). A breach fires a notifyd alert (`Notification:budget_exceeded`,
surfacing as `WaitingOnUser`) and lands in `notifications.db`.

```toml
[fleet.cost]
session_usd = 5.0      # warn when any single session crosses $5
group_usd = 25.0       # warn when any workspace group crosses $25

[fleet.cost.session_overrides]
"abc123" = 50.0        # a long-running session gets its own ceiling

[fleet.cost.group_overrides]
"infra" = 100.0        # the infra workspace gets a higher ceiling
```

Override maps take precedence over the blanket `session_usd` / `group_usd`.
With no caps configured, `budget_breaches` is always empty.

## Composition patterns

```bash
# Most expensive session
ainb --format json fleet cost | jq '.sessions[0]'

# Total spend this month
ainb --format json fleet cost | jq '.totals.cost_usd'

# Any budget breaches right now?
ainb --format json fleet cost | jq '.budget_breaches'

# Spend by group, biggest first
ainb --format json fleet cost | jq '.groups[] | {group, cost_usd}'
```

## Caveats

- Cost data is sourced live from the burndown plugin. The first call on a
  cold cache can take ~40s while session-reader scans `~/.claude/projects`;
  raise the budget with `AINB_USAGE_TIMEOUT_SECS=<n>` for very large
  archives. Subsequent calls hit the cache and return in well under a second.
- The `group` on a session is only populated when its resolved `cwd` matches
  a session in the live fleet (via `workspace_name`). Sessions that have
  ended drop out of the group rollup but still appear in `sessions[]`.
- Budget alert delivery is best-effort: if notifyd's socket is unreachable
  the command still prints the report (with a warning on stderr).
- This verb never re-prices anything — it relies entirely on ainb's existing
  pricing. To change pricing or plan, use `ainb usage plan ...`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.