| name | brainstorming-five-whys |
| description | Facilitate a Five Whys root-cause analysis. Invoke when the user needs to find the underlying cause of a project impediment, schedule slip, recurring defect, or stakeholder dissatisfaction signal. |
Adapted from bmad-method:bmad-brainstorming (MIT, © 2025 BMad Code, LLC). See THIRD_PARTY_NOTICES.md.
When to use
Use this skill when a project problem keeps recurring or its immediate cause is clearly a symptom of something deeper. Typical triggers include:
- A sprint impediment that teams have "fixed" before but keeps returning
- A milestone slip whose stated reason is "the schedule was too aggressive" or "requirements changed"
- A recurring defect type surfacing across multiple sprints
- A stakeholder dissatisfaction signal raised in a retrospective or status review
Do not invoke for ambiguous brainstorming or divergent ideation; prefer a convergent root-cause analysis only when a specific, observable problem is on the table.
Summon the SME
Before facilitating, load the canonical Five Whys reference to ground your analysis in established practice.
Reading the config. Check .pm-kit.config.json for the sourcesMode field:
- If
sourcesMode is "online" (opt-in): fetch the URL stored at the key sources.fiveWhys in vendor/pm-kit/sources-index.json using your available web-fetch capability. Do not name a specific tool — use whatever your runtime provides. Ground the facilitation in what you read. Do not fabricate quotations or page numbers from any version of that page.
- If
sourcesMode is "offline" or the field is absent (the default): rely on your general knowledge of the Five Whys technique as developed by Taiichi Ohno and described by the Lean Enterprise Institute. Cite the canonical URL from vendor/pm-kit/sources-index.json at key sources.fiveWhys in the output. Do not fabricate quotations or page numbers.
In both cases, the URL to cite is https://www.lean.org/lexicon-terms/5-whys/.
Facilitation script
Walk the user through these steps in sequence. Do not skip steps or combine them.
Step 1 — Problem statement. Ask the user to state the problem in a single, concrete, time-bounded sentence. Example: "Three of the last four sprint reviews were accepted with open defects on the payment flow." Confirm the statement is observable and bounded before proceeding.
Step 2 — Why #1. Ask: "Why did this happen?" Capture the answer verbatim. Prompt for a causal answer if the user restates the problem instead of explaining it.
Step 3 — Why #2. Ask: "Why did [Why #1 answer] happen?" Capture the answer. Check that the answer is a new causal layer, not a synonym or restatement of the previous answer. If so, prompt the user to go deeper.
Step 4 — Why #3. Repeat the same pattern with Why #2's answer.
Step 5 — Why #4. Repeat with Why #3's answer.
Step 6 — Why #5. Repeat with Why #4's answer. The number five is a guideline, not a hard limit — continue if the root cause has not yet been reached, or stop earlier if the causal chain terminates naturally.
Step 7 — Root cause. Summarize the root cause identified at the bottom of the chain. Confirm with the user that the root cause is actionable and is not an attribution of blame to a person.
Step 8 — Corrective actions. Propose at least two corrective actions that target the root cause, not a symptom. Each action should be assignable to a role or team and time-bounded.
Step 9 — Output. Produce the completed analysis using the structure in TEMPLATE.md (sibling file). Fill every section. Leave no placeholder unfilled.
Step 10 — Save the artifact. Save the filled artifact to docs/pm-kit/outputs/<skill-name>/<short-slug>.md. For this skill, <skill-name> is brainstorming-five-whys. <short-slug> is a kebab-case ASCII slug (max 40 characters) derived from the problem statement (e.g., payment-flow-defects). Confirm the final path with the user before writing. If the target file already exists, ask the user whether to overwrite, append a date suffix (e.g., -2026-04-20), or choose a different slug. The artifact must begin with the three-line provenance header below (preserved as HTML comments so they do not render):
<!-- Generated by agentic-pm-kit:brainstorming-five-whys on YYYY-MM-DD -->
<!-- Languages: communication=<value>, output=<value> -->
<!-- Source mode: offline | online -->
This save-to-disk path and provenance-header pattern are the convention for every skill in the kit; only the skill name in the first comment changes per skill.
Languages
The kit separates the language used for live agent–user dialogue from the language used in the saved artifact. Both values live in .pm-kit.config.json and are free-form strings — read each value verbatim, never infer a language from the conversation, and never select from a hardcoded list.
Facilitation dialogue. Speak to the user during facilitation in the language at language.communication. Use the string verbatim.
Filled artifact (saved TEMPLATE.md output). Produce the written artifact in the language at language.output. If language.output is absent or empty, fall back to language.communication.
Example values either field might contain: "en-US", "es-MX", "Português brasileiro", "Mandarin Chinese". Accept any string as given. This bifurcation is the normative pattern for every skill in the kit.
Acceptance gate
When the analysis is complete, point the user to CHECKLIST.md (sibling file) and ask them to verify each item. Remind them that the output must be marked PASS or FAIL. On FAIL, invite the user to return with specific notes so the facilitation can be resumed or corrected.