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