From superpowers-plus
Validates feature requirements before design or implementation by testing falsifiability, measurability, independence; detects contradictions and guides explicit resolution.
npx claudepluginhub bordenet/superpowers-plus --plugin superpowers-plusThis skill uses the workspace's default tool permissions.
> **Core principle:** Every requirement must be testable. Contradictions must be surfaced, not silently resolved.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Core principle: Every requirement must be testable. Contradictions must be surfaced, not silently resolved.
Wrong skill? Feature design →
debateorbrainstorming. Implementation planning →plan-and-execute. Validating code output →output-verification.
Announce at start: "I'm using the requirements-validation skill to validate these requirements."
Before running the three tests, normalize requirements into a numbered list:
R1: [requirement text], R2: [requirement text], etc.R# must be a single, atomic requirement (split compound requirements).For EACH numbered requirement, apply all three:
Question: Can you write a test that would FAIL if this requirement isn't met?
| Result | Action |
|---|---|
| Yes — concrete test exists | ✅ Requirement passes |
| No — too vague to test | ❌ Rewrite to be specific. "Improve performance" → "Response time < 200ms at p95" |
| Partially — some aspects testable | ⚠️ Split into testable and non-testable parts |
Question: Is "done" a binary state (yes/no), not a gradient?
| Result | Action |
|---|---|
| Binary — clear done/not-done | ✅ Passes |
| Gradient — "better", "improved", "enhanced" | ❌ Add a threshold. "Better error handling" → "All error paths return structured error with code, message, and recovery hint" |
Question: Does this requirement conflict with any other requirement in the set?
| Result | Action |
|---|---|
| Independent — no conflicts | ✅ Passes |
| Conflicts detected | ❌ Trigger contradiction resolution (below) |
⛔ HARD GATE: Do NOT resolve contradictions silently. The stakeholder decides.
When two requirements conflict:
PENDING (ask user) and STOP.]⛔ Never invent a decision owner. If no stakeholder has weighed in, the decision is PENDING. Do not fabricate a name or role to unblock yourself.
## Requirements Validation Report
### Passed
- R1: [requirement] — Falsifiable ✅ Measurable ✅ Independent ✅
- R2: [requirement] — Falsifiable ✅ Measurable ✅ Independent ✅
### Failed (Needs Revision)
- R3: [requirement] — Measurability ❌ (gradient language: "improve")
- Suggested revision: [specific, measurable version]
### Contradictions Found
- R4 vs R6: [description of conflict]
- Resolution options: A / B / C / D
- Decision owner: [name/role — or PENDING (ask user)]
- Chosen option: [A/B/C/D — or PENDING]
- Rationale: [1 sentence — or PENDING]
| Pattern | Example | Fix |
|---|---|---|
| Gradient language | "Improve the UX" | Add threshold: "Task completion time < 30s" |
| Compound requirements | "Fast AND flexible AND secure" | Split into 3 independent requirements |
| Implementation as requirement | "Use Redis for caching" | Restate as need: "Cache layer with <10ms reads" |
| Negative-only | "Don't break existing behavior" | State positive: "All existing tests pass" |
# Check that all requirements have acceptance criteria
grep -c "GIVEN.*WHEN.*THEN" requirements.md || echo "⚠️ Missing acceptance criteria"
# Verify testability: each requirement maps to at least one test
grep -rn "describe\|it(" test/ --include="*.ts" | wc -l
| Failure | Fix |
|---|---|
| Resolved contradictions silently without surfacing to user | Hard gate: ALL contradictions go to user with options, never resolve silently |
| Accepted vague requirements (fast, secure) as testable | Apply falsifiability test: if you cannot write a test that fails, it is not testable |
| Skipped independence test, creating hidden coupling | Check: can each requirement be implemented/verified without the others? |
| Validated requirements against assumptions instead of stated constraints | Cross-reference ONLY what the user stated, not what you inferred |