skill-coverage-gate

$npx mdskill add Tibsfox/gsd-skill-creator/skill-coverage-gate

Checks skill instruction coverage and compliance from trajectories.

  • Identifies untested instructions before shipping a skill.
  • Depends on SKILL.md and captured trajectories.
  • Translates instructions into behavior constraints for comparison.
  • Reports exercised, untested, and violated constraints.

SKILL.md

.github/skills/skill-coverage-gateView on GitHub ↗
---
name: skill-coverage-gate
description: >
  Use when reviewing, shipping, or regression-testing a SKILL.md and you hold
  one or more captured trajectories where that skill was actually loaded.
  Translates the skill's instructions into behavior constraints, then reports
  which were EXERCISED (coverage) versus untested, and flags any that were
  in-scope but VIOLATED (compliance) — a cheap single-trajectory test-adequacy
  gate. It surfaces untested instructions rather than auto-blocking, and
  escalates fail-closed only when a violation touches shared repo state,
  never-surface memory, or self-modification. Complements
  skill-counterfactual-audit (which measures EFFECT) and skill-causal-curation
  (which measures contribution); this one asks ADEQUACY. Backed by the
  agent-skill-coverage metric (arxiv 2606.20659v2). Triggers on skill review,
  ship gating, and regression-testing a skill against its trajectories.
description-frequency: on-demand
user-invocable: true
version: 1.0.0
format: 2025-10-02
triggers:
  - "check this skill's instruction coverage against a trajectory"
  - "which of this skill's rules were exercised or violated"
  - "test-adequacy gate before shipping a skill"
updated: 2026-07-18
status: ACTIVE
source: arxiv 2606.20659v2 (Agent Skill Coverage Metric)
---

# Skill Coverage Gate

Given a `SKILL.md` and one or more captured trajectories in which it was loaded,
translate its instructions into discrete behavior constraints, then report — per
constraint — whether the trajectory **exercised** it (coverage), left it
**untested**, or **violated** it while in scope (compliance). This is a cheap,
single-trajectory adequacy check that slots into the `skill-forge` ship/review
loop before more expensive paired or masked evaluation is worth running.

## Why

`skill-forge` validate + critique check a skill's *frontmatter and prose*; they
never observe whether the skill's rules actually got tested by the run that
loaded it. A skill can pass authoring review, ship, and then have half its
instructions never fire in any real trajectory — untested behavior masquerading
as verified behavior. Worse, an instruction can fire and be *disobeyed* without
anyone noticing, because the task still passed. This gate makes both gaps
legible: what was tested, and where the agent already broke a rule it loaded.

## Data classes touched

Inputs are **project-internal**: the skill file plus trajectories captured by
`session-retro` / `session-observatory-live` under `.planning/patterns/`. Those
traces can quote real work that includes strongly-marked **never-surface**
records — private origins, Fox Companies IP, credentials, Center Camp trust
rules. Boundary rule: the coverage report cites constraint evidence by trace
location and event index, never by pasting trace content that may carry such a
record. The report is project-internal and is written under `.planning/`; it is
never merged into published docs or any shared output.

## How

1. **Verify the input is valid.** Confirm the skill was in the loaded skill set
   for each supplied trajectory (check the session-retro loaded-skills field).
   A trajectory where the skill was not loaded gives coverage undefined —
   discard it, do not count it as zero coverage. Require ≥1 valid trajectory.
2. **Extract constraints.** Read the skill body and decompose it into atomic
   behavior constraints, each as `{id, precondition, required-behavior,
   scope-tags}`. `scope-tags` mark whether the constraint governs shared repo
   state (git worktrees, refinery-merge queue, commits), sensitive memory
   (Grove / MEMORY.md never-surface records), or self-modification
   (`.claude/skills`, `.claude/agents`, `.claude/hooks`). This decomposition is
   an LLM judgment — see the failure model.
3. **Label each constraint against the trajectory set.**
   - **untested** — no trajectory ever hit the precondition. An adequacy gap.
   - **exercised** — precondition fired and the required behavior was observed
     followed. Counts toward coverage.
   - **violated** — precondition fired and observed behavior contradicts the
     required behavior. A compliance failure.
4. **Compute two numbers.** Coverage = exercised / (exercised + violated +
   in-scope-but-ambiguous), over constraints whose precondition fired at least
   once. Compliance = 1 − violated / (exercised + violated).
5. **Decide the report verdict.**
   - Coverage < 0.60 of extracted constraints → flag `under-exercised`:
     recommend more probe trajectories or hand off to
     `skill-counterfactual-audit`. Non-blocking — this surfaces the gap.
   - Any `violated` constraint whose `scope-tags` include shared repo state,
     never-surface memory, or self-modification → **fail-closed**: block the
     `skill-forge` ship, do NOT silently proceed, and escalate to the operator
     via `mayor-coordinator`.
   - A `violated` constraint on benign scope → report as a compliance gap,
     non-blocking, and recommend a skill edit or a narrower trigger.
6. **Emit report** to `.planning/patterns/skill-coverage/<skill>-<timestamp>.md`:
   the constraint table (id, label, evidence-location), the two numbers, and the
   verdict.

### Robustness rule

Judge a constraint exercised or violated by the **effect** of what the agent
did, not by whether the trace text echoes the skill's wording. An agent that
paraphrases a rule and follows it is compliant; one that quotes the rule and
then acts against it is a violation. Do not mark coverage from surface vocabulary
match.

## Confidence / failure model

Constraint extraction and the exercised/violated labeling are **LLM judgments**
(semi-decidable, not a deterministic pass/fail check). Coverage from a single
trajectory is a lower bound on adequacy, not proof of correctness: high coverage
means the tested rules fired, not that the skill is good — that is
`skill-counterfactual-audit`'s and `skill-causal-curation`'s question. The gate
reduces the chance an untested or already-violated rule ships; it does not
eliminate it. On any uncertainty about whether a scope-tagged constraint was
violated, default fail-closed (escalate), never silently pass.

## When to skip

- No valid trajectory exists where the skill was loaded — capture a run first;
  there is nothing to measure adequacy against.
- The skill is a pure metadata/frontmatter change — route to
  `skill-frontmatter-doctor`, which needs no trajectory.
- A structural gate (`skill-forge` validate/critique) already failed the skill —
  fix that first; coverage over a broken skill is noise.

## Distinctness

- **skill-counterfactual-audit** runs a paired with/without probe and measures
  the skill's behavioural EFFECT (the SIP report). **skill-causal-curation**
  uses randomized masking to measure per-task-type CONTRIBUTION for keep/repair/
  retire. This skill asks neither — it asks single-trajectory ADEQUACY: were the
  skill's own rules exercised, and were any broken. It reports gaps; it does not
  auto-retire or auto-block on effect.

## Integration

- `skill-forge` — this gate runs inside its ship/review loop, after validate +
  critique, before publish; a fail-closed verdict halts the ship.
- `session-retro` / `session-observatory-live` — the trajectory source under
  `.planning/patterns/`.
- `skill-counterfactual-audit` + `skill-causal-curation` — sibling eval skills
  answering the EFFECT and CONTRIBUTION questions; escalate an `under-exercised`
  skill to them when a single trajectory is not enough evidence.

More from Tibsfox/gsd-skill-creator

SkillDescription
3d-interaction-designDesign heuristics for three-dimensional interaction — input modalities (6DoF controllers, gaze, gesture, voice), selection and manipulation techniques (ray-cast, virtual hand, go-go, world-in-miniature), navigation (teleport, continuous, redirected walking), and feedback loops (haptic, audio, visual). Covers Fitts' law in 3D, discoverability vs affordance, safe-zone design, and comfort/simulator sickness mitigation. Use when designing VR/AR interactions, immersive walkthroughs, or any input system where the user's body is the controller.
accessibility-patternsProvides web accessibility best practices for semantic HTML, ARIA, keyboard navigation, color contrast, and screen reader patterns. Use when building UI components, reviewing accessibility, or when user mentions 'a11y', 'accessibility', 'ARIA', 'screen reader', 'keyboard navigation', 'WCAG'.
active-listeningActive listening techniques for effective communication. Covers attending behaviors, paraphrasing, reflective listening, clarifying questions, empathic response, barriers to listening, listening in conflict, and cross-cultural listening. Use when building listening skills, improving understanding in conversation, mediating disputes, or analyzing communication breakdowns.
adversarial-pr-reviewAdversarial spec-compliance PR review — cross-references diffs against approved specs, verifies runtime claims against source, detects competing PRs, audits scope/convention compliance. Use before merging.
agile-methodsAgile and Lean software development methodologies for iterative, adaptive project execution. Covers Scrum (roles, ceremonies, artifacts), Kanban (WIP limits, flow metrics), XP (TDD, pair programming, CI), SAFe overview, Lean Software Development (Poppendieck's 7 principles), user stories (INVEST criteria), estimation via story points and velocity, and the Agile Manifesto's values and principles. Includes Cynefin framework for methodology selection and GSD's relationship to Agile as a structured Lean variant.
algebraic-reasoningSymbolic manipulation, equation solving, and algebraic structures for mathematical reasoning. Covers distributive law, factoring, completing the square, linear through polynomial equation solving, systems of equations (substitution, elimination, Gaussian elimination, matrix methods), algebraic structures (groups, rings, fields), modular arithmetic, polynomial theory, and inequalities. Use when solving equations, simplifying expressions, working with algebraic structures, or performing symbolic manipulation.
algorithmic-awarenessUnderstanding how algorithmic systems shape what users see, know, and do -- from recommendation feeds to search ranking to credit scoring to hiring software. Covers the mechanics of recommendation systems, algorithmic bias and its sources, personalization's effects on information diets, opacity and accountability, AI limitations (hallucination, confident wrongness), and the human-in-the-loop question. Use when a learner needs to think critically about why particular content reached them.
algorithms-data-structuresAlgorithms and data structures from first principles through advanced analysis. Covers sorting (bubble, insertion, selection, merge, quick, heap, radix), searching (linear, binary, BFS, DFS, Dijkstra, A*), fundamental data structures (arrays, linked lists, stacks, queues, hash tables, trees, heaps, graphs, tries), complexity analysis (Big-O, Big-Omega, Big-Theta, amortized), recurrence relations, and algorithm design paradigms (divide-and-conquer, greedy, dynamic programming, backtracking). Use when analyzing, selecting, implementing, or comparing algorithms and data structures.
aminet-browserAminet search and browse: full-text search, category tree navigation, architecture filtering, package detail, and curated collections. Use when searching, browsing, or managing package collections.
aminet-emulatorFS-UAE emulator configuration and launch: hardware profiles, ROM management, WHDLoad integration, config generation, and state snapshots. Use when configuring emulation, managing ROMs, or launching Amiga software.