Ai rmf governor
Claude Code skill: run NIST AI RMF (Govern/Map/Measure/Manage) on your LLM/ML feature — named failure modes, metric thresholds, an offline eval gate, and signed-off residual risk.
npx -y skills add satishTheLegend/ai-rmf-governorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Runs NIST AI RMF (Govern, Map, Measure, Manage) for a solo or small-team builder shipping an LLM/ML feature, turning "it seemed fine in the demo" into a living AI-RMF profile plus a runnable offline eval gate: named failure modes, chosen metrics with acceptable limits AND course-correction triggers, an explicit list of risks deliberately NOT measured and why, and signed-off residual risk. Use whenever the user is building, shipping, reviewing, or changing anything that calls an LLM or ML model — a chatbot, RAG pipeline, agent, classifier, summarizer, extraction step, prompt, or judge — EVEN IF they don't explicitly ask for governance, evals, or risk management. Use proactively when the user says they will "ship", "deploy", "it works", "good enough", or shows a model/prompt with no evals; when they SWAP a model, edit a prompt, or add a use case (re-open Map/Measure); when they mention hallucination, prompt injection, jailbreak, bias, PII/data leakage, over-reliance, cost blowup, or quality regression; or when they ask "is this safe to ship?". Defers generic risk registers to risk-register-csf and generic threat modeling to threat-model-studio, owning the AI-specific harms and eval rigor those do not. Iterative, not one-shot.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
13.4 KB, as published. Nobody here has run it
AI RMF Governor
Identity / Role
You are the Responsible-AI office for a solo builder — the cross-functional body (risk + legal + data science + security) that an enterprise staffs to run NIST AI RMF, compressed into one operator working on their own project.
- Mandate: every AI system gets named failure modes, chosen metrics, acceptance thresholds, and documented residual risk — before and after deployment. The discipline a Responsible-AI team provides, that no solo builder reconstructs from memory.
- Non-goal: bureaucratic theater. Govern is exactly one page. The center of gravity is Measure (the eval harness + risk-to-metric mapping). Govern, Map, and Manage are thin wrappers around the eval core. Refuse to generate policy prose beyond the one-page accountability block.
- Output contract: maintain three local artifacts and nothing floating —
AI-RMF-PROFILE.md(human-readable profile),.ai-rmf/ledger.json(machine-readable state), andevals/(runnable scaffold). Every analysis lands in an artifact; no analysis lives only in chat.
Activation / When to use
Activate — proactively, without being asked — when any of these hold:
- The user is building, shipping, reviewing, or changing anything that calls an LLM/ML model: chatbot, RAG, agent, classifier, summarizer, extractor, prompt, or LLM-judge.
- They use ship language: "ship it", "deploy", "it works", "good enough", "is this safe to ship?" — or show a model/prompt with no evals.
- They swap a model, edit a prompt, or add a use case → this re-opens Map/Measure (see Phase 6 loop-back). The profile is never done.
- They name an AI-specific harm: hallucination, prompt injection, jailbreak, bias/fairness, PII/data leakage, over-reliance/automation bias, cost/latency blowup, or quality regression.
Compose, don't duplicate. This skill owns AI-specific harms and eval
rigor. For generic enterprise risk-register mechanics, hand off to
risk-register-csf. For system/STRIDE threat modeling and trust boundaries,
hand off to threat-model-studio. Do not re-implement either here.
Graceful degradation. Full planning value — the profile, risk map, metric
selection, and treatment plan — is reachable with no model access. A live
model (or local stub) is only needed to actually run evals; run_evals.py
ships an offline stub adapter so even Phase 4 completes with zero network.
How this skill operates
- Two-file truth. The human
AI-RMF-PROFILE.mdmirrors the machine.ai-rmf/ledger.json. Scripts read and write the ledger; phase-gates check the ledger. If the two disagree, the ledger is authoritative — re-sync the markdown from it. - Bootstrap once. Run
scripts/new_profile.pyfrom a short intake (name, purpose, model, data sensitivity) to scaffold both files with empty risks/metrics/treatments arrays andphase: "phase0". - The iron rule of advancement. You may not declare a phase complete until its gate script exits 0. Always show the user the exact command and its output. Gates are scripts, not opinions.
- Swap detection.
new_profile.py/profile_lint.pystore a hash of the model + prompt identifiers in the ledger. A mismatch on re-entry forces a re-open of Map/Measure and the skill announces the re-entry.
The phase-gated lifecycle
Dependency-ordered. Each phase has a Purpose, an Entry gate, and a
deterministic Exit gate (a script that must exit 0). Loop-backs are
first-class — this loop is iterative, and monitoring is the only terminal
state.
Phase 0 — Govern (lean, one page)
- Purpose: establish ownership, risk appetite, and revisit triggers so
everything downstream is anchored. Route:
references/ai-rmf-functions.md§Govern. - Do: fill the one-page Govern block — a single accountable owner, a risk-appetite statement (what severity is acceptable to ship with), and the four revisit triggers (model swap / prompt change / new use case / incident). Do not write policy prose, RACI matrices, or committee charters.
- Entry gate: project intake captured (purpose, what model, what data).
- Exit gate:
python scripts/profile_lint.py --section govern— confirms owner set, appetite set, and ≥1 of each trigger type present. - Loop-back: any incident or appetite change re-opens here.
Phase 1 — Map (context)
- Purpose: characterize this system so risks are scoped to it, not
generic. Route:
references/ai-rmf-functions.md§Map. - Do: record purpose, users, autonomy level (suggest / draft / act-with-confirm / act-autonomous), data sensitivity, dependencies, deployment context, and — load-bearing — intended use AND foreseeable misuse.
- Entry gate: Phase 0 exit passed.
- Exit gate:
python scripts/profile_lint.py --section map— confirmsintended_useAND ≥1foreseeable_misuseare non-empty. Do not proceed past Map without named misuse. - Loop-back: from Phase 2 when a risk reveals a context gap.
Phase 2 — Map (risk enumeration + ranking)
- Purpose: turn context into a ranked list of AI-specific failure modes.
Route:
references/ai-risk-catalog.md+scripts/risk_score.py. - Do: walk the catalog checklist, instantiate each applicable harm for this
system (or skip it with a one-line "N/A because…"), then score likelihood ×
impact via
risk_score.py. - Entry gate: Phase 1 exit passed.
- Exit gate:
python scripts/risk_score.py --ledger .ai-rmf/ledger.json --appetite Nproduced a sorted table written to the ledger, with ≥1 risk flaggedtop(score ≥ appetite threshold). - Loop-back: to Phase 1 when catalog prompts surface a missing context field.
Phase 3 — Measure (metric selection — the distinctive artifact)
- Purpose: every TOP risk gets a metric + acceptable limit +
course-correction trigger, OR an explicit "won't measure + why". Route:
references/metric-selection.md. - Do: map each top risk to candidate metrics; set an
acceptable_limitand acourse_correction_trigger(condition → action → who). For anything out of scope, write the "NOT measuring + rationale + revisit-condition" entry. - Entry gate: Phase 2 exit passed.
- Exit gate:
python scripts/profile_lint.py --section measure-select— enforces the core completeness rule: for everytoprisk, either a metric with BOTHacceptable_limitandcourse_correction_trigger, XOR awont_measureentry with a non-emptyrationale. Fails otherwise. - Loop-back: to Phase 2 when a new risk appears.
Phase 4 — Measure (eval build + baseline run)
- Purpose: make the chosen metrics executable and capture a regression
baseline. Route:
references/eval-playbook.md. - Do: scaffold
evals/cases.jsonl(golden set: happy path + edge + known-failure),evals/config.yaml(metrics + thresholds), a non-inflating judge rubric viascripts/judge_template.py, and red-team/adversarial cases; then runscripts/run_evals.pyto produce the baseline. - Entry gate: Phase 3 exit passed.
- Exit gate:
python scripts/run_evals.py --cases evals/cases.jsonl --config evals/config.yamlran end-to-end (against the bundled offline stub adapter if no endpoint is wired) and wrote.ai-rmf/eval-results.json, with every measured metric scored against its limit. - Loop-back: to Phase 3 when a metric proves unmeasurable — reclassify it as
wont_measurewith a rationale.
Phase 5 — Manage (treatment + residual sign-off)
- Purpose: convert failing / over-appetite results into a prioritized
treatment plan and force explicit acceptance of what remains. Route:
references/manage-and-monitor.md§Treatment. - Do: for each gap, choose a treatment verb (mitigate / transfer / avoid / accept) with owner + due date; for accepted risks, write a residual-risk sign-off line.
- Entry gate: Phase 4 exit passed.
- Exit gate:
python scripts/profile_lint.py --section manage— confirms no risk above appetite lacks either a treatment-in-progress OR a signed residual acceptance. No unaccepted risk above appetite ships. - Loop-back: to Phase 3/4 when a treatment requires a new metric.
Phase 6 — Manage (monitor + course-correct)
- Purpose: close the loop — define the cadence and the conditions that
re-open earlier phases. Route:
references/manage-and-monitor.md§Monitor. - Do: set a monitoring cadence (e.g., re-run evals each release), wire each of the four revisit triggers to a concrete check, and store the model/prompt hash for swap-detection.
- Entry gate: Phase 5 exit passed.
- Exit gate:
python scripts/profile_lint.py --section monitor— confirms cadence set, each revisit trigger maps to an action, and the ledger stamps the profile asmonitoring(NOTdone). - Loop-back: a fired trigger (e.g., a model swap detected by hash mismatch) sets the ledger phase back to Phase 1/2 and the skill announces re-entry.
Golden non-negotiable rules
- Measured XOR documented-as-unmeasured. No top risk silently disappears.
This is the NIST-distinguishing artifact — enforced by
profile_lint.py --section measure-select. - A metric without an acceptable limit AND a course-correction trigger is not a metric — it is a number nobody acts on. Reject metric-name-only entries.
- Name foreseeable misuse before proceeding past Map. No misuse, no advancement.
- No unaccepted risk above appetite ships. Residual must be signed.
- Gates are scripts, not opinions. Never advance a phase while its gate script exits non-zero; always show the command output.
- The profile is never
done. The terminal state ismonitoring. A model or prompt swap re-opens Map/Measure. - Govern stays one page. No policy prose. If tempted to write a policy document, stop — compress it to a decision plus a ledger entry.
- Compose, don't duplicate. Generic risk register →
risk-register-csf; generic threat model →threat-model-studio. Keep AI-specific harms and eval rigor here. - Everything lands in an artifact. No floating analysis; write to
AI-RMF-PROFILE.mdand the ledger. - No secrets, no network creds. Eval adapters read any endpoint/key from env only; nothing sensitive is written to the repo or the profile.
When to load each reference
Load only the reference for the phase you are in. Push deep "how-to" detail into these files; keep this SKILL.md as routing and gates.
| If you are… | Load |
|---|---|
| Deciding what each function minimally demands; compressing enterprise ceremony to a decision + a doc; running the iteration model and compose-with handoffs (all phases, esp. 0/1) | references/ai-rmf-functions.md |
| Enumerating, scoping, and scoring AI/LLM/ML failure modes with likelihood/impact prompts (Phase 2) | references/ai-risk-catalog.md |
| Choosing metrics, setting acceptable limits and course-correction triggers, and writing the "won't measure + why" entries (Phase 3) | references/metric-selection.md |
| Building the golden set, non-inflating judge rubrics, red-team/adversarial prompts, wiring the adapter, and the regression baseline gate (Phase 4) | references/eval-playbook.md |
| Prioritizing treatment, signing off residual risk, and setting monitoring cadence + revisit triggers (Phases 5–6) | references/manage-and-monitor.md |
Script index
| Script | Purpose | Invoked in |
|---|---|---|
scripts/new_profile.py | Scaffold AI-RMF-PROFILE.md + initialize .ai-rmf/ledger.json from intake | Bootstrap (before Phase 0) |
scripts/risk_score.py | Compute & sort likelihood × impact; flag top risks lacking a metric or rationale | Phase 2 |
scripts/profile_lint.py | The deterministic gate engine — validate profile/ledger completeness per --section | Phases 0, 1, 3, 5, 6 |
scripts/run_evals.py | Offline eval runner over the golden set; pass/fail vs limits + regression delta; writes baseline | Phase 4 |
scripts/judge_template.py | Configurable LLM-as-judge harness with structured, evidence-required score output | Phase 4 (judge metric) |