Run a production incident end-to-end for a small team: declare severity, assign roles, mitigate, communicate with stakeholders, and write a blameless postmortem with owned action items. Use when production breaks, alerts fire, users report outages, an outage needs status-page updates, or after an incident when it's time to write the postmortem.
./install.sh incident-responsename: "incident_response" description: "Run a production incident end-to-end for a small team: declare severity, assign roles, mitigate, communicate with stakeholders, and write a blameless postmortem with owned action items. Use when production breaks, alerts fire, users report outages, an outage needs status-page updates, or after an incident when it's time to write the postmortem."
Structure beats heroics when production breaks. This skill runs a small team (2–5 people, or even solo) through a production incident using Google SRE's incident management discipline — adapted from the Incident Command System — and ends with a blameless postmortem that converts the outage into systemic improvements. One guiding rule: restore service first, learn second; mitigate before you root-cause.
Declaring early is cheap; under-declaring is expensive. When in doubt, declare. Google SRE's declaration triggers: the fix needs a second team, the outage is customer-visible, or an hour of concentrated analysis hasn't solved it. Classify by observed impact, not cause — the cause is unknown yet.
| Sev | Meaning | Response | Comms | |-----|---------|----------|-------| | SEV1 | Full outage, data loss, or security breach; revenue-critical | Page now. Full roster, incident commander assigned | Exec + status page + customers. Updates every 15–30 min | | SEV2 | Major feature down or severe degradation for many users | Page on-call. Commander assigned | Status page. Updates every 30–60 min | | SEV3 | Partial/minor degradation, workaround exists | Handle in business hours | Internal channel. Updates as needed | | SEV4 | Cosmetic, edge case, or no user impact | Normal backlog — no incident process | Ticket only |
Calibrate this table to your team once, before you need it. There is no universal standard; the value is that it's pre-agreed.
Write the declaration as one line where the team coordinates (Slack/IRC/Discord): 🔴 SEV2 declared — checkout latency p99 > 8s for ~30% of users since 14:02 UTC. IC: @you.
Google SRE's central lesson: do not let one person both fix and coordinate. Assign explicitly, by name — even if one person wears two hats early on, announce it so everyone knows.
Solo mode: you are IC + Ops. Announce it ("I'm IC+Ops, someone pick up Comms") so others know what's covered. Hand off command explicitly — "IC is now @sam, acknowledge" — never let it be ambiguous.
Silence during an incident is worse than "still investigating" — stakeholders who hear nothing assume the worst. Comms Lead owns a living incident doc (concurrent-edit wiki/doc; not the system being fixed) and a cadence:
Templates for the status page, customer email, and internal channel updates live in references/comms-templates.md. Every update says: what's affected, what we're doing, when the next update lands. Never promise an ETA you can't defend; say "next update at 15:30" instead.
Goal: stop the bleeding, not find the elegant cause. Try generic mitigations first, before the root cause is understood: roll back the most recent release, drain/reroute traffic, enable the kill switch / feature flag, fail over to the backup. For security incidents: isolate and stop the attack before forensics. All production changes go through Ops, announced to the IC first, logged by the Scribe with timestamps. Preserve evidence (logs, config diffs) as you go — you'll need it for root-causing later.
Confirm service is actually restored (metrics, not vibes), mark resolved on the status page, then monitor for recurrence for at least 30 minutes before standing down. Close the incident, keep the timeline doc.
Google SRE: a postmortem is a written record — the incident, its impact, actions taken, root cause(s), and follow-up actions to prevent recurrence. Writing one is not punishment; it's the learning opportunity the incident was priced at.
Postmortem triggers (define before you need them): user-visible downtime/degradation beyond your threshold, any data loss, any on-call intervention (rollback, traffic reroute), resolution time above your threshold, or a monitoring failure (manual discovery means monitoring failed). Any stakeholder may also request one.
Blamelessness is non-negotiable. Assume everyone involved had good intentions and did the right thing with the information they had. The tradition comes from healthcare and avionics via John Allspaw's blameless-postmortem culture: you can't fix people, but you can fix the systems and processes that gave them incomplete or wrong information. A postmortem that names and shames guarantees the next incident gets hidden. Every action item must be specific, owned by a named person, and deadline-bound — never "be more careful."
The fill-in template is references/postmortem-template.md. Review flow: draft → a senior reviewer checks completeness (is the timeline captured? is the root cause deep enough? are action items owned and prioritized?) → share with the wider team → file in a shared repository of past incidents so future on-callers can learn.
Practice between incidents. Incident management atrophies fast. Google SRE teams keep the muscle alive with the Wheel of Misfortune: replay a past postmortem as a role-play drill (cast an IC, Ops, Comms; the original IC observes). Even quarterly, this keeps the process second nature for a small team.
A completed incident run produces:
publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e
No ratings yet — be the first to rate it.