Commit Graph

13 Commits

Author SHA1 Message Date
Bo 092b99dad9 feat(skills): add skill-eval.sh ms-backed quality gate (ag-yzoz #skill-eval) (#726)
## What

Adds `scripts/skill-eval.sh` — a thin gate that runs one skill's
`SKILL.md` through Jeff Emanuel's `ms` (meta_skill) `lint` + `validate`.
The wrapper decides the gate purely on whether a **blocking** `rule_id`
appears (ms's own severity/exit is not trusted):

- Blocking: `no-secrets`, `no-injection`, `safe-paths`,
`required-metadata`, `no-cycle`, `valid-version` → non-zero exit.
- Everything else → annotated only (`::warning::`), never fails.
- `ms` not on PATH (or `MS_BIN` missing) → **loud `::error::` hard-fail
(exit 3)**, never skip-and-pass — a silent skip would recreate the
no-evaluation gap this gate closes.

Planted `skills/_fixtures/{bad,good}-skill/SKILL.md` fixtures +
`tests/scripts/skill-eval.bats` (10 tests) exercise the
bad/good/ms-absent contracts.

## Fixture scoping

`skills/_fixtures/` is non-skill scaffolding (planted fixtures). The
skill-enumerating gates/generators are taught to skip `skills/_*` so the
fixtures never inflate the skill count (stays 82) or fail registry /
schema / wiring / runtime / count gates. Touched enumerators:
`generate-registry`, `validate-skill-schema`, `sync-skill-counts`,
`validate-skill-count`, `generate-skill-catalog`,
`generate-context-map`, `validate-manifests`, `check-wiring-closure`,
`validate-headless-runtime-skills`, `lib/sku_catalog.py`,
`check-alias-collisions`, `run-all`, `test-runtime-opencode-smoke`,
`release-smoke-test`, `smoke-test`, `validate-skill`.

Does **not** touch `validate.yml` — wiring skill-eval.sh into CI is a
separate bead.

Epic: ag-czzf

## Verification

- `bats tests/scripts/skill-eval.bats` → 10/10 pass (ms 0.1.2 on PATH)
- `shellcheck scripts/skill-eval.sh` → clean
- `check-registry-drift`, `validate-skill-schema`, `sync-skill-counts`,
`run-all`, opencode-smoke → all PASS with fixtures present, skill count
= 82 (fixtures excluded)

Closes-scenario: ag-yzoz#skill-eval
Bounded-context: BC2-Validation
Evidence: scripts/skill-eval.sh

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-06-04 16:38:57 -04:00
Boden Fuller 0c7f53b7a8 fix: isolate pre-push eval canary hooks 2026-04-27 16:09:46 -04:00
Boden Fuller 2156c627ca test(runtime): add runtime proof gates 2026-04-23 23:54:40 -04:00
Boden Fuller ea22b8e1fd fix(release): harden headless runtime preflight 2026-03-29 20:52:30 -04:00
Boden Fuller b8fca5e95f fix: make claude headless inventory runtime-aware 2026-03-24 23:27:30 -04:00
Boden Fuller 75bdfcca7e fix: restore release gate coverage 2026-03-24 23:24:33 -04:00
Boden Fuller ea5d1148bb feat: harden codex hookless follow-up flows 2026-03-24 10:09:27 -04:00
Boden Fuller 11d6c29918 fix: unblock local release gate tooling checks 2026-03-21 10:32:08 -04:00
Test eda33afb7d chore: restore stashed validation work 2026-03-08 19:36:32 -04:00
Test 034e8a9dd5 fix: harden release-prep validation paths 2026-03-08 19:25:29 -04:00
Boden Fuller db1149b3a7 Relax Claude runtime smoke gating 2026-03-07 16:47:32 -05:00
Boden Fuller fa1847f52c Adjust runtime smoke expectations 2026-03-07 16:43:37 -05:00
Boden Fuller 1a81173bcf Add headless runtime skill smoke gate 2026-03-07 16:38:25 -05:00