mcpField
W
writing-postmortems

writing-postmortems

github.com/riekeltDocuments3318.9k installsUpdated 6w ago
Repository

About writing-postmortems

A skill for documenting resolved incidents and stable milestones in long-running incidents. It guides engineers toward evidence-based, blameless postmortems that preserve causes, lessons, and follow-up actions.

Key features

  1. 01Evidence-linked incident timelines
  2. 02Structural, blameless analysis
  3. 03Documenting fixes that did not work
  4. 04Severity based on organizational taxonomy
  5. 05Tracked action items with acceptance checks
  6. 06Immutable reviewed reports with dated addenda

Use cases

  1. 01Writing a postmortem after incident resolution
  2. 02Recording a near miss caught by a safeguard
  3. 03Capturing follow-up actions and incident-related runbook updates

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/riekelt/technical-writer --skill writing-postmortems

After installing, type/writing-postmortemsin Claude Code to confirm it loaded.

Details

From the project README

Writing postmortems

REQUIRED BACKGROUND: the technical-writing skill (hard rules, truth rules, style).

Overview

Audience: the engineer who hits something similar in a year, not the people in the room. Core principle: facts from evidence, causes from mechanisms, lessons from both, and no names. Classification: historical; 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 (a guard caught what review missed) earn the same write-up. Do NOT invoke during the live incident: the runbook governs that. Not for assigning accountability: a postmortem that needs a person's name to make sense is describing a process hole. Not for a status update to stakeholders, which is a report.

Skeleton

# [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;
"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.]

## 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. Blaming a person stops at "be more careful"; blaming a structure produces an action item. This 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, 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 the incident exposed go through writing-runbooks in the same change as the fix; documentation is part of done, not a follow-up ticket.

Comments

Markdown supported