schwichtgit
### Extension ID gates ### Extension Name Quality Gates (Enforcement Layer) ### Version 0.3.6 ### Description Deterministic quality enforcement for Spec Kit projects at three boundaries: the agent boundary (Claude Code PreToolUse/PostToolUse/Stop hooks), the git boundary (pre-commit / commit-msg), and the CI boundary (projected GitHub Actions / GitLab CI / Jenkins pipelines). One policy file, one verify entrypoint, identical results at every boundary. ### Author schwichtgit ### Repository URL https://github.com/schwichtgit/spec-gates ### Download URL https://github.com/schwichtgit/spec-gates/releases/download/v0.3.6/gates-0.3.6.zip ### License MIT ### Homepage (optional) https://github.com/schwichtgit/spec-gates ### Documentation URL (optional) https://github.com/schwichtgit/spec-gates/blob/main/docs/how-it-works.md ### Changelog URL (optional) https://github.com/schwichtgit/spec-gates/releases ### Required Spec Kit Version >=0.12.0 ### Required Tools (optional) - jq (required) - git (optional) - node with pinned prettier/markdownlint-cli2 (optional, for the lint gates) - shellcheck (optional, for shell linting) ### Number of Commands 8 ### Number of Hooks (optional) 2 ### Tags quality, enforcement, hooks, ci, governance ### Key Features - `/speckit.gates.init` — Infer a quality policy from the repo, project the enforcement runtime, wire agent + git hooks, and run a self-test - `/speckit.gates.verify` — Run the full gate suite on demand (same checks as the Stop hook, pre-commit, and CI) - `/speckit.gates.doctor` — Check enforcement health: hooks wired, policy valid, runtime version matches extension - `/speckit.gates.ci` — Project CI enforcement for a platform: github | gitlab | jenkins - `/speckit.gates.upgrade` — Re-project the enforcement runtime after an extension update (never touches policy.json) - `/speckit.gates.sync` — Sync the policy baseline contract: pin, snapshot, and materialize the effective policy (--update moves the pin as a reviewable change) - `/speckit.gates.propose` — Propose this repo's policy deviations upstream as a change request against the baseline - `/speckit.gates.constitution` — Guided constitution session: interview to a profile, pick corpus principles, and produce an enforcement-annotated, ratifiable draft - `/"policy.json"` — Quality gate policy (user-owned; init seeds it, upgrade never overwrites) ### Testing Checklist - [x] Extension installs successfully via download URL - [x] All commands execute without errors - [x] Documentation is complete and accurate - [x] No security vulnerabilities identified - [x] Tested on at least one real project ### Submission Requirements - [x] Valid `extension.yml` manifest included - [x] README.md with installation and usage instructions - [x] LICENSE file included - [x] GitHub release created with version tag - [x] All command files exist and are properly formatted - [x] Extension ID follows naming conventions (lowercase-with-hyphens) ### Testing Details **Tested on:** macOS (bash 3.2, BSD toolchain) and Linux/GNU (ubuntu-latest CI). **Test project:** the extension repository dogfoods itself — CI projects the released runtime and runs `verify.sh --boundary ci`, the canary suite (planted violations must be rejected), and 12 test suites on every PR. The release asset is sha256-checksummed and sigstore-signed; the release workflow fails closed if the tag, manifest, and package versions disagree, or if required package contents (manifest, constitution corpus, runtime) are missing from the zip. **Downstream:** in production use by real downstream projects (GitHub and GitLab CI backstops); the 0.3.1 line carries fixes from structured downstream feedback (issues #31–#34). ### Example Usage ```bash # Install (this exact version) specify extension add gates --from https://github.com/schwichtgit/spec-gates/releases/download/v0.3.6/gates-0.3.6.zip # Or always the latest release specify extension add gates --from https://github.com/schwichtgit/spec-gates/releases/latest/download/gates.zip # Set up enforcement (infer policy, project runtime, wire hooks, self-test) /speckit.gates.init # Prove it holds /speckit.gates.verify ``` ### Proposed Catalog Entry ```json { "_note": "This is an UPDATE of the existing 'gates' entry — replace version, download_url, provides, and updated_at in place; preserve created_at, downloads, and stars.", "gates": { "version": "0.3.6", "download_url": "https://github.com/schwichtgit/spec-gates/releases/download/v0.3.6/gates-0.3.6.zip", "requires": { "speckit_version": ">=0.12.0" }, "provides": { "commands": 8, "hooks": 2 }, "tags": [ "quality", "enforcement", "hooks", "ci", "governance" ], "updated_at": "2026-10-03T00:00:00Z" } } ``` ### Additional Context Update of the existing `gates` catalog entry (first listed at 0.1.0 via github/spec-kit PR #3431). The entry's `provides` counts changed since listing: 8 commands and 2 hooks. **Changes since the listed catalog version (0.3.5):** full commit-level delta at https://github.com/schwichtgit/spec-gates/compare/v0.3.5...v0.3.6 — release-by-release notes at https://github.com/schwichtgit/spec-gates/releases. Release assets are sha256-checksummed and sigstore keyless-signed; verification instructions are in the release notes. Release notes are generated from Conventional Commits per release (no hand-maintained changelog to drift).