Skip to content

T-UDY1-retire-invariants-yaml-sidecars

Status: closed/done · Impact: medium · Complexity: small

The contract now supersedes the sidecars, so remove the 14 per-skill invariants.yaml files and migrate the test surface that fed the old matcher onto the new path: the prose-fixtures/ cases and the check_skill_prose.test.ts assertions. The migration must preserve coverage — a regression the old linter caught must still fail on the contract path.

LocationRole today
plugin/skills/*/invariants.yamlThe 14 sidecars the contract now supersedes; once removed, the per-skill constraint source is the contract alone
.claude/skills/project-check/tests/prose-fixtures/Fixture skills (clean, forbidden-phrase, missing-h2, missing-phrase, missing-tool-ref, no-invariants) that fed the old matcher
.claude/skills/project-check/tests/check_skill_prose.test.tsAssertions over the fixtures; must run against the contract path after migration

The contract is the constraint source now, so retire the data files and the fixtures that fed the old matcher.

  • Delete the 14 plugin/skills/*/invariants.yaml — the op already ignores them after T-6OS7.
  • The fixture set .claude/skills/project-check/tests/prose-fixtures/ is orphaned: no .ts references it (the active check_skill_prose.test.ts builds inline /tmp fixtures). Delete it; coverage now lives in the contract unit test (T-FQFJ).
  • Repoint the wrapper check_skill_prose.ts: its coverage summary partitions skills by “has sibling invariants.yaml”, which is now always-false. Reframe it as “covered by the contract” or reduce it to a plain count; keep the <path>:<line> and exit-code passthrough.
  • Grep to confirm no code or live doc still references invariants.yaml as an active mechanism (historical task files are fine; the standards / notes are T-DNGZ).
LocationKindChange
plugin/skills/*/invariants.yamldeleteRemove the 14 per-skill sidecars; constraints live in the contract
.claude/skills/project-check/tests/prose-fixtures/deleteOrphaned fixture tree (no .ts references it); the contract unit test is the coverage home
.claude/skills/project-check/check_skill_prose.tsmodifyRepoint the coverage summary off the removed sibling-invariants.yaml partition; keep path / exit passthrough
  • AC-1: All 14 invariants.yaml files are removed; no code or live doc references them as an active mechanism.
  • AC-2: The orphaned prose-fixtures/ tree is removed (or folded into the contract unit test); the wrapper’s coverage summary no longer keys on sibling invariants.yaml.
  • AC-3: Coverage is preserved, not just relocated — the contract unit test (T-FQFJ) still fails on a known regression (a forbidden phrase or a removed required phrase).
  • AC-4: The lefthook skill-prose gate runs green after the sidecars are removed.
  • Updating standards, the skills CLAUDE.md note, or backlog B-DHKB — the final task.
  • Any change to the contract authoring or the gate op.

T-LNHL-delete-skill-prose-custom-matcher


← Back to Tasks