/cost-projection
Forward-looking spend extrapolation. Computes a USD-per-day rate from the recent measurement window, projects to 7d/30d/90d/365d horizons, and surfaces "days until budget exhausted" when a budget is configured. Predictive counterpart to `cost-budget-check` (reactive).
Claude Code
$ npx -y skills add ruvnet/ruflo --skill cost-projection --agent claude-code
Codex
$ npx skills add ruvnet/ruflo --skill cost-projection -a codex -y
Cursor
$ npx skills add ruvnet/ruflo --skill cost-projection -a cursor -y
Gemini CLI
$ npx skills add ruvnet/ruflo --skill cost-projection -a gemini-cli -y
GitHub Copilot
$ npx skills add ruvnet/ruflo --skill cost-projection -a github-copilot -y
OpenCode
$ npx skills add ruvnet/ruflo --skill cost-projection -a opencode -y
Windsurf
$ npx skills add ruvnet/ruflo --skill cost-projection -a windsurf -y
SKILL.md
cost-projection.SKILL.mdname: cost-projection
description: Forward-looking spend extrapolation. Computes a USD-per-day rate from the recent measurement window, projects to 7d/30d/90d/365d horizons, and surfaces "days until budget exhausted" when a budget is configured. Predictive counterpart to `cost-budget-check` (reactive).
argument-hint: "[--window 7d] [--horizons 7d,30d,90d,365d] [--format table|json]"
allowed-tools: Bash
disable-model-invocation: true
Forward-looking cost projection that pairs with `cost-budget-check`:
- **`cost-budget-check`** answers "have we crossed the line?" — reactive
- **`cost-projection`** answers "when will we cross the line?" — predictive
Algorithm
1. Read all `session-*` records from the `cost-tracking` namespace (same source `cost-budget-check` uses). 2. Filter to a measurement window (default last 7 days on `capturedAt`/`startedAt`). 3. Compute the per-day burn rate: `windowSpend / windowDays`. 4. Linear-extrapolate to each requested horizon (default 7d/30d/90d/365d). 5. If a budget is configured (`budget-config` key set by `cost-budget set`):
- Compute "days until 75% / 90% / 100% consumed" at the current rate.
- Surface as a separate table block with `ALREADY REACHED` markers for thresholds already exceeded.
Flags
--window <duration> Measurement window. `Nh|Nd|Nw|Nm`. Default `7d`. --horizons <csv> Projection horizons. Default `7d,30d,90d,365d`. --format table|json Default `table` (markdown).
Env: `PROJECTION_NAMESPACE` override (default `cost-tracking`), `PROJECTION_QUIET=1` (alias for `--format json`).
Smoke transcript (3 sessions × $1 over 7d, $20 budget)
| Sessions in window | 3 |
| Window spend | $3.000000 |
| **USD per day** | **$0.428571** |
| All-time spend | $3.000000 across 3 sessions |
## Projected spend (linear extrapolation)
| Horizon | Days | Projected spend |
|---|---:|---:|
| 7d | 7 | $3.0000 |
| 30d | 30 | $12.8571 |
## Budget exhaustion ($20.00 configured)
| Threshold | Target | Remaining | Time at current rate |
|---|---:|---:|---|
| 75% | $15.00 | $12.00 | 28.0 days |
| 90% | $18.00 | $15.00 | 35.0 days |
| 100% | $20.00 | $17.00 | 39.7 days |
When to use
- **Finance / SRE planning**: hand the JSON output to a budget dashboard for "are we on track for the quarter?".
- **CI gates**: `cost-projection --format json | jq '.budget.exhaustion[2].daysUntilReached < 7'` → fail builds when 100% exhaustion is < 1 week away.
- **Post-workload-shift sanity check**: after a big feature lands, re-run to verify the rate hasn't accelerated past expectations.
Stationarity assumption
Linear extrapolation assumes the current rate holds. The footer reminds operators to re-run after workload shifts. For drift detection over MULTIPLE windows, pair with `cost-trend` (which already covers benchmark-drift).
Read more
name: cost-projection description: Forward-looking spend extrapolation. Computes a USD-per-day rate from the recent measurement window, projects to 7d/30d/90d/365d horizons, and surfaces "days until budget exhausted" when a budget is configured. Predictive counterpart to `cost-budget-check` (reactive). argument-hint: "[--window 7d] [--horizons 7d,30d,90d,365d] [--format table|json]" allowed-tools: Bash disable-model-invocation: true
Forward-looking cost projection that pairs with `cost-budget-check`:
- **`cost-budget-check`** answers "have we crossed the line?" — reactive
- **`cost-projection`** answers "when will we cross the line?" — predictive
Algorithm
1. Read all `session-*` records from the `cost-tracking` namespace (same source `cost-budget-check` uses). 2. Filter to a measurement window (default last 7 days on `capturedAt`/`startedAt`). 3. Compute the per-day burn rate: `windowSpend / windowDays`. 4. Linear-extrapolate to each requested horizon (default 7d/30d/90d/365d). 5. If a budget is configured (`budget-config` key set by `cost-budget set`):
- Compute "days until 75% / 90% / 100% consumed" at the current rate.
- Surface as a separate table block with `ALREADY REACHED` markers for thresholds already exceeded.
Flags
--window <duration> Measurement window. `Nh|Nd|Nw|Nm`. Default `7d`. --horizons <csv> Projection horizons. Default `7d,30d,90d,365d`. --format table|json Default `table` (markdown).
Env: `PROJECTION_NAMESPACE` override (default `cost-tracking`), `PROJECTION_QUIET=1` (alias for `--format json`).
Smoke transcript (3 sessions × $1 over 7d, $20 budget)
| Sessions in window | 3 | | Window spend | $3.000000 | | **USD per day** | **$0.428571** | | All-time spend | $3.000000 across 3 sessions | ## Projected spend (linear extrapolation) | Horizon | Days | Projected spend | |---|---:|---:| | 7d | 7 | $3.0000 | | 30d | 30 | $12.8571 | ## Budget exhaustion ($20.00 configured) | Threshold | Target | Remaining | Time at current rate | |---|---:|---:|---| | 75% | $15.00 | $12.00 | 28.0 days | | 90% | $18.00 | $15.00 | 35.0 days | | 100% | $20.00 | $17.00 | 39.7 days |
When to use
- **Finance / SRE planning**: hand the JSON output to a budget dashboard for "are we on track for the quarter?".
- **CI gates**: `cost-projection --format json | jq '.budget.exhaustion[2].daysUntilReached < 7'` → fail builds when 100% exhaustion is < 1 week away.
- **Post-workload-shift sanity check**: after a big feature lands, re-run to verify the rate hasn't accelerated past expectations.
Stationarity assumption
Linear extrapolation assumes the current rate holds. The footer reminds operators to re-run after workload shifts. For drift detection over MULTIPLE windows, pair with `cost-trend` (which already covers benchmark-drift).
📖 RuFlo Explained — Build an AI Team That Plans, Remembers, Tests, and Improves A 14-chapter guide: from the basic idea to a first useful task, then memory, agent teams, plugins, cost and verification. Agent = Model + Harness.
Other skills on ruflo.
More skills from other plugins.
agentmail
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
bmad
Answers BMad questions and recommends the next skill from what is installed. Use when the user asks bmad for help, what to do…
Questions about cost-projection.
- Which coding agents can use cost-projection?
- cost-projection installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

