Run a blameless postmortem for a production incident. Investigate with data, write a structured report, build verification queries, and track remediation. Use when something broke in production, money was lost, users were affected, or a security issue was exploited.
Structured incident response. Investigate first, write second, verify third.
A postmortem is a forensic document, not a blame report. It answers:
Every claim must be backed by data. "We think X" is not acceptable. "Query Y returned Z, which proves X" is acceptable.
Gather evidence before forming theories. Use every tool available.
Database queries (/db skill):
--readonly and --env prod (only when the user confirms production)Git history (git log, git blame):
git log --format="%h %ad %an %s" --date=short for clean timelinesExternal service dashboards (Stripe, Clerk, Vercel, AWS):
gh, aws, stripe) when MCP is not availableCode reading:
Documentation and Slack threads:
Use the template below. Every section is mandatory. "N/A" is not acceptable for Summary, Impact, Timeline, Root Causes, or Action Items.
Write SQL queries (or equivalent checks) that prove each fix works. These go in the Verification Plan section. Each query has explicit pass/fail criteria. Run them at T+1h, T+6h, T+24h, T+72h after the fix deploys.
Track fixes with the action items table. Each item has an owner, a status, and a priority. Close items as they ship. Update the postmortem when the verification queries confirm the fix is working.
Write the postmortem as a Markdown file in the affected app directory (e.g., apps/website/POSTMORTEM-YYYY-MM-DD-short-description.md).
# Postmortem: [Short title describing the incident]
**Date**: YYYY-MM-DD
**Severity**: P0 (outage) | P1 (financial/security) | P2 (degradation) | P3 (minor)
**Authors**: [Who wrote this postmortem]
**Status**: Active | Monitoring | Resolved
## Summary
2-3 sentences. What happened, what was the impact, what was the root cause.
A reader should understand the incident from this paragraph alone.
## Impact
| Metric | Value |
| ------ | ----- |
| [relevant metric] | [measured value] |
| [relevant metric] | [measured value] |
Quantify everything. Revenue lost, users affected, duration, error rates.
Use database queries to get exact numbers, not estimates.
## Timeline
All dates are YYYY. Times are approximate.
**[Date]** -- [What happened]. Include commit hashes, config changes,
and who did what. Be specific enough that a reader can reconstruct
the sequence of events without asking anyone.
Organize into phases if the incident had distinct stages (e.g.,
"Integration", "First wave", "Mitigation attempt", "Resolution").
## Root causes
Number each root cause. For each one:
- State the cause in one sentence
- Explain the mechanism (how the code/config/process failed)
- Cite the evidence (query results, code snippets, logs)
Root causes are structural, not human. "Kevin made a mistake" is not
a root cause. "The webhook evaluation swallowed errors silently,
producing no observable signal that it was failing" is a root cause.
## What went well
Bullet list. Acknowledge what worked. Defense layers that held,
monitoring that caught things, people who responded quickly.
## What went wrong
Bullet list. Process failures, missing tests, ignored signals,
architectural gaps. Each item should suggest a preventable failure.
## Remediation
For each fix deployed, describe:
- What layer it addresses
- What the code change does (1-2 sentences)
- Which root cause it resolves
## Verification plan
For each fix, write a concrete query or check with explicit pass/fail
criteria. Specify the cadence (T+1h, T+6h, T+24h, T+72h).
Format:
### N. [What this verifies]
SELECT ... FROM ... WHERE ...
**Pass**: [What the result should look like if the fix works]
**Fail**: [What the result looks like if the fix is broken, and what to do]
## Remaining action items
| # | Action | Owner | Priority | Status |
|---|--------|-------|----------|--------|
| 1 | [specific action] | @handle | P0/P1/P2 | Done/Pending |
## Appendix: Commit timeline
| Date | Hash | Author | Description |
| ---- | ---- | ------ | ----------- |
| [date] | `[hash]` | [author] | [commit message] |
## Appendix: [Additional context]
Bot fingerprints, error samples, reproduction steps, architecture
diagrams, or any other evidence that supports the analysis.These are reusable debugging patterns. Pick the ones that apply.
radar_evaluations (or equivalent scoring table) for coverage gapsradar_evaluations)source to see which code paths are producing records--env local unless the user explicitly says "prod."The user has reported an incident or wants to investigate a production issue.
$ARGUMENTS
These former standalone skills are bundled here as references to keep the runtime list compact. Load only the reference that matches the user's exact product, framework, or failure mode.
| Former skill | Reference | Description |
|---|---|---|
dedalus-postmortem | references/skills/dedalus-postmortem/SKILL.md | Run a blameless postmortem for a production incident. Investigate with data, write a structured report, build verification queries, and track remediation. Use when something broke in production, money was lost, users were affected, or a security issue was exploited. |