/ca-metrics
Read-only 3-metric governance glance — override rate, small-lane rate, sprint low-confidence ratio — each with a trend arrow vs. the prior 20-commit window.
$ npx -y skills add arbiterForge/codeArbiter --skill ca-metrics --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/ca-metrics
Context preview
The summary Claude sees to decide when to auto-load this skill.
Read-only 3-metric governance glance — override rate, small-lane rate, sprint low-confidence ratio — each with a trend arrow vs. the prior 20-commit window.
SKILL.md
ca-metrics.SKILL.mdname: ca-metrics
description: Read-only 3-metric governance glance — override rate, small-lane rate, sprint low-confidence ratio — each with a trend arrow vs. the prior 20-commit window.
argument-hint: "[--window N]"
$ca-metrics — governance trend glance
A bare-numbers summary of the three governance-health metrics that `_metricslib.py` tracks across commit windows. Each metric shows its value for the **current** 20-commit window and a direction arrow (↑/↓/→) relative to the immediately preceding window.
This is NOT a second `$ca-audit` packet. It prints numbers and arrows only — no verbatim override lines, no commit list, no file write. Use it to spot a trend at a glance; reach for `$ca-audit` when you need the full evidentiary packet.
Flow
1. **Invoke the helper.** Call the thin entry hook `metrics.py`, which wraps `compute` from `_metricslib.py`, via a Windows-safe `python3 … || python …` fallback. Pass `<project-root>` as `--root`. If `--window N` was supplied, pass it through as `--window N`; otherwise omit it (the helper applies the default of 20).
python3 "${CLAUDE_PLUGIN_ROOT}/hooks/metrics.py" --root "<project-root>" || python "${CLAUDE_PLUGIN_ROOT}/hooks/metrics.py" --root "<project-root>"> **`ensure_ascii` note — do not remove this.** `metrics.py` calls `json.dumps` > with its default `ensure_ascii=True`. This ASCII-escapes the arrow glyphs > (↑↓→) in the subprocess stdout, which avoids a `UnicodeEncodeError` on Windows > `cp1252` consoles that cannot encode those code-points raw. The rendered output > you present to the user (step 2 below) uses the real glyphs — they are written > by the assistant, not piped through the subprocess stdout. Do NOT add > `ensure_ascii=False` here.
With a custom window size:
python3 "${CLAUDE_PLUGIN_ROOT}/hooks/metrics.py" --root "<project-root>" --window N || python "${CLAUDE_PLUGIN_ROOT}/hooks/metrics.py" --root "<project-root>" --window NReplace `N` with the integer the user supplied.
2. **Render the glance.** Parse the returned JSON dict. Present exactly three lines, one per metric, in this order:
override rate: <current> <arrow> (prior: <prior>)
small-lane rate: <current> <arrow> (prior: <prior>)
sprint low-conf ratio: <current> <arrow> (prior: <prior>)
- Use the real glyphs ↑, ↓, → in your message (not the JSON-escaped forms).
- For `sprint_low_conf_ratio`, the `current` or `prior` value may be the string
`"n/a"` — render it literally (e.g. `n/a ↑`).
- ↑ on `override_rate` and `sprint_low_conf_ratio` is a worsening signal; state
this briefly below the table so the reader does not have to guess.
3. **State the window.** Append one line naming the window size used, e.g. `Window: 20 commits (default)` or `Window: N commits (--window N)`.
Hard gate
- Read-only. MUST NOT write, create, or modify any file. MUST NOT stage or commit.
`git status` MUST be unchanged after a run.
- Emits ONLY the fixed 3-metric glance: `override_rate`, `small_lane_rate`,
`sprint_low_conf_ratio`. MUST NOT emit verbatim override log lines, verbatim triage entries, commit lists, or any other content from the governance logs.
- MUST NOT require `$ca-init` to have been run. The helper degrades gracefully on
absent logs (counts return 0 / ratio returns `"n/a"`); surface the degraded values as-is rather than blocking.
- If the helper subprocess fails entirely (import error, Python not found), report
the error and stop — do not fabricate metric values.
When NOT to use
- Full governance packet with verbatim overrides and audit trail → `$ca-audit`.
- Live project state (active sprint, open confirms, hook health) → `$ca-status`.
Read more
name: ca-metrics description: Read-only 3-metric governance glance — override rate, small-lane rate, sprint low-confidence ratio — each with a trend arrow vs. the prior 20-commit window. argument-hint: "[--window N]"
$ca-metrics — governance trend glance
A bare-numbers summary of the three governance-health metrics that `_metricslib.py` tracks across commit windows. Each metric shows its value for the **current** 20-commit window and a direction arrow (↑/↓/→) relative to the immediately preceding window.
This is NOT a second `$ca-audit` packet. It prints numbers and arrows only — no verbatim override lines, no commit list, no file write. Use it to spot a trend at a glance; reach for `$ca-audit` when you need the full evidentiary packet.
Flow
1. **Invoke the helper.** Call the thin entry hook `metrics.py`, which wraps `compute` from `_metricslib.py`, via a Windows-safe `python3 … || python …` fallback. Pass `<project-root>` as `--root`. If `--window N` was supplied, pass it through as `--window N`; otherwise omit it (the helper applies the default of 20).
python3 "${CLAUDE_PLUGIN_ROOT}/hooks/metrics.py" --root "<project-root>" || python "${CLAUDE_PLUGIN_ROOT}/hooks/metrics.py" --root "<project-root>"> **`ensure_ascii` note — do not remove this.** `metrics.py` calls `json.dumps` > with its default `ensure_ascii=True`. This ASCII-escapes the arrow glyphs > (↑↓→) in the subprocess stdout, which avoids a `UnicodeEncodeError` on Windows > `cp1252` consoles that cannot encode those code-points raw. The rendered output > you present to the user (step 2 below) uses the real glyphs — they are written > by the assistant, not piped through the subprocess stdout. Do NOT add > `ensure_ascii=False` here.
With a custom window size:
python3 "${CLAUDE_PLUGIN_ROOT}/hooks/metrics.py" --root "<project-root>" --window N || python "${CLAUDE_PLUGIN_ROOT}/hooks/metrics.py" --root "<project-root>" --window NReplace `N` with the integer the user supplied.
2. **Render the glance.** Parse the returned JSON dict. Present exactly three lines, one per metric, in this order:
override rate: <current> <arrow> (prior: <prior>) small-lane rate: <current> <arrow> (prior: <prior>) sprint low-conf ratio: <current> <arrow> (prior: <prior>)
- Use the real glyphs ↑, ↓, → in your message (not the JSON-escaped forms).
- For `sprint_low_conf_ratio`, the `current` or `prior` value may be the string
`"n/a"` — render it literally (e.g. `n/a ↑`).
- ↑ on `override_rate` and `sprint_low_conf_ratio` is a worsening signal; state
this briefly below the table so the reader does not have to guess.
3. **State the window.** Append one line naming the window size used, e.g. `Window: 20 commits (default)` or `Window: N commits (--window N)`.
Hard gate
- Read-only. MUST NOT write, create, or modify any file. MUST NOT stage or commit.
`git status` MUST be unchanged after a run.
- Emits ONLY the fixed 3-metric glance: `override_rate`, `small_lane_rate`,
`sprint_low_conf_ratio`. MUST NOT emit verbatim override log lines, verbatim triage entries, commit lists, or any other content from the governance logs.
- MUST NOT require `$ca-init` to have been run. The helper degrades gracefully on
absent logs (counts return 0 / ratio returns `"n/a"`); surface the degraded values as-is rather than blocking.
- If the helper subprocess fails entirely (import error, Python not found), report
the error and stop — do not fabricate metric values.
When NOT to use
- Full governance packet with verbatim overrides and audit trail → `$ca-audit`.
- Live project state (active sprint, open confirms, hook health) → `$ca-status`.
When you can't trust yourself with your code base, trust Arbiter.
Repo: arbiterForge/codeArbiter
Other skills on codearbiter.
- /brainstorming
The Socratic spec-refinement front of /feature, and the planning front of /sprint. Routed to BEFORE any code — it takes a one-line idea and drives it to an approved, concrete spec with testable acceptance criteria. Four gated phases — frame, refine, write, approve. No
Open skill - /commit-gate
The only path to a commit. Routed to when the user invokes /commit or otherwise instructs codeArbiter to persist staged changes. Nine gated phases — permission, branch, classification, verification (test/lint/secrets), behavioral proof, diff review, selective stage, message,
Open skill - /context-check
Optional manual drift audit — report stale provenance-tracked docs (via _provenancelib drift detection across .codearbiter/.provenance/), then per stale doc offer re-scout / re-baseline / defer. Not the daily loop; commit-gate auto-heal owns routine maintenance.
Open skill - /context-creation
The brownfield back-fill. Routed to by /create-context, and by startup when .codearbiter/CONTEXT.md lacks the <!--INITIALIZED--> body marker but source code exists. Six gated phases — pre-flight, scout dispatch, synthesis, gap interview, write, lock. Reads the existing codebase
Open skill - /crypto-compliance
The banned-primitive gate. Routed to when changed code hashes, signs, encrypts, derives keys, generates security-relevant randomness, configures TLS, or imports a crypto library. Rejects broken primitives, disabled TLS verification, and home-rolled crypto; the approved-primitive
Open skill - /debug
Investigate-then-decide root-cause analysis for a defect whose cause is unknown (distinct from /fix, which assumes a known bug). Five gated phases: capture, hypothesize, gather, decide, hand off. Investigation only, no code changes; exits to /fix, /adr, or a no-action close.
Open skill

