Incident Command: Live Response and Postmortems
| Field | Value |
|---|---|
| Type | Skill Resource |
| Source | ~/.copilot/skills/platform/references/incident-command.md |
| Description | Not specified |
Source Content
Incident Command: Live Response and Postmortems
Incidents become outages when comms break down, not when systems break down. Impose calm structure — roles, channels, cadence, decision log — then convert the pain afterward into permanent improvements.
Contents
- Use me for / Don’t use me for
- Running a live incident
- Writing the postmortem
- On-call program design
- Validate
- Self-rubric
Use me for / Don’t use me for
Use for: driving an active incident right now, writing the PIR for a just-resolved incident, setting up an on-call program before you need it (rotation, comp, drills, runbooks), auditing a quarter of incidents for systemic patterns.
Don’t use for: designing the SLOs that define “incident” (references/observability.md), authoring per-alert runbooks in depth (references/observability.md + service owner), security-breach legal/disclosure (the security skill), postmortem prose polished for a customer audience (the technical-writing skill).
“We had a security breach” → defer to the security skill for legal/disclosure; run the operational room in parallel. “Define the SLOs for this service” → defer to references/observability.md; SLOs anchor severity here, they aren’t designed here.
Running a live incident
In order:
- Declare. Pick severity. Open
#inc-YYYYMMDD-<slug>. Page an IC if you aren’t one. - Assign roles. Pin: IC, Comms, Scribe, SME (+ Customer Liaison on SEV1/2). Solo? You’re IC + SME.
- Stop the bleed. Mitigation before root cause. Try one thing with a 15-min timer; move on if no improvement.
- Comms cadence. Every 15 min (SEV1) or 30 min (SEV2), even “still investigating” — silence breeds escalation.
- Decision log. Scribe captures every non-trivial action with timestamp, owner, reason, result.
- Hand off if the incident runs over 2 hours. Tired commanders make bad calls.
- Resolve. Metrics back to baseline for 15 min, final status-page update, channel summary, archive after the PIR lands.
Writing the postmortem
Within 5 business days. Sections: Summary, Impact (with error-budget burn — pairs with references/observability.md), Timeline, Root cause(s), Five Whys ending at a process or system gap, Contributing factors, What went well, Action items (owner + due date + ticket).
Blameless means the language targets the system, never a person — a postmortem never names an individual as “root cause.”
On-call program design
- Sustainable rotation with paid comp — being on-call should not ruin anyone’s life.
- Runbook coverage for every page-worthy alert (the runbook itself lives with
references/observability.md+ the service owner). - A drill cadence so the first real page isn’t the first rehearsal.
- Error budgets exist to protect humans, not just numbers — if the budget burns, feature work pauses; that’s the contract.
Validate
scripts/check_pir.sh PIR.md verifies a postmortem has:
- a timestamped decision log,
- a named Incident Commander (rejects placeholders like
TBD/TODO/N/A), - at least one action item with both an owner and a due date (
YYYY-MM-DD).
Exits non-zero listing which of the three checks failed.
Self-rubric
- Severity declared and matches customer impact.
- Roles assigned and pinned — IC is not also debugging.
- Mitigation tried before root-cause hunting.
- External comms cadence is being met.
- Decision log has timestamps and owners.
- PIR is blameless — language targets the system, never a person.
-
scripts/check_pir.shexits 0.
References
- Google SRE — Managing Incidents
- Atlassian — Blameless postmortems
- John Allspaw — Blameless PostMortems and a Just Culture
- Richard Cook — How Complex Systems Fail (PDF)
- PagerDuty incident response docs
scripts/check_pir.sh— the validator described above.