Retrospective Workflow
SkillProductivityGuides your agent through running a post-project retrospective with this BMAD Claude skill.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Retrospective Workflow skill
About this skill
Post-epic review to extract lessons and assess success. Use when the user says "run a retrospective" or "lets retro the epic [epic]"
What this skill tells your AI
The instructions your AI receives, as published by delorenj/mcp-server-trello in .agent/skills/bmad-retrospective/SKILL.md and read by ahel’s review.
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 (wherecustomize.tomllives).{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:
{skill-root}/customize.toml— defaults{project-root}/_bmad/custom/{skill-name}.toml— team overrides{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_namecommunication_language,document_output_languageuser_skill_levelplanning_artifacts,implementation_artifactsdateas 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. If activation_steps_prepend or activation_steps_append were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
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 viapython3 {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
WAIT for {user_name} to confirm or correct
WAIT for {user_name} to provide epic number Set {{epic_number}} = user-provided number
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
Amelia (Developer): "Let me check... you're right, Alice."
Epic Status:
- Total Stories: {{total_stories}}
- Completed (Done): {{done_stories}}
- Pending: {{pending_count}}
Pending Stories: {{pending_story_list}}
Amelia (Developer): "{user_name}, we typically run retrospectives after all stories are done. What would you like to do?"
Options:
- Complete remaining stories before running retrospective (recommended)
- Continue with partial retrospective (not ideal, but possible)
- Run sprint-planning to refresh story tracking
Continue with incomplete epic? (yes/no)
Set {{partial_retrospective}} = true Charlie (Senior Dev): "Just so everyone knows, this partial retro might miss some important lessons from those pending stories."
Amelia (Developer): "Good point, Charlie. {user_name}, we'll document what we can now, but we may want to revisit after everything's done."
Amelia (Developer): "Perfect. Epic {{epic_number}} is complete and ready for retrospective, {user_name}."
Charlie (Senior Dev): "Good idea - those dev notes always have gold in them."
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
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
Dana (QA Engineer): "I'm curious what you found, Amelia. I noticed some things in my testing too."
Amelia (Developer): "We'll get to all of it. But first, let me load the previous epic's retro to see if we learned from last time."
Calculate previous epic number: {{prev_epic_num}} = {{epic_number}} - 1
<action>Read the previous retrospectives</action>
<action>Extract key elements:</action>
- **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?
<action>Cross-reference with current epic execution:</action>
**Action Item Follow-Through:**
- For each action item from Epic {{prev_epic_num}} retro, check if it was completed
- Cross-check the action_items section in {sprint_status_file} (if present) for Epic {{prev_epic_num}} entries and their current status
- 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?
<action>Prepare "continuity insights" for the retrospective discussion</action>
<action>Identify wins where previous lessons were applied successfully:</action>
- Document specific examples of applied learnings
- Note positive impact on Epic {{epic_number}} outcomes
- Celebrate team growth and improvement
<action>Identify missed opportunities where previous lessons were ignored:</action>
- Document where team repeated previous mistakes
- Note impact of not applying lessons (without blame)
- Explore barriers that prevented application
<output>
Amelia (Developer): "Interesting... in Epic {{prev_epic_num}}'s retro, we committed to {{action_count}} action items."
Alice (Product Owner): "How'd we do on those, Amelia?"
Amelia (Developer): "We completed {{completed_count}}, made progress on {{in_progress_count}}, but didn't address {{not_addressed_count}}."
Charlie (Senior Dev): looking concerned "Which ones didn't we address?"
Amelia (Developer): "We'll discuss that in the retro. Some of them might explain challenges we had this epic."
Elena (Junior Dev): "That's... actually pretty insightful."
Amelia (Developer): "That's why we track this stuff. Pattern recognition helps us improve."
Alice (Product Owner): "Probably our first one. Good time to start the habit!" Set {{first_retrospective}} = true
Charlie (Senior Dev): "First epic, first retro. Let's make it count." Set {{first_retrospective}} = true
Calculate next epic number: {{next_epic_num}} = {{epic_number}} + 1
Alice (Product Owner): "Good thinking - helps us connect what we learned to what we're about to do."
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
Fallback to whole document: Check if file exists: {planning_artifacts}/epic*.md
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
Amelia (Developer): "Alright, I've reviewed Epic {{next_epic_num}}: '{{next_epic_title}}'"
Alice (Product Owner): "What are we looking at?"
Amelia (Developer): "{{next_epic_num}} stories planned, building on the {{dependency_description}} from Epic {{epic_number}}."
Charlie (Senior Dev): "Dependencies concern me. Did we finish everything we need for that?"
Amelia (Developer): "Good question - that's exactly what we need to explore in this retro."
Set {{next_epic_exists}} = true
Alice (Product Owner): "We might be at the end of the roadmap, or we haven't planned that far ahead yet."
Amelia (Developer): "No problem. We'll still do a thorough retro on Epic {{epic_number}}. The lessons will be valuable whenever we plan the next work."
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
═══════════════════════════════════════════════════════════ 🔄 TEAM RETROSPECTIVE - Epic {{epic_number}}: {{epic_title}} ═══════════════════════════════════════════════════════════
Amelia (Developer): "Here's what we accomplished together."
EPIC {{epic_number}} SUMMARY:
Delivery Metrics:
- Completed: {{completed_stories}}/{{total_stories}} stories ({{completion_percentage}}%)
- Velocity: {{actual_points}} story points{{#if planned_points}} (planned: {{planned_points}}){{/if}}
- Duration: {{actual_sprints}} sprints{{#if planned_sprints}} (planned: {{planned_sprints}}){{/if}}
- Average velocity: {{points_per_sprint}} points/sprint
Quality and Technical:
- Blockers encountered: {{blocker_count}}
- Technical debt items: {{debt_count}}
- Test coverage: {{coverage_info}}
- Production incidents: {{incident_count}}
Business Outcomes:
- Goals achieved: {{goals_met}}/{{total_goals}}
- Success criteria: {{criteria_status}}
- Stakeholder feedback: {{feedback_summary}}
Alice (Product Owner): "Those numbers tell a good story. {{completion_percentage}}% completion is {{#if completion_percentage >= 90}}excellent{{else}}something we should discuss{{/if}}."
Charlie (Senior Dev): "I'm more interested in that technical debt number - {{debt_count}} items is {{#if debt_count > 10}}concerning{{else}}manageable{{/if}}."
Dana (QA Engineer): "{{incident_count}} production incidents - {{#if incident_count == 0}}clean epic!{{else}}we should talk about those{{/if}}."
{{#if next_epic_exists}} ═══════════════════════════════════════════════════════════ NEXT EPIC PREVIEW: Epic {{next_epic_num}}: {{next_epic_title}} ═══════════════════════════════════════════════════════════
Dependencies on Epic {{epic_number}}: {{list_dependencies}}
Preparation Needed: {{list_preparation_gaps}}
Technical Prerequisites: {{list_technical_prereqs}}
Amelia (Developer): "And here's what's coming next. Epic {{next_epic_num}} builds on what we just finished."
Elena (Junior Dev): "Wow, that's a lot of dependencies on our work."
Charlie (Senior Dev): "Which means we better make sure Epic {{epic_number}} is actually solid before moving on." {{/if}}
Shortened here. Read the whole file on GitHub.
Signals
- GitHub stars
- 444
- Forks
- 146
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
bmad-retrospective-delorenj- Source
- github.com/delorenj/mcp-server-trello