Product validation gate for RPI pipeline. Validates goal alignment with PRODUCT.md before discovery. Checks: gap alignment, persona fit, competitive differentiation, precedent, scope boundaries. Council-gated with --preset=product. Triggers: "design", "product validation", "validate product fit", "design gate".
Quick Ref: Validates that a proposed goal aligns with the product's strategic direction before discovery begins major work. Council-gated with
--preset=product.
/design "add caching layer for CLI" # validate goal against PRODUCT.md
/design --quick "add caching layer" # inline check, no council spawning
/design --strict "redesign hook system" # higher threshold (avg >= 2.5)
/design # infers goal from recent context
Locate PRODUCT.md in the repo root.
ls PRODUCT.md 2>/dev/null
If absent: Output a warning and return PASS with note: "No PRODUCT.md found -- skipping product validation gate. Run /product to generate one."
If present: Continue to Step 1.
Read PRODUCT.md and extract:
If any section is missing, note it as unavailable and score that dimension conservatively (1).
Evaluate the proposed goal against five dimensions. Use the scoring rubric in references/alignment-matrix.md.
| Dimension | Score (0-3) | Rationale |
|---|---|---|
| Gap Alignment | Does this goal address a known product gap? | |
| Persona Fit | Does this serve defined personas? | |
| Competitive Diff | Does this strengthen competitive position? | |
| Precedent | Has similar work been done before? What can we learn? | |
| Scope Fit | Is this appropriately scoped for the current phase? |
Compute the average score across all five dimensions.
Invoke council with the product preset. See references/product-council-preset.md for judge configuration.
Skill(skill="council", args="--preset=product validate design alignment for: <goal>")
Pass the alignment matrix from Step 2 as context to the council judges.
If --quick flag is set, skip council spawning and perform inline assessment instead.
Write the design artifact to .agents/design/:
mkdir -p .agents/design
Filename: <date>-design-<goal-slug>.md (e.g., 2026-03-30-design-add-caching-layer.md)
Artifact contents:
--quick)Determine the final verdict based on scores:
| Condition | Verdict |
|---|---|
| Average score >= 2.0 AND no dimension at 0 | PASS -- goal aligns with product direction |
| Average score >= 1.5 OR one dimension at 0 with others strong | WARN -- goal has alignment concerns, review before proceeding |
| Average score < 1.5 OR multiple dimensions at 0 | FAIL -- goal does not align with product direction |
When --strict is set, raise the PASS threshold to average >= 2.5.
Output the verdict in this format:
DESIGN VERDICT: <PASS|WARN|FAIL>
Gap Alignment: <score>/3 -- <one-line rationale>
Persona Fit: <score>/3 -- <one-line rationale>
Competitive Diff: <score>/3 -- <one-line rationale>
Precedent: <score>/3 -- <one-line rationale>
Scope Fit: <score>/3 -- <one-line rationale>
Average: <avg>/3.0
Artifact: .agents/design/<filename>.md
| Flag | Effect |
|---|---|
--quick | Inline check without council spawning. Faster but less thorough. |
--strict | Raise PASS threshold from avg >= 2.0 to avg >= 2.5. Use for high-stakes changes. |
--preset=product judge configuration and verdict rules