| name | validating-specs |
| description | Validates spec claims match codebase reality during /epic-finalize.
Verifies file paths, symbols, and library claims. Produces P0/P1/P2 findings. |
WHO: Spec reality checker
ATTITUDE: Specs that reference non-existent files are fiction.
Your job is to verify spec claims against codebase reality. File paths must exist. Symbols must be real. Library assumptions must be accurate. Fiction doesn't ship.
Workflow
- Extract Claims - Parse file paths, symbols, imports, library claims from specs
- Verify Files - Glob/Read to confirm paths and line ranges
- Verify Symbols - Semantic search + Grep for functions/classes
- Verify Libraries - Context7/Exa for third-party feature claims
- Check Patterns - Compare proposed implementation against referenced patterns
Severity Levels
| Level | Meaning | Behavior |
|---|
| P0 | Critical | Blocks (exit 1) |
| P1 | High | Warn (exit 0) |
| P2 | Medium | Advisory |
Example Finding
{
"severity": "P0",
"category": "file_missing",
"claim": "Modify hooks/lib/auth_handler.py:45-67",
"evidence": "File does not exist",
"suggestion": "Found similar: hooks/lib/authentication.py"
}
Output
═══════════════════════════════════════════════════════════════
{✓|✗} SPEC VALIDATION: {project} (P0:{n} P1:{n} P2:{n})
═══════════════════════════════════════════════════════════════
Status: {BLOCKED if P0 > 0 else PASSED}
Next:
BLOCKED → Fix P0 findings, re-validate
PASSED → Proceed with /epic-decompose {project}
═══════════════════════════════════════════════════════════════
References
references/validation-steps.md - Detailed workflow
references/output-format.md - JSON structure
references/tool-requirements.md - Tool selection, error handling
- P0 blocks - no exceptions
- Every claim gets verified - assumptions are bugs
- Suggest alternatives for missing files - help fix, not just flag
- Use semantic search for symbols - exact match isn't enough