Incident Postmortem Skill
Write a structured incident postmortem or post-incident review.
How to use it
Claude Code
- Run the line below. It pulls the whole folder into
~/.claude/skills/incident-postmortem. - Describe your job in plain words. Claude Code follows the skill from there.
npx degit mohitagw15856/pm-claude-skills/skills/incident-postmortem#main ~/.claude/skills/incident-postmortemFor one project only, change the path to .claude/skills/incident-postmortem.
Claude (web or desktop app)
- On this page open ⋯ → Download .md.
- Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
- Pick the file and Save. Claude shows the name and description and runs a security scan.
- Check the skill is switched on.
- Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
- ChatGPT: make a Project and paste it into Instructions.
- Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Source of Incident Postmortem Skill
Show the full text236 lines
| name | description |
|---|---|
| incident-postmortem | Write a structured incident postmortem or post-incident review. Use when asked to write a postmortem, incident report, P1/P2 review, outage report, or RCA (root cause analysis). Produces a blameless postmortem with timeline, root cause, contributing factors, impact summary, and action items. |
Incident Postmortem Skill
This skill produces a complete, blameless incident postmortem document following industry-standard format. Output enforces blameless framing throughout — system gaps over individual failures — and drives toward specific, closeable action items rather than vague process commitments.
Proposes Actions
The action items don't have to stay on the page: hand them to action-runner, which previews them (dry-run, risk-rated), runs only what you approve via the connected action MCP, and records what was done back to the brain. Typical: file a follow-up issue per action item (🟡), assigned to its owner with a due date. This skill proposes; action-runner gates and runs — never silently.
Where this sits — turning an incident into fixes
Third in the incident-response spine: /slo-error-budget (frame) →
/debugging-log-analyser → incident-postmortem → /oncall-runbook. It receives the
root-cause diagnosis from /debugging-log-analyser (read it rather than
re-diagnosing) and hands /oncall-runbook the contributing factors and prioritised
action items — and the error budget from /slo-error-budget decides how urgent those
actions are. Blameless, root cause vs contributing factors, and action item are
defined once in docs/craft/incident-response.md;
blameless is the load-bearing rule.
The loop
A postmortem fails the moment it assigns blame — the honest data dries up and every future incident is under-reported. Phase 1 sets that frame; everything depends on it.
- Establish blameless framing first. State up front that this examines the system that let a competent person make the move, never the person. This isn't politeness — it's the precondition for the truthful timeline the rest of the skill needs. Done when: the framing is explicit and no sentence in the document blames an individual; failures are attributed to system gaps.
- Build the timeline from evidence. Reconstruct start → detection → mitigation → resolution with real timestamps (from the diagnosis and logs, not memory). Detection, mitigation, and resolution are distinct events — track each. Done when: the timeline has real timestamps and separates detection/mitigation/ resolution, and the impact is quantified (users, duration, scope).
- Find the root cause AND the contributing factors. The root cause is one thing; the contributing factors are what let it reach users and persist (the missing alert, the skipped canary, the unclear runbook). A postmortem with a root cause and no contributing factors hasn't looked hard enough. Done when: at least the load-bearing contributing factors are named, each pointing at a system gap that's fixable.
- Drive to owned, dated action items — governed by the budget. Convert factors into
specific action items, each with an owner and a date; vague "improve monitoring"
items decay. Prioritise them against the error budget (spent → now; healthy → soon).
Done when: every action item has an owner and a date, and
/oncall-runbookcould turn the detection/mitigation learnings into an entry without re-analysing the incident.
Required Inputs
Ask the user for these if not provided:
- Incident title / ID
- Severity (P1 / P2 / P3 or SEV1 / SEV2 / SEV3)
- Date and duration of the incident
- What happened (rough notes are fine — the skill will structure them)
- Services or systems affected
- Customer impact (how many users, what was degraded)
- How it was detected
- How it was resolved
- Initial thoughts on root cause
- Action items already identified (optional)
- Responders (who was on-call or responded — names or roles; used for the timeline, not for blame)
- Customer or external communications sent (optional — any status page updates, emails, or support messages with timestamps)
Reads from / Writes to the Brain
If a professional-brain (brain/) exists, use it before asking:
- Read first: the affected system's
entities/file and any related priordecisions/or past incidents (recurring root causes are the most important thing to surface). - Write after: log the action items and decisions to
decisions/, and the root-cause learning toknowledge/— tag a measured cause[data]and a suspected one[hunch], never the reverse.
Deeper Materials
references/root-cause-digging.md— five-whys done properly (stop at a changeable system property, branch into cause/detection/response chains), a contributing-factor taxonomy to sweep, and blame-shaped → systemic language rewrites. Use it while writing the Root Cause section and to reframe any blameful input notes.templates/review-meeting-agenda.md— a 45-minute, document-first agenda for the postmortem review meeting, with ground rules and an action-item quality gate. Offer it alongside the finished postmortem.
Output Format
Incident Postmortem: [Incident Title]
Incident ID: [ID] Severity: [P1/P2/P3] Date: [Date] Duration: [Start time → Resolution time — total duration] Status: [Resolved / Monitoring / Ongoing] Author: [Leave blank for user to fill] Last updated: [Date]
Executive Summary
[3–5 sentences. Describe what happened, who was affected, and what was done to resolve it. Written for a non-technical stakeholder. No jargon. No blame.]
Impact
| Dimension | Details |
|---|---|
| Users affected | [Number or percentage] |
| Services degraded | [List affected services] |
| Business impact | [Revenue, SLA breach, support tickets, etc. if known] |
| Duration | [Total time from first detection to full resolution] |
Timeline
List events in chronological order. Each entry: [HH:MM UTC] — [What happened. Who did what. What changed.]
Rules for timeline entries:
- Use passive or system-focused language — avoid "X made a mistake"
- Include: first symptom, detection, escalation, hypothesis tested, fix applied, confirmation of resolution
- Note time between key events (e.g. "22 minutes between detection and escalation")
Timeline, drawn — also render the incident timeline as a Mermaid Gantt so the gaps (e.g. detection → escalation) are visible at a glance (it renders live in the playground and exports as PNG). Use the incident phases as bars; keep it blameless and system-focused:
gantt
title Incident timeline (UTC)
dateFormat HH:mm
axisFormat %H:%M
section Phases
Undetected impact :22:00, 18m
Detection :milestone, 22:18, 0m
Investigation :22:18, 22m
Mitigation :22:40, 15m
Resolved :milestone, 22:55, 0m
Root Cause
Primary root cause: [One clear sentence. Technical but plain. "A misconfigured deployment config caused..."]
Contributing factors:
- [Factor 1 — e.g. lack of canary deployment meant change hit 100% of traffic immediately]
- [Factor 2 — e.g. alert threshold was set too high to catch the initial degradation]
- [Factor 3 — add as many as are relevant]
Why did our existing safeguards not prevent this? [Honest paragraph explaining why monitoring, tests, or processes didn't catch this earlier. This is where blameless analysis matters most — focus on system gaps, not individual failures.]
Detection
- How was it first detected? [Customer report / automated alert / internal monitoring / manual observation]
- Time from incident start to detection: [X minutes]
- Should we have detected this faster? [Yes / No — and why]
Resolution
What fixed it? [Clear description of the actual fix — one paragraph] Why did this work? [Brief technical explanation] Was there a temporary mitigation before full resolution? [Yes/No — describe if yes]
Action Items
| # | Action | Owner | Due Date | Priority |
|---|---|---|---|---|
| 1 | [Specific, testable action] | [Team or person] | [Date] | P1/P2/P3 |
Rules for action items:
- Each action must be specific enough to close as "done" or "not done" — no vague items like "improve monitoring"
- Distinguish between: Prevent recurrence (fix the root cause), Improve detection (catch it faster next time), Improve response (resolve it faster next time)
- Assign a real owner — not "team" or "TBD" if avoidable
- Flag P1 actions as items that block the incident from being marked fully closed
What Went Well
[3–5 honest observations about the response. Include: fast collaboration, good runbooks used, effective escalation, clear communication. This section builds team confidence and reinforces good habits.]
Lessons Learned
[3–5 key insights from this incident that are worth sharing beyond this team. Write these as transferable lessons — e.g. "Our runbook for database failover didn't account for read-replica lag. All runbooks involving database failover should be reviewed."]
Communication Log
[Optional — list external communications sent: status page updates, customer emails, support responses. Include timestamps.]
Scoring Rubric (0–40)
Score any output of this skill before handing it over; 32+ is ship-quality.
| Dimension | 0 | 5 | 10 |
|---|---|---|---|
| Blamelessness with truth | Names-and-shames, or sanitizes so much the story vanishes | Blameless wording but individual actions blurred | Individuals' actions stated factually inside a systems framing — honest and safe at once |
| Root-cause depth | Stops at the symptom or "human error" | Names a system gap but only one "why" deep | Root cause plus contributing factors explain why the system allowed it, not just what broke |
| Timeline forensic quality | Sparse, unordered, or missing detection-to-resolution beats | Complete but without timestamps or decision points | Timestamped, includes detection lag, decision points, and dead ends actually explored |
| Action-item accountability | Vague improvements, no owners | Owners assigned but items unticketable or dateless | Every item ticketable with owner and due date, mapped to a root cause or contributing factor |
Quality Checks
- Timeline has no blame-focused language
- Root cause is specific (not "human error")
- Root cause answers "why did this happen?" not just "what happened?" — it names a system or process gap, not a symptom
- Contributing factors explain the systemic gaps
- Every action item has an owner and due date
- "What went well" section is genuine, not token
- No action item contains vague language like "improve monitoring", "increase resilience", or "better testing" — each must name a specific change
- Executive summary is readable by non-technical leadership
Anti-Patterns
- Do not assign blame to individuals — postmortems must focus on system and process failures
- Do not write action items with vague language like "improve monitoring" — each must name a specific, ownable change
- Do not skip the contributing factors — root cause alone misses the systemic issues that enable incidents
- Do not omit the detection timeline — how long it took to detect matters as much as how long it took to resolve
- Do not treat the postmortem as closed until all action items have named owners and due dates
Usage Examples
- "Write a postmortem for the [incident name] outage"
- "Help me write a P1 incident report"
- "Generate an RCA document for [service] going down on [date]"
- "Draft a blameless postmortem from these notes: [paste notes]"
| 1 | |
| 2 | name incident-postmortem |
| 3 | description "Write a structured incident postmortem or post-incident review. Use when asked to write a postmortem, incident report, P1/P2 review, outage report, or RCA (root cause analysis). Produces a blameless postmortem with timeline, root cause, contributing factors, impact summary, and action items." |
| 4 | |
| 5 | |
| 6 | # Incident Postmortem Skill |
| 7 | |
| 8 | This skill produces a complete, blameless incident postmortem document following industry-standard format. Output enforces blameless framing throughout — system gaps over individual failures — and drives toward specific, closeable action items rather than vague process commitments. |
| 9 | |
| 10 | ## Proposes Actions |
| 11 | |
| 12 | The action items don't have to stay on the page: hand them to [`action-runner`], which previews them (dry-run, risk-rated), runs only what you approve via the connected action MCP, and records what was done back to the brain. Typical: **file a follow-up issue per action item** (🟡), assigned to its owner with a due date. This skill proposes; action-runner gates and runs — never silently. |
| 13 | |
| 14 | ## Where this sits — turning an incident into fixes |
| 15 | |
| 16 | Third in the incident-response spine: **`/slo-error-budget` (frame) → |
| 17 | `/debugging-log-analyser` → `incident-postmortem` → `/oncall-runbook`**. It receives the |
| 18 | **root-cause diagnosis** from `/debugging-log-analyser` (read it rather than |
| 19 | re-diagnosing) and hands `/oncall-runbook` **the contributing factors and prioritised |
| 20 | action items** — and the error budget from `/slo-error-budget` decides how urgent those |
| 21 | actions are. *Blameless*, *root cause vs contributing factors*, and *action item* are |
| 22 | defined once in [`docs/craft/incident-response.md`]; |
| 23 | blameless is the load-bearing rule. |
| 24 | |
| 25 | ## The loop |
| 26 | |
| 27 | A postmortem fails the moment it assigns blame — the honest data dries up and every |
| 28 | future incident is under-reported. Phase 1 sets that frame; everything depends on it. |
| 29 | |
| 30 | **Establish blameless framing first.** State up front that this examines the *system* |
| 31 | that let a competent person make the move, never the person. This isn't politeness — |
| 32 | it's the precondition for the truthful timeline the rest of the skill needs. |
| 33 | **Done when:** the framing is explicit and no sentence in the document blames an |
| 34 | individual; failures are attributed to system gaps. |
| 35 | **Build the timeline from evidence.** Reconstruct start → detection → mitigation → |
| 36 | resolution with real timestamps (from the diagnosis and logs, not memory). Detection, |
| 37 | mitigation, and resolution are distinct events — track each. |
| 38 | **Done when:** the timeline has real timestamps and separates detection/mitigation/ |
| 39 | resolution, and the impact is quantified (users, duration, scope). |
| 40 | **Find the root cause AND the contributing factors.** The root cause is one thing; |
| 41 | the contributing factors are what let it reach users and persist (the missing alert, |
| 42 | the skipped canary, the unclear runbook). A postmortem with a root cause and no |
| 43 | contributing factors hasn't looked hard enough. |
| 44 | **Done when:** at least the load-bearing contributing factors are named, each pointing |
| 45 | at a system gap that's fixable. |
| 46 | **Drive to owned, dated action items — governed by the budget.** Convert factors into |
| 47 | specific action items, each with an owner and a date; vague "improve monitoring" |
| 48 | items decay. Prioritise them against the error budget (spent → now; healthy → soon). |
| 49 | **Done when:** every action item has an owner and a date, and `/oncall-runbook` could |
| 50 | turn the detection/mitigation learnings into an entry without re-analysing the incident. |
| 51 | |
| 52 | ## Required Inputs |
| 53 | |
| 54 | Ask the user for these if not provided: |
| 55 | **Incident title / ID** |
| 56 | **Severity** (P1 / P2 / P3 or SEV1 / SEV2 / SEV3) |
| 57 | **Date and duration** of the incident |
| 58 | **What happened** (rough notes are fine — the skill will structure them) |
| 59 | **Services or systems affected** |
| 60 | **Customer impact** (how many users, what was degraded) |
| 61 | **How it was detected** |
| 62 | **How it was resolved** |
| 63 | **Initial thoughts on root cause** |
| 64 | **Action items already identified** (optional) |
| 65 | **Responders** (who was on-call or responded — names or roles; used for the timeline, not for blame) |
| 66 | **Customer or external communications sent** (optional — any status page updates, emails, or support messages with timestamps) |
| 67 | |
| 68 | ## Reads from / Writes to the Brain |
| 69 | |
| 70 | If a [`professional-brain`] (`brain/`) exists, use it before asking: |
| 71 | |
| 72 | **Read first:** the affected system's `entities/` file and any related prior `decisions/` or past incidents (recurring root causes are the most important thing to surface). |
| 73 | **Write after:** log the action items and decisions to `decisions/`, and the root-cause learning to `knowledge/` — tag a measured cause `[data]` and a suspected one `[hunch]`, never the reverse. |
| 74 | |
| 75 | ## Deeper Materials |
| 76 | |
| 77 | **`references/root-cause-digging.md`** — five-whys done properly (stop at a changeable system property, branch into cause/detection/response chains), a contributing-factor taxonomy to sweep, and blame-shaped → systemic language rewrites. Use it while writing the Root Cause section and to reframe any blameful input notes. |
| 78 | **`templates/review-meeting-agenda.md`** — a 45-minute, document-first agenda for the postmortem review meeting, with ground rules and an action-item quality gate. Offer it alongside the finished postmortem. |
| 79 | |
| 80 | ## Output Format |
| 81 | |
| 82 | |
| 83 | |
| 84 | # Incident Postmortem: [Incident Title] |
| 85 | |
| 86 | **Incident ID:** [ID] |
| 87 | **Severity:** [P1/P2/P3] |
| 88 | **Date:** [Date] |
| 89 | **Duration:** [Start time → Resolution time — total duration] |
| 90 | **Status:** [Resolved / Monitoring / Ongoing] |
| 91 | **Author:** [Leave blank for user to fill] |
| 92 | **Last updated:** [Date] |
| 93 | |
| 94 | |
| 95 | |
| 96 | ## Executive Summary |
| 97 | |
| 98 | [3–5 sentences. Describe what happened, who was affected, and what was done to resolve it. Written for a non-technical stakeholder. No jargon. No blame.] |
| 99 | |
| 100 | |
| 101 | |
| 102 | ## Impact |
| 103 | |
| 104 | | Dimension | Details | |
| 105 | |---|---| |
| 106 | | **Users affected** | [Number or percentage] | |
| 107 | | **Services degraded** | [List affected services] | |
| 108 | | **Business impact** | [Revenue, SLA breach, support tickets, etc. if known] | |
| 109 | | **Duration** | [Total time from first detection to full resolution] | |
| 110 | |
| 111 | |
| 112 | |
| 113 | ## Timeline |
| 114 | |
| 115 | List events in chronological order. Each entry: `[HH:MM UTC] — [What happened. Who did what. What changed.]` |
| 116 | |
| 117 | Rules for timeline entries: |
| 118 | Use passive or system-focused language — avoid "X made a mistake" |
| 119 | Include: first symptom, detection, escalation, hypothesis tested, fix applied, confirmation of resolution |
| 120 | Note time between key events (e.g. "22 minutes between detection and escalation") |
| 121 | |
| 122 | **Timeline, drawn** — also render the incident timeline as a Mermaid Gantt so the gaps (e.g. detection → escalation) are visible at a glance (it renders live in the playground and exports as PNG). Use the incident phases as bars; keep it blameless and system-focused: |
| 123 | |
| 124 | |
| 125 | gantt |
| 126 | title Incident timeline (UTC) |
| 127 | dateFormat HH:mm |
| 128 | axisFormat %H:%M |
| 129 | section Phases |
| 130 | Undetected impact :22:00, 18m |
| 131 | Detection :milestone, 22:18, 0m |
| 132 | Investigation :22:18, 22m |
| 133 | Mitigation :22:40, 15m |
| 134 | Resolved :milestone, 22:55, 0m |
| 135 | |
| 136 | |
| 137 | |
| 138 | |
| 139 | ## Root Cause |
| 140 | |
| 141 | **Primary root cause:** [One clear sentence. Technical but plain. "A misconfigured deployment config caused..."] |
| 142 | |
| 143 | **Contributing factors:** |
| 144 | [Factor 1 — e.g. lack of canary deployment meant change hit 100% of traffic immediately] |
| 145 | [Factor 2 — e.g. alert threshold was set too high to catch the initial degradation] |
| 146 | [Factor 3 — add as many as are relevant] |
| 147 | |
| 148 | **Why did our existing safeguards not prevent this?** |
| 149 | [Honest paragraph explaining why monitoring, tests, or processes didn't catch this earlier. This is where blameless analysis matters most — focus on system gaps, not individual failures.] |
| 150 | |
| 151 | |
| 152 | |
| 153 | ## Detection |
| 154 | |
| 155 | **How was it first detected?** [Customer report / automated alert / internal monitoring / manual observation] |
| 156 | **Time from incident start to detection:** [X minutes] |
| 157 | **Should we have detected this faster?** [Yes / No — and why] |
| 158 | |
| 159 | |
| 160 | |
| 161 | ## Resolution |
| 162 | |
| 163 | **What fixed it?** [Clear description of the actual fix — one paragraph] |
| 164 | **Why did this work?** [Brief technical explanation] |
| 165 | **Was there a temporary mitigation before full resolution?** [Yes/No — describe if yes] |
| 166 | |
| 167 | |
| 168 | |
| 169 | ## Action Items |
| 170 | |
| 171 | | # | Action | Owner | Due Date | Priority | |
| 172 | |---|---|---|---|---| |
| 173 | | 1 | [Specific, testable action] | [Team or person] | [Date] | P1/P2/P3 | |
| 174 | |
| 175 | Rules for action items: |
| 176 | Each action must be specific enough to close as "done" or "not done" — no vague items like "improve monitoring" |
| 177 | Distinguish between: **Prevent recurrence** (fix the root cause), **Improve detection** (catch it faster next time), **Improve response** (resolve it faster next time) |
| 178 | Assign a real owner — not "team" or "TBD" if avoidable |
| 179 | Flag P1 actions as items that block the incident from being marked fully closed |
| 180 | |
| 181 | |
| 182 | |
| 183 | ## What Went Well |
| 184 | |
| 185 | [3–5 honest observations about the response. Include: fast collaboration, good runbooks used, effective escalation, clear communication. This section builds team confidence and reinforces good habits.] |
| 186 | |
| 187 | |
| 188 | |
| 189 | ## Lessons Learned |
| 190 | |
| 191 | [3–5 key insights from this incident that are worth sharing beyond this team. Write these as transferable lessons — e.g. "Our runbook for database failover didn't account for read-replica lag. All runbooks involving database failover should be reviewed."] |
| 192 | |
| 193 | |
| 194 | |
| 195 | ## Communication Log |
| 196 | |
| 197 | [Optional — list external communications sent: status page updates, customer emails, support responses. Include timestamps.] |
| 198 | |
| 199 | |
| 200 | |
| 201 | ## Scoring Rubric (0–40) |
| 202 | |
| 203 | Score any output of this skill before handing it over; 32+ is ship-quality. |
| 204 | |
| 205 | | Dimension | 0 | 5 | 10 | |
| 206 | |---|---|---|---| |
| 207 | | Blamelessness with truth | Names-and-shames, or sanitizes so much the story vanishes | Blameless wording but individual actions blurred | Individuals' actions stated factually inside a systems framing — honest and safe at once | |
| 208 | | Root-cause depth | Stops at the symptom or "human error" | Names a system gap but only one "why" deep | Root cause plus contributing factors explain why the system allowed it, not just what broke | |
| 209 | | Timeline forensic quality | Sparse, unordered, or missing detection-to-resolution beats | Complete but without timestamps or decision points | Timestamped, includes detection lag, decision points, and dead ends actually explored | |
| 210 | | Action-item accountability | Vague improvements, no owners | Owners assigned but items unticketable or dateless | Every item ticketable with owner and due date, mapped to a root cause or contributing factor | |
| 211 | |
| 212 | ## Quality Checks |
| 213 | |
| 214 | [ ] Timeline has no blame-focused language |
| 215 | [ ] Root cause is specific (not "human error") |
| 216 | [ ] Root cause answers "why did this happen?" not just "what happened?" — it names a system or process gap, not a symptom |
| 217 | [ ] Contributing factors explain the systemic gaps |
| 218 | [ ] Every action item has an owner and due date |
| 219 | [ ] "What went well" section is genuine, not token |
| 220 | [ ] No action item contains vague language like "improve monitoring", "increase resilience", or "better testing" — each must name a specific change |
| 221 | [ ] Executive summary is readable by non-technical leadership |
| 222 | |
| 223 | ## Anti-Patterns |
| 224 | |
| 225 | [ ] Do not assign blame to individuals — postmortems must focus on system and process failures |
| 226 | [ ] Do not write action items with vague language like "improve monitoring" — each must name a specific, ownable change |
| 227 | [ ] Do not skip the contributing factors — root cause alone misses the systemic issues that enable incidents |
| 228 | [ ] Do not omit the detection timeline — how long it took to detect matters as much as how long it took to resolve |
| 229 | [ ] Do not treat the postmortem as closed until all action items have named owners and due dates |
| 230 | |
| 231 | ## Usage Examples |
| 232 | "Write a postmortem for the [incident name] outage" |
| 233 | "Help me write a P1 incident report" |
| 234 | "Generate an RCA document for [service] going down on [date]" |
| 235 | "Draft a blameless postmortem from these notes: [paste notes]" |
| 236 |
Discussion
Browse more free Claude skills or everything in Development.


