Imported from shipshitdev/skills (
skills/prd-quality-gate/SKILL.md). Install upstream withnpx skills add shipshitdev/skills --skill prd-quality-gate. Copyright stays with the author.
<prd_quality_gate> A well-formed PRD (or the issue body that serves as one) must contain ALL of the following sections as markdown headings (## or ###).
Required sections:
- Executive Summary
- Problem Statement
- Goals
- Functional Requirements
- Acceptance Criteria
- Verification Plan
Acceptance Criteria must be written in EARS (Easy Approach to Requirements Syntax) so each bullet is machine-checkable and pass/fail without judgement. Every bullet under Acceptance Criteria must match one of:
- WHEN THE SYSTEM SHALL (event-driven)
- WHILE THE SYSTEM SHALL (state-driven)
- WHERE THE SYSTEM SHALL (optional feature)
- IF THEN THE SYSTEM SHALL (unwanted behavior)
- THE SYSTEM SHALL (ubiquitous)
A bullet that does not match this grammar (case-insensitive regex
^\s*(\d+\.\s*)?(WHEN|WHILE|WHERE|IF|THE SYSTEM)\b.*\bSHALL\b) is free-form
prose, not a verifiable criterion.
When the quality gate is ENABLED (blocking):
- Missing any required section → fail immediately with an actionable message listing the missing sections.
- Any Acceptance Criteria bullet that is not EARS-shaped → fail, quoting each offending bullet and the EARS pattern it should take.
- The author must update the PRD and re-run the gate before planning proceeds.
When the quality gate is DISABLED (default, warning-only):
- Missing sections → log a warning.
- Non-EARS Acceptance Criteria bullets → log a warning listing each offending bullet.
- Planning proceeds. The planner should still note the gaps in its output.
Section matching is case-insensitive against ## and ### headings. Exact heading text must appear (e.g. "## Executive Summary" or "### Goals"). Headings nested inside code fences are ignored by convention (they are examples, not structure). </prd_quality_gate>