cost-trend — Claude Code skill: track metric drift over time
A skill that reads benchmark runs from docs/benchmarks/runs/*.json and surfaces how win rate, latency, escalation rate, and cost change over time. Catches regressions that smoke tests miss.
npx skills add ruvnet/ruflo --skill cost-trend -a claude-codeWhat cost-trend does
cost-trend analyzes persisted benchmark runs and reports delta between first and last run — win rate, mean and p99 latency, escalation rate, speedup versus Gemini. It also shows a per-run series, flagging regressions when win rate drops or latency rises 1.5× from baseline.
Run the script from project root with node plugins/ruflo-cost-tracker/scripts/trend.mjs. Accepts env variables: TREND_FORMAT=json emits JSON instead of markdown, TREND_LIMIT=10 considers only the most recent N runs. Corpus version is recorded in each run, so trends remain interpretable across corpus updates.
Use it before a release to check that speedup hasn't drifted, or after expanding the corpus to verify older runs still hit the same win rate. Baseline latencies for Sonnet 4.6 and Opus 4.7 are included in the report if enabled at run time.
What it helps with
- track metric degradation between benchmark runs
- catch slow win rate decline that smoke tests miss
- compare cost and speed across run history
- measure impact of agent-booster upgrades on latency
- surface regressions after corpus expansion
Example prompts for the agent
- Run cost-trend before release to check metric drift
- Export trends to JSON and load into a dashboard
- Review the last 10 runs after updating agent-booster
How to install cost-trend
1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill cost-trend -a claude-code2Manually: put the files in place
~/.claude/skills/cost-trend/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/cost-trend/
1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill cost-trend -a codex2Manually: put the files in place
.agents/skills/cost-trend/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill cost-trend -a cursor2Manually: put the files in place
.cursor/skills/cost-trend/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install ruvnet/ruflo cost-trend2Manually: put the files in place
.github/skills/cost-trend/SKILL.md1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill cost-trend -a gemini-cli2Platform CLI
gemini skills install https://github.com/ruvnet/ruflo --path plugins/ruflo-cost-tracker/skills/cost-trendManually: put the files in place
.devin/skills/cost-trend/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill cost-trend -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about cost-trend
How do I install cost-trend in Claude Code?
Run from project root: npx skills add ruvnet/ruflo --skill cost-trend -a claude-code. After installation, the skill is available at ~/.claude/skills/cost-trend/SKILL.md.
What does cost-trend do?
It analyzes your benchmark archive and shows how win rate, latency, escalation rate, and cost change over time. It flags regressions when win rate drops or latency rises 1.5× from the first run.
What environment variables does cost-trend support?
TREND_FORMAT=json switches output to JSON, TREND_LIMIT=10 limits analysis to the most recent N runs. By default, output is markdown and all available runs are analyzed.
Source text
SKILL.md · MIT
--- name: cost-trend description: Read every docs/benchmarks/runs/*.json and surface drift in win rate, latency, escalation rate, and LLM-baseline cost over time argument-hint: "" allowed-tools: Bash --- # Cost Trend The smoke gate is binary (`winRate ≥ 0.80` → pass/fail). The corpus benchmarks captured over time form a curve — and curves catch regressions the gate misses (win rate slowly creeping from 100% to 85% is "still passing" by smoke but a real degradation). This skill reads every persisted run in `docs/benchmarks/runs/*.json` and reports first→last deltas plus a per-run series, flagging regressions in win rate or latency. ## When to use - Before a release — check that the speedup hasn't drifted. - After expanding the corpus — verify older runs still hit the same win rate on the new corpus *they* reflected. - After upgrading `agent-booster` — surface latency / strategy changes. ## Steps 1. **Run the trend script** from the project root: ```bash node plugins/ruflo-cost-tracker/scripts/trend.mjs ``` Optional env: - `TREND_FORMAT=json` — emit JSON instead of markdown - `TREND_LIMIT=10` — consider only the most recent N runs 2. **Inspect the drift summary** — first vs last on win rate, avg latency, p99, escalation rate, speedup vs Gemini. 3. **Inspect the per-run series** — one row per run, including Sonnet 4.6 + Opus 4.7 baseline latencies if those were enabled (`BENCH_ANTHROPIC=1` at run time). 4. **Regression flags** — the script emits `> ⚠ Regression` callouts when: - Win rate dropped between first and last run - Avg latency rose ≥ 1.5× from first run ## Cross-references - `cost-benchmark` — the producer of the run JSONs this skill consumes - `bench/booster-corpus.json` — the corpus version is recorded in each run, so trends across corpus versions remain interpretable - `docs/benchmarks/runs/latest.json` — the most-recent run; smoke step 23 gates on `winRate ≥ 0.80` from this file
© ruvnet · MIT · ruvnet/ruflo