Use when tracing the root cause of a resolved incident or recurring bug — 5-whys chain, fishbone categorisation, contributing-factors split — even if the user says 'why does this keep breaking?'.
Installs into .claude/skills of the current project.
Are you the author of Root Cause Frameworks?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/event4u-app-root-cause-frameworks)
---
name: root-cause-frameworks
description: "Use when tracing the root cause of a resolved incident or recurring bug — 5-whys chain, fishbone categorisation, contributing-factors split — even if the user says 'why does this keep breaking?'."
domain: quality
model_tier: high
workspaces:
- engineering
packs:
- analysis-workbench
trust:
level: professional
confidence: medium
install:
default: false
removable: true
---
# root-cause-frameworks
> Structured root-cause analysis for resolved incidents and recurring bugs.
> Sibling of [`systematic-debugging`](../systematic-debugging/SKILL.md) (live
> reproduction loop) and [`bug-analyzer`](../bug-analyzer/SKILL.md) (static
> call-site analysis) — this skill takes the post-resolution "why did this
> happen and how do we stop it recurring?" view.
## When to use
- A resolved incident needs a structured cause investigation before
writing the post-mortem.
- A bug recurs and the team needs to understand the underlying system
condition, not just the symptom.
- Invoked directly or by [`blameless-post-mortem`](../blameless-post-mortem/SKILL.md)
to populate the cause section.
Do NOT use when:
- Actively debugging a failing test or unresolved crash — use
[`systematic-debugging`](../systematic-debugging/SKILL.md) instead.
- The goal is to enumerate call-site impact of a change — use
[`blast-radius-analyzer`](../blast-radius-analyzer/SKILL.md) instead.
## Procedure
Work through the three methods in order; return the best-supported result.
### 1. 5-Whys chain
Ask "Why did X happen?" iteratively, attaching **evidence** to each
link. Continue until the link is unfalsifiable, evidence runs out, or
you reach a systemic condition outside the team's control.
Rules:
- Each link must cite at least one piece of evidence (log line, metric,
test failure, code path, human observation). Label unverified links
explicitly as `[speculative]`.
- If a link branches into two independent causes, follow both — a
branching chain is common and valid.
- Stop a branch when: (a) the next Why has no available evidence, or
(b) the answer is outside the system boundary (e.g. "the cloud
provider had an outage").
### 2. Fishbone / Ishikawa (if chain stalls or branches widely)
When the 5-whys chain stalls before reaching a systemic cause, or
branches into more than three independent paths, map contributing
factors across six categories:
| Category | Sample questions |
|---|---|
| People | Knowledge gap, on-call fatigue, ambiguous ownership? |
| Process | Missing review step, deploy gate skipped, alert threshold wrong? |
| Technology | Library version, configuration drift, race condition, hardware limit? |
| Data | Unexpected input shape, stale cache, missing validation, schema mismatch? |
| Environment | Infra difference between environments, dependency version skew? |
| Communication | Unclear spec, siloed knowledge, delayed escalation? |
List each identified factor as a bullet under its category. A factor
may appear in more than one category — that is evidence of a systemic
coupling worth naming.
### 3. Contributing-factors split
Classify every cause surfaced in steps 1–2 into exactly one bucket:
| Bucket | Definition |
|---|---|
| `root` | The condition that, if absent, the incident would not have occurred. |
| `contributing` | A condition that increased likelihood or severity, but not sufficient alone. |
| `amplifying` | A condition that made recovery slower or harder once the incident started. |
| `coincidence` | Present at the time but causally unrelated. |
A well-formed analysis typically has **one** root cause and two to
four contributing causes. Multiple `root` entries indicate the chain
has not been traced far enough, or that the incident was a genuine
compound failure — label it explicitly.
## Output
The output has three ordered sections:
1. **Why-chain** — numbered chain, each link with evidence (or
`[speculative]` flag) and any branch markers.
2. **Cause taxonomy** — each identified cause labelled
`root` / `contributing` / `amplifying` / `coincidence`, with a
one-sentence justification.
3. **Evidence gaps** — explicit list of claims that could not be
verified and what evidence would resolve them. An empty list is
fine; omitting the section is not.
May invoke [`systematic-debugging`](../systematic-debugging/SKILL.md) or
[`bug-analyzer`](../bug-analyzer/SKILL.md) mid-procedure to gather
evidence for a specific hypothesis, then continue the analysis.
## Do NOT
- Do NOT present a `[speculative]` link as confirmed cause.
- Do NOT collapse multiple contributing factors into a single root
cause to produce a cleaner narrative.
- Do NOT invent evidence — if a log line is needed but unavailable,
name the gap.
- Do NOT reproduce the systematic-debugging reproduce → isolate → fix
loop; this skill assumes the bug is already understood or resolved.
## Gotchas
- Single "root cause" is often an oversimplification — a compound
failure with one root and several contributing causes is the norm,
not an edge case.
- An unfalsifiable why-link (e.g. "we don't know") is a stop signal
for that branch; do not guess past it.
- Correlation ≠ causation — require a causal mechanism for every link,
not just temporal proximity.
## See also
- [`blameless-post-mortem`](../blameless-post-mortem/SKILL.md) — invokes
this skill for the cause section.
- [`systematic-debugging`](../systematic-debugging/SKILL.md) — live
reproduction and fix loop.
- [`bug-analyzer`](../bug-analyzer/SKILL.md) — static call-site analysis.
- [`risk-officer`](../risk-officer/SKILL.md) — mitigation framing for
corrective actions after the cause is established.