Use after an incident or outage is resolved — blame-free facilitation, root cause, corrective actions, memory write-back — even for a near-miss. Consumes the incident-commander skeleton.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add event4u-app/agent-config --skill blameless-post-mortem --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Blameless Post Mortem?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/event4u-app-blameless-post-mortem)More formats (shields.io, HTML) on the badges page.
---
model_tier: high
name: blameless-post-mortem
description: "Use after an incident or outage is resolved — blame-free facilitation, root cause, corrective actions, memory write-back — even for a near-miss. Consumes the incident-commander skeleton."
domain: quality
personas:
- senior-engineer
- critical-challenger
workspaces:
- engineering
packs:
- analysis-workbench
trust:
level: professional
confidence: medium
install:
default: false
removable: true
requires_skills:
- root-cause-frameworks
---
# blameless-post-mortem
> Facilitate a blame-free post-mortem after an incident or near-miss.
> Consumes the `incident-commander` skeleton, derives or fills the root
> cause, writes the corrective-action plan, and drafts an
> `incident-learnings` memory candidate. Systems and processes are
> examined — never individuals.
## When to use
- An incident or outage is resolved and the team needs a structured
write-up.
- A near-miss happened and a post-mortem is being drafted (near-miss
mode — same flow, different severity framing).
- The `incident-commander` hands off a post-mortem skeleton (empty
root cause is accepted — do not block on it).
- German triggers: "Post-mortem", "Nachbesprechung", "was ist
schiefgelaufen?", "Vorfallsanalyse".
Do NOT use when:
- The incident is still active — route to
[`incident-commander`](../incident-commander/SKILL.md) first.
- The goal is root-cause analysis only, no write-up needed — route
to [`root-cause-frameworks`](../root-cause-frameworks/SKILL.md).
- The concern is a future risk, not a past event — route to
[`risk-officer`](../risk-officer/SKILL.md).
## Procedure
### 1. Consume the incident-commander skeleton
Read the incoming skeleton. Per
[`docs/contracts/analysis-memory-loop.md § 5`](../../docs/contracts/analysis-memory-loop.md):
- Accept any skeleton, complete or not.
- Extract: `SEV`, `State`, `Started`, `Timeline`, `Mitigation`,
`Root cause` (may be `unknown` or TBD).
- Do NOT stall or reject on an empty root cause.
If no skeleton is provided, reconstruct from the user's description:
severity, timeline, impact, mitigation state.
### 2. Derive the root cause (if unresolved)
If root cause is `unknown` or TBD, invoke
[`root-cause-frameworks`](../root-cause-frameworks/SKILL.md). That
skill returns ranked candidates with confidence levels — do NOT force
a verdict. If root cause remains unresolved after the analysis pass,
mark the post-mortem `status: draft` and continue. A draft post-mortem
can still produce memory candidates (note the open question in the
candidate summary).
### 3. Write the blame-free report
Sections in order — no individuals named, systems and processes only:
1. **Summary** — one paragraph, blame-free, what happened and the
business impact.
2. **Timeline** — reference the skeleton timeline; do NOT rebuild it.
3. **Impact** — users affected, duration, data, revenue, SLA.
4. **Detection** — how the incident was discovered (monitoring, user
report, alert, manual).
5. **Root cause** — the confirmed or highest-confidence candidate;
state confidence level if draft.
6. **Contributing factors** — conditions that made the root cause
possible (tooling gaps, process gaps, system state).
7. **What went well** — at least one item; omitting this is a smell.
8. **What went wrong** — process, tooling, signals, communication
gaps. No individual blame.
**Near-miss mode:** same sections; set `SEV: near-miss`. Add two
extra questions after "what went wrong":
- *"What would have made this worse?"*
- *"Which control caught it — luck or a designed control?"*
### 4. Corrective actions (folded-in phase)
For each identified gap, propose a corrective action. Reuse
`risk-officer` mitigation framing: owner role, size, residual-risk
note. Four action types:
| Type | Purpose |
|---|---|
| **Immediate** | Stop recurrence now (config fix, kill switch, revert) |
| **Preventive** | Remove the root cause (architectural or process change) |
| **Detection** | Catch it sooner next time (alert, dashboard, runbook) |
| **Process** | Address human/coordination gaps (oncall rotation, docs) |
Each action MUST have:
- **Owner role** (eng, ops, PO, support — never "the team")
- **Closure criterion** — specific, testable condition marking the
action done
- **Regression signal** — a test, monitor, or alert that proves the
fix held
An action without a closure criterion is a wish, not a plan.
### 5. Memory write-back
Per [`docs/contracts/analysis-memory-loop.md § 2`](../../docs/contracts/analysis-memory-loop.md):
1. Run the dedup pre-check — `find_duplicate(...)` from
`scripts/memory_lookup.ts` over the same key-space (incident type,
affected paths, decision area); a `memory:lookup` query over the
same keys is the CLI equivalent.
2. **Match found** — propose a `frequency` / `supersedes` update to
the existing entry; do NOT create a new candidate.
3. **No match** — draft a REDACTED `incident-learnings` candidate to
`/memory propose`:
- `type: incident-learnings`
- `summary`: one-line pattern (no customer names, no secrets, no
project-rooted paths)
- `evidence_paths`: ≥ 2 file paths (for admission gate)
- `decision_surface`: ≥ 3 decisions this pattern changes (if
possible)
- `last_validated`: today
- `review_after_days`: 90
- `applicable_scope`: `project`
4. NEVER auto-promote. The human drives promotion via `/memory
promote`. If the candidate fails the admission gate
(`check_memory_proposal.ts`), surface the gap to the user.
If the lookup surfaces stale entries (past `review_after_days`),
surface them explicitly — never silently use stale data.
## Output
The post-mortem produces, in order:
1. **Post-mortem document** — sections 1–8 from step 3; status
`final` or `draft` if root cause is unresolved.
2. **Corrective-action table** — each action with type, owner,
closure criterion, regression signal.
3. **Memory candidate** — the drafted `incident-learnings` JSONL
snippet for `/memory propose` (or the frequency-update proposal if
a duplicate was found).
## Do NOT
- Do NOT blame individuals — name systems, processes, signals, tooling.
- Do NOT auto-promote to curated memory — the gate is human-driven.
- Do NOT skip the dedup pre-check before drafting a memory candidate.
- Do NOT ship raw PII, customer names, secrets, or project-rooted
paths in the memory candidate (redact per the contract).
- Do NOT reject or stall on an incomplete skeleton — mark `draft` and
continue.
- Do NOT rebuild the timeline from scratch — reference the skeleton's
timeline.
## Gotchas
- **Incomplete skeleton** → `status: draft`, not a rejection. Draft
post-mortems still produce memory candidates with the open question
noted.
- **Near-miss** → a mode within this skill, not a separate flow.
Severity is `near-miss`; the extra two questions apply.
- **Corrective actions without closure criteria** are non-actionable.
Always require a specific, testable done condition.
- **Stale memory entries** must be surfaced as stale, never merged
into the findings. Never silently reuse stale data.
## See also
- [`incident-commander`](../incident-commander/SKILL.md) — produces the
skeleton this skill consumes; run first during live incidents.
- [`root-cause-frameworks`](../root-cause-frameworks/SKILL.md) — RCA
engine invoked in step 2 when root cause is unresolved.
- [`risk-officer`](../risk-officer/SKILL.md) — mitigation framing
reused for corrective actions (owner, size, residual-risk).
- [`docs/contracts/analysis-memory-loop.md`](../../docs/contracts/analysis-memory-loop.md)
— produce → propose → promote → retrieve contract this skill binds to.
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!