211 lines
7.3 KiB
Markdown
211 lines
7.3 KiB
Markdown
---
|
|
name: retrospective
|
|
description: "Generates a sprint or milestone retrospective by analyzing completed work, velocity, blockers, and patterns. Produces actionable insights for the next iteration."
|
|
argument-hint: "[sprint-N|milestone-name]"
|
|
user-invocable: true
|
|
allowed-tools: Read, Glob, Grep, Write
|
|
context: |
|
|
!git log --oneline --since="2 weeks ago" 2>/dev/null
|
|
---
|
|
|
|
## Phase 1: Parse Arguments
|
|
|
|
Determine whether this is a sprint retrospective (`sprint-N`) or a milestone retrospective (`milestone-name`).
|
|
|
|
---
|
|
|
|
## Phase 1b: Check for Existing Retrospective
|
|
|
|
Before loading any data, glob for an existing retrospective file:
|
|
|
|
- For sprint retrospectives: `production/retrospectives/retro-[sprint-slug]-*.md`
|
|
(also check `production/sprints/sprint-[N]-retrospective.md` as an alternate location)
|
|
- For milestone retrospectives: `production/retrospectives/retro-[milestone-name]-*.md`
|
|
|
|
If a matching file is found, present the user with:
|
|
|
|
```
|
|
An existing retrospective was found: [filename]
|
|
|
|
[A] Update existing retrospective — load it and add/revise sections
|
|
[B] Start fresh — generate a new retrospective, archiving the old one
|
|
```
|
|
|
|
Wait for user selection before continuing. If updating, read the existing file and
|
|
carry its content forward into the generation phase, revising sections with new data.
|
|
|
|
---
|
|
|
|
## Phase 2: Load Sprint or Milestone Data
|
|
|
|
Read the sprint or milestone plan from the appropriate location:
|
|
|
|
- Sprint plans: `production/sprints/`
|
|
- Milestone definitions: `production/milestones/`
|
|
|
|
**If the file does not exist or is empty**, output:
|
|
|
|
> "No sprint data found for [sprint/milestone]. Run `/sprint-status` to generate
|
|
> sprint data first, or provide the sprint details manually."
|
|
|
|
Then use `AskUserQuestion` to present two options:
|
|
|
|
- **[A] Provide data manually** — ask the user to paste or describe the sprint
|
|
tasks, dates, and outcomes; use that as the source of truth for the retrospective.
|
|
- **[B] Stop** — abort the skill. Verdict: **BLOCKED** — no sprint data available.
|
|
|
|
If the user chooses [A], collect the data and continue to Phase 3 using what they provide.
|
|
If the user chooses [B], stop here.
|
|
|
|
Extract: planned tasks, estimated effort, owners, and goals.
|
|
|
|
Read the git log for the period covered by the sprint or milestone to understand what was actually committed and when.
|
|
|
|
---
|
|
|
|
## Phase 3: Analyze Completion and Trends
|
|
|
|
Scan for completed and incomplete tasks by comparing the plan against actual deliverables. Check for:
|
|
|
|
- Tasks completed as planned
|
|
- Tasks completed but modified from the plan
|
|
- Tasks carried over (not completed)
|
|
- Tasks added mid-sprint (unplanned work)
|
|
- Tasks removed or descoped
|
|
|
|
Scan the codebase for TODO/FIXME trends:
|
|
|
|
- Count current TODO/FIXME/HACK comments
|
|
- Compare to previous sprint counts if available (check previous retrospectives)
|
|
- Note whether technical debt is growing or shrinking
|
|
|
|
Read previous retrospectives (if any) from `production/sprints/` or `production/milestones/` to check:
|
|
|
|
- Were previous action items addressed?
|
|
- Are the same problems recurring?
|
|
- How has velocity trended?
|
|
|
|
---
|
|
|
|
## Phase 4: Generate the Retrospective
|
|
|
|
```markdown
|
|
## Retrospective: [Sprint N / Milestone Name]
|
|
Period: [Start Date] -- [End Date]
|
|
Generated: [Date]
|
|
|
|
### Metrics
|
|
|
|
| Metric | Planned | Actual | Delta |
|
|
|--------|---------|--------|-------|
|
|
| Tasks | [X] | [Y] | [+/- Z] |
|
|
| Completion Rate | -- | [Z%] | -- |
|
|
| Story Points / Effort Days | [X] | [Y] | [+/- Z] |
|
|
| Bugs Found | -- | [N] | -- |
|
|
| Bugs Fixed | -- | [N] | -- |
|
|
| Unplanned Tasks Added | -- | [N] | -- |
|
|
| Commits | -- | [N] | -- |
|
|
|
|
### Velocity Trend
|
|
|
|
| Sprint | Planned | Completed | Rate |
|
|
|--------|---------|-----------|------|
|
|
| [N-2] | [X] | [Y] | [Z%] |
|
|
| [N-1] | [X] | [Y] | [Z%] |
|
|
| [N] (current) | [X] | [Y] | [Z%] |
|
|
|
|
**Trend**: [Increasing / Stable / Decreasing]
|
|
[One sentence explaining the trend]
|
|
|
|
### What Went Well
|
|
- [Observation backed by specific data or examples]
|
|
- [Another positive observation]
|
|
- [Recognize specific contributions or decisions that paid off]
|
|
|
|
### What Went Poorly
|
|
- [Specific issue with measurable impact -- e.g., "Feature X took 5 days
|
|
instead of estimated 2, blocking tasks Y and Z"]
|
|
- [Another issue with impact]
|
|
- [Do not assign blame -- focus on systemic causes]
|
|
|
|
### Blockers Encountered
|
|
|
|
| Blocker | Duration | Resolution | Prevention |
|
|
|---------|----------|------------|------------|
|
|
| [What blocked progress] | [How long] | [How it was resolved] | [How to prevent recurrence] |
|
|
|
|
### Estimation Accuracy
|
|
|
|
| Task | Estimated | Actual | Variance | Likely Cause |
|
|
|------|-----------|--------|----------|--------------|
|
|
| [Most overestimated task] | [X] | [Y] | [+Z] | [Why] |
|
|
| [Most underestimated task] | [X] | [Y] | [-Z] | [Why] |
|
|
|
|
**Overall estimation accuracy**: [X%] of tasks within +/- 20% of estimate
|
|
|
|
[Analysis: Are we consistently over- or under-estimating? For which types of
|
|
tasks? What adjustment should we apply?]
|
|
|
|
### Carryover Analysis
|
|
|
|
| Task | Original Sprint | Times Carried | Reason | Action |
|
|
|------|----------------|---------------|--------|--------|
|
|
| [Task that was not completed] | [Sprint N-X] | [N] | [Why] | [Complete / Descope / Redesign] |
|
|
|
|
### Technical Debt Status
|
|
- Current TODO count: [N] (previous: [N])
|
|
- Current FIXME count: [N] (previous: [N])
|
|
- Current HACK count: [N] (previous: [N])
|
|
- Trend: [Growing / Stable / Shrinking]
|
|
- [Note any areas of concern]
|
|
|
|
### Previous Action Items Follow-Up
|
|
|
|
| Action Item (from Sprint N-1) | Status | Notes |
|
|
|-------------------------------|--------|-------|
|
|
| [Previous action] | [Done / In Progress / Not Started] | [Context] |
|
|
|
|
### Action Items for Next Iteration
|
|
|
|
| # | Action | Owner | Priority | Deadline |
|
|
|---|--------|-------|----------|----------|
|
|
| 1 | [Specific, measurable action] | [Who] | [High/Med/Low] | [When] |
|
|
| 2 | [Another action] | [Who] | [Priority] | [When] |
|
|
|
|
### Process Improvements
|
|
- [Specific change to how we work, with expected benefit]
|
|
- [Another improvement -- keep it to 2-3 actionable items, not a wish list]
|
|
|
|
### Summary
|
|
[2-3 sentence overall assessment: Was this a good sprint/milestone? What is
|
|
the single most important thing to change going forward?]
|
|
```
|
|
|
|
---
|
|
|
|
## Phase 5: Save Retrospective
|
|
|
|
Present the retrospective and top findings to the user (completion rate, velocity trend, top blocker, most important action item).
|
|
|
|
Ask: "May I write this to `production/sprints/sprint-[N]-retrospective.md`?" (or the milestone path if applicable)
|
|
|
|
If yes, write the file, creating the directory if needed. Verdict: **COMPLETE** — retrospective saved.
|
|
|
|
If no, stop here. Verdict: **BLOCKED** — user declined write.
|
|
|
|
---
|
|
|
|
## Phase 6: Next Steps
|
|
|
|
- Run `/sprint-plan` to incorporate the action items and velocity data into the next sprint.
|
|
- If this was a milestone retrospective, run `/gate-check` to formally assess readiness for the next phase.
|
|
|
|
### Guidelines
|
|
|
|
- Be honest and specific. Vague retrospectives ("communication could be better") produce vague improvements. Use data and examples.
|
|
- Focus on systemic issues, not individual blame.
|
|
- Limit action items to 3-5. More than that dilutes focus.
|
|
- Every action item must have an owner and a deadline.
|
|
- Check whether previous action items were completed. Recurring unaddressed items are a process smell.
|
|
- If this is a milestone retrospective, also evaluate whether the milestone goals were achieved and what that means for the overall project timeline.
|