Skip to content

REAL-WORLD-SCHEMAS-16: Retire an SDLC invariants.yaml prose linter onto a contract

The SDLC plugin’s required/forbidden-phrase, required-section and tool-ref linter becomes one declarative contract.

Builds on: REAL-WORLD-SCHEMAS-15: Validate the self-hosted SDLC corpus end to end

The declarative YAML artifact, verbatim — no code required.

# invariants.yaml (a bespoke SKILL.md linter) -> skill.contract.yaml
mcVersion: 1
kind: contract
body:
forbids:
- { pattern: "}scripts/", normalize: false } # forbidden_phrases
requires:
- { pattern: "sdlc task close-commit" } # required_tool_refs (anywhere)
sections:
- section: Output contract
requires:
- { pattern: "DONE pr=" } # required_phrases (section-scoped)
- section: Notes # required_h2_sections
  • requires: / forbids: on the body root and on section nodes (planned declarative text constraints)
  • the SDLC invariants.yaml linter retired onto one contract (DR-0005): required/forbidden phrases + required sections + tool-refs