OpenSpec Reflect
Pre-gate self-check skill. Verifies acceptance criteria, detects scope drift, and ensures philosophy alignment before human review.
Workflow: Check → Assess → Report
flowchart LR
A["Read context"] --> B["Check criteria"]
B --> C["Detect drift"]
C --> D["Check philosophy"]
D --> E["Self-assess"]
E --> F["Generate report"]
classDef action fill:#E1BEE7,stroke:#7B1FA2,color:#000
class A,B,C,D,E,F action
Critical: Run before human gates. Catches drift BEFORE human reviews.
Commands
reflect
Run comprehensive pre-gate self-check.
Input: $ARGUMENTS = change-id
Workflow:
-
Load context:
- Read
openspec/changes/{change-id}/proposal.mdfor acceptance criteria - Read
openspec/changes/{change-id}/tasks.mdfor progress - Read
openspec/changes/{change-id}/test.mdfor test strategy (if exists) - Read
openspec/changes/{change-id}/specs/*.mdfor requirements - Read
openspec/project.mdfor Execution Philosophy
- Read
-
Pre-gate check (scale/maintenance mode only):
- Check if
test.mdexists - If missing in scale/maintenance mode: flag ⚠️ MISSING_TEST_MD deviation
- In garage mode: test.md optional (note if missing, don't block)
- Check if
-
Check acceptance criteria:
- Extract criteria from proposal.md (Success Criteria section)
- For each criterion: verify met/unmet/partial
- Record evidence for each status
-
Detect scope drift:
- Extract "Affected files" from proposal.md
- Run
git statusandgit diff --statto find actual changes - Calculate deviation percentage:
(actual - proposed) / proposed * 100 - Flag if >20% deviation
-
Check philosophy alignment:
- Read
modefrom Execution Philosophy - Review implementation for anti-patterns of current mode
- Flag any violations
- Read
-
Self-assessment:
- Answer: "Am I solving the right problem?"
- Evaluate: Is work aligned with proposal's Problem statement?
-
Generate gate-ready report (see format below)
Guardrails
Autonomous (no confirmation needed):
- Reading all context files
- Analyzing implementation
- Generating reports
- Flagging deviations
Ask-first (pause and confirm):
- None - reflect is read-only and advisory
Philosophy Check
Read openspec/project.md → Execution Philosophy → mode.
| Mode | Flag Anti-patterns |
|---|---|
garage | Over-engineering, premature abstraction, analysis paralysis |
scale | Cowboy coding, skipping tests, undocumented decisions |
maintenance | Refactoring for aesthetics, feature creep, risky upgrades |
Format: ⚠️ PHILOSOPHY VIOLATION ({mode}) - {anti-pattern}: {evidence}
Gate-Ready Report Format
# Reflection Report: {change-id}
## Test Strategy Coverage
- test.md: {present/missing}
- Mode: {mode}
{if missing + scale/maintenance: ⚠️ MISSING_TEST_MD - required for {mode} mode}
{if missing + garage: ℹ️ test.md optional in garage mode}
{if present: - Coverage: {summary of test.md sections}}
## Criteria Status
| Criterion | Status | Evidence |
|-----------|--------|----------|
| {criterion 1} | {met/unmet/partial} | {evidence} |
| {criterion 2} | {met/unmet/partial} | {evidence} |
## Scope Analysis
- Proposed files: {n}
- Actual files: {m}
- Deviation: {percent}%
{if >20%: ⚠️ SCOPE DRIFT DETECTED - requires human review}
## Philosophy Alignment
- Mode: {mode}
- Anti-patterns detected: {list or "None"}
{if violations: ⚠️ PHILOSOPHY VIOLATION - {details}}
## Self-Assessment
**Question**: Am I solving the right problem?
**Answer**: {assessment based on proposal's Problem statement}
## Deviations Requiring Attention
{list with ⚠️ emoji for each, or "None"}
## Recommendation
{READY FOR GATE | NOT READY - {reasons}}
Deviation Types
MISSING_TEST_MD- test.md missing in scale/maintenance modeSCOPE_DRIFT- Files changed exceed proposal by >20%CRITERIA_UNMET- Acceptance criterion not satisfiedPHILOSOPHY_VIOLATION- Anti-pattern for current modeSPEC_DEVIATION- Implementation differs from specs
Format: ⚠️ DEVIATION: {type} - Expected: {X}, Actual: {Y}, Impact: {Z}, Rec: {action}
See reference.md for detailed examples and patterns.
