Best for
- ALWAYS use when writing a post-mortem, reviewing an incident, extracting a timeline, performing root cause analysis, or converting incident data into organizational knowledge.
johnqtcg/awesome-skills/skills/incident-postmortem/SKILL.md
Incident post-mortem specialist for writing blameless post-mortems, extracting timelines from logs/events, conducting root cause analysis (5-Why, fishbone), classifying severity, and generating tracked action items. ALWAYS use when writing a post-mortem, reviewing an incident, extracting a timeline, performing root cause analysis, or converting incident data into organizational knowledge. Complements systematic-debugging (finds the cause) with structured documentation that prevents recurrence.
Decision brief
Incident post-mortem specialist for writing blameless post-mortems, extracting timelines from logs/events, conducting root cause analysis (5-Why, fishbone), classifying severity, and generating tracked action items. Complements systematic-debugging (finds the cause) with structured documentation that prevents recurrence.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/johnqtcg/awesome-skills --skill "skills/incident-postmortem"Inspect the Agent Skill "incident-postmortem" from https://github.com/johnqtcg/awesome-skills/blob/d933bc88237f7a18a7ecf01e5d97a745b083df0f/skills/incident-postmortem/SKILL.md at commit d933bc88237f7a18a7ecf01e5d97a745b083df0f. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
9. Quantify impact with metrics — "47 minutes of degraded service" not "a while". Include: duration, affected users/requests, error rate, revenue impact if measurable, SLO budget consumed. 10. Classify customer impact explicitly — total outage vs degraded vs internal-only. Diffe…
What Went Well: - Detection: Alert fired within 3 minutes of first error (SLO: < 5 min) - Communication: Incident channel created immediately, stakeholders updated every 15 min - Escalation: Correctly escalated to database team within 10 minutes What Needs Improvement: - Runbook…
Review the “Quick Reference” section in the pinned source before continuing.
In scope: blameless post-mortem writing, timeline extraction from logs/alerts/chat/ monitoring, root cause analysis (5-Why, fishbone, fault tree), severity classification, action items with ownership and deadlines, contributing-factor identification, detection/response gap analy…
Gates are serial hard blockers. Failure at any gate stops all subsequent work.
Permission review
The documentation asks the agent to run terminal commands or scripts.
python3 scripts/lint_postmortem.py postmortem.md --mode draft --depth standardEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 94/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 30 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
| When you need... | Jump to |
|---|---|
| Write a post-mortem from scratch | §2 Gates -> §5 Checklist -> §9 Output |
| Extract timeline from logs/events | §5.1 Timeline Construction |
| Perform root cause analysis | §5.2 Root Cause Analysis |
| Classify incident severity | §6 Severity Classification |
| Generate action items | §5.4 Action Items |
| Review an existing post-mortem | §2 Gates -> §5 Checklist -> §8 Scorecard |
| Know which sections your output needs | §9.0 Required Sections by Mode |
| Redact before sharing / set distribution | §2 Gate 5 Sensitive Data & Distribution |
| Choose an RCA technique other than 5-Why | §5.2 item 5 -> rca-techniques.md §0 |
In scope: blameless post-mortem writing, timeline extraction from logs/alerts/chat/ monitoring, root cause analysis (5-Why, fishbone, fault tree), severity classification, action items with ownership and deadlines, contributing-factor identification, detection/response gap analysis, post-mortem review and quality scoring.
Out of scope: live incident response / on-call procedures (use runbooks), debugging
code to find the root cause (use systematic-debugging), monitoring setup (use
monitoring-alerting), infrastructure provisioning, customer communication drafting
(PR/comms team scope).
Language: write the post-mortem in the language the user is using. The linter's
section, source, owner/deadline, category and N/A patterns are bilingual (English and
Chinese, including full-width () and :), so a Chinese post-mortem passes the same
gates. Other languages are not yet aliased — a German or Japanese document will be
mis-reported as missing sections; lint it in English or add the aliases first.
Gates are serial hard blockers. Failure at any gate stops all subsequent work.
Gather before proceeding. STOP if no incident is identified — the only permitted continuation is Planning mode (§4), which delivers process guidance and a blank template. Never synthesize a Draft from an unidentified incident.
| Item | Example | Required |
|---|---|---|
| Incident identifier | INC-2024-0142, JIRA ticket, PagerDuty ID | Yes |
| Impact summary | "Payment API 503 for 47 minutes" | Yes |
| Time window | 2024-03-15 14:23 - 15:10 UTC | Yes |
| Affected services | payment-api, order-service, Redis cluster | Yes |
| Data sources | Logs, alerts, Slack threads, dashboards | If any |
STOP and reframe if any input contains blame language. Post-mortems examine systems and processes, not individuals.
Reframe rules:
| Mode | Trigger | Deliverable |
|---|---|---|
| Draft | "write a post-mortem", raw incident data | Complete post-mortem document |
| Review | "review this post-mortem", existing document | Quality findings + improvement plan |
| Extract | "extract timeline", logs/events provided | Structured timeline + gap analysis |
| Planning | no incident identified, "how do we run these" | Template + process guide only |
The mode fixes which output sections are required (§9.0). It is not a depth setting — depth (§3) is chosen independently.
Before delivering, verify every section your mode requires per §9.0 is present. STOP and fill gaps. Sections outside your mode's contract are not gaps.
Incident evidence carries customer and credential data. Before delivering, scrub and classify — a post-mortem is circulated far more widely than the logs it came from.
| Category | Action |
|---|---|
| Credentials, tokens, keys, connection URIs | Remove. Never ***-mask in place — rotate |
| Customer identifiers, emails, IPs, payment data | Hash, aggregate, or drop |
| Employee names in causal position | Replace with role ("the on-call engineer") |
| Unpatched vulnerability detail | Summarize; keep exploit specifics in the ticket |
| Log/dashboard links | Confirm the audience can access them |
State the outcome in the document header: **Distribution**: <audience> and
**Redaction**: <what was removed>. Security-incident post-mortems follow the
organization's disclosure process before any distribution — that gate is not yours
to waive. STOP if a credential appears in the draft.
Single-section focus. No reference files needed.
--depth quick; sections you did not claim are not gapsFull post-mortem document. Load references/postmortem-template.md.
Comprehensive analysis with systemic pattern review. Load all references.
When prerequisites are incomplete, produce explicitly-marked partial output.
| Available Data | Mode | Can Deliver | Cannot Claim |
|---|---|---|---|
| Logs + alerts + timeline | Full | Complete post-mortem with root cause | Systemic pattern analysis |
| Timeline only, no logs | Partial | Timeline review + gap analysis | Root cause depth |
| Verbal description only | Sketch | Draft post-mortem skeleton + questions | Definitive root cause |
| Existing post-mortem document | Review | Quality score + missing sections | New root cause analysis |
| No incident data | Planning | Post-mortem template + process guide | Any incident-specific content |
Mark degraded outputs: # DEGRADED: [reason] — [what's missing]
Never fabricate timeline entries. Never invent root causes without evidence.
rca-techniques.md §3).Mitigate: N/A — <reason> rather than inventing a low-value item to fill the
slot. An empty category is a finding; a justified N/A is an answer.The organization's own incident policy wins. If the user's org defines severity levels, SLO budgets, notification deadlines, or review requirements, use those and say which policy you applied. The thresholds below are defaults for when no local standard exists — the dollar figures and minute counts are calibrated to a mid-size SaaS and are wrong for a hospital, a bank, or a two-person startup. Ask for the local policy whenever severity drives a deadline or an escalation.
# WRONG: names individuals as root cause
Root Cause: John deployed a bad configuration file at 14:23 without testing it.
Action Item: Ensure John reviews configs more carefully.
// This is blame, not analysis. It stops at the human and misses the system.
# RIGHT: systemic root cause
Root Cause: The deployment pipeline accepted an invalid configuration because
config validation was not enforced at the CI/CD gate. The config schema
allows empty connection strings, which cause silent failures at runtime.
Action Item: Add JSON schema validation to the deploy pipeline (owner: @platform).
# WRONG: no evidence chain
14:23 Something went wrong
14:30 Someone noticed
14:45 Fixed
# RIGHT: every entry sourced
14:23 payment-api error rate spiked to 15% (Grafana dashboard: payment-slo)
14:26 PagerDuty alert fired: "payment-api p99 > 500ms" (PD incident #4821)
14:28 On-call @alice acknowledged (PagerDuty)
14:31 @alice in #incident-2024-0142: "Checking payment-api logs" (Slack)
# WRONG: vague, unverifiable, no owner
Action Items:
- Improve monitoring
- Be more careful with deploys
- Add more tests
# RIGHT: specific, owned, deadlined
Action Items:
- [Detect] Add p99 latency alert at 500ms for payment-api (owner: @sre, deadline: Mar 22)
- [Prevent] Add config schema validation to CI pipeline (owner: @platform, deadline: Apr 1)
- [Mitigate] Add circuit breaker between order-svc and payment-api (owner: @backend, deadline: Apr 15)
# WRONG: stops at human action (depth 2)
Why did payment fail? -> Bad config was deployed
Why was bad config deployed? -> Engineer didn't test it
// Stops here. Blames individual. Misses systemic cause.
# RIGHT: reaches systemic cause (depth 5)
Why did payment fail? -> Connection string was empty in config
Why was connection string empty? -> Config file had wrong format
Why was wrong format accepted? -> No schema validation in deploy pipeline
Why is there no schema validation? -> Pipeline was built before config complexity grew
Why wasn't validation added when config grew? -> No process to review pipeline gates
// Root cause: missing process for pipeline capability reviews as services evolve
# WRONG: all negative, no learning from successes
Summary: Everything went wrong. Detection was slow. Response was slow.
// Demoralizing and incomplete. Misses positive patterns to reinforce.
# RIGHT: balanced assessment
What Went Well:
- Detection: Alert fired within 3 minutes of first error (SLO: < 5 min)
- Communication: Incident channel created immediately, stakeholders updated every 15 min
- Escalation: Correctly escalated to database team within 10 minutes
What Needs Improvement:
- Runbook for Redis failover was outdated (last updated 8 months ago)
- No automated rollback — manual intervention required
# WRONG: action items with no tracking
Action Items: [listed in the document, never tracked]
// Six months later: same incident occurs. Action items were forgotten.
# RIGHT: action items linked to tracking system
Action Items:
- [Prevent] JIRA-4521: Add config validation (owner: @platform, deadline: Apr 1)
- [Detect] JIRA-4522: Add missing alert (owner: @sre, deadline: Mar 22)
Status: Reviewed in weekly incident review meeting. Next check: Apr 5.
Three-tier scoring applied after every post-mortem.
rca-techniques.md §0
scores equally; a fault tree naming three failed defenses is a pass, not a missN/A — <reason>; Review mode is exempt (its items fix the
document, not the system)Verdict: Critical 3/3 AND Standard >= 4/5 AND Hygiene >= 3/4 = PASS
Mechanical layer — before scoring by judgment, run the bundled linter on the produced document, passing the Gate 3 mode so only that mode's contract is enforced:
python3 scripts/lint_postmortem.py postmortem.md --mode draft --depth standard
Pass the Gate 3 mode and the §3 depth. --depth quick stops requiring sections a Quick
output never claimed, but still lints everything present and still requires §9.9.
It checks the regex-decidable subset in every entry format this skill's template emits — bare 14:23 [PHASE] … (source) lines, - 14:23 … list items, and | 14:23 | … | table rows: valid clock times, a source on every entry, chronological order, an explicit UTC declaration, owner + concrete date on every action item (in list and table form, empty and TBD cells included), prevent/detect/mitigate coverage, a non-empty "Uncovered Risks" section, a blame-phrase scan, and a Gate 5 credential/PII scan. Critical lint findings block delivery, same as scorecard Critical items. The judgment items (root-cause depth, systemic framing) remain yours.
The mode (Gate 3) selects the contract. A section marked — is out of contract for that mode: omitting it is correct, and padding it with speculation is a defect.
| Section | Draft | Review | Extract | Planning |
|---|---|---|---|---|
| 9.1 Incident Summary | Yes | Yes | Yes | — |
| 9.2 Mode & Depth | Yes | Yes | Yes | Yes |
| 9.3 Timeline | Yes | — | Yes | — |
| 9.4 Root Cause | Yes | — | — | — |
| 9.5 Impact | Yes | — | — | — |
| 9.6 What Went Well | Yes | — | — | — |
| 9.7 Action Items | Yes | Yes | — | — |
| 9.8 Lessons Learned | Yes | Yes | — | — |
| 9.9 Uncovered Risks | Yes | Yes | Yes | Yes |
references/postmortem-template.md + the process guide only;
its 9.9 is what the process guide does not cover.An explicit user format instruction outranks this contract. If the user pins the output shape — "output only the RCA section", "fill in our template", "no headings" — deliver exactly that. Where the spine goes depends on what room the user left:
| The user's instruction leaves… | Put 9.2 / 9.9… |
|---|---|
| room inside the document | inline: 9.2 one line, 9.9 a short list |
| a separate file, chat message unrestricted | in the message, not in the file |
| no room at all ("only X, no other text") | nowhere — omit them |
The third row is not a loophole, it is obedience. When the reply is the artifact and the user forbade anything else, padding it with a Mode line or a risks list disobeys a direct instruction. Do not do it, and do not ask permission to. Say nothing extra.
Never drop 9.9 silently when you had somewhere to put it — rows 1 and 2 are the norm; row 3 applies only to an explicit prohibition.
Lint with --user-pinned-format when the shape is pinned; it waives the §9.9 check
inside the file, and you remain accountable for stating it wherever room exists.
Volume rules: SEV-1/2 fully detailed; SEV-3 condensed; SEV-4 summary only.
Draft | Review | Extract | Planning + Quick | Standard | Deep, with the rationale for each.Scorecard appended: X/12 — Critical Y/3, Standard Z/5, Hygiene W/4 — PASS/FAIL
| Condition | Load |
|---|---|
| Writing any post-mortem (Standard+) | references/postmortem-template.md |
| Root cause analysis (Standard+) | references/rca-techniques.md |
| Severity classification, impact assessment | references/severity-framework.md |
| Deep analysis, systemic patterns | All three references |
Each reference has a table of contents. Load relevant sections, not the entire file, when only a specific pattern is needed.
Frequently asked questions
Incident post-mortem specialist for writing blameless post-mortems, extracting timelines from logs/events, conducting root cause analysis (5-Why, fishbone), classifying severity, and generating tracked action items. Complements systematic-debugging (finds the cause) with structured documentation that prevents recurrence.
The source record exposes this install command: npx skills add https://github.com/johnqtcg/awesome-skills --skill "skills/incident-postmortem". Inspect the command and pinned source before running it.
Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.
Alternatives
NintendaDev/unikit-ai
Generate and maintain the project's TECHNICAL documentation from its codebase — scans the project structure, tech stack, and module boundaries, then writes a lean README landing page plus detailed topic pages (architecture, modules, setup, build, APIs), only the docs that are relevant. Use whenever the user wants to create, update, or validate documentation of the CODE or the project itself, e.g. "generate documentation", "create docs", "write the README", "update the project docs", "document th
vasilyu1983/AI-Agents-public
Scans public GitHub repos for agent skills, dev practices, and code patterns. Use when enriching skills, setting team policy, or researching a build domain.
terrylica/cc-skills
Semantic analysis of asciinema recordings. TRIGGERS - analyze cast, keyword extraction, find patterns in recordings.
K-Dense-AI/scientific-agent-skills
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.