writing-postmortems
Use when writing a postmortem, incident report, or root-cause analysis after an outage, a defect that reached users, a data issue, or a near miss - or when turning an incident channel, alert log, or war-room thread into a durable document. Encodes the blameless framing, the evidence-only timeline, contributing factors, and owned action items. Use whenever something broke and the write-up must outlive the incident.
Works with
--- name: writing-postmortems description: Use when writing a postmortem, incident report, or root-cause analysis after an outage, a defect that reached users, a data issue, or a near miss - or when turning an incident channel, alert log, or war-room thread into a durable document. Encodes the blameless framing, the evidence-only timeline, contributing factors, and owned action items. Use whenever something broke and the write-up must outlive the incident. license: MIT --- # Writing postmortems **REQUIRED BACKGROUND:** the `technical-writing` skill (hard rules, truth rules, style). ## Overview A postmortem is written for the engineer who hits something similar in a year, not for the people in the room. Core principle: **facts from evidence, causes from mechanisms, lessons from both, and no names.** The document is historical by classification: once reviewed, it is immutable, and corrections are dated addenda. ## When to invoke, and not Invoke after an incident is resolved, or at a stable milestone of a long one. A defect that reached users and a near miss, where a guard caught what review missed, earn the same write-up. Do NOT invoke during the live incident: the runbook governs that. Do not invoke for assigning accountability, since a postmortem that needs a person's name to make sense is describing a process hole. And not for a status update to stakeholders, which is a report. ## Skeleton ```markdown # [System]: [the failure, as its symptom, one line] | | | |---|---| | **Incident date** | YYYY-MM-DD | | **Duration** | detection to resolution | | **Severity** | [per the org taxonomy, defined where used] | | **Status** | Draft / Reviewed | ## Summary [User-visible impact with numbers, the root cause in one sentence, current state. The reader who stops here still knows what happened.] ## Impact [Who and what, quantified: requests failed, records affected, money or time lost. Estimates labeled as estimates; "no evidence of data loss" only if actually checked, and say what was checked.] ## Timeline [Timestamped entries, facts only, each traceable to evidence: an alert, a log line, a commit, a message. Interpretation lives in the sections below, never here.] ## Root cause and contributing factors [The mechanism, grounded in code and commits. Contributing factors as a list: real incidents rarely have one cause, and "every component was correct and the defect lived between them" is a valid root cause. Name which layer of checking missed it and which caught it.] ## Wrong turns during the response [The wrong first fix, the misleading signal followed, the theory that cost an hour. Recording the plausible-but-wrong path is what saves the next responder from it.] ## Action items [Each with an owner and an acceptance check, filed as tracker issues and linked. "Investigate X" without an owner is banned here as everywhere.] ## Sign-off [- YYYY-MM-DD <reviewer>: approved <scope>, one line per review event.] ``` ## Rules - **Blameless means structural.** Name the role, the gate, the dependency, the missing guard; never the person. A postmortem blaming a person stops at "be more careful", and one blaming a structure produces an action item. The rule governs the narrative (timeline, causes, response); action-item ownership is assignment, not blame: a role in this document, an individual in the linked tracker issue. - **The timeline is evidence, not narrative.** Every entry traces to something checkable, timestamps from the systems rather than memory. Where memory is the only source, say so. - **Wrong fixes are content.** The fix that made sense and did not work belongs in the document with the reasoning that made it plausible; embarrassment is not a retention policy. - **Severity comes from the org taxonomy** and is defined where used, not assumed. When no taxonomy exists, leave the field explicitly unassigned rather than inventing one. - **Action items follow `writing-issues`**: outcome, owner, acceptance check, filed and linked, never left as prose intentions in the postmortem. When filing is not possible from where you sit, mark each item `[to file: <who files it>]`; the postmortem stays Draft until the links exist. - **Immutable once reviewed.** New findings are dated addenda; a rewritten postmortem is a falsified record. The review itself goes in a sign-off line (see `references/truth.md` in the core skill). - **Near misses use the same skeleton** with Impact describing what would have happened, labeled as the counterfactual it is. The decision that often follows a postmortem (a new invariant, a policy change) is recorded via `recording-decisions` and linked, not embedded. Runbook updates that the incident exposed go through `writing-runbooks` in the same change as the fix, because documentation is part of done rather than a follow-up ticket.
More General & Other skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
grill-with-docs
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

