Self-critique specification documents using extended thinking. Use when a spec is complete and needs validation before implementation.
Critically review specification documents for accuracy, completeness, and feasibility. Use extended thinking to find issues BEFORE implementation begins.
Core principle: Use extended thinking (deep analysis). Find problems BEFORE implementation.
Always:
Exceptions:
NO IMPLEMENTATION WITHOUT SPEC CRITIQUE FOR COMPLEX TASKS
Complex tasks (external integrations, multi-service changes) must have spec critique.
Before critiquing, ensure you have:
# Read the spec
cat .claude/context/specs/[task-name]-spec.md
# Read original requirements
cat .claude/context/requirements/[task-name].md
# Read project context
cat .claude/context/tech-stack.md
Understand:
CRITICAL: Use extended thinking for this phase. Think deeply about:
Compare spec against requirements and codebase:
Check for common spec errors:
Flag any mismatches.
Check against requirements:
Flag any gaps.
Check within spec:
Flag any inconsistencies.
Check practicality:
Flag any concerns.
Cross-reference with requirements:
Flag any divergences.
Create a list of all issues found:
## Issues Found
### 1. [SEVERITY: HIGH] Package name incorrect
- **Spec says**: "[incorrect]"
- **Should be**: "[correct]"
- **Location**: Line 45, Requirements section
### 2. [SEVERITY: MEDIUM] Missing edge case
- **Requirement**: "Handle connection failures"
- **Spec**: No error handling specified
- **Location**: Implementation Notes section
### 3. [SEVERITY: LOW] Inconsistent terminology
- **Issue**: Uses both "memory" and "episode" for same concept
- **Location**: Throughout document
For each issue found, fix it directly in the spec:
For each fix:
# Spec Critique Report
**Spec**: [spec-name]
**Date**: [timestamp]
## Summary
| Category | Status | Issues |
| ---------------------- | --------- | ------- |
| Technical Accuracy | PASS/FAIL | [count] |
| Completeness | PASS/FAIL | [count] |
| Consistency | PASS/FAIL | [count] |
| Feasibility | PASS/FAIL | [count] |
| Requirements Alignment | PASS/FAIL | [count] |
## Issues Found and Fixed
### High Severity
1. [Issue] - FIXED: [what was changed]
### Medium Severity
1. [Issue] - FIXED: [what was changed]
### Low Severity
1. [Issue] - FIXED: [what was changed]
## No Issues Found (if applicable)
Spec is well-written with no significant issues found.
## Confidence Level
[HIGH/MEDIUM/LOW]
## Recommendations
- [Any remaining concerns or suggestions]
After making changes:
# Verify spec is still valid markdown
head -50 .claude/context/specs/[task-name]-spec.md
# Check key sections exist
grep -E "^##? Overview" spec.md
grep -E "^##? Requirements" spec.md
grep -E "^##? Success Criteria" spec.md
HIGH - Will cause implementation failure:
MEDIUM - May cause issues:
LOW - Minor improvements:
Before completing spec critique:
When analyzing, think through:
"Looking at this spec, I need to deeply analyze it against the requirements...
First, let me check all package names. The requirements mention [X], but the spec says [Y]. This is a mismatch that needs fixing.
Next, looking at the API patterns. The requirements show initialization requires [steps], but the spec shows [different steps]. Another issue.
For completeness, the requirements mention [X, Y, Z]. The spec covers X and Y but I don't see Z addressed anywhere. This is a gap.
Looking at consistency, I notice '[term1]' and '[term2]' used interchangeably. Should standardize on one term.
For feasibility, the setup seems correct. The configuration matches.
Overall, I found [N] issues that need fixing before this spec is ready for implementation."
Why it's wrong: Skimming misses critical issues.
Do this instead: Use extended thinking. Analyze each section deeply.
Why it's wrong: Just listing issues doesn't improve the spec.
Do this instead: Fix issues directly. Make the spec better.
This skill works well with:
| Anti-Pattern | Why It Fails | Correct Approach |
|---|---|---|
| Approving specs with contradictions | Downstream implementation resolves contradictions incorrectly | Flag all contradictions, even minor ones, before approval |
| Missing hidden assumptions | Assumptions become mismatched requirements during implementation | Explicitly surface every assumption the spec relies on |
| Skipping edge case review | Error scenarios discovered too late during implementation | Validate all boundary conditions and error paths in the spec |
| Critiquing implementation details | Distracts from specification quality; spec defines WHAT not HOW | Focus critique on completeness, consistency, and testability |
| Accepting vague success criteria | Delivery cannot be verified as complete | Require measurable, testable acceptance criteria for every requirement |
Before starting:
Read .claude/context/memory/learnings.md
After completing:
.claude/context/memory/learnings.md.claude/context/memory/issues.md.claude/context/memory/decisions.mdASSUME INTERRUPTION: If it's not in memory, it didn't happen.