---
name: bmad-retrospective
description: 'Post-epic review to extract lessons and assess success. Use when the user says "run a retrospective" or "lets retro the epic [epic]"'
---
## 🧠 Memtrace Context (Self-Contained)
The retrospective workflow has access to Memtrace structural analysis tools for objective technical debt assessment.
### Tools Referenced
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `list_indexed_repositories` | Index freshness check | None — call before every query block |
| `get_evolution` | Discover all symbols/files changed in sprint timeframe | `from`, `to` (ISO-8601), `mode="compound"` |
| `get_impact` | Compute blast radius for key changes | `target` (symbol name), `direction="both"`, `depth=3` |
| `find_most_complex_functions` | Detect complexity hotspots | `top_n=15`, `kinds=["Function","Method"]` |
| `find_bridge_symbols` | Identify chokepoints that changed | `limit=15` |
| `find_central_symbols` | Identify load-bearing code that changed | `limit=20` |
| `list_communities` | Detect cross-module coupling | `min_size=3` |
| `find_dead_code` | Surface orphaned symbols from refactors | `include_tests=false`, `limit=50` |
### Usage Rules
1. **Index Freshness First**: Always call `list_indexed_repositories` before any graph query. If the repo is not indexed or last_indexed is stale, skip ALL graph queries.
2. **Sequential Only**: ALL Memtrace queries MUST use `for...of` with `await`. `Promise.all` is FORBIDDEN.
3. **Token Budget**: Cap results at 200 symbols per query batch. Prefer summarized/compound output modes.
4. **Advisory Only**: Structural data ENRICHES the retrospective — it does not dictate outcomes. The team and {user_name} decide priorities.
5. **Graceful Degradation**: If ANY Memtrace tool fails (timeout, not indexed, server down), skip graph queries and continue with heuristic analysis. Log the skip reason.
6. **Timeout Handling**: Queries time out at 10000ms. On timeout, skip the query and continue.
7. **No Process Management**: Never invoke server restart commands in the retrospective workflow.
### Data Flow
```
Step 2: get_evolution → get_impact → find_most_complex_functions
→ find_bridge_symbols → find_central_symbols → list_communities
→ find_dead_code → {{memtrace_structural_insights}}
↓
Step 8: {{memtrace_structural_insights}} → Present evidence → Recommend action items
```
### Fallback Path
When Memtrace is unavailable, the retrospective continues with:
- Story file reading and dev note extraction (existing logic)
- Team discussion-based pattern detection
- Heuristic technical debt identification
- All existing conversation flows preserved
# Retrospective Workflow
**Goal:** Post-epic review to extract lessons and assess success.
**Your Role:** Developer facilitating retrospective.
- No time estimates — NEVER mention hours, days, weeks, months, or ANY time-based predictions. AI has fundamentally changed development speed.
- Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level}
- Generate all documents in {document_output_language}
- Document output: Retrospective analysis. Concise insights, lessons learned, action items. User skill level ({user_skill_level}) affects conversation style ONLY, not retrospective content.
- Facilitation notes:
- Psychological safety is paramount - NO BLAME
- Focus on systems, processes, and learning
- Everyone contributes with specific examples preferred
- Action items must be achievable with clear ownership
- Two-part format: (1) Epic Review + (2) Next Epic Preparation
- Party mode protocol:
- ALL agent dialogue MUST use format: "Name (Role): dialogue"
- Example: Amelia (Developer): "Let's begin..."
- Example: {user_name} (Project Lead): [User responds]
- Create natural back-and-forth with user actively participating
- Show disagreements, diverse perspectives, authentic team dynamics
## Conventions
- Bare paths resolve from the skill root.
- `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).
- `{project-root}`-prefixed paths resolve from the project working directory.
- `{skill-name}` resolves to the skill directory's basename.
## On Activation
### Step 1: Resolve the Workflow Block
Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`
**If the script fails**, resolve the `workflow` block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:
1. `{skill-root}/customize.toml` — defaults
2. `{project-root}/_bmad/custom/{skill-name}.toml` — team overrides
3. `{project-root}/_bmad/custom/{skill-name}.user.toml` — personal overrides
Any missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append.
### Step 2: Execute Prepend Steps
Execute each entry in `{workflow.activation_steps_prepend}` in order before proceeding.
### Step 3: Load Persistent Facts
Treat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim.
### Step 4: Load Config
Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
- `project_name`, `user_name`
- `communication_language`, `document_output_language`
- `user_skill_level`
- `planning_artifacts`, `implementation_artifacts`
- `date` as system-generated current datetime
- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`
### Step 5: Greet the User
Greet `{user_name}`, speaking in `{communication_language}`.
### Step 6: Execute Append Steps
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
## Paths
- `sprint_status_file` = `{implementation_artifacts}/sprint-status.yaml`
## Input Files
| Input | Description | Path Pattern(s) | Load Strategy |
|-------|-------------|------------------|---------------|
| epics | The completed epic for retrospective | whole: `{planning_artifacts}/*epic*.md`, sharded_index: `{planning_artifacts}/*epic*/index.md`, sharded_single: `{planning_artifacts}/*epic*/epic-{{epic_num}}.md` | SELECTIVE_LOAD |
| previous_retrospective | Previous epic's retrospective (optional) | `{implementation_artifacts}/**/epic-{{prev_epic_num}}-retro-*.md` | SELECTIVE_LOAD |
| architecture | System architecture for context | whole: `{planning_artifacts}/*architecture*.md`, sharded: `{planning_artifacts}/*architecture*/*.md` | FULL_LOAD |
| prd | Product requirements for context | whole: `{planning_artifacts}/*prd*.md`, sharded: `{planning_artifacts}/*prd*/*.md` | FULL_LOAD |
| document_project | Brownfield project documentation (optional) | sharded: `{planning_artifacts}/*.md` | INDEX_GUIDED |
## Required Inputs
- `agent_roster` = resolved via `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key agents` (merges four layers in order: `_bmad/config.toml`, `_bmad/config.user.toml`, `_bmad/custom/config.toml`, `_bmad/custom/config.user.toml`)
## Execution
Explain to {user_name} the epic discovery process using natural dialogue
PRIORITY 1: Check {sprint_status_file} first
Load the FULL file: {sprint_status_file}
Read ALL development_status entries
Find the highest epic number with at least one story marked "done"
Extract epic number from keys like "epic-X-retrospective" or story keys like "X-Y-story-name"
Set {{detected_epic}} = highest epic number found with completed stories
Present finding to user with context
WAIT for {user_name} to confirm or correct
Set {{epic_number}} = {{detected_epic}}
Set {{epic_number}} = user-provided number
PRIORITY 2: Ask user directly
WAIT for {user_name} to provide epic number
Set {{epic_number}} = user-provided number
PRIORITY 3: Fallback to stories folder
Scan {implementation_artifacts} for highest numbered story files
Extract epic numbers from story filenames (pattern: epic-X-Y-story-name.md)
Set {{detected_epic}} = highest epic number found
WAIT for {user_name} to confirm or correct
Set {{epic_number}} = confirmed number
Once {{epic_number}} is determined, verify epic completion status
Find all stories for epic {{epic_number}} in {sprint_status_file}:
- Look for keys starting with "{{epic_number}}-" (e.g., "1-1-", "1-2-", etc.)
- Exclude epic key itself ("epic-{{epic_number}}")
- Exclude retrospective key ("epic-{{epic_number}}-retrospective")
Count total stories found for this epic
Count stories with status = "done"
Collect list of pending story keys (status != "done")
Determine if complete: true if all stories are done, false otherwise
Continue with incomplete epic? (yes/no)
HALT
Set {{partial_retrospective}} = true
Load input files according to the Input Files table above. For SELECTIVE_LOAD inputs, load only the epic matching {{epic_number}}. For FULL_LOAD inputs, load the complete document. For INDEX_GUIDED inputs, check the index first and load relevant sections. After discovery, these content variables are available: {epics_content} (selective load for this epic), {architecture_content}, {prd_content}, {document_project_content}
After discovery, these content variables are available: {epics_content} (selective load for this epic), {architecture_content}, {prd_content}, {document_project_content}
For each story in epic {{epic_number}}, read the complete story file from {implementation_artifacts}/{{epic_number}}-{{story_num}}-*.md
Extract and analyze from each story:
**Dev Notes and Struggles:**
- Look for sections like "## Dev Notes", "## Implementation Notes", "## Challenges", "## Development Log"
- Identify where developers struggled or made mistakes
- Note unexpected complexity or gotchas discovered
- Record technical decisions that didn't work out as planned
- Track where estimates were way off (too high or too low)
**Review Feedback Patterns:**
- Look for "## Review", "## Code Review", "## Dev Review" sections
- Identify recurring feedback themes across stories
- Note which types of issues came up repeatedly
- Track quality concerns or architectural misalignments
- Document praise or exemplary work called out in reviews
**Lessons Learned:**
- Look for "## Lessons Learned", "## Retrospective Notes", "## Takeaways" sections within stories
- Extract explicit lessons documented during development
- Identify "aha moments" or breakthroughs
- Note what would be done differently
- Track successful experiments or approaches
**Technical Debt Incurred:**
- Look for "## Technical Debt", "## TODO", "## Known Issues", "## Future Work" sections
- Document shortcuts taken and why
- Track debt items that affect next epic
- Note severity and priority of debt items
**Testing and Quality Insights:**
- Look for "## Testing", "## QA Notes", "## Test Results" sections
- Note testing challenges or surprises
- Track bug patterns or regression issues
- Document test coverage gaps
Check Memtrace availability for structural evolution analysis:
- Use `list_indexed_repositories` to confirm the project repo is indexed
- If indexed: check the `last_indexed_at` timestamp — if the last index is more than 24 hours older than the current time, treat it as stale
- If indexed AND fresh: set `memtrace_available = true` and proceed with graph-based discovery
- If NOT indexed or stale: set `memtrace_available = false` and skip to traditional pattern synthesis
Graph-Based Structural Evolution Analysis:
**A) Discover What Changed During the Sprint:**
- Determine the sprint timeframe: use the earliest story's creation date as `from`, and the latest story's completion date as `to`
- Call `get_evolution` (repo_id={{repo_id}}, from={{sprint_start}}, to={{sprint_end}}, mode="compound")
- This returns: top-N changed files, top-N touched symbols, total change volume
- The compound mode gives a rolled-up view without per-episode detail — ideal for retro-level analysis
- Store as `{{evolution_summary}}` with: total_files_changed, total_symbols_touched, top_changed_files (with change counts), top_touched_symbols
**B) Complexity Hotspot Detection in Modified Modules:**
- Extract the directory paths of the top-N most-changed files from step A
- For each modified directory, call `find_most_complex_functions` (repo_id={{repo_id}}, top_n=15, kinds=["Function","Method"])
- Filter to functions whose file_path falls within the modified directories
- Cross-reference with `get_evolution` data: if a function was both MODIFIED during the sprint AND has high complexity (>10), flag it as a "complexity hotspot"
- Store as `{{complexity_hotspots}}`: function name, file_path, complexity_score, risk_level, was_modified_during_sprint (bool)
- Process queries SEQUENTIALLY — one directory at a time with `await`
**C) Architectural Stress Analysis:**
- Call `find_bridge_symbols` (repo_id={{repo_id}}, limit=15) to get the current top chokepoints
- Call `find_central_symbols` (repo_id={{repo_id}}, limit=20) to get the current top load-bearing symbols
- Filter to symbols whose file_path falls within the modified directories from step A
- If ANY bridge or central symbols were modified during the sprint, flag as "ARCHITECTURAL STRESS"
- Bridge symbols modified → chokepoint risk (changes cascade unexpectedly)
- Central symbols modified → load-bearing code risk (changes have maximum blast radius)
- Store as `{{architectural_stress}}`: stressed_bridge_symbols[], stressed_central_symbols[]
**D) Cross-Module Coupling Detection:**
- Call `list_communities` (repo_id={{repo_id}}, min_size=3) to get current community clusters
- Cross-reference modified symbols (from step A) with community membership
- Count: how many DIFFERENT communities were touched by the sprint's changes
- If symbols from 3+ communities were modified, flag as "HIGH CROSS-MODULE COUPLING"
- If modifications within a community introduced new cross-community edges, flag as "COUPLING INCREASE"
- Store as `{{coupling_analysis}}`: communities_touched (count, names), cross_community_edge_count
**E) Orphan Risk Assessment:**
- Call `find_dead_code` (repo_id={{repo_id}}, include_tests=false, limit=50)
- Filter to dead code symbols whose file_path falls within the modified directories
- These are symbols that may have been orphaned by sprint refactors
- Flag as "ORPHAN RISK" — symbols to investigate for potential removal
- Store as `{{orphan_risk}}`: orphaned_symbols[] with file_path, kind
Validate all queries completed successfully (no timeout errors)
Process ALL queries STRICTLY SEQUENTIALLY using `for...of` with `await` — NEVER Promise.all
Cap each query result at 200 symbols to stay within token budget
Synthesize Structural Insights:
- Combine evolution_summary + complexity_hotspots + architectural_stress + coupling_analysis + orphan_risk
- Produce a structured `{{memtrace_structural_insights}}` object:
{
"available": true,
"timeframe": {from, to},
"change_volume": {files_changed, symbols_touched},
"complexity_hotspots": [{name, file_path, complexity, risk_level}],
"architectural_stress": {bridge_symbols_modified, central_symbols_modified},
"coupling": {communities_touched, cross_community_edges},
"orphan_risk": [{name, file_path, kind}],
"summary": "Human-readable summary of structural impact"
}
- Store for use in Step 8 (Synthesize Action Items)
Set `memtrace_available = false` for use in Step 8
Synthesize patterns across all stories:
**Common Struggles:**
- Identify issues that appeared in 2+ stories (e.g., "3 out of 5 stories had API authentication issues")
- Note areas where team consistently struggled
- Track where complexity was underestimated
**Recurring Review Feedback:**
- Identify feedback themes (e.g., "Error handling was flagged in every review")
- Note quality patterns (positive and negative)
- Track areas where team improved over the course of epic
**Breakthrough Moments:**
- Document key discoveries (e.g., "Story 3 discovered the caching pattern we used for rest of epic")
- Note when team velocity improved dramatically
- Track innovative solutions worth repeating
**Velocity Patterns:**
- Calculate average completion time per story
- Note velocity trends (e.g., "First 2 stories took 3x longer than estimated")
- Identify which types of stories went faster/slower
**Team Collaboration Highlights:**
- Note moments of excellent collaboration mentioned in stories
- Track where pair programming or mob programming was effective
- Document effective problem-solving sessions
Store this synthesis - these patterns will drive the retrospective discussion
Calculate previous epic number: {{prev_epic_num}} = {{epic_number}} - 1
Search for previous retrospectives using pattern: {implementation_artifacts}/epic-{{prev_epic_num}}-retro-*.md
Read the previous retrospectives
Extract key elements:
- **Action items committed**: What did the team agree to improve?
- **Lessons learned**: What insights were captured?
- **Process improvements**: What changes were agreed upon?
- **Technical debt flagged**: What debt was documented?
- **Team agreements**: What commitments were made?
- **Preparation tasks**: What was needed for this epic?
Cross-reference with current epic execution:
**Action Item Follow-Through:**
- For each action item from Epic {{prev_epic_num}} retro, check if it was completed
- Look for evidence in current epic's story records
- Mark each action item: ✅ Completed, ⏳ In Progress, ❌ Not Addressed
**Lessons Applied:**
- For each lesson from Epic {{prev_epic_num}}, check if team applied it in Epic {{epic_number}}
- Look for evidence in dev notes, review feedback, or outcomes
- Document successes and missed opportunities
**Process Improvements Effectiveness:**
- For each process change agreed to in Epic {{prev_epic_num}}, assess if it helped
- Did the change improve velocity, quality, or team satisfaction?
- Should we keep, modify, or abandon the change?
**Technical Debt Status:**
- For each debt item from Epic {{prev_epic_num}}, check if it was addressed
- Did unaddressed debt cause problems in Epic {{epic_number}}?
- Did the debt grow or shrink?
Prepare "continuity insights" for the retrospective discussion
Identify wins where previous lessons were applied successfully:
- Document specific examples of applied learnings
- Note positive impact on Epic {{epic_number}} outcomes
- Celebrate team growth and improvement
Identify missed opportunities where previous lessons were ignored:
- Document where team repeated previous mistakes
- Note impact of not applying lessons (without blame)
- Explore barriers that prevented application
Set {{first_retrospective}} = true
Set {{first_retrospective}} = true
Calculate next epic number: {{next_epic_num}} = {{epic_number}} + 1
Attempt to load next epic using selective loading strategy:
**Try sharded first (more specific):**
Check if file exists: {planning_artifacts}/epic*/epic-{{next_epic_num}}.md
Load {planning_artifacts}/*epic*/epic-{{next_epic_num}}.md
Set {{next_epic_source}} = "sharded"
**Fallback to whole document:**
Check if file exists: {planning_artifacts}/epic*.md
Load entire epics document
Extract Epic {{next_epic_num}} section
Set {{next_epic_source}} = "whole"
Analyze next epic for:
- Epic title and objectives
- Planned stories and complexity estimates
- Dependencies on Epic {{epic_number}} work
- New technical requirements or capabilities needed
- Potential risks or unknowns
- Business goals and success criteria
Identify dependencies on completed work:
- What components from Epic {{epic_number}} does Epic {{next_epic_num}} rely on?
- Are all prerequisites complete and stable?
- Any incomplete work that creates blocking dependencies?
Note potential gaps or preparation needed:
- Technical setup required (infrastructure, tools, libraries)
- Knowledge gaps to fill (research, training, spikes)
- Refactoring needed before starting next epic
- Documentation or specifications to create
Check for technical prerequisites:
- APIs or integrations that must be ready
- Data migrations or schema changes needed
- Testing infrastructure requirements
- Deployment or environment setup
Set {{next_epic_exists}} = true
Set {{next_epic_exists}} = false
Load agent roster from {agent_roster}
Identify which agents participated in Epic {{epic_number}} based on story records
Ensure key roles present: Product Owner, Developer (facilitating), Testing/QA, Architect
WAIT for {user_name} to respond or indicate readiness
Amelia (Developer) naturally turns to {user_name} to engage them in the discussion
WAIT for {user_name} to respond - this is a KEY USER INTERACTION moment
After {user_name} responds, have 1-2 team members react to or build on what {user_name} shared
Continue facilitating natural dialogue, periodically bringing {user_name} back into the conversation
After covering successes, guide the transition to challenges with care
WAIT for {user_name} to respond and help facilitate the conflict resolution
Use {user_name}'s response to guide the discussion toward systemic understanding rather than blame
Continue the discussion, weaving in patterns discovered from the deep story analysis (Step 2)
WAIT for {user_name} to share their observations
Continue the retrospective discussion, creating moments where:
- Team members ask {user_name} questions directly
- {user_name}'s input shifts the discussion direction
- Disagreements arise naturally and get resolved
- Quieter team members are invited to contribute
- Specific stories are referenced with real examples
- Emotions are authentic (frustration, pride, concern, hope)
WAIT for {user_name} to respond
Use the previous retro follow-through as a learning moment about commitment and accountability
Allow team members to add any final thoughts on the epic review
Ensure {user_name} has opportunity to add their perspective
Skip to Step 8
WAIT for {user_name} to share their assessment
Use {user_name}'s input to guide deeper exploration of preparation needs
WAIT for {user_name} to provide direction on preparation approach
Create space for debate and disagreement about priorities
WAIT for {user_name} to validate or adjust the preparation strategy
Continue working through preparation needs across all dimensions:
- Dependencies on Epic {{epic_number}} work
- Technical setup and infrastructure
- Knowledge gaps and research needs
- Documentation or specification work
- Testing infrastructure
- Refactoring or debt reduction
- External dependencies (APIs, integrations, etc.)
For each preparation area, facilitate team discussion that:
- Identifies specific needs with concrete examples
- Estimates effort realistically based on Epic {{epic_number}} experience
- Assigns ownership to specific agents
- Determines criticality and timing
- Surfaces risks of NOT doing the preparation
- Explores parallel work opportunities
- Brings {user_name} in for key decisions
WAIT for {user_name} final validation of preparation plan
Present Structural Technical Debt Evidence:
**Complexity Debt:**
- From `{{complexity_hotspots}}`: list the top 5 complexity hotspots discovered in modified modules
- For each: function name, file_path, complexity score, risk level, whether it was modified this sprint
- Interpretation: "{{N}} functions in modified modules have HIGH or CRITICAL complexity (>10). The highest is {{top_function}} at {{top_score}} in {{top_file}}."
**Architectural Stress:**
- From `{{architectural_stress}}`: count of bridge and central symbols modified
- If bridge symbols modified: "{{N}} architectural chokepoints (bridge symbols) were modified this sprint. Changes to these cascade unexpectedly across subsystems."
- If central symbols modified: "{{N}} load-bearing symbols (central, high PageRank) were modified. These have the maximum blast radius in the codebase."
**Coupling Impact:**
- From `{{coupling_analysis}}`: number of communities touched, cross-community edge count
- "This sprint's changes touched {{N}} logical modules (communities). {{M}} cross-community dependencies were introduced or modified."
- If 3+ communities: "HIGH coupling concern — changes span multiple subsystem boundaries."
**Orphan Risk:**
- From `{{orphan_risk}}`: count and list of orphaned symbols
- "{{N}} symbols in modified directories appear to have zero callers (potential dead code). These may be orphans from sprint refactors."
**Blast Radius Envelope:**
- From `{{evolution_summary}}` + `get_impact` results: total symbols impacted across all sprint changes
- "The combined blast radius of this sprint's changes touches approximately {{N}} symbols across {{M}} files."
WAIT for {user_name} to respond to structural findings
Use structural data to RECOMMEND technical debt action items:
- If complexity_hotspots exist → RECOMMEND: "Refactor complexity hotspots in {{files}}"
- If architectural_stress exists → RECOMMEND: "Audit bridge/central symbol changes in {{modules}} before next epic"
- If coupling_analysis shows 3+ communities → RECOMMEND: "Review cross-module coupling design — consider boundary enforcement"
- If orphan_risk exists → RECOMMEND: "Investigate and safely remove {{N}} orphaned symbols via pitfall-catalog validation"
- These are DATA-INFORMED RECOMMENDATIONS, not mandates. The team (and user) decide priorities.
Integrate structural data recommendations into the existing action item synthesis below
Proceed with existing heuristic action item synthesis
Synthesize themes from Epic {{epic_number}} review discussion into actionable improvements
Create specific action items with:
- Clear description of the action
- Assigned owner (specific agent or role)
- Timeline or deadline
- Success criteria (how we'll know it's done)
- Category (process, technical, documentation, team, etc.)
Ensure action items are SMART:
- Specific: Clear and unambiguous
- Measurable: Can verify completion
- Achievable: Realistic given constraints
- Relevant: Addresses real issues from retro
- Time-bound: Has clear deadline
WAIT for {user_name} to help resolve priority discussions
CRITICAL ANALYSIS - Detect if discoveries require epic updates
Check if any of the following are true based on retrospective discussion:
- Architectural assumptions from planning proven wrong during Epic {{epic_number}}
- Major scope changes or descoping occurred that affects next epic
- Technical approach needs fundamental change for Epic {{next_epic_num}}
- Dependencies discovered that Epic {{next_epic_num}} doesn't account for
- User needs significantly different than originally understood
- Performance/scalability concerns that affect Epic {{next_epic_num}} design
- Security or compliance issues discovered that change approach
- Integration assumptions proven incorrect
- Team capacity or skill gaps more severe than planned
- Technical debt level unsustainable without intervention
WAIT for {user_name} to decide on how to handle the significant changes
Add epic review session to critical path if user agrees
Give each agent with assignments a moment to acknowledge their ownership
Ensure {user_name} approves the complete action plan
Explore testing and quality state through natural conversation
WAIT for {user_name} to describe testing status
WAIT for {user_name} to assess quality readiness
Add testing completion to critical path
Explore deployment and release status
WAIT for {user_name} to provide deployment status
WAIT for {user_name} to clarify deployment timeline
Add deployment milestone to critical path with agreed timeline
Explore stakeholder acceptance
WAIT for {user_name} to describe stakeholder acceptance status
WAIT for {user_name} decision
Add stakeholder acceptance to critical path if user agrees
Explore technical health and stability
WAIT for {user_name} to assess codebase health
WAIT for {user_name} decision
Add stability work to preparation sprint if user agrees
Explore unresolved blockers
WAIT for {user_name} to surface any blockers
Assign blocker resolution to appropriate agent
Add to critical path with priority and deadline
Synthesize the readiness assessment
WAIT for {user_name} to confirm or correct the assessment
WAIT for {user_name} to share final reflections
Prepare to save retrospective summary document
Ensure retrospectives folder exists: {implementation_artifacts}
Create folder if it doesn't exist
Generate comprehensive retrospective summary document including:
- Epic summary and metrics
- Team participants
- Successes and strengths identified
- Challenges and growth areas
- Key insights and learnings
- Previous retro follow-through analysis (if applicable)
- Next epic preview and dependencies
- Action items with owners and timelines
- Preparation tasks for next epic
- Critical path items
- Significant discoveries and epic update recommendations (if any)
- Readiness assessment
- Commitments and next steps
Format retrospective document as readable markdown with clear sections
Set filename: {implementation_artifacts}/epic-{{epic_number}}-retro-{date}.md
Save retrospective document
Update {sprint_status_file} to mark retrospective as completed
Load the FULL file: {sprint_status_file}
Find development_status key "epic-{{epic_number}}-retrospective"
Verify current status (typically "optional" or "pending")
Update development_status["epic-{{epic_number}}-retrospective"] = "done"
Update last_updated field to current date
Save file, preserving ALL comments and structure including STATUS DEFINITIONS
Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow.on_complete` — if the resolved value is non-empty, follow it as the final terminal instruction before exiting.
PARTY MODE REQUIRED: All agent dialogue uses "Name (Role): dialogue" format
Amelia (Developer) maintains psychological safety throughout - no blame or judgment
Focus on systems and processes, not individual performance
Create authentic team dynamics: disagreements, diverse perspectives, emotions
User ({user_name}) is active participant, not passive observer
Encourage specific examples over general statements
Balance celebration of wins with honest assessment of challenges
Ensure every voice is heard - all agents contribute
Action items must be specific, achievable, and owned
Forward-looking mindset - how do we improve for next epic?
Intent-based facilitation, not scripted phrases
Deep story analysis provides rich material for discussion
Previous retro integration creates accountability and continuity
Significant change detection prevents epic misalignment
Critical verification prevents starting next epic prematurely
Document everything - retrospective insights are valuable for future reference
Two-part structure ensures both reflection AND preparation