mcpField
C
cost-health

cost-health

github.com/ruvnetCloud & DevOps80.0k249 installsUpdated today
Repository

About cost-health

cost-health is a CI cost-health skill that runs budget, burn, anomaly, and projection checks in parallel. It summarizes each result and uses the worst exit code to determine the gate status.

Key features

  1. 01Runs four cost checks in parallel
  2. 02Summarizes each check's status
  3. 03Returns the worst exit code
  4. 04Configurable alert thresholds
  5. 05Allows selected checks to be skipped

Use cases

  1. 01Add a unified cost gate to CI
  2. 02Skip slower checks during fast runs
  3. 03Alert on projected budget exhaustion
  4. 04Check for cost anomalies and accelerating burn

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/ruvnet/ruflo --skill cost-health

After installing, type/cost-healthin Claude Code to confirm it loaded.

Details

From the project README

The four CI-gate skills (budget / burn / anomaly / projection) each answer a different question. This skill composes them — runs all four IN PARALLEL, returns max(exit_codes), prints a one-line summary per check.

SubcheckQuestionDefault threshold
budget"Have we crossed the configured budget?"HARD_STOP at 100%
burn"Is daily burn accelerating?"+100% vs prior-week mean
anomaly"Is any specific session a >3.5σ outlier?"≥1 outlier
projection"When will we hit 100% of budget?"<14 days

Algorithm

Implementation: scripts/health.mjs.

  1. Spawn all four subcheck scripts in parallel (Promise.all over child_process.spawn).
  2. Each subcheck emits --format json; parse and capture exit code.
  3. Projection has no built-in exit code — synthesize one from daysUntilReached[100%] < --alert-days-to-exhaust.
  4. Final exit code = max(subcheck exits). Any single failure fails the gate.
  5. Print one-line summary per check + overall HEALTHY/UNHEALTHY badge.

CI integration

- name: Cost health gate
  run: cost health --alert-acceleration 100 --alert-outliers 1

A single step covers four alert ladders. Before this skill you'd wire four separate gates that each duplicated the npx + memory-list overhead; now it's one shell-out (and the four subcheck npx calls run in parallel internally).

Customizing thresholds

# Quarterly review — stricter thresholds
cost health --alert-acceleration 50 --alert-outliers 1 --alert-days-to-exhaust 30

# Production drift gate — only fire on egregious changes
cost health --alert-acceleration 200 --alert-outliers 3 --alert-days-to-exhaust 7

# Skip the slow burn check during a smoke run
cost health --skip burn

Smoke transcript (5 healthy sessions, then add 1 outlier)

# Healthy
Overall: ✓ HEALTHY (max exit code 0)
| Check | Status | Detail |
| budget | ✓ | unknown — no budget configured |
| burn | ✓ | delta within ±100% |
| anomaly | ✓ | 0 outliers — under threshold ≥1 |
| projection | ✓ | no budget configured — skipping |

# After adding $5 outlier (vs $0.10 baseline)
Overall: ⚠ UNHEALTHY (max exit code 1)
| burn | ⚠ | ALERT 5163.2% acceleration: latest bucket $5.00 is 5163.2% above prior mean $0.095 |
| anomaly | ⚠ | ALERT 1 outlier (|z|>3.5) |

Skipping subchecks

cost health --skip burn,projection   # only budget + anomaly

Useful when:

  • A subcheck doesn't apply (no budget set → skip projection)
  • A subcheck is too slow for fast-feedback contexts (smoke runs)
  • A subcheck is being independently CI-gated already

Exit code semantics

ExitMeaning
0All subchecks OK
1At least one subcheck fired an alert (budget HARD_STOP, burn drift, anomaly outlier, projection imminent-exhaust)
2A subcheck had a config/usage error (e.g. invalid CLI args propagated to a subscript)
127A subcheck failed to launch (script missing, etc.)

max() means the worst signal wins — exit 2 (config error) always dominates exit 1 (alert), so you spot misconfigured pipelines before they masquerade as healthy.

Comments

Markdown supported