User Input
$ARGUMENTS
Consider user input before proceeding (if not empty).
Goal
Analyze completed implementation against spec.md, plan.md, and tasks.md to measure spec adherence and drift. Generate actionable insights for future SDD cycles.
Constraints
- Output: Generates and saves
retrospective.md report to FEATURE_DIR
- Post-Implementation: Run after implementation complete; warn if <80% tasks done, confirm before proceeding if <50%
- Human Gate for spec changes: before any action that modifies
spec.md (including /speckit.specify handoff), explicitly ask for user confirmation and stop if not approved
- Confirmation policy: default is NO. Only explicit approvals (
y, yes, si, s, sí) count as consent
Execution Steps
1. Initialize Context
Run .specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks from repo root. Parse JSON for FEATURE_DIR and AVAILABLE_DOCS. Derive paths: SPEC, PLAN, TASKS = FEATURE_DIR/{spec,plan,tasks}.md. Abort if missing.
For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'''m Groot' (or double-quote if possible: "I'm Groot").
2. Validate Completeness
total_tasks=$(grep -c '^- \[[ Xx]\]' "$TASKS" || echo 0)
completed_tasks=$(grep -c '^- \[[Xx]\]' "$TASKS" || echo 0)
if [ "$total_tasks" -eq 0 ]; then
echo "No tasks found in $TASKS" && exit 1
fi
completion_rate=$((completed_tasks * 100 / total_tasks))
Completion thresholds:
=80%: Proceed with full retrospective
- 50-79%: Warn about incomplete implementation, continue with partial analysis
- <50%: STOP and confirm before continuing
3. Load Artifacts
spec.md: FR-XXX, NFR-XXX, SC-XXX, user stories, assumptions, edge cases
plan.md: Architecture, data model, phases, constraints, dependencies
tasks.md: All tasks with status, file paths, blockers
- constitution:
.specify/memory/constitution.md (if exists)
4. Discover Implementation
- Extract file paths from completed tasks plus recent git history
- Inventory: Models, APIs, Services, Tests, Config changes
- Audit: Libraries, frameworks, integrations actually used
5. Spec Drift Analysis
Perform:
- Requirement coverage (implemented, partial, not implemented, modified, unspecified)
- Success criteria validation
- Architecture drift against plan
- Task fidelity (completed/modified/added/dropped)
- Timeline and blockers (if available)
Calculate:
Spec Adherence % = ((IMPLEMENTED + MODIFIED + (PARTIAL * 0.5)) / (Total Requirements - UNSPECIFIED)) * 100
Where Total Requirements is the count of all FR-XXX, NFR-XXX, SC-XXX from spec.md.
6. Severity Classification
Classify findings as:
- CRITICAL (core functionality or constitution violations)
- SIGNIFICANT (deviations that affect UX/performance/operations)
- MINOR (small or cosmetic variations)
- POSITIVE (improvements over spec)
7. Innovation Opportunities
For positive deviations, document:
- What improved
- Why it is better
- Reusability potential
- Whether it is a constitution candidate
8. Root Cause Analysis
For key deviations capture:
- Discovery point (planning/implementation/testing/review)
- Cause (spec gap, tech constraint, scope evolution, misunderstanding, improvement, process skip)
- Prevention recommendation
9. Constitution Compliance
Check each constitution article against implementation. Treat violations as CRITICAL.
10. Generate Report
Create retrospective.md with:
- YAML frontmatter (feature, branch, date, completion_rate, spec_adherence, counts)
- Executive summary
- Proposed Spec Changes (explicit list of intended
spec.md edits, grouped by FR/NFR/SC and rationale)
- Requirement coverage matrix
- Success criteria assessment
- Architecture drift table
- Significant deviations
- Innovations and best practices
- Constitution compliance
- Unspecified implementations
- Task execution analysis
- Lessons learned and recommendations
- File traceability appendix
11. Self-Assessment Checklist (Required)
Before finalizing output, run this checklist and mark each item as PASS/FAIL:
- Evidence completeness:
- Every major deviation includes concrete evidence (file/task/behavior).
- Coverage integrity:
- FR/NFR/SC coverage is complete with no missing requirement IDs.
- Metrics sanity:
completion_rate and spec_adherence formulas are applied correctly.
- Severity consistency:
- CRITICAL/SIGNIFICANT/MINOR/POSITIVE labels match stated impact.
- Constitution review:
- Constitution violations are explicitly listed (or
None is stated).
- Human Gate readiness:
- If spec changes are proposed,
Proposed Spec Changes is populated and ready for user confirmation.
- Actionability:
- Recommendations are specific, prioritized, and directly tied to findings.
Blocking rule:
- If any of these fail:
Coverage integrity, Metrics sanity, Human Gate readiness (when applicable), or Constitution review, do not finalize the report. Fix the gaps first.
12. Save Report
- Write to
FEATURE_DIR/retrospective.md
- Optionally commit with:
feat(retrospective): add spec adherence report (adherence X%, completion X%)
- Confirm:
Retrospective saved | Adherence: X% | Critical findings: X
13. Human Gate Before Spec Changes
If retrospective findings recommend updating or regenerating the spec:
- Present a short summary of the proposed
spec.md changes, referencing the Proposed Spec Changes section.
- Ask explicitly:
Do you want me to modify spec.md now? (y/N)
- Treat any response other than
y, yes, si, s, or sí as NO.
- Require a separate confirmation for each spec-modifying action (for example, each
/speckit.specify run or direct spec.md edit).
- If declined or no response, do not modify spec and continue with report-only recommendations.
Treat launching /speckit.specify as a spec-modifying action that requires this gate.
14. Follow-up Actions
Prioritize:
- CRITICAL: constitution violations, breaking changes, security issues
- HIGH: significant drift and process improvements
- MEDIUM: best practices and constitution candidates
- LOW: minor optimizations
Follow-up commands:
/speckit.constitution for violations
/speckit.specify for spec updates
/speckit.checklist for new checklists
Guidelines
Count as Drift
Features differing from spec, dropped requirements, scope creep, or changes in technical approach.
Not Drift
Implementation details, bounded optimizations, bug fixes, refactoring, and test improvements.
Principles
- Facts over judgments
- Process over blame
- Positive deviations are learning opportunities
- Keep report concise and actionable
1---2name: speckit-retrospective-analyze3description: Perform a post-implementation retrospective analysis measuring spec adherence, implementation deviations, and lessons learned.4---56## User Input78```text9$ARGUMENTS10```1112Consider user input before proceeding (if not empty).1314## Goal1516Analyze completed implementation against `spec.md`, `plan.md`, and `tasks.md` to measure spec adherence and drift. Generate actionable insights for future SDD cycles.1718## Constraints1920- Output: Generates and saves `retrospective.md` report to FEATURE_DIR21- Post-Implementation: Run after implementation complete; warn if <80% tasks done, confirm before proceeding if <50%22- Human Gate for spec changes: before any action that modifies `spec.md` (including `/speckit.specify` handoff), explicitly ask for user confirmation and stop if not approved23- Confirmation policy: default is NO. Only explicit approvals (`y`, `yes`, `si`, `s`, `sí`) count as consent2425## Execution Steps2627### 1. Initialize Context2829Run `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks` from repo root. Parse JSON for FEATURE_DIR and AVAILABLE_DOCS. Derive paths: SPEC, PLAN, TASKS = FEATURE_DIR/{spec,plan,tasks}.md. Abort if missing.3031For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'''m Groot' (or double-quote if possible: "I'm Groot").3233### 2. Validate Completeness3435```bash36total_tasks=$(grep -c '^- \[[ Xx]\]' "$TASKS" || echo 0)37completed_tasks=$(grep -c '^- \[[Xx]\]' "$TASKS" || echo 0)38if [ "$total_tasks" -eq 0 ]; then39 echo "No tasks found in $TASKS" && exit 140fi41completion_rate=$((completed_tasks * 100 / total_tasks))42```4344Completion thresholds:45- >=80%: Proceed with full retrospective46- 50-79%: Warn about incomplete implementation, continue with partial analysis47- <50%: STOP and confirm before continuing4849### 3. Load Artifacts5051- `spec.md`: FR-XXX, NFR-XXX, SC-XXX, user stories, assumptions, edge cases52- `plan.md`: Architecture, data model, phases, constraints, dependencies53- `tasks.md`: All tasks with status, file paths, blockers54- constitution: `.specify/memory/constitution.md` (if exists)5556### 4. Discover Implementation5758- Extract file paths from completed tasks plus recent git history59- Inventory: Models, APIs, Services, Tests, Config changes60- Audit: Libraries, frameworks, integrations actually used6162### 5. Spec Drift Analysis6364Perform:651. Requirement coverage (implemented, partial, not implemented, modified, unspecified)662. Success criteria validation673. Architecture drift against plan684. Task fidelity (completed/modified/added/dropped)695. Timeline and blockers (if available)7071Calculate:7273```text74Spec Adherence % = ((IMPLEMENTED + MODIFIED + (PARTIAL * 0.5)) / (Total Requirements - UNSPECIFIED)) * 10075```7677Where Total Requirements is the count of all FR-XXX, NFR-XXX, SC-XXX from `spec.md`.7879### 6. Severity Classification8081Classify findings as:82- CRITICAL (core functionality or constitution violations)83- SIGNIFICANT (deviations that affect UX/performance/operations)84- MINOR (small or cosmetic variations)85- POSITIVE (improvements over spec)8687### 7. Innovation Opportunities8889For positive deviations, document:90- What improved91- Why it is better92- Reusability potential93- Whether it is a constitution candidate9495### 8. Root Cause Analysis9697For key deviations capture:98- Discovery point (planning/implementation/testing/review)99- Cause (spec gap, tech constraint, scope evolution, misunderstanding, improvement, process skip)100- Prevention recommendation101102### 9. Constitution Compliance103104Check each constitution article against implementation. Treat violations as CRITICAL.105106### 10. Generate Report107108Create `retrospective.md` with:109- YAML frontmatter (feature, branch, date, completion_rate, spec_adherence, counts)110- Executive summary111- Proposed Spec Changes (explicit list of intended `spec.md` edits, grouped by FR/NFR/SC and rationale)112- Requirement coverage matrix113- Success criteria assessment114- Architecture drift table115- Significant deviations116- Innovations and best practices117- Constitution compliance118- Unspecified implementations119- Task execution analysis120- Lessons learned and recommendations121- File traceability appendix122123### 11. Self-Assessment Checklist (Required)124125Before finalizing output, run this checklist and mark each item as PASS/FAIL:126127- Evidence completeness:128 - Every major deviation includes concrete evidence (file/task/behavior).129- Coverage integrity:130 - FR/NFR/SC coverage is complete with no missing requirement IDs.131- Metrics sanity:132 - `completion_rate` and `spec_adherence` formulas are applied correctly.133- Severity consistency:134 - CRITICAL/SIGNIFICANT/MINOR/POSITIVE labels match stated impact.135- Constitution review:136 - Constitution violations are explicitly listed (or `None` is stated).137- Human Gate readiness:138 - If spec changes are proposed, `Proposed Spec Changes` is populated and ready for user confirmation.139- Actionability:140 - Recommendations are specific, prioritized, and directly tied to findings.141142Blocking rule:143- If any of these fail: `Coverage integrity`, `Metrics sanity`, `Human Gate readiness` (when applicable), or `Constitution review`, do not finalize the report. Fix the gaps first.144145### 12. Save Report1461471. Write to `FEATURE_DIR/retrospective.md`1482. Optionally commit with:149 - `feat(retrospective): add spec adherence report (adherence X%, completion X%)`1503. Confirm:151 - `Retrospective saved | Adherence: X% | Critical findings: X`152153### 13. Human Gate Before Spec Changes154155If retrospective findings recommend updating or regenerating the spec:1561571. Present a short summary of the proposed `spec.md` changes, referencing the `Proposed Spec Changes` section.1582. Ask explicitly: `Do you want me to modify spec.md now? (y/N)`1593. Treat any response other than `y`, `yes`, `si`, `s`, or `sí` as NO.1604. Require a separate confirmation for each spec-modifying action (for example, each `/speckit.specify` run or direct `spec.md` edit).1615. If declined or no response, do not modify spec and continue with report-only recommendations.162163Treat launching `/speckit.specify` as a spec-modifying action that requires this gate.164165### 14. Follow-up Actions166167Prioritize:1681. CRITICAL: constitution violations, breaking changes, security issues1692. HIGH: significant drift and process improvements1703. MEDIUM: best practices and constitution candidates1714. LOW: minor optimizations172173Follow-up commands:174- `/speckit.constitution` for violations175- `/speckit.specify` for spec updates176- `/speckit.checklist` for new checklists177178## Guidelines179180### Count as Drift181182Features differing from spec, dropped requirements, scope creep, or changes in technical approach.183184### Not Drift185186Implementation details, bounded optimizations, bug fixes, refactoring, and test improvements.187188### Principles189190- Facts over judgments191- Process over blame192- Positive deviations are learning opportunities193- Keep report concise and actionable