Skip to content
Back to skills

Cost Projection

ASecurity

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).

  • 73,733 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 2, 2026
ai-agentsgobashreact

Security analysis

A100/100

Scanned September 2, 2026

npx -y skills add ruvnet/ruflo --skill cost-projection --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cost Projection?

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

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

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: 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
---

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).

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.