Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Read accumulated cost-tracking spend + budget config, compute utilization, emit 50/75/90/100% alert ladder
.claude/skills/ruvnet-cost-budget-check/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -38% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -37% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -17% | 0% |
Reads cost-tracking:budget-config for the project's budget limit, sums total_cost_usd across session-* records produced by cost-track, computes utilization, and emits the measured 4-tier alert ladder (50% INFO / 75% WARNING / 90% CRITICAL / 100% HARD_STOP).
Until P2 (this skill) landed, the README documented the alert ladder but no code checked it. Now this skill is the gate.
/cost-optimize first./loop 30m for continuous monitoring.bash node plugins/ruflo-cost-tracker/scripts/budget.mjs check
Filter by period: BUDGET_PERIOD=today (default all). Use BUDGET_QUIET=1 for machine-readable JSON.
bash node plugins/ruflo-cost-tracker/scripts/budget.mjs set 50.00 node plugins/ruflo-cost-tracker/scripts/budget.mjs get
budget.mjs check exits with code 1 when utilization ≥ 100%. Wrap critical agent spawns in a budget.mjs check && spawn … guard to fail closed.cost-tracking:budget-config)json{ "budget_usd": 50.00, "setAt": "2026-05-05T...", "thresholds": { "info": 0.50, "warning": 0.75, "critical": 0.90, "hard_stop": 1.00 } }
| Threshold | Level | Action | |---|---|---| | 50% | INFO 🟡 | log notification, no UX disruption | | 75% | WARNING 🟠 | display warning, suggest /cost-optimize | | 90% | CRITICAL 🔴 | urgent alert, recommend model downgrades | | 100% | HARD_STOP 🛑 | halt non-essential spawns; exit code 1 |
cost-track (producer) — populates cost-tracking:session-*cost-report — same data source, narrative formatcost-optimize — recommended action when WARNING/CRITICAL| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 7,566 | 2,497 | -67% | 1 | 1 | 0% | 1,232 | 1,023 | -17% | 0 | 0 | — |
case-02 | fail→pass | 7,639 | 1,797 | -76% | 1 | 1 | 0% | 1,498 | 935 | -38% | 0 | 0 | — |
case-11 | fail→pass | 5,805 | 2,127 | -63% | 1 | 1 | 0% | 1,005 | 1,073 | +7% | 0 | 0 | — |
case-03 | fail→pass | 8,666 | 5,598 | -35% | 1 | 1 | 0% | 1,063 | 939 | -12% | 0 | 0 | — |
case-04 | pass→pass | 13,642 | 3,438 | -75% | 1 | 1 | 0% | 2,644 | 1,349 | -49% | 0 | 0 | — |
case-05 | pass→fail | 15,099 | 14,424 | -4% | 1 | 1 | 0% | 2,783 | 3,758 | +35% | 0 | 0 | — |
case-06 | fail→fail | 18,220 | 10,839 | -41% | 1 | 1 | 0% | 3,956 | 3,061 | -23% | 0 | 0 | — |
case-07 | fail→pass | 9,683 | 1,956 | -80% | 1 | 1 | 0% | 1,676 | 1,051 | -37% | 0 | 0 | — |
case-08 | fail→pass | 7,171 | 1,790 | -75% | 1 | 1 | 0% | 1,092 | 902 | -17% | 0 | 0 | — |
case-09 | fail→pass | 4,593 | 3,951 | -14% | 1 | 1 | 0% | 878 | 1,575 | +79% | 0 | 0 | — |
case-10 | fail→pass | 10,347 | 2,823 | -73% | 1 | 1 | 0% | 1,781 | 1,255 | -30% | 0 | 0 | — |
case-12 | pass→pass | 6,464 | 3,909 | -40% | 1 | 1 | 0% | 1,091 | 1,370 | +26% | 0 | 0 | — |
case-13 | fail→pass | 6,342 | 2,689 | -58% | 1 | 1 | 0% | 982 | 1,155 | +18% | 0 | 0 | — |
case-14 | pass→pass | 4,937 | 1,716 | -65% | 1 | 1 | 0% | 843 | 914 | +8% | 0 | 0 | — |
case-15 | fail→pass | 15,694 | 7,100 | -55% | 1 | 1 | 0% | 2,751 | 2,013 | -27% | 0 | 0 | — |
case-16 | fail→pass | 9,724 | 3,102 | -68% | 1 | 1 | 0% | 1,764 | 1,296 | -27% | 0 | 0 | — |
case-17 | fail→pass | 5,508 | 1,131 | -79% | 1 | 1 | 0% | 870 | 874 | +0% | 0 | 0 | — |
case-18 | fail→pass | 11,095 | 1,580 | -86% | 1 | 1 | 0% | 1,783 | 950 | -47% | 0 | 0 | — |
case-19 | fail→pass | 4,975 | 1,405 | -72% | 1 | 1 | 0% | 813 | 915 | +13% | 0 | 0 | — |
case-20 | fail→pass | 12,105 | 2,617 | -78% | 1 | 1 | 0% | 2,005 | 1,220 | -39% | 0 | 0 | — |
case-21 | fail→pass | 25,610 | 2,537 | -90% | 1 | 1 | 0% | 4,948 | 1,170 | -76% | 0 | 0 | — |
case-22 | fail→pass | 15,627 | 2,449 | -84% | 1 | 1 | 0% | 2,713 | 1,117 | -59% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +68 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.