/ghm-gate-check
Validates gate criteria before PRD lifecycle advancement by delegating to the readiness scoring pipeline (scripts/readiness.py). Returns a graduated PASS / WARN / BLOCK verdict with top blockers and their causal chain. Triggers before advancing from v0.X to v0.Y or explicit
$ npx -y skills add mattgierhart/PRD-driven-context-engineering --skill ghm-gate-check --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/ghm-gate-check
Context preview
The summary Claude sees to decide when to auto-load this skill.
Validates gate criteria before PRD lifecycle advancement by delegating to the readiness scoring pipeline (scripts/readiness.py). Returns a graduated PASS / WARN / BLOCK verdict with top blockers and their causal chain. Triggers before advancing from v0.X to v0.Y or explicit
SKILL.md
ghm-gate-check.SKILL.mdname: ghm-gate-check
description: >
Validates gate criteria before PRD lifecycle advancement by delegating to
the readiness scoring pipeline (scripts/readiness.py). Returns a graduated
PASS / WARN / BLOCK verdict with top blockers and their causal chain.
Triggers before advancing from v0.X to v0.Y or explicit `/ghm-gate-check`.
context: inline
allowed-tools:
- Bash
- Read
- Glob
- Grep
Gate Check
Validate whether the PRD stage is ready to advance to the next version. Delegates to the three-layer readiness scorer — SoT files → EPICs → stage — then surfaces the leverage view (what to fix first, and which EPICs it unblocks).
Workflow Overview
1. **Compute** → run `scripts/readiness.py run --quiet` to refresh `status/readiness.json` 2. **Read** → parse `status/readiness.json` 3. **Report** → PASS / WARN / BLOCK verdict with top blockers and causal links 4. **Recommend** → actionable next steps (always highest-leverage first)
Authority
`references/gate-criteria.md` remains the canonical source of mandatory artifacts per gate. The scorer's `GATE_REQUIREMENTS` table mirrors it. Do not hand-roll checklists here — the scoring engine is the single source of truth.
Step 1: Compute
Run the orchestrator. It runs SoT → EPIC → stage in dependency order and writes `status/readiness.json`.
python scripts/readiness.py run --quiet
# exit 0 = all pass, 1 = warn, 2 = block, 3 = error
If the exit code is `3`, report a runtime error and stop. If `0/1/2`, proceed to Step 2.
Fallback: no scripts available
If `scripts/readiness.py` is missing or Python is unavailable, fall back to reading `status/readiness.json` directly. If that's also absent, report: "Readiness not yet computed — install scripts/requirements.txt and run `python scripts/readiness.py run`."
Step 2: Read
cat status/readiness.json
Extract:
- `summary.current_stage` — the gate being evaluated and its score
- `summary.top_blockers` — ranked SoT files blocking progress
- `stages.{target}` — detailed stage block (dimensions, unmet_criteria, caps)
- `epics.{id}` — per-EPIC scores (cite the lowest ones)
Step 3: Report
Use this template. Fill every field from the JSON — do not improvise scores.
## Gate Check Report: {stage.gate_description}
**Verdict**: [PASS | WARN | BLOCK]
**Stage Score**: {stage.score} / 100 (warn < {threshold_warn}, block < {threshold_block})
**Date**: {now}
### Stage Dimensions
| Dimension | Score | Weight |
|-----------|-------|--------|
| required_ids_present | {score} | {weight} |
| relevant_sot_readiness | {score} | {weight} |
| cross_ref_integrity | {score} | {weight} |
| downstream_epic_readiness | {score or "n/a"} | {weight or "—"} |
### Top Blockers (leverage view)
1. **{file}** (score {score}) — blocks {N} EPICs: {EPIC-XX, …} — impact {impact}
2. …
### Unmet Criteria (high severity first)
- [high] {ref}: {reason}
- [medium] {ref}: {reason}
### Recommendation
**If PASS**: Advance to {next_version}. Run `ghm-status-sync` to update the README dashboard.
**If WARN / BLOCK**: Do not advance. Address top blockers in order — fixing the highest-impact SoT file cascades up the graph.
**Next action**: {top_blockers[0] → concrete fix}Verdict bands
| Stage score | Verdict | Meaning | |---|---|---| | ≥ 70 | PASS | Safe to advance | | 50–69 | WARN | Advance with documented risk; log in PRD change log | | < 50 | BLOCK | Cannot advance — per rule 05-lifecycle-gates, update the EPIC and STOP |
Step 4: Recommend
Always prioritize by `impact = (100 − score) × #EPICs blocked`. The top blocker is the single highest-leverage fix; cite its `blocking_epics` list so the human understands what unblocks.
Quality Gates
- [ ] Stage score cited from JSON, not estimated
- [ ] Top blockers include their consumer EPICs
- [ ] Recommendation is actionable (specific file, specific action)
- [ ] Verdict matches the score band exactly (don't round up)
Anti-Patterns
| Pattern | Example | Fix | |---|---|---| | Ignoring the score | "Feels ready; pass" | Cite `stage.score` verbatim | | Skipping blockers | "Minor stuff, advance anyway" | Block if score < 50; warn if < 70 | | Hand-rolling criteria | Re-checking IDs manually | Trust the scorer; if wrong, fix `GATE_REQUIREMENTS` in `_readiness/stage.py` | | Forcing PASS | Overriding the verdict | Never override; the score is the contract |
Boundaries
**DO**:
- Delegate computation to `readiness.py`
- Cite specific scores, files, and EPICs from the JSON
- Surface the `top_blockers` leverage view
**DON'T**:
- Modify `status/readiness.json` directly — it's computed output
- Create missing artifacts inside this skill (that's the author's job)
- Override PASS/BLOCK verdicts subjectively
Handoff
After a report:
- **PASS**: Trigger `ghm-status-sync`; the gate advancement updates the README dashboard
- **WARN**: Same as PASS but note the risks in the PRD change log
- **BLOCK**: Return control to the human. The `top_blockers[0]` fix is the single most important next action
References
- `references/gate-criteria.md` — canonical gate requirements (consumed by scorer)
- `references/examples.md` — pass/warn/block report examples
- `.claude/rules/07-readiness-protocol.md` — the discipline rule
- `docs/READINESS_PROTOCOL.md` — full schema
Read more
name: ghm-gate-check description: > Validates gate criteria before PRD lifecycle advancement by delegating to the readiness scoring pipeline (scripts/readiness.py). Returns a graduated PASS / WARN / BLOCK verdict with top blockers and their causal chain. Triggers before advancing from v0.X to v0.Y or explicit `/ghm-gate-check`. context: inline allowed-tools: - Bash - Read - Glob - Grep
Gate Check
Validate whether the PRD stage is ready to advance to the next version. Delegates to the three-layer readiness scorer — SoT files → EPICs → stage — then surfaces the leverage view (what to fix first, and which EPICs it unblocks).
Workflow Overview
1. **Compute** → run `scripts/readiness.py run --quiet` to refresh `status/readiness.json` 2. **Read** → parse `status/readiness.json` 3. **Report** → PASS / WARN / BLOCK verdict with top blockers and causal links 4. **Recommend** → actionable next steps (always highest-leverage first)
Authority
`references/gate-criteria.md` remains the canonical source of mandatory artifacts per gate. The scorer's `GATE_REQUIREMENTS` table mirrors it. Do not hand-roll checklists here — the scoring engine is the single source of truth.
Step 1: Compute
Run the orchestrator. It runs SoT → EPIC → stage in dependency order and writes `status/readiness.json`.
python scripts/readiness.py run --quiet # exit 0 = all pass, 1 = warn, 2 = block, 3 = error
If the exit code is `3`, report a runtime error and stop. If `0/1/2`, proceed to Step 2.
Fallback: no scripts available
If `scripts/readiness.py` is missing or Python is unavailable, fall back to reading `status/readiness.json` directly. If that's also absent, report: "Readiness not yet computed — install scripts/requirements.txt and run `python scripts/readiness.py run`."
Step 2: Read
cat status/readiness.json
Extract:
- `summary.current_stage` — the gate being evaluated and its score
- `summary.top_blockers` — ranked SoT files blocking progress
- `stages.{target}` — detailed stage block (dimensions, unmet_criteria, caps)
- `epics.{id}` — per-EPIC scores (cite the lowest ones)
Step 3: Report
Use this template. Fill every field from the JSON — do not improvise scores.
## Gate Check Report: {stage.gate_description}
**Verdict**: [PASS | WARN | BLOCK]
**Stage Score**: {stage.score} / 100 (warn < {threshold_warn}, block < {threshold_block})
**Date**: {now}
### Stage Dimensions
| Dimension | Score | Weight |
|-----------|-------|--------|
| required_ids_present | {score} | {weight} |
| relevant_sot_readiness | {score} | {weight} |
| cross_ref_integrity | {score} | {weight} |
| downstream_epic_readiness | {score or "n/a"} | {weight or "—"} |
### Top Blockers (leverage view)
1. **{file}** (score {score}) — blocks {N} EPICs: {EPIC-XX, …} — impact {impact}
2. …
### Unmet Criteria (high severity first)
- [high] {ref}: {reason}
- [medium] {ref}: {reason}
### Recommendation
**If PASS**: Advance to {next_version}. Run `ghm-status-sync` to update the README dashboard.
**If WARN / BLOCK**: Do not advance. Address top blockers in order — fixing the highest-impact SoT file cascades up the graph.
**Next action**: {top_blockers[0] → concrete fix}Verdict bands
| Stage score | Verdict | Meaning | |---|---|---| | ≥ 70 | PASS | Safe to advance | | 50–69 | WARN | Advance with documented risk; log in PRD change log | | < 50 | BLOCK | Cannot advance — per rule 05-lifecycle-gates, update the EPIC and STOP |
Step 4: Recommend
Always prioritize by `impact = (100 − score) × #EPICs blocked`. The top blocker is the single highest-leverage fix; cite its `blocking_epics` list so the human understands what unblocks.
Quality Gates
- [ ] Stage score cited from JSON, not estimated
- [ ] Top blockers include their consumer EPICs
- [ ] Recommendation is actionable (specific file, specific action)
- [ ] Verdict matches the score band exactly (don't round up)
Anti-Patterns
| Pattern | Example | Fix | |---|---|---| | Ignoring the score | "Feels ready; pass" | Cite `stage.score` verbatim | | Skipping blockers | "Minor stuff, advance anyway" | Block if score < 50; warn if < 70 | | Hand-rolling criteria | Re-checking IDs manually | Trust the scorer; if wrong, fix `GATE_REQUIREMENTS` in `_readiness/stage.py` | | Forcing PASS | Overriding the verdict | Never override; the score is the contract |
Boundaries
**DO**:
- Delegate computation to `readiness.py`
- Cite specific scores, files, and EPICs from the JSON
- Surface the `top_blockers` leverage view
**DON'T**:
- Modify `status/readiness.json` directly — it's computed output
- Create missing artifacts inside this skill (that's the author's job)
- Override PASS/BLOCK verdicts subjectively
Handoff
After a report:
- **PASS**: Trigger `ghm-status-sync`; the gate advancement updates the README dashboard
- **WARN**: Same as PASS but note the risks in the PRD change log
- **BLOCK**: Return control to the human. The `top_blockers[0]` fix is the single most important next action
References
- `references/gate-criteria.md` — canonical gate requirements (consumed by scorer)
- `references/examples.md` — pass/warn/block report examples
- `.claude/rules/07-readiness-protocol.md` — the discipline rule
- `docs/READINESS_PROTOCOL.md` — full schema
PRD-driven Context Engineering: A systematic approach to building AI-powered products using progressive documentation and context-aware development workflows
Repo: mattgierhart/PRD-driven-context-engineering
Other skills on prd-driven-context-engineering.
- /SKILL_TEMPLATE
[1-2 sentence description of what this skill does]. Triggers on [specific phrases/contexts that should activate this skill]. Outputs [what the skill produces].
Open skill - /ghm-harvest
Extracts durable insights from temp/ files to SoT during EPIC Phase E. Triggers at EPIC completion or explicit `/ghm-harvest` invocation. Outputs new SoT entries and archive manifest.
Open skill - /ghm-id-register
Validates and registers new SoT IDs with cross-reference integrity. Triggers when creating BR-XXX, UJ-XXX, API-XXX, or CFD-XXX entries. Outputs formatted SoT entry with validated cross-references.
Open skill - /ghm-self-install
Install the PRD-Driven Context Engineering methodology into a fresh OR existing repository — the subscription-native alternative to forking the whole repo. Runs an interactive wizard that seeds the framework (.claude/ hooks, skills, agents, rules, scripts) without clobbering
Open skill - /ghm-sot-builder
Creates new Source of Truth (SoT) files when existing templates don't fit your needs. Triggers on requests to create a new SoT file, add a new artifact type, or when user says "I need to track [X] but there's no SoT for it", "create SoT", "new source of truth". Outputs a
Open skill - /ghm-status-sync
Synchronizes README.md Command Center with current project state. Triggers on gate changes, EPIC status changes, or explicit `/ghm-status-sync` invocation. Outputs updated README.md dashboard with current lifecycle stage, blockers, and metrics.
Open skill

