Blameless post mortem
Skill event4u-app/agent-config/dist/agent-src/skills/blameless-post-mortem
Universal AI Agent OS — audited skills, governance rules, replayable state. One contract, every host agent.
npx -y skills add event4u-app/agent-config --skill blameless-post-mortemAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
7.6 KB, as published. Nobody here has run it
blameless-post-mortem
Facilitate a blame-free post-mortem after an incident or near-miss. Consumes the
incident-commanderskeleton, derives or fills the root cause, writes the corrective-action plan, and drafts anincident-learningsmemory 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-commanderhands 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-commanderfirst. - The goal is root-cause analysis only, no write-up needed — route
to
root-cause-frameworks. - The concern is a future risk, not a past event — route to
risk-officer.
Procedure
1. Consume the incident-commander skeleton
Read the incoming skeleton. Per
docs/contracts/analysis-memory-loop.md § 5:
- Accept any skeleton, complete or not.
- Extract:
SEV,State,Started,Timeline,Mitigation,Root cause(may beunknownor 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. 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:
- Summary — one paragraph, blame-free, what happened and the business impact.
- Timeline — reference the skeleton timeline; do NOT rebuild it.
- Impact — users affected, duration, data, revenue, SLA.
- Detection — how the incident was discovered (monitoring, user report, alert, manual).
- Root cause — the confirmed or highest-confidence candidate; state confidence level if draft.
- Contributing factors — conditions that made the root cause possible (tooling gaps, process gaps, system state).
- What went well — at least one item; omitting this is a smell.
- 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:
-
Run the dedup pre-check —
find_duplicate(...)fromscripts/memory_lookup.tsover the same key-space (incident type, affected paths, decision area); amemory:lookupquery over the same keys is the CLI equivalent. -
Match found — propose a
frequency/supersedesupdate to the existing entry; do NOT create a new candidate. -
No match — draft a REDACTED
incident-learningscandidate to/memory propose:type: incident-learningssummary: 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: todayreview_after_days: 90applicable_scope:project
-
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:
- Post-mortem document — sections 1–8 from step 3; status
finalordraftif root cause is unresolved. - Corrective-action table — each action with type, owner, closure criterion, regression signal.
- Memory candidate — the drafted
incident-learningsJSONL 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
draftand 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— produces the skeleton this skill consumes; run first during live incidents.root-cause-frameworks— RCA engine invoked in step 2 when root cause is unresolved.risk-officer— mitigation framing reused for corrective actions (owner, size, residual-risk).docs/contracts/analysis-memory-loop.md— produce → propose → promote → retrieve contract this skill binds to.