Use when a production incident is live or just resolved — severity classification, containment, comms, rollback-vs-fix decisions, and blameless postmortem. Triggers on "incident", "on-call", "page", "postmortem", "事故响应", "线上故障", "复盘".
Scanned 9/4/2026
Install to Claude Code
npx -y skills add int2t05/engineering-skills --skill incident-response --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Incident Response?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/int2t05-incident-response)More formats (shields.io, HTML) on the badges page.
---
name: incident-response
description: Use when a production incident is live or just resolved — severity classification, containment, comms, rollback-vs-fix decisions, and blameless postmortem. Triggers on "incident", "on-call", "page", "postmortem", "事故响应", "线上故障", "复盘".
---
# Incident Response
When production is failing, the first job is containment, not root cause. This skill structures
the live-incident workflow: classify severity, stop the bleeding, communicate, then diagnose — the
inverse of `debugging`, which builds a red loop first. A blameless postmortem follows every
incident so the system improves, not just the symptom.
## When to use
- A production incident is live (page fired, users affected, error spike)
- An incident just resolved and needs a postmortem
- Reviewing or rehearsing incident response readiness
**Not for:** diagnosing a dev-time bug (use `debugging`); adding telemetry after the fact (use
`observability`); launching a new release (use `shipping`). This skill is for when something
already running has broken.
## Steps
### 1. Declare and classify severity
Assign a severity within the first 5 minutes — severity drives everything downstream (who wakes
up, how fast you respond, what comms are required). Use a fixed scale, not ad-hoc:
- **SEV1** — user-facing outage or data loss. Page everyone. Incident commander assigned.
- **SEV2** — significant degradation, partial outage. Page on-call. IC assigned.
- **SEV3** — minor degradation, workaround exists. Ticket, address in business hours.
Record the declaration: start time, severity, initial symptom, who is IC. _Verify: severity is
written down with a timestamp, not just in someone's head._
### 2. Contain (stop the bleeding)
The first decision is containment vs. fix. Containment is faster and safer — rollback, disable
the offending feature flag, route around the failing dependency, shed load. A fix under pressure
is a second incident waiting to happen.
- Rollback to the last known-good deploy (fastest). Platform commands: `kubectl rollout undo deployment/<name>` (Kubernetes), `aws deploy create-deployment --revision REVISION<prev>` (AWS CodeDeploy), `gcloud run services update-traffic --to-revisions` (Cloud Run), `vercel rollback <url>` (Vercel). The `shipping` skill documents *when* to roll back (trigger conditions); these are the *how* commands for a live SEV1.
- Disable the feature flag that triggered the issue
- Fail over to a healthy replica or region
- Rate-limit or circuit-break the failing path
Only attempt a forward fix if rollback is impossible (irreversible migration, no prior deploy)
and the fix is small and obvious. _Verify: the bleeding has stopped — error rate dropping or
users recovering — before moving to diagnosis._
### 3. Communicate
The IC owns comms. Establish a single incident channel and a cadence:
- **Internal:** status update every 15–30 min (SEV1) or hourly (SEV2): current state, what's been
tried, next step, owner, ETA. Stale silence breeds panic and duplicate work.
- **External:** status page update for user-facing incidents — users tolerate outage, they don't
tolerate silence. Update at the same cadence as internal.
- **Stakeholders:** notify leadership for SEV1; keep them informed, not involved in the fix.
_Verify: the last update is less than 30 min old and states the next action with an owner._
### 4. Diagnose (after containment)
With the bleeding stopped, find root cause. Apply `debugging` discipline: build a hypothesis,
instrument, verify — but under the incident's time pressure, favor the fastest path to a confirmed
cause over exhaustive analysis. Use the telemetry `observability` built: traces, metrics, logs,
correlation IDs. If the diagnosis stalls, contain harder and hand off to a fresh responder.
_Verify: root cause is stated as a confirmed hypothesis with supporting evidence (log line, metric
spike, deploy diff), not a guess._
### 5. Fix and verify
Apply the smallest fix that addresses the root cause. Verify at runtime — error rate returned to
baseline, affected users recovered, no new regression. Re-enable any containment measures
disabled (feature flags, failover) only after the fix is confirmed.
_Verify: production metrics are at baseline for a sustained window (not a single point) before
declaring resolved._
### 6. Postmortem (blameless)
Within 48 hours, write a blameless postmortem. Blameless means: focus on the system and process,
not individuals — "the deploy bypassed the canary" not "X deployed without checking." Every
contributing factor is a system gap, not a personal failure.
- **Timeline:** minute-by-minute from detection to resolution
- **Impact:** users affected, duration, data loss, revenue
- **Root cause:** the confirmed cause from step 4
- **Contributing factors:** what made it possible (missing test, no alert, manual step)
- **What went well:** detection time, rollback worked, comms cadence held
- **Action items:** specific, owned, dated — each addresses a contributing factor
**Output:** `docs/postmortem/YYYY-MM-DD-<slug>.md` — one file per incident, archived for
organizational learning.
## Verify
- [ ] Severity declared within 5 min, written down with timestamp
- [ ] Containment chosen over forward-fix unless rollback was impossible
- [ ] Comms cadence established; last update <30 min old during the incident
- [ ] Root cause stated with evidence (not a guess)
- [ ] Production metrics at baseline for a sustained window before "resolved"
- [ ] Postmortem written within 48 hours, blameless, with owned action items
**Red flags:** diagnosing before containing; no written severity declaration; silent incident
channel; forward-fixing under pressure when rollback was available; postmortem that names
individuals instead of system gaps; action items with no owner or date.
## References
- [${CLAUDE_PLUGIN_ROOT}/references/engineering-principles.md](${CLAUDE_PLUGIN_ROOT}/references/engineering-principles.md) — shared discipline (verify don't assume, surface assumptions)
- [references/runbook-template.md](references/runbook-template.md) — runbook format for alert-linked playbooks
- [references/postmortem-template.md](references/postmortem-template.md) — blameless postmortem template + action-item tracking
- [references/dr-planning.md](references/dr-planning.md) — load during postmortem action-item planning for proactive DR; backup strategy, restore testing, DR drills, failover orchestration
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!