Incident response and postmortems
Skill aneja5/forge-skills/skills/incident-response-and-postmortems
Use when defining severity levels and on-call procedures, when creating a runbook for a critical service, when an incident is actively happening and a structured response is needed, or when writing a blameless postmortem after Sev1 or Sev2 resolution.From its SKILL.md
npx -y skills add aneja5/forge-skills --skill incident-response-and-postmortemsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.4 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
Incident Response and Postmortems
Overview
Define how the team detects, mitigates, communicates about, and learns from production incidents — before the first one. Output is .forge/incident-response.md — severity definitions with response times, the declare-mitigate-communicate-resolve-review flow, runbook template, blameless postmortem template, and the comms templates (internal and external). Pairs with observability (alerts feed the declare step) and error-handling-and-resilience (the failure modes alerts watch for).
When to Use
- A service is going to production and there's no on-call process
- An incident just happened and the team handled it ad-hoc — write the process before the next one
- A postmortem is due and there's no template
- Severity levels are inconsistent across teams
- A runbook is needed for a critical service
When NOT to Use
- Localhost-only or pre-prod systems with no users
- A trivial bug fix — that's
debugging-and-recovery - A near-miss that didn't affect users — log it, learn from it, but don't fire the full process
Common Rationalizations
| Thought | Reality |
|---|---|
| "We're too small for an incident process" | Incidents don't wait for headcount. The first Sev1 at 4 staff is when you learn the process you didn't build. |
| "We'll write the postmortem later" | Memory fades within 48h. Two weeks later the timeline is a guess. |
| "It was their fault" | Blame ends learning. Every "someone clicked the wrong button" is a system that allowed the wrong button to be clicked. |
| "Action items can wait until we have time" | Unowned action items are wishes. They never ship. |
| "We don't need severity levels — just fix everything fast" | Without severity, every alert pages every human. Fatigue sets in. The real Sev1 gets missed. |
| "Comms can be informal during the incident" | "Informal" means three different stories reaching three different audiences. Customers, board, and team need consistent, scheduled updates. |
Red Flags
- No documented severity definitions
- A critical service with no runbook
- A postmortem that uses words like "negligence", "should have known", "failure to follow procedure" — blame language
- Action items in a postmortem without an owner and a deadline
- The same incident class recurring (auth outage, queue backup, DB lock) without an action item from the previous postmortem closed
- No external comms during a customer-visible outage
- The on-call hand-off has no documented context (no runbook, no recent incident summary)
Core Process
Step 1: Define severity levels
In .forge/incident-response.md:
| Sev | Definition | Response time | Examples |
|---|---|---|---|
| Sev1 | Service down or major data integrity issue | Page on-call immediately, all-hands within 15min | Site down, DB corruption, security breach |
| Sev2 | Major feature broken or significant degradation | Page on-call, response within 30min | Login broken, checkout failing, search down |
| Sev3 | Minor feature broken or low-impact degradation | Ticket, response within 4h business | Non-critical endpoint slow, edge-case bug |
| Sev4 | Cosmetic or no user impact | Ticket, response next business day | Typo, log noise, internal tool glitch |
Step 2: Write the response flow
Five steps, in order:
- Declare — anyone can declare. Use the standard channel (
#incident-active). State: severity guess, what's broken, what's the impact. - Mitigate — restore service first. Root-cause investigation comes after. Acceptable mitigations: rollback, feature flag off, traffic shift, scale up.
- Communicate — internal updates every 30min for Sev1, every 60min for Sev2. External status page updated within 15min of declare (Sev1) or 30min (Sev2). Comms owner is named, not "whoever notices."
- Resolve — service restored, customer-visible impact ended. Mark resolved on status page.
- Review — postmortem within 5 business days for Sev1/Sev2.
Step 3: Create the runbook template
For every critical service (anything with a Sev1 or Sev2 potential), a runbook must contain:
- Service summary — what it does, what fails when it goes down
- Owners — primary on-call, escalation chain
- Dashboards — links to the observability dashboards (cross-ref
observabilityskill) - Common failure modes — top 5 with first-response steps
- Mitigation playbook — feature flag locations, rollback commands, traffic shift recipes
- Escalation criteria — when to page the next tier
- Recovery verification — how you know it's actually fixed (synthetic check, key metric returning to baseline)
Cross-reference the runbook URL in every alert (cross-ref observability rule: every alert has a runbook link).
Step 4: Write the blameless postmortem template
In .forge/incident-response.md:
# Postmortem: <one-line summary>
## Impact
- Severity: Sev1/2/3
- Duration: HH:MM start to HH:MM end (TZ)
- Affected: <number of users, % of traffic, $ if measurable>
## Timeline (UTC, all times verified from logs)
- 14:02 — Deploy v2.4.1 to production
- 14:08 — Error rate climbs above 5% on /api/checkout
- 14:11 — Alert fires; on-call paged
- 14:14 — On-call acks
- 14:22 — Mitigation: rollback to v2.4.0 initiated
- 14:26 — Rollback complete, error rate returns to baseline
- 14:31 — Incident resolved; status page updated
## Root cause
<what happened, mechanically. No blame language.>
## Contributing factors
- <missing alert, weak test, flaky dependency, slow rollback tooling, etc.>
## What went well
- <fast detection, clean rollback, good comms>
## What we learned
- <pattern that future work should respect>
## Action items
| ID | Action | Owner | Deadline | Tracking |
|---|---|---|---|---|
| AI-1 | Add integration test covering the checkout path | @owner | YYYY-MM-DD | LINK-123 |
| AI-2 | Reduce rollback time from 8min to <2min | @owner | YYYY-MM-DD | LINK-124 |
Blameless rule: the word "should have" is forbidden. Replace with "the system did not have." Every action item targets a system, not a person.
Step 5: Define comms templates
Three audiences, three templates:
- Internal status update (every 30min Sev1 / 60min Sev2 in
#incident-active): current status, mitigation in progress, ETA, next update time - External status page (15min Sev1 / 30min Sev2): what's affected, what we're doing, when the next update is — no internal jargon
- Customer comms post-resolution (within 24h for Sev1, 72h for Sev2): impact summary, root cause in plain language, what we're doing to prevent recurrence
Verification
-
.forge/incident-response.mdwritten - Severity levels defined with response-time SLAs
- Every critical service has a runbook linked from its alerts
- Postmortem template includes timeline, impact, root cause, contributing factors, action items with owners
- Last 3 Sev1/Sev2 postmortems completed within 5 business days
- No postmortem in the last 90 days contains "should have" or blame language
- Every action item from the last 5 postmortems has owner + deadline (open or closed)
- External status page updated within SLA on the last 3 customer-visible incidents
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 2 of the 12 instructions most incident response skills give in ~1.8k tokens
Counted across 209 of the 214 authors here whose files we hold, read 2026-09-06
- Give each action item an owner and due datehere, and in 25 of 209, across 23 files
- Conduct blameless postmortem within 48 hoursin 13 of 209, across 10 files
- Mitigate impact before investigating root causein 11 of 209, across 10 files
- Apply Five Whys to identify root causein 11 of 209, across 9 files
- Try rollback first when a recent deploy caused itin 9 of 209, across 8 files
- Keep post-mortems blamelessin 8 of 209, across 7 files
- Write blameless postmortems for all incidentsin 8 of 209, across 6 files
- Create a runbook for every new alerthere, and in 8 of 209
- Track action items to completionin 7 of 209
- Run automated enumeration scripts like linPEAS or winPEASin 7 of 209, across 2 files
- Update stakeholders every 15-30 minutesin 7 of 209, across 5 files
- Give every action item an owner and priorityin 7 of 209
Said here and by no other author read
- define severity levels with response times
- declare incidents with severity, what broke, and impact
- send scheduled updates during incidents
- name a comms owner for each incident
- write runbooks for every critical service
- target action items at systems, not people
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.