← All skills

Writing Postmortems

Turns an incident into a blameless postmortem with a timeline, contributing factors and owned action items, using language that describes systems rather than assigning fault. Use after an outage, a data loss event, a failed deploy, or when the user asks for an incident report or RCA.

Skill name
writing-postmortems
Category
devops
Price
Free
Install
~/.claude/skills/writing-postmortems/SKILL.md
Tags
incident, postmortem, rca, reliability, sre

Writing Postmortems

A postmortem is read by people who were not there, months later, deciding whether a change is safe. Write for them.

Structure

# <Service>: <what users experienced> — <date>

**Impact.** Who was affected, how many, for how long, and what they could not do.
**Detection.** How it was noticed, and how long that took.
**Resolution.** What ended the impact.

## Timeline
All times UTC.
| Time | Event |
| --- | --- |
| 09:14 | Deploy of build 4821 begins |
| 09:22 | Error rate on /checkout passes 5%, no alert fires |
| 09:41 | Customer support reports failed payments |
| 09:44 | Incident declared |
| 10:02 | Build 4820 rolled back; error rate returns to baseline |

## What happened
Two or three paragraphs of mechanism. What broke, why that broke it, and why
the safeguards did not stop it.

## Contributing factors
1. …
2. …

## What went well
…

## Action items
| Action | Owner | Due | Ticket |
| --- | --- | --- | --- |

Impact is measured, not adjectival

"Significant impact" tells a reader nothing. "Checkout failed for 4% of sessions for 48 minutes; 1,180 orders affected; all recovered on retry" tells them the size, the shape and the cost. If the number is unknown, say it is unknown and say who is finding it.

Blameless means describing the system

Blameless does not mean vague. It means the failure is described in terms of conditions rather than character, because the same conditions will produce the same outcome with a different person in the chair.

Instead ofWrite
The engineer forgot to run the migrationThe deploy pipeline had no step that verified pending migrations, so a build could reach production ahead of its schema
Human errorThe console offered no confirmation before dropping an index on a production database
Bad judgement under pressureThe runbook offered two remedies with no criterion for choosing, during an active outage

Keep names out of the narrative. Use roles.

Contributing factors, not one root cause

Systems that fail from a single cause are rare; the safeguards each failed for their own reason. List each factor, and mark which of them was necessary:

Action items that survive the week

Each one needs a named owner, a date, and a ticket. Prefer changes that remove the possibility over changes that ask people to be more careful:

Cap the list. Five actions that ship beat fifteen that are still open at the next incident.

Timing

Draft within two days, while the detail is recoverable from memory and from logs that have not rotated. Circulate before the review meeting so the meeting is spent on the factors rather than on reconstructing the timeline.