INCIDENTS · AI
Postmortem Drafter
The best postmortems are written while memory is fresh — which is exactly when nobody has energy to write them. This loop drafts the document within minutes of resolution, from the actual timeline, and leaves the judgment calls to the humans who were there.
TRIGGER
PagerDuty: incident → resolved
GATHER
war-room Slack thread, alert timeline, deploy log ±2h
REASON · AI
reconstruct blameless timeline, draft impact & contributing factors
FLAG
uncertain claims marked [VERIFY] — never stated as fact
ACT
draft doc in /postmortems + link to incident channel
01 — INSTALL
brew install supraj/tap/pm-drafter pm-drafter init --pagerduty $PD_TOKEN --slack $SLACK_TOKEN
02 — CONFIGURE
Map your services to their war-room channels and deploy pipelines. The template is yours to edit.
# drafter.yaml trigger: pagerduty: incident.resolved gather: slack_channel: from_incident # war-room deploys: github-actions ±2h metrics: [error_rate, p99] draft: template: blameless-v2.md unverified_marker: '[VERIFY]' act: repo: acme/postmortems notify: incident_channel
03 — HOW IT WORKS
01
Fires on PagerDuty resolution. It reads the war-room thread, the alert timeline, and every deploy in the ±2h window.
02
The draft follows your blameless template: timeline, impact, contributing factors, action items — with names replaced by roles.
03
Anything the AI can't verify from the record is tagged [VERIFY] inline. The incident commander reviews, edits, and publishes.
04 — EXAMPLE OUTPUT
$ pm-drafter last [Jul 05 23:12] INC-4471 resolved (SEV-2, 34m) gathered: 212 slack msgs · 3 deploys · 2 alerts draft: postmortems/2026-07-05-checkout-latency.md flagged: 2 × [VERIFY] → posted to #inc-4471 for review