retrospective-facilitation
Facilitate effective retrospectives to capture lessons learned, celebrate successes, and identify actionable improvements for future iterations.
$ 安裝
git clone https://github.com/aj-geddes/useful-ai-prompts /tmp/useful-ai-prompts && cp -r /tmp/useful-ai-prompts/skills/retrospective-facilitation ~/.claude/skills/useful-ai-prompts// tip: Run this command in your terminal to install the skill
SKILL.md
name: retrospective-facilitation description: Facilitate effective retrospectives to capture lessons learned, celebrate successes, and identify actionable improvements for future iterations.
Retrospective Facilitation
Overview
Retrospectives are critical ceremonies for team learning and continuous improvement. Effective facilitation creates psychological safety, encourages honest feedback, and drives tangible improvements.
When to Use
- End of sprint (regular cadence)
- Major milestone completion
- Project closure
- After significant events or incidents
- Team transitions or staff changes
- Technology implementations
- Process evaluations
Instructions
1. Retrospective Planning
Retrospective Planning:
Event: Sprint 23 Retrospective
Date: Friday, Jan 17, 2025
Duration: 60 minutes
Location: Conference Room B / Zoom
Facilitator: Sarah (Scrum Master)
Participants: 8 team members
Invite: Product Owner (optional)
---
Retrospective Goals:
1. Celebrate sprint successes
2. Identify what went well
3. Identify what could improve
4. Commit to specific improvements
5. Build team cohesion
Format: "Went Well / Didn't Go Well / Ideas"
Tool: Miro board for virtual collaboration
Pre-Retrospective Preparation:
- Send survey: anonymous feedback (24hrs before)
- Gather sprint metrics (velocity, bugs, etc.)
- Review sprint goals and outcomes
- Prepare starter questions
- Set up physical/virtual space
Success Criteria:
- 100% team attendance
- Minimum 3 actionable improvements identified
- Team feels heard and valued
- Action items assigned with owners
2. Facilitation Techniques
# Retrospective facilitation framework
class RetrospectiveFacilitator:
FORMATS = {
'Start-Stop-Continue': {
'description': 'What should we start, stop, continue doing?',
'duration_minutes': 45,
'best_for': 'Process improvements'
},
'Went-Well-Improve': {
'description': 'What went well? What can we improve?',
'duration_minutes': 45,
'best_for': 'General retrospectives'
},
'Sailboat': {
'description': 'Wind (helping), Anchor (hindering), Rocks (risks)',
'duration_minutes': 60,
'best_for': 'Identifying blockers and enablers'
},
'Timeline': {
'description': 'Walk through sprint chronologically',
'duration_minutes': 60,
'best_for': 'Complex sprints with incidents'
}
}
def __init__(self, team_size, format_type='Went-Well-Improve'):
self.team_size = team_size
self.format = format_type
self.duration = self.FORMATS[format_type]['duration_minutes']
self.agenda = self.create_agenda()
def create_agenda(self):
"""Create timed agenda"""
return {
'Opening': {
'duration_minutes': 5,
'activities': [
'Welcome and goals',
'Set psychological safety',
'Explain format'
]
},
'Data Gathering': {
'duration_minutes': 15,
'activities': [
'Individual reflection (5 min)',
'Silent brainstorming on board (10 min)'
]
},
'Discussion': {
'duration_minutes': 20,
'activities': [
'Group clustering similar items',
'Discuss themes and patterns',
'Ask clarifying questions'
]
},
'Improvement Planning': {
'duration_minutes': 15,
'activities': [
'Vote on priority items',
'Create action items',
'Assign owners'
]
},
'Closing': {
'duration_minutes': 5,
'activities': [
'Summarize decisions',
'Commit to improvements',
'Appreciate team'
]
}
}
def facilitate_discussion(self, feedback_items):
"""Guide productive discussion"""
return {
'structure': [
{
'step': 'Clustering',
'action': 'Group similar items together',
'facilitation_tip': 'Ask "Are these related?"'
},
{
'step': 'Exploration',
'action': 'Understand root causes',
'facilitation_tip': 'Ask "Why?" 5 times'
},
{
'step': 'Solution Generation',
'action': 'Brainstorm solutions',
'facilitation_tip': 'No criticism, defer judgment'
},
{
'step': 'Prioritization',
'action': 'Vote on what matters most',
'facilitation_tip': 'Use dot voting'
}
],
'facilitation_questions': [
'Can you help us understand what happened?',
'Why do you think this happened?',
'How can we prevent this next time?',
'What would success look like?'
]
}
def ensure_psychological_safety(self):
"""Create safe environment for honest feedback"""
return {
'opening_statement': '''
This is a safe space. There's no blame here. We're all
learning together. Everything shared stays confidential.
''',
'ground_rules': [
'Assume positive intent',
'Criticize ideas, not people',
'Everyone participates',
'Listen without interrupting',
'No side conversations'
],
'practices': [
'Use anonymous input for sensitive topics',
'Give balanced feedback (positive & improvement)',
'Acknowledge emotions and concerns',
'Thank people for vulnerability'
]
}
3. Action Item Tracking
// Converting retrospective insights to action items
class ActionItemManagement {
createActionItem(feedback, team) {
return {
id: `ACTION-${Date.now()}`,
title: feedback.title,
description: feedback.description,
priority: feedback.priority || 'Medium',
owner: feedback.owner,
dueDate: this.calculateDueDate(feedback),
successCriteria: [
`${feedback.title} completed`,
'Results verified in next sprint',
'Team confirms improvement'
],
resources: feedback.estimatedHours || 4,
dependencies: feedback.dependencies || [],
status: 'New',
createdDate: new Date()
};
}
calculateDueDate(item) {
// High priority: before next sprint starts
// Medium: during next sprint
// Low: next 2 sprints
const daysFromNow = {
'High': 7,
'Medium': 14,
'Low': 21
};
const dueDate = new Date();
dueDate.setDate(dueDate.getDate() + (daysFromNow[item.priority] || 14));
return dueDate;
}
trackActionItems(items) {
return {
total: items.length,
byStatus: {
new: items.filter(i => i.status === 'New').length,
inProgress: items.filter(i => i.status === 'In Progress').length,
completed: items.filter(i => i.status === 'Completed').length,
blockedPercent: (items.filter(i => i.status === 'Blocked').length / items.length * 100).toFixed(1)
},
summary: items.map(item => ({
id: item.id,
title: item.title,
owner: item.owner,
dueDate: item.dueDate,
status: item.status,
completion: item.completion || 0
}))
};
}
reviewCompletedItems(previousRetro) {
return {
totalCommitted: previousRetro.actionItems.length,
completed: previousRetro.actionItems.filter(i => i.status === 'Completed').length,
completionRate: `${(previousRetro.actionItems.filter(i => i.status === 'Completed').length / previousRetro.actionItems.length * 100).toFixed(1)}%`,
celebration: 'Celebrate completed items!',
carryOver: previousRetro.actionItems.filter(i => i.status !== 'Completed').map(i => ({
...i,
reason: 'Not completed',
recommendation: 'Revisit in next retrospective'
}))
};
}
}
4. Retrospective Templates
Retrospective Report:
Sprint: Sprint 23 (Jan 7 - Jan 17, 2025)
Facilitator: Sarah
Attendees: 8 engineers, 1 PM
Duration: 60 minutes
---
What Went Well:
- Shipped feature 3 days early
- Zero critical bugs in production
- Great collaboration between frontend/backend
- Mentoring of new team member
- Faster code review cycle (2 → 1 day avg)
Celebrated:
- Front-end team for UI excellence
- DevOps for infrastructure stability
- QA for thorough testing
---
What Could Be Improved:
1. Unclear requirements caused rework (2 developers, 8 hours)
Root Cause: PO wasn't available early in sprint
Severity: Medium
2. Testing infrastructure flaky (3 instances)
Root Cause: Increased test load, needs optimization
Severity: High
3. Documentation gaps in API changes
Root Cause: Developers focused on feature delivery
Severity: Low
4. Long standup meetings (averaging 20 mins)
Root Cause: Too many status details
Severity: Medium
---
Action Items Committed:
1. Daily PO availability window (9-10am)
Owner: Product Manager
Due: Sprint 24 Start (Jan 21)
Priority: High
2. Optimize test infrastructure
Owner: DevOps Lead
Due: Sprint 24 Mid-point (Jan 28)
Priority: High
Estimated Effort: 16 hours
3. Standup time-boxing
Owner: Scrum Master
Due: Next Sprint (Jan 21)
Priority: Medium
Method: 5-minute timebox, detailed issues in follow-up
4. API documentation template
Owner: Tech Lead
Due: Sprint 24 Start (Jan 21)
Priority: Low
---
Metrics:
Velocity: 85 story points (vs 80 planned)
Bugs Found: 2 (both fixed in sprint)
Code Review Cycle: 23 hours avg (target: 24)
Team Morale (1-5): 4.2/5
---
Team Feedback:
"Best sprint in a while!"
"Would like more focus on code quality"
"Great support from the team"
Best Practices
✅ DO
- Hold retrospectives regularly (every sprint)
- Create psychological safety upfront
- Use varied formats to maintain engagement
- Include the whole team
- Focus on systems, not individuals
- Convert insights to specific action items
- Assign clear owners and due dates
- Track and celebrate completed actions
- Review previous actions at start
- Thank people for participation and honesty
❌ DON'T
- Blame individuals or teams
- Let dominant voices control discussion
- Create action items without owners
- Have retrospectives without follow-up
- Ignore difficult feedback
- Focus only on what went wrong
- Hold retrospectives when people are tired/stressed
- Skip closing/celebration
- Mix retrospectives with status meetings
- Ignore patterns across multiple retrospectives
Retrospective Tips
- Rotate formats every 3-4 sprints to maintain engagement
- Use anonymous input for sensitive feedback
- Time-box discussion to stay focused
- Focus on 3-5 improvements, not 20 action items
- Review and celebrate progress on previous actions
Repository

aj-geddes
Author
aj-geddes/useful-ai-prompts/skills/retrospective-facilitation
25
Stars
1
Forks
Updated1w ago
Added1w ago