---
name: brainstorming-question-storming
description: "Facilitate a Question Storming session that generates a structured bank of questions before any solutions are proposed. Invoke when the user suspects the team is solving the wrong problem, needs to reframe a challenge, or lacks clarity on what is actually being asked."
---

> Adapted from bmad-method:bmad-brainstorming (MIT, © 2025 BMad Code, LLC). See THIRD_PARTY_NOTICES.md.

## When to use

Use this skill when the problem definition itself is in question and generating answers prematurely risks solving the wrong thing. Typical triggers include:

- A project team has jumped to solutions before agreeing on the problem statement
- A stakeholder request is ambiguous and different team members interpret it differently
- A discovery session has stalled because proposed solutions keep getting rejected
- A retrospective has produced symptoms but the underlying challenge remains undefined
- A scope negotiation is failing because parties are arguing past each other

Do not invoke for root-cause drilling on a known, observable failure; use the Five Whys skill instead. Do not invoke when the problem is already precisely defined and the team needs solutions rather than questions.

## Summon the SME

Before facilitating, load the canonical Question Storming reference to ground the session 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.questionStorming` 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 question-generation technique as described by the Right Question Institute's Question Formulation Technique (QFT). Cite the canonical URL from `vendor/pm-kit/sources-index.json` at key `sources.questionStorming` in the output. Do not fabricate quotations or page numbers.

In both cases, the URL to cite is `https://rightquestion.org/what-is-the-qft/`.

## Facilitation script

Walk the user through these steps in sequence. Do not skip steps or combine them.

**Step 1 — Challenge frame.** Ask the user to state the challenge in a single sentence — something the team is currently treating as a problem to solve. Write it down verbatim; it becomes the focal point for the session.

**Step 2 — Question generation.** Instruct the user (and any participants) to generate questions about the challenge for four uninterrupted minutes. Rules: only questions are allowed — no statements, no answers, no justifications. Capture every question verbatim as it is spoken or typed.

**Step 3 — Categorize questions.** Sort the collected questions into four categories: Clarifying (what do we not yet understand?), Probing (what assumptions are embedded in the challenge?), Challenging (what if a stated constraint did not exist?), Re-framing (what if the challenge were defined differently?). A question may belong to more than one category; place it in the most dominant one.

**Step 4 — Prioritize.** Ask the user to identify the three questions that, if answered, would most change how the team approaches the challenge. Label these the Top-3 Priority Questions.

**Step 5 — Commitment.** For each Top-3 question, ask: "Who will pursue an answer to this question, and by when?" Capture the owner and target date.

**Step 6 — Output.** Produce the completed question bank using the structure in `TEMPLATE.md` (sibling file). Fill every section. Leave no placeholder unfilled.

**Step 7 — Save the artifact.** Save the filled artifact to `docs/pm-kit/outputs/brainstorming-question-storming/<short-slug>.md`. `<short-slug>` is a kebab-case ASCII slug (max 40 characters) derived from the challenge frame (e.g., `api-integration-scope`). 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-question-storming on YYYY-MM-DD -->
<!-- Languages: communication=<value>, output=<value> -->
<!-- Source mode: offline | online -->
```

## 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 session 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.
