Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Print a debt-ops health summary from the metrics log, covering registration rate, hook feedback action rate, ADR creation, and AI-authored share. Use when the user asks for "debt-ops metrics", "debt health", "registry stats", or invokes $metrics. Read-only, never writes the log.
.claude/skills/hashgraph-online-metrics/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 92% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -39% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -30% | 0% |
| case-04 | ✓→✗ | ▼ Worse | 65% | 0% |
Read the hidden metrics log and tell the user whether v1's tripwires are tripping.
bashTOPLEVEL=$(git rev-parse --show-toplevel) REPO_HASH=$(printf '%s' "$TOPLEVEL" | shasum | cut -c1-12) # Hooks and skills share one deterministic cache base (ADR 0011). Override the # base with DEBT_OPS_CACHE; default is ~/.cache/debt-ops. CACHE_DIR="${DEBT_OPS_CACHE:-$HOME/.cache/debt-ops}/cache/$REPO_HASH" LOG="$CACHE_DIR/metrics.jsonl" if [ -f "$LOG" ]; then tail -n 500 "$LOG" else echo "MISSING: no metrics.jsonl found for repo hash $REPO_HASH" fi
If the file is missing or empty, tell the user the hooks haven't fired yet in this repo and stop.
One JSON object per line, three event shapes:
{"event":"edit","file":"...","registry_count":N,"ts":"..."} — every agent edit{"event":"feedback","file":"...","result":"pass|fail","ts":"..."} — every quality-check fire{"event":"session","registry_count":N,"adr_count":M,"ai_authored_count":K,"ts":"..."} — start of each sessionTimestamps are ISO-8601 UTC.
Filter to the last 7 days. Then compute:
event:edit and event:session.registry_count minus first (across either edit or session events). >0 means Discipline 1 is firing.adr_count minus first (session events only).ai_authored_count / registry_count, when registry_count>0).count(result:pass) / count(event:feedback).result:fail, look at the next feedback event for the same file. Count those that flipped to pass. Divide by total fails. Below 50% means the agent isn't reliably acting on hook output — the architectural alarm bell.If there are fewer than 5 sessions in the window, say "need more data" and skip the verdict.
One screen. No padding. Use → and ↑/↓ for trends. Example shape:
debt-ops metrics — last 7 days
─────────────────────────────────
edits : 142 (8 sessions, ~18 edits/session)
registry : +3
adrs : +1
ai-authored : 50% → 60% ↑
feedback ran : 89 times
pass rate : 88%
fail → pass rate: 80% (8/10)
verdict: okEnd with one judgment line:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 10,382 | 18,122 | +75% | 1 | 1 | 0% | 453 | 1,200 | +165% | 0 | 0 | — |
case-16 | fail→fail | 17,300 | 13,172 | -24% | 1 | 1 | 0% | 2,007 | 1,136 | -43% | 0 | 0 | — |
case-02 | fail→fail | 8,825 | 12,658 | +43% | 1 | 1 | 0% | 420 | 1,163 | +177% | 0 | 0 | — |
case-03 | fail→fail | 8,181 | 17,471 | +114% | 1 | 1 | 0% | 455 | 1,224 | +169% | 0 | 0 | — |
case-04 | pass→fail | 10,795 | 13,113 | +21% | 1 | 1 | 0% | 658 | 1,086 | +65% | 0 | 0 | — |
case-05 | fail→fail | 19,225 | 13,281 | -31% | 1 | 1 | 0% | 2,210 | 1,224 | -45% | 0 | 0 | — |
case-06 | pass→pass | 12,771 | 23,356 | +83% | 1 | 1 | 0% | 1,148 | 2,203 | +92% | 0 | 0 | — |
case-07 | fail→pass | 7,176 | 23,347 | +225% | 1 | 1 | 0% | 1,256 | 2,409 | +92% | 0 | 0 | — |
case-08 | fail→fail | 16,331 | 18,899 | +16% | 1 | 1 | 0% | 1,774 | 1,291 | -27% | 0 | 0 | — |
case-09 | fail→fail | 16,382 | 13,994 | -15% | 1 | 1 | 0% | 1,671 | 1,310 | -22% | 0 | 0 | — |
case-10 | fail→pass | 9,554 | 8,724 | -9% | 1 | 1 | 0% | 1,809 | 1,316 | -27% | 0 | 0 | — |
case-17 | pass→pass | 7,869 | 8,109 | +3% | 1 | 1 | 0% | 450 | 1,346 | +199% | 0 | 0 | — |
case-11 | fail→pass | 14,545 | 7,386 | -49% | 1 | 1 | 0% | 2,008 | 1,219 | -39% | 0 | 0 | — |
case-12 | fail→pass | 10,624 | 8,668 | -18% | 1 | 1 | 0% | 1,810 | 1,260 | -30% | 0 | 0 | — |
case-13 | fail→fail | 19,829 | 9,719 | -51% | 1 | 1 | 0% | 1,955 | 1,228 | -37% | 0 | 0 | — |
case-14 | pass→fail | 17,669 | 14,485 | -18% | 1 | 1 | 0% | 2,026 | 1,437 | -29% | 0 | 0 | — |
case-15 | pass→pass | 10,579 | 2,516 | -76% | 1 | 1 | 0% | 1,032 | 1,177 | +14% | 0 | 0 | — |
case-18 | pass→pass | 7,351 | 8,405 | +14% | 1 | 1 | 0% | 401 | 1,279 | +219% | 0 | 0 | — |
case-19 | pass→pass | 13,189 | 16,507 | +25% | 1 | 1 | 0% | 1,855 | 1,144 | -38% | 0 | 0 | — |
case-20 | pass→pass | 11,616 | 20,958 | +80% | 1 | 1 | 0% | 1,326 | 3,845 | +190% | 0 | 0 | — |
case-21 | pass→pass | 12,567 | 19,746 | +57% | 1 | 1 | 0% | 2,220 | 4,266 | +92% | 0 | 0 | — |
case-22 | pass→pass | 16,638 | 15,752 | -5% | 1 | 1 | 0% | 1,929 | 2,534 | +31% | 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, and 12 counted toward the lift figure. The other 10 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +9 percentage points is the difference between those two pass rates over the 12 comparable cases. 2 cases got worse with the skill loaded, and they are 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.