Back to skills
SKILL.md
Post Mortem
ASecurity| Atributo | Valor | |----------|-------| | **ID** | `sre-post-mortem` | | **Nivel** | π΄ Avanzado | | **VersiΓ³n** | 1.0.0 | | **Keywords** | `post-mortem`, `postmortem`, `incident-review`, `blameless`, `lessons-learned`, `root-cause-analysis` | | **Referencia** | [Google SRE - Postmortem Culture](https://sre.google/workbook/postmortem-culture/), [Blameless Postmortems](https://www.blameless.com/blog/blameless-postmortem) |
- 4 stars
- 0 votes
- 0 copies
- 0 views
- Added September 8, 2026
Security analysis
100/100npx -y skills add chimeranext/flutter-boilerplate-monorepo-template --skill post-mortem --agent claude-codeAre you the author of Post Mortem?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/chimeranext-post-mortem)# π Skill: Post-Mortem Process
## π Metadata
| Atributo | Valor |
|----------|-------|
| **ID** | `sre-post-mortem` |
| **Nivel** | π΄ Avanzado |
| **VersiΓ³n** | 1.0.0 |
| **Keywords** | `post-mortem`, `postmortem`, `incident-review`, `blameless`, `lessons-learned`, `root-cause-analysis` |
| **Referencia** | [Google SRE - Postmortem Culture](https://sre.google/workbook/postmortem-culture/), [Blameless Postmortems](https://www.blameless.com/blog/blameless-postmortem) |
## π Keywords para InvocaciΓ³n
- `post-mortem`
- `postmortem`
- `incident-review`
- `blameless`
- `lessons-learned`
- `root-cause-analysis`
- `incident-analysis`
- `@skill:post-mortem`
### Ejemplos de Prompts
```
Crea un post-mortem para el incidente de ayer
```
```
Implementa proceso de post-mortem blameless
```
```
Genera template de post-mortem con timeline y action items
```
```
@skill:post-mortem - Proceso completo de anΓ‘lisis de incidentes
```
## π DescripciΓ³n
Un post-mortem es un anΓ‘lisis estructurado y blameless de un incidente que busca entender quΓ© pasΓ³, por quΓ© pasΓ³, y cΓ³mo prevenir que vuelva a ocurrir. Este skill cubre la metodologΓa completa de post-mortems, templates, mejores prΓ‘cticas, y herramientas para facilitar el proceso.
### β
CuΓ‘ndo Usar Este Skill
- DespuΓ©s de incidentes crΓticos (SEV1, SEV2)
- Cuando se consume error budget significativo
- Incidentes que afectan mΓΊltiples usuarios
- Incidentes que requieren escalaciΓ³n
- Para cumplir con compliance requirements
- Cuando hay patrones recurrentes de incidentes
### β CuΓ‘ndo NO Usar Este Skill
- Incidentes menores sin impacto (SEV4)
- Problemas resueltos en < 5 minutos sin impacto
- Incidentes de mantenimiento planificados
- Cuando no hay tiempo para anΓ‘lisis adecuado
## ποΈ Proceso de Post-Mortem
```
βββββββββββββββββββ
β Incident Occurs β
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Incident Resolvedβ
ββββββββββ¬βββββββββ
β
β (Within 24-48 hours)
βΌ
βββββββββββββββββββ
β Schedule Meeting β
β (All Stakeholders)β
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Collect Data β
β - Logs β
β - Metrics β
β - Timeline β
β - Testimonies β
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Write Draft β
β Post-Mortem β
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Review Meeting β
β (Blameless) β
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Finalize & β
β Publish β
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Track Action β
β Items β
βββββββββββββββββββ
```
## π» ImplementaciΓ³n
### 1. Post-Mortem Template
```markdown
# Post-Mortem: [Incident Title]
**Incident ID:** [INC-YYYYMMDD-HHMMSS]
**Date:** [Date]
**Duration:** [Start Time] - [End Time] (X minutes/hours)
**Severity:** [SEV1/SEV2/SEV3]
**Affected Services:** [Service names]
**On-Call Engineer:** [Name]
**Post-Mortem Lead:** [Name]
**Status:** [Draft/Review/Final]
---
## Executive Summary
[2-3 sentence summary for leadership. What happened, impact, and resolution.]
**TL;DR:** [One sentence summary]
---
## Impact
### User Impact
- **Users Affected:** [Number or percentage]
- **Geographic Impact:** [Regions affected]
- **Feature Impact:** [Which features were unavailable]
### Business Impact
- **Revenue Impact:** [If applicable, estimated $]
- **SLA Breach:** [Yes/No - which SLA]
- **Error Budget Consumption:** [X% of monthly budget]
- **Customer Complaints:** [Number]
### Technical Impact
- **Services Down:** [List]
- **Data Loss:** [Yes/No - details]
- **Performance Degradation:** [Metrics]
---
## Timeline
| Time (UTC) | Event | Actor | Notes |
|------------|-------|-------|-------|
| 10:00 AM | Alert fired: HighErrorRate | Prometheus | Error rate > 5% |
| 10:02 AM | On-call engineer acknowledged | Engineer A | PagerDuty notification |
| 10:05 AM | Initial investigation started | Engineer A | Checking logs |
| 10:10 AM | Identified pattern in logs | Engineer A | Database connection errors |
| 10:15 AM | Root cause identified | Engineer A | Connection pool exhaustion |
| 10:20 AM | Mitigation deployed | Engineer B | Increased pool size |
| 10:25 AM | Service restored | System | Metrics normalized |
| 10:30 AM | Incident resolved | Engineer A | All systems healthy |
**Key Milestones:**
- **Detection Time:** 10:00 AM
- **Response Time:** 2 minutes
- **Time to Identify:** 15 minutes
- **Time to Mitigate:** 20 minutes
- **Time to Resolve:** 30 minutes
- **Total Downtime:** 30 minutes
---
## Root Cause Analysis
### Primary Root Cause
[Detailed explanation of what caused the incident. Use the "5 Whys" technique if applicable.]
**What Happened:**
[Description of the immediate cause]
**Why It Happened:**
[Underlying technical reason]
**Why That Happened:**
[Deeper systemic reason]
### Contributing Factors
1. **[Factor 1]**
- **Impact:** [How it contributed]
- **Why it existed:** [Systemic reason]
2. **[Factor 2]**
- **Impact:** [How it contributed]
- **Why it existed:** [Systemic reason]
3. **[Factor 3]**
- **Impact:** [How it contributed]
- **Why it existed:** [Systemic reason]
### Detection Gaps
- [What we should have detected earlier]
- [Why we didn't detect it]
- [What monitoring/metrics were missing]
---
## Resolution
### Immediate Actions Taken
1. **[Action 1]**
- **Who:** [Name]
- **When:** [Time]
- **Result:** [Outcome]
2. **[Action 2]**
- **Who:** [Name]
- **When:** [Time]
- **Result:** [Outcome]
### Long-term Fix
[What was done to permanently resolve the issue]
---
## Action Items
### Immediate (Next 24 hours)
- [ ] **Item 1** - Owner: [Name] - Due: [Date]
- Description: [Details]
- [ ] **Item 2** - Owner: [Name] - Due: [Date]
- Description: [Details]
### Short-term (Next week)
- [ ] **Item 1** - Owner: [Name] - Due: [Date]
- Description: [Details]
- [ ] **Item 2** - Owner: [Name] - Due: [Date]
- Description: [Details]
### Long-term (Next month)
- [ ] **Item 1** - Owner: [Name] - Due: [Date]
- Description: [Details]
- [ ] **Item 2** - Owner: [Name] - Due: [Date]
- Description: [Details]
**Action Item Tracking:**
- Total Items: [X]
- Completed: [Y]
- In Progress: [Z]
- Not Started: [W]
---
## Lessons Learned
### What Went Well β
1. **[Positive aspect 1]**
- **Why it helped:** [Explanation]
- **How to replicate:** [Actionable steps]
2. **[Positive aspect 2]**
- **Why it helped:** [Explanation]
- **How to replicate:** [Actionable steps]
### What Could Be Improved π
1. **[Improvement 1]**
- **Current state:** [What happened]
- **Desired state:** [What should happen]
- **How to improve:** [Actionable steps]
2. **[Improvement 2]**
- **Current state:** [What happened]
- **Desired state:** [What should happen]
- **How to improve:** [Actionable steps]
### Surprises π€
- [Unexpected behavior or findings]
- [Things we learned about the system]
---
## Prevention
### How to Prevent This Incident
1. **[Prevention measure 1]**
- **Type:** [Monitoring/Process/Code/Infrastructure]
- **Priority:** [High/Medium/Low]
- **Effort:** [Small/Medium/Large]
2. **[Prevention measure 2]**
- **Type:** [Monitoring/Process/Code/Infrastructure]
- **Priority:** [High/Medium/Low]
- **Effort:** [Small/Medium/Large]
### Similar Incidents
- [Link to related post-mortems]
- [Patterns identified]
---
## Follow-up
### Post-Mortem Review
- **Scheduled Date:** [Date]
- **Participants:** [Names]
- **Status:** [Scheduled/Completed]
### Action Item Review
- **Next Review Date:** [Date]
- **Owner:** [Name]
- **Last Updated:** [Date]
### Communication
- **Internal:** [Who was notified]
- **External:** [Customer communication if applicable]
- **Status Updates:** [Where updates were posted]
---
## Metrics
### Incident Metrics
- **MTTR (Mean Time To Resolution):** [X minutes]
- **MTTD (Mean Time To Detection):** [X minutes]
- **MTTI (Mean Time To Identify):** [X minutes]
- **MTTM (Mean Time To Mitigate):** [X minutes]
### Historical Comparison
- **Similar incidents in last 6 months:** [Number]
- **Trend:** [Improving/Stable/Worsening]
---
## Appendix
### Logs & Evidence
- [Links to relevant logs]
- [Screenshots of dashboards]
- [Metrics graphs]
### Related Documentation
- [Runbooks used]
- [Related post-mortems]
- [Design documents]
### Team Feedback
- [Quotes from team members]
- [Additional context]
---
**Document Version:** 1.0
**Last Updated:** [Date]
**Next Review:** [Date]
```
### 2. Post-Mortem Automation Script
```python
# postmortem/generator.py
from dataclasses import dataclass, field
from datetime import datetime
from typing import List, Optional, Dict
from enum import Enum
import json
class IncidentSeverity(Enum):
SEV1 = "critical" # Service down
SEV2 = "high" # Major degradation
SEV3 = "medium" # Minor issues
SEV4 = "low" # Informational
@dataclass
class TimelineEvent:
time: datetime
event: str
actor: str
notes: Optional[str] = None
@dataclass
class ActionItem:
id: str
description: str
owner: str
due_date: datetime
priority: str # immediate, short-term, long-term
status: str = "not-started" # not-started, in-progress, completed
completed_date: Optional[datetime] = None
@dataclass
class PostMortem:
incident_id: str
title: str
date: datetime
start_time: datetime
end_time: datetime
duration_minutes: int
severity: IncidentSeverity
affected_services: List[str]
on_call_engineer: str
post_mortem_lead: str
status: str = "draft" # draft, review, final
# Impact
users_affected: Optional[int] = None
revenue_impact: Optional[float] = None
sla_breach: bool = False
error_budget_consumption: Optional[float] = None
# Content
executive_summary: str = ""
root_cause: str = ""
contributing_factors: List[str] = field(default_factory=list)
resolution: str = ""
timeline: List[TimelineEvent] = field(default_factory=list)
action_items: List[ActionItem] = field(default_factory=list)
lessons_learned: Dict[str, List[str]] = field(default_factory=dict)
# Metrics
mttr_minutes: Optional[int] = None
mttd_minutes: Optional[int] = None
mtti_minutes: Optional[int] = None
mttm_minutes: Optional[int] = None
class PostMortemGenerator:
def __init__(self):
self.template_path = "templates/postmortem.md"
def generate(self, postmortem: PostMortem) -> str:
"""Generate post-mortem document from data structure"""
with open(self.template_path, 'r') as f:
template = f.read()
# Replace template variables
content = template.replace("{{INCIDENT_ID}}", postmortem.incident_id)
content = content.replace("{{TITLE}}", postmortem.title)
content = content.replace("{{DATE}}", postmortem.date.strftime("%Y-%m-%d"))
content = content.replace("{{DURATION}}", f"{postmortem.duration_minutes} minutes")
content = content.replace("{{SEVERITY}}", postmortem.severity.value)
content = content.replace("{{AFFECTED_SERVICES}}", ", ".join(postmortem.affected_services))
content = content.replace("{{EXECUTIVE_SUMMARY}}", postmortem.executive_summary)
content = content.replace("{{ROOT_CAUSE}}", postmortem.root_cause)
content = content.replace("{{RESOLUTION}}", postmortem.resolution)
# Generate timeline table
timeline_table = self._generate_timeline_table(postmortem.timeline)
content = content.replace("{{TIMELINE}}", timeline_table)
# Generate action items
action_items = self._generate_action_items(postmortem.action_items)
content = content.replace("{{ACTION_ITEMS}}", action_items)
return content
def _generate_timeline_table(self, events: List[TimelineEvent]) -> str:
"""Generate markdown table from timeline events"""
rows = ["| Time | Event | Actor | Notes |", "|------|-------|-------|-------|"]
for event in sorted(events, key=lambda e: e.time):
rows.append(f"| {event.time.strftime('%H:%M %p')} | {event.event} | {event.actor} | {event.notes or ''} |")
return "\n".join(rows)
def _generate_action_items(self, items: List[ActionItem]) -> str:
"""Generate action items list"""
sections = {
"immediate": [],
"short-term": [],
"long-term": []
}
for item in items:
sections[item.priority].append(item)
output = []
for priority, title in [("immediate", "Immediate (Next 24 hours)"),
("short-term", "Short-term (Next week)"),
("long-term", "Long-term (Next month)")]:
if sections[priority]:
output.append(f"### {title}")
for item in sections[priority]:
status_icon = "β
" if item.status == "completed" else "β³" if item.status == "in-progress" else "π"
output.append(f"- {status_icon} **{item.description}** - Owner: {item.owner} - Due: {item.due_date.strftime('%Y-%m-%d')}")
return "\n".join(output)
def export_json(self, postmortem: PostMortem) -> str:
"""Export post-mortem as JSON"""
data = {
"incident_id": postmortem.incident_id,
"title": postmortem.title,
"date": postmortem.date.isoformat(),
"severity": postmortem.severity.value,
"affected_services": postmortem.affected_services,
"timeline": [
{
"time": event.time.isoformat(),
"event": event.event,
"actor": event.actor,
"notes": event.notes
}
for event in postmortem.timeline
],
"action_items": [
{
"id": item.id,
"description": item.description,
"owner": item.owner,
"due_date": item.due_date.isoformat(),
"priority": item.priority,
"status": item.status
}
for item in postmortem.action_items
]
}
return json.dumps(data, indent=2)
# Example usage
if __name__ == "__main__":
generator = PostMortemGenerator()
postmortem = PostMortem(
incident_id="INC-20240115-1000",
title="Database Connection Pool Exhaustion",
date=datetime(2024, 1, 15),
start_time=datetime(2024, 1, 15, 10, 0),
end_time=datetime(2024, 1, 15, 10, 30),
duration_minutes=30,
severity=IncidentSeverity.SEV2,
affected_services=["user-service", "payment-service"],
on_call_engineer="engineer@example.com",
post_mortem_lead="lead@example.com",
executive_summary="Database connection pool was exhausted due to unclosed connections.",
root_cause="Connection leaks in payment processing code",
timeline=[
TimelineEvent(datetime(2024, 1, 15, 10, 0), "Alert fired", "Prometheus"),
TimelineEvent(datetime(2024, 1, 15, 10, 2), "Engineer acknowledged", "Engineer A"),
TimelineEvent(datetime(2024, 1, 15, 10, 30), "Incident resolved", "Engineer A"),
],
action_items=[
ActionItem("AI-001", "Fix connection leaks", "dev@example.com", datetime(2024, 1, 16), "immediate"),
ActionItem("AI-002", "Add connection pool monitoring", "sre@example.com", datetime(2024, 1, 22), "short-term"),
]
)
markdown = generator.generate(postmortem)
print(markdown)
```
### 3. Blameless Post-Mortem Guidelines
```markdown
# Blameless Post-Mortem Guidelines
## Principles
### 1. Focus on Systems, Not People
- **DO:** "The deployment process didn't catch the configuration error"
- **DON'T:** "John forgot to check the configuration"
### 2. Assume Good Intentions
- Everyone was trying to do the right thing
- Mistakes happen in complex systems
- Focus on how the system allowed the mistake
### 3. Learn, Don't Blame
- Goal is improvement, not punishment
- Understand why decisions were made
- Identify systemic issues
### 4. Be Specific and Factual
- Use data and evidence
- Avoid speculation
- Document what actually happened
## Language Guidelines
### β
Good Language
- "The system failed to..."
- "The process didn't catch..."
- "The monitoring didn't alert on..."
- "We discovered that..."
- "The design allowed..."
### β Blaming Language
- "X person made a mistake"
- "X team should have..."
- "X person forgot to..."
- "X person didn't follow procedure"
- "X person's fault"
## Meeting Structure
1. **Set Ground Rules** (5 min)
- Remind everyone: blameless culture
- Focus on learning
- No finger-pointing
2. **Timeline Construction** (20 min)
- Build timeline together
- Everyone adds their perspective
- No judgment, just facts
3. **Root Cause Discussion** (30 min)
- Use "5 Whys" technique
- Ask "why" until you reach systemic cause
- Focus on processes, not people
4. **Action Items** (15 min)
- Identify improvements
- Assign owners
- Set deadlines
5. **Wrap-up** (5 min)
- Thank everyone
- Remind about follow-up
- Schedule review meeting
```
### 4. Post-Mortem Checklist
```markdown
# Post-Mortem Checklist
## Before the Meeting
- [ ] Incident is fully resolved
- [ ] All stakeholders notified
- [ ] Meeting scheduled (within 24-48 hours)
- [ ] Data collected:
- [ ] Logs from all services
- [ ] Metrics and dashboards
- [ ] Timeline of events
- [ ] Chat logs (Slack, etc.)
- [ ] Deployment history
- [ ] Draft template prepared
- [ ] Meeting room/video link set up
## During the Meeting
- [ ] Ground rules established (blameless)
- [ ] Timeline constructed
- [ ] Root cause identified
- [ ] Contributing factors discussed
- [ ] Action items created
- [ ] Lessons learned captured
- [ ] Next steps agreed upon
## After the Meeting
- [ ] Post-mortem document finalized
- [ ] Action items assigned and tracked
- [ ] Post-mortem published (internal wiki/docs)
- [ ] Team notified of publication
- [ ] Follow-up review scheduled
- [ ] Related teams notified if applicable
```
### 5. Post-Mortem Metrics Dashboard
```yaml
# grafana/postmortem-dashboard.json
{
"dashboard": {
"title": "Post-Mortem Metrics",
"panels": [
{
"title": "MTTR by Severity",
"targets": [
{
"expr": "avg(postmortem_mttr_minutes) by (severity)",
"legendFormat": "{{severity}}"
}
],
"type": "graph"
},
{
"title": "Action Items Completion Rate",
"targets": [
{
"expr": "sum(postmortem_action_items_completed) / sum(postmortem_action_items_total) * 100",
"legendFormat": "Completion Rate"
}
],
"type": "stat"
},
{
"title": "Post-Mortems by Month",
"targets": [
{
"expr": "count(postmortem_total) by (month)",
"legendFormat": "{{month}}"
}
],
"type": "graph"
},
{
"title": "Top Contributing Factors",
"targets": [
{
"expr": "topk(10, count(postmortem_contributing_factor) by (factor))",
"legendFormat": "{{factor}}"
}
],
"type": "table"
}
]
}
}
```
## π― Mejores PrΓ‘cticas
### 1. Timing
β
**DO:**
- Schedule within 24-48 hours of incident
- While memories are fresh
- Before people move on to other work
β **DON'T:**
- Wait more than a week
- Schedule during high-stress periods
- Rush the process
### 2. Participation
β
**DO:**
- Include all stakeholders
- Include people who made decisions
- Invite people who can provide context
- Keep group size manageable (5-10 people)
β **DON'T:**
- Exclude people who were involved
- Make it a blame session
- Include people who weren't involved
### 3. Documentation
β
**DO:**
- Write clearly and concisely
- Use data and evidence
- Include timeline with timestamps
- Make action items specific and trackable
- Publish where everyone can access
β **DON'T:**
- Use vague language
- Skip important details
- Make action items vague
- Hide post-mortems
### 4. Follow-up
β
**DO:**
- Track action items to completion
- Review post-mortems periodically
- Share learnings across teams
- Update runbooks based on learnings
- Measure improvement over time
β **DON'T:**
- Create action items and forget them
- Let post-mortems sit unread
- Keep learnings siloed
- Repeat the same mistakes
## π¨ Troubleshooting
### Post-Mortem Not Happening
1. **Make it mandatory** for SEV1/SEV2 incidents
2. **Automate scheduling** after incident resolution
3. **Track compliance** as a metric
4. **Make it easy** with templates and tools
### Blame Culture
1. **Set ground rules** at start of every meeting
2. **Call out blaming language** when it happens
3. **Focus on systems** in all discussions
4. **Lead by example** from management
### Action Items Not Completed
1. **Assign clear owners** with deadlines
2. **Track in project management** tool
3. **Review in team meetings**
4. **Escalate if overdue**
### Low-Quality Post-Mortems
1. **Provide training** on post-mortem process
2. **Review and provide feedback**
3. **Share examples** of good post-mortems
4. **Make templates** more detailed
## π Recursos Adicionales
- [Google SRE - Postmortem Culture](https://sre.google/workbook/postmortem-culture/)
- [Blameless Postmortems](https://www.blameless.com/blog/blameless-postmortem)
- [Atlassian Post-Mortem Guide](https://www.atlassian.com/incident-management/handbook/postmortems)
- [Post-Mortem Templates Collection](https://github.com/dastergon/awesome-sre#post-mortem)
---
**VersiΓ³n:** 1.0.0
**Γltima actualizaciΓ³n:** Diciembre 2025
**Total lΓneas:** 800+
Attribution
Related skills
View all in business βComments
Loading commentsβ¦
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.