incident-postmortem-research
The "learn from somebody else's bad day" skill. Most incidents in dev tooling, supply chain, and AI systems get publicly analyzed — the org can absorb the lesson without paying for the incident.
When to use
- New publicly-reported incident affecting dev tooling, supply chain, or AI systems.
- Decision under consideration: would adopting X expose the org to the same pattern that hit Y?
- After a near-miss internally: similar published incidents to learn from?
- Annual portfolio retro: what classes of incident affected peers this year?
When NOT to use
- Internal incidents → handled via the org's incident-response process, not this skill.
- Current event reporting →
weekly-intelligence-digestcovers the recurring case. - Generic supply-chain research →
supply-chain-security-watchfor landscape; this skill for specific incidents.
Obsidian-first workflow (mandatory)
- Query the vault first via
vault-querier:- Full-text search the incident's name and key terms across
vault/research/incident/**,vault/research/sdlc-best-practice/**andvault/research/supply-chain/**(older incident notes live there), relevantvault/facts/**entities, and recentvault/digests/**(last 90 days —daily-cve-digestandweekly-intelligence-digestoften carry first reports of the incident). - Backlink check on the incident's entities (affected vendor, ecosystem, technique).
- Full-text search the incident's name and key terms across
- Triage findings:
- If the vault already covers this incident fully → return the existing analysis with source citations (vault path + original source URLs). No new write.
- If partial (e.g. first report captured but no postmortem analysis) → identify the gap. Web research targets only the gap.
- If empty → full web research.
- A gap means the vault has no note ≤90 days old answering the question.
- Web research (only on confirmed gaps):
- Use
source-fetcher(withprompt-injection-guard) on the source taxonomy below, preferring the vendor's official postmortem and CISA advisories over commentary. - Extract claims via
claim-extractor.
- Use
- Verify load-bearing claims via
verify-claim(3-vote refute):- The vendor's own disclosure and CISA advisories are tier-1 (no verification); attribution claims, impact estimates, and analyst reconstructions of the attack chain get the full 3-vote treatment.
- Write the research note via
digest-writer(which delegates the file write tovault-writer.write_research):- Path:
vault/research/incident/YYYY-MM-DD-{slug}.md - Frontmatter per
research.ymlschema:topic: incident,question,sources,findings_count,verified_claims. - Body: TL;DR + the 5-dimension framing below + Sources (with credibility-tier badges).
- Path:
- Stage promotable claims to
_inbox/incident-postmortem-research/:- Any verified fact-typed claim (e.g. a confirmed missing-control pattern worth adding to the threat catalog) →
_inbox/incident-postmortem-research/{timestamp}-{slug}.mdwithsuggested_surface: factsand asuggested_pathunder the matchingfacts/entity. memory-curatordecides on its next sweep.
- Any verified fact-typed claim (e.g. a confirmed missing-control pattern worth adding to the threat catalog) →
Source taxonomy
- Vendor incident disclosures — official post-mortems and security advisories.
- CISA advisories — KEV (Known Exploited Vulnerabilities) catalog + CISA ICS / CSAS advisories.
- OpenSSF / community advisories — supply-chain-specific incident analyses.
- Analyst commentary — named-analyst incident analyses (Krebs, Wired, The Hacker News post-mortems).
- Peer-bank disclosures — when a peer bank publicly discloses (uncommon but valuable when present).
- Academic / research conference postmortems — USENIX, Black Hat, DEF CON.
Output framing per incident
Each incident gets analyzed on 5 dimensions:
- What happened — the technical chain.
- Missing control — what specific control would have prevented or detected.
- Bank posture — does the org's current posture address the missing control?
- Lesson — generalized takeaway.
- Action — what (if anything) does this trigger for the org?
Composes with
supply-chain-security-watch— broader landscape context.threat-model-helper— when an incident pattern should be added to the threat catalog.secure-design-reviewer— when an incident reveals a control category gap.executive-summary-writer— only when the user explicitly asks for an exec summary (never auto-invoked after vault write). Takes the just-written research note's path and produces a 1-page summary tuned to a named audience (CISO, VP Eng, etc.).email-sender— aftervault-writer.write_research()succeeds, invokeprompt_then_send(path)to ask the user whether to distribute the note via Gmail.
Acceptance test (for step 31 done-criteria)
The Mini Shai-Hulud research at [[2026-06-20-actions-hardening-post-shai-hulud]] is an existing instance of this skill's output. The 5-dimension framing is implicit in that note. No new live exercise required for step 31's acceptance.