incident-commander
Run the coordination layer during an incident: classify
severity, set comms cadence, hold a clean timeline, and draft the
post-mortem skeleton when the dust settles. This skill does not
debug the system — that is the engineer's job. The commander keeps
the room oriented so the engineer can think.
When to use
- Production is degraded or down and someone needs to coordinate.
- A critical job, queue, or third-party is failing and the team is
scrambling.
- A near-miss happened and a post-mortem is being drafted.
- German triggers: "Vorfall", "Prod ist down", "wer übernimmt
Comms?".
Do NOT use when:
- The system is healthy and the concern is a future outage —
route to
risk-officer instead.
- The user wants the bug fixed — route to
/bug-investigate and
/bug-fix. The commander coordinates; engineers debug.
- The incident is a security breach — route to
threat-modeling first; the
commander still runs comms but the response shape changes.
Procedure
1. Inspect the signal and classify severity
| SEV |
Trigger |
| SEV-1 |
User-facing outage, data loss risk, revenue impact |
| SEV-2 |
Major degradation, workaround exists |
| SEV-3 |
Single-feature broken, low blast radius |
| SEV-4 |
Internal-only, not user-visible |
Pick the highest SEV any signal supports. Downgrades happen later
with evidence; never start low to avoid noise.
2. Set the comms cadence
- Internal channel — single thread; no side-channels.
- Update interval — SEV-1 every 15 min, SEV-2 every 30 min,
SEV-3/4 on state change.
- Status page — update on SEV-1 / SEV-2; on by default unless
the user opts out with a stated reason.
- Stakeholder list — who hears each update (eng-lead, PO,
support, leadership). Pre-decide so updates are not rewritten
per-recipient.
3. Hold the timeline
Append-only log: timestamp + actor + observation. No edits, no
"actually it was earlier" — corrections are new entries. Drives
the post-mortem and prevents memory rewrite.
4. Drive to mitigation, not root cause
During the incident, the question is "what makes the bleeding
stop?" Root cause is for after. Document the gap explicitly —
"mitigated, root cause unknown" is a valid intermediate state.
5. Draft the post-mortem skeleton
Once stable:
- Summary — one paragraph, blame-free.
- Timeline — copy from step 3.
- Impact — users, duration, data, revenue.
- What went well — at least one item; finding none is a smell.
- What went wrong — process, tooling, signals, gaps.
- Action items — owned, sized, with a trigger for completion.
Hand off the skeleton; the engineer fills root cause and the team
adds action items.
6. Validate the handoff
Before declaring the incident handed off, verify: SEV is set, comms
cadence is announced, the timeline has at least one entry per
update, mitigation state is explicit (active / mitigated /
resolved), and a post-mortem owner is assigned. Ensure no field
is left as the placeholder default.
Output format
The incident record is a single block with these ordered fields:
SEV: — one of 1 / 2 / 3 / 4
State: — one of active / mitigated / resolved / post-mortem
Started: and Channel: — timestamp and single thread/room
Cadence: and Timeline: — update interval and append-only log
Mitigation:, Root cause:, Post-mortem owner: — explicit values
or unknown; never blank
Incident
SEV: 1 | 2 | 3 | 4
State: active | mitigated | resolved | post-mortem
Started: <timestamp>
Channel: <thread / room>
Cadence: <interval>
Timeline (append-only):
- <ts> <actor> <observation>
- ...
Mitigation: <action> | unknown
Root cause: <hypothesis> | unknown — investigation deferred to post-mortem
Post-mortem owner: <role>
Gotcha
- The commander does not also debug. Splitting roles keeps the room
oriented; one person doing both starves comms.
- "We do not need a post-mortem" is almost always wrong. Even
near-misses earn a one-page write-up.
- The first SEV classification is rarely the final one — surface
upgrades / downgrades explicitly with a reason.
Do NOT
- Do NOT debug from this skill; route to engineering skills.
- Do NOT skip status-page updates on SEV-1 because "it'll be quick".
- Do NOT close an incident without a post-mortem owner assigned.
- Do NOT edit the timeline after the fact; corrections are new
entries.
See also
alerting-doctrine — what earned the page
that opened this incident, and the runbook contract the first responder reads.
A page arrives with an owner, a runbook and a first diagnostic step; if it did
not, that is a configuration defect to record in the post-mortem.
logging-monitoring — the signal posture the
incident is being diagnosed through, and why a proposed threshold is not a
breach.
1---2name: incident-commander3description: Use during or right after an incident — frames severity, sets comms cadence, drafts the post-mortem skeleton — even when the user just says 'production is down' or 'wir haben einen Vorfall'.4---56# incident-commander78> Run the **coordination layer** during an incident: classify9> severity, set comms cadence, hold a clean timeline, and draft the10> post-mortem skeleton when the dust settles. This skill does **not**11> debug the system — that is the engineer's job. The commander keeps12> the room oriented so the engineer can think.1314## When to use1516- Production is degraded or down and someone needs to coordinate.17- A critical job, queue, or third-party is failing and the team is18 scrambling.19- A near-miss happened and a post-mortem is being drafted.20- German triggers: "Vorfall", "Prod ist down", "wer übernimmt21 Comms?".2223Do NOT use when:2425- The system is healthy and the concern is a future outage —26 route to [`risk-officer`](../risk-officer/SKILL.md) instead.27- The user wants the bug fixed — route to `/bug-investigate` and28 `/bug-fix`. The commander coordinates; engineers debug.29- The incident is a security breach — route to30 [`threat-modeling`](../threat-modeling/SKILL.md) first; the31 commander still runs comms but the response shape changes.3233## Procedure3435### 1. Inspect the signal and classify severity3637| SEV | Trigger |38|---|---|39| SEV-1 | User-facing outage, data loss risk, revenue impact |40| SEV-2 | Major degradation, workaround exists |41| SEV-3 | Single-feature broken, low blast radius |42| SEV-4 | Internal-only, not user-visible |4344Pick the highest SEV any signal supports. Downgrades happen later45with evidence; never start low to avoid noise.4647### 2. Set the comms cadence4849- **Internal channel** — single thread; no side-channels.50- **Update interval** — SEV-1 every 15 min, SEV-2 every 30 min,51 SEV-3/4 on state change.52- **Status page** — update on SEV-1 / SEV-2; on by default unless53 the user opts out with a stated reason.54- **Stakeholder list** — who hears each update (eng-lead, PO,55 support, leadership). Pre-decide so updates are not rewritten56 per-recipient.5758### 3. Hold the timeline5960Append-only log: timestamp + actor + observation. No edits, no61"actually it was earlier" — corrections are new entries. Drives62the post-mortem and prevents memory rewrite.6364### 4. Drive to mitigation, not root cause6566During the incident, the question is *"what makes the bleeding67stop?"* Root cause is for after. Document the gap explicitly —68"mitigated, root cause unknown" is a valid intermediate state.6970### 5. Draft the post-mortem skeleton7172Once stable:7374- **Summary** — one paragraph, blame-free.75- **Timeline** — copy from step 3.76- **Impact** — users, duration, data, revenue.77- **What went well** — at least one item; finding none is a smell.78- **What went wrong** — process, tooling, signals, gaps.79- **Action items** — owned, sized, with a trigger for completion.8081Hand off the skeleton; the engineer fills root cause and the team82adds action items.8384### 6. Validate the handoff8586Before declaring the incident handed off, verify: SEV is set, comms87cadence is announced, the timeline has at least one entry per88update, mitigation state is explicit (`active` / `mitigated` /89`resolved`), and a post-mortem owner is assigned. Ensure no field90is left as the placeholder default.9192## Output format9394The incident record is a single block with these ordered fields:95961. `SEV:` — one of `1` / `2` / `3` / `4`972. `State:` — one of `active` / `mitigated` / `resolved` / `post-mortem`983. `Started:` and `Channel:` — timestamp and single thread/room994. `Cadence:` and `Timeline:` — update interval and append-only log1005. `Mitigation:`, `Root cause:`, `Post-mortem owner:` — explicit values101 or `unknown`; never blank102103```104Incident105SEV: 1 | 2 | 3 | 4106State: active | mitigated | resolved | post-mortem107Started: <timestamp>108Channel: <thread / room>109Cadence: <interval>110111Timeline (append-only):112 - <ts> <actor> <observation>113 - ...114115Mitigation: <action> | unknown116Root cause: <hypothesis> | unknown — investigation deferred to post-mortem117Post-mortem owner: <role>118```119120## Gotcha121122- The commander does not also debug. Splitting roles keeps the room123 oriented; one person doing both starves comms.124- "We do not need a post-mortem" is almost always wrong. Even125 near-misses earn a one-page write-up.126- The first SEV classification is rarely the final one — surface127 upgrades / downgrades explicitly with a reason.128129## Do NOT130131- Do NOT debug from this skill; route to engineering skills.132- Do NOT skip status-page updates on SEV-1 because "it'll be quick".133- Do NOT close an incident without a post-mortem owner assigned.134- Do NOT edit the timeline after the fact; corrections are new135 entries.136137## See also138139- [`alerting-doctrine`](../alerting-doctrine/SKILL.md) — what earned the page140 that opened this incident, and the runbook contract the first responder reads.141 A page arrives with an owner, a runbook and a first diagnostic step; if it did142 not, that is a configuration defect to record in the post-mortem.143- [`logging-monitoring`](../logging-monitoring/SKILL.md) — the signal posture the144 incident is being diagnosed through, and why a `proposed` threshold is not a145 breach.