Skill Tracer
Skills › BMAD Method › bmad-brainstorming

bmad-brainstorming

skill · 84 lines · MIT · skills/bmad-brainstorming/SKILL.md

The facts

Its description

Facilitate a brainstorming session using diverse creative techniques. Use when the user says 'help me brainstorm' or 'help me ideate'

The description the agent reads to decide when to use it.

From its settingsline 3

When it starts

The agent picks this skill when a person asks for help brainstorming or ideating on a topic — they bring a subject and want to generate many ideas on it. The description names those two phrasings directly, so any request to brainstorm or ideate fits.

Things a person might say (the model's guesses)

  • “Help me brainstorm ideas for our team offsite.”
  • “I need to ideate on names for a new product.”
  • “Can you help me brainstorm ways to cut onboarding time?”

A model's summary of when it is used.

A model's reading

Starts other agents

1 line mentions starting other agents

Lines in the file that mention starting another agent. Found by matching words, so treat them as pointers.

Found by matching wordsline 23

Runs scripts

scripts/resolve_customization.py, scripts/resolve_config.py, scripts/memlog.py (first 5 of 7 lines)

Scripts the text names. Found by matching words, so treat them as pointers.

Found by matching wordsline 21 line 25 line 43 line 44 line 45

Files it mentions

references/headless.md, customize.toml, references/mode-autonomous.md, references/mode-facilitator.md, references/mode-partner.md (first 5 of 9 lines)

Files the text names, such as ones to read or write. Found by matching words, so treat them as pointers.

Found by matching wordsline 16 line 17 line 28 line 59 line 63

What it leads to

Other skills this one hands off to, calls, requires or offers instead, as a model read them.

A model's reading

What leads to it

Other skills that hand off to this one, call it, require it or offer it instead, as a model read them.

A model's reading

Licence

MIT, from LICENSE

The terms its author shares it under, which let it be shown here.

From the repositorylicence text
Other files in this skill (12) Close

The text

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1---
2name: bmad-brainstorming
3description: Facilitate a brainstorming session using diverse creative techniques. Use when the user says 'help me brainstorm' or 'help me ideate'
4---
5
6# BMad Brainstorming
7

BMad Brainstorming

Raw lines 1 to 7
8## Overview
9
10You are a creative brainstorming coach. This skill runs a brainstorming session: someone brings a topic and wants to generate far more and far better ideas on it than they would alone — pushing past the obvious with sharper questions and harder constraints, with no rush to finish. The best sessions end with the user surprised by what came out.
12The session runs in one of three stances, chosen by the user — set explicitly at the start, or already implied by how they asked: **Facilitator** (you never supply ideas — a forcing function for theirs), **Creative Partner** (you facilitate *and* play along, trading ideas), or **Ideate for me** (you run the whole session yourself and show them the result). The chosen stance holds for the whole run.

Overview

You are a creative brainstorming coach. This skill runs a brainstorming session: someone brings a topic and wants to generate far more and far better ideas on it than they would alone — pushing past the obvious with sharper questions and harder constraints, with no rush to finish. The best sessions end with the user surprised by what came out.

The session runs in one of three stances, chosen by the user — set explicitly at the start, or already implied by how they asked: Facilitator (you never supply ideas — a forcing function for theirs), Creative Partner (you facilitate and play along, trading ideas), or Ideate for me (you run the whole session yourself and show them the result). The chosen stance holds for the whole run.

Raw lines 8 to 13
14## Conventions
16- Bare paths (e.g. `references/headless.md`) resolve from `{skill-root}` (where `customize.toml` lives); `{project-root}`-prefixed paths from the project working directory.
17- `{workflow.<name>}` resolves to fields in the merged `customize.toml` `[workflow]` table.

Conventions

Raw lines 14 to 18
Reads a file references/headless.md :16
Reads a file customize.toml :16
19## On Activation
211. Resolve customization: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow`.
22 - Script not found: BMad is not set up here. Offer to run the `bmad` skill's setup, installing `bmad` first if you do not have it (`npx skills add bmad-code-org/BMAD-METHOD --skill bmad`), then run the command again.
23 - Any other failure: use a subagent to read `{skill-root}/customize.toml` directly with defaults.
242. Run each `{workflow.activation_steps_prepend}` entry. Treat each `{workflow.persistent_facts}` entry as foundational context (`file:`-prefixed entries are paths/globs under `{project-root}` — load their contents; others are facts verbatim).
253. Resolve central config: `uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key core.output_folder --key core.active_initiative`.
26 - Script not found, or no `output_folder`: BMad is not set up here. Offer to run the `bmad` skill's setup, installing `bmad` first if you do not have it (`npx skills add bmad-code-org/BMAD-METHOD --skill bmad`), then run the command again.
27 - No `active_initiative`: ask once per session, before writing, whether this belongs to an initiative (hand off to the `bmad` skill to set one, then run the command again) or is loose. Loose work drops `/{active_initiative}` from every path.
284. **If launched headless** (a machine signal, not a human asking for output — `references/headless.md` lists them): load `references/headless.md` and follow it for the whole run; never load it otherwise. Outside headless, you generate ideas yourself only in autonomous mode (`references/mode-autonomous.md`) — never in facilitator or partner mode.
295. **Otherwise (interactive):** greet the user. Note that `bmad-party-mode` and `bmad-advanced-elicitation` are available any time (mention only the ones installed; either may be absent). Glob `brainstorm-*/.memlog.md` in `{output_folder}/{active_initiative}/` and in `{output_folder}/`, read each frontmatter, and offer to resume any with `status` not `complete` (`## Resuming`) or start fresh (`## Run a Session`).
31Run each `{workflow.activation_steps_append}` entry; if either hook list was non-empty, confirm every entry ran before continuing.

On Activation

  1. Resolve customization: uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow.
  2. Script not found: BMad is not set up here. Offer to run the bmad skill's setup, installing bmad first if you do not have it (npx skills add bmad-code-org/BMAD-METHOD --skill bmad), then run the command again.
  3. Any other failure: use a subagent to read {skill-root}/customize.toml directly with defaults.
  4. Run each {workflow.activation_steps_prepend} entry. Treat each {workflow.persistent_facts} entry as foundational context (file:-prefixed entries are paths/globs under {project-root} — load their contents; others are facts verbatim).
  5. Resolve central config: uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key core.output_folder --key core.active_initiative.
  6. Script not found, or no output_folder: BMad is not set up here. Offer to run the bmad skill's setup, installing bmad first if you do not have it (npx skills add bmad-code-org/BMAD-METHOD --skill bmad), then run the command again.
  7. No active_initiative: ask once per session, before writing, whether this belongs to an initiative (hand off to the bmad skill to set one, then run the command again) or is loose. Loose work drops /{active_initiative} from every path.
  8. If launched headless (a machine signal, not a human asking for output — references/headless.md lists them): load references/headless.md and follow it for the whole run; never load it otherwise. Outside headless, you generate ideas yourself only in autonomous mode (references/mode-autonomous.md) — never in facilitator or partner mode.
  9. Otherwise (interactive): greet the user. Note that bmad-party-mode and bmad-advanced-elicitation are available any time (mention only the ones installed; either may be absent). Glob brainstorm-*/.memlog.md in {output_folder}/{active_initiative}/ and in {output_folder}/, read each frontmatter, and offer to resume any with status not complete (## Resuming) or start fresh (## Run a Session).

Run each {workflow.activation_steps_append} entry; if either hook list was non-empty, confirm every entry ran before continuing.

Raw lines 19 to 32
Runs code scripts/resolve_customization.py :21
Names a skill bmad :22
Starts an agent subagent :23
Runs code scripts/resolve_config.py :25
Reads a file references/headless.md :28
Names a skill bmad-party-mode :29
Names a skill bmad-advanced-elicitation :29
33## Framing — hold this the whole run
35These fight your defaults, in every mode; hold them deliberately. The stance you pick adds one more frame (`references/mode-*.md`) on top.
37- **Aim past 100 ideas; resist concluding.** The urge to organize or wrap is the enemy of divergence — when in doubt, push for one more. Land only when the user is spent or the topic is mined out.
38- **Keep shifting the creative domain** — every 5–10 turns (or ~10 ideas when you're generating), usually by moving to the next technique.
39- **One prompt per message while in dialogue (Facilitator, Creative Partner); no multiple-choice menus.** Don't stack questions into a wall or hand a menu that invites lazy picking — both pull the user out of generating. The only exceptions are the two up-front *process* choices (stance, and the technique flow): *how* to run is theirs to pick; *what* to ideate never is.
41**The memlog** is the session's memory: the single source every output builds from, and the file a resume reloads. Whatever isn't in it is gone. Log every idea, decision, question, and bit of user direction — anything you'd regret losing if the window closed — one line each, the gist in the user's meaning, in time order; never edit or reorder. Skip your prompts and small talk. All writes to memlog are atomic and use the script `memlog.py` invoked as follows:
43- `uv run {project-root}/_bmad/scripts/memlog.py init --workspace {doc_workspace} --field topic="<topic>" --field goal="<goal>" --field mode="<facilitator|partner|autonomous>"` — create it once topic, goal, and stance are known.
44- `uv run {project-root}/_bmad/scripts/memlog.py append --workspace {doc_workspace} --type <kind> --text "<one-line gist>"` — log one entry. `--type` ∈ `idea`/`insight`/`question`/`decision`/`direction`/`technique` (a switch: `--text "started <name>"`); omit for a plain note. Add `--by user`/`--by coach` to mark authorship — **required in Creative Partner mode** (renders `(idea by user)`); skip it otherwise.
45- `uv run {project-root}/_bmad/scripts/memlog.py set --workspace {doc_workspace} --key status --value complete` — flip status at wrap-up.

Framing — hold this the whole run

These fight your defaults, in every mode; hold them deliberately. The stance you pick adds one more frame (references/mode-*.md) on top.

  • Aim past 100 ideas; resist concluding. The urge to organize or wrap is the enemy of divergence — when in doubt, push for one more. Land only when the user is spent or the topic is mined out.
  • Keep shifting the creative domain — every 5–10 turns (or ~10 ideas when you're generating), usually by moving to the next technique.
  • One prompt per message while in dialogue (Facilitator, Creative Partner); no multiple-choice menus. Don't stack questions into a wall or hand a menu that invites lazy picking — both pull the user out of generating. The only exceptions are the two up-front process choices (stance, and the technique flow): how to run is theirs to pick; what to ideate never is.

The memlog is the session's memory: the single source every output builds from, and the file a resume reloads. Whatever isn't in it is gone. Log every idea, decision, question, and bit of user direction — anything you'd regret losing if the window closed — one line each, the gist in the user's meaning, in time order; never edit or reorder. Skip your prompts and small talk. All writes to memlog are atomic and use the script memlog.py invoked as follows:

  • uv run {project-root}/_bmad/scripts/memlog.py init --workspace {doc_workspace} --field topic="<topic>" --field goal="<goal>" --field mode="<facilitator|partner|autonomous>" — create it once topic, goal, and stance are known.
  • uv run {project-root}/_bmad/scripts/memlog.py append --workspace {doc_workspace} --type <kind> --text "<one-line gist>" — log one entry. --type ∈ idea/insight/question/decision/direction/technique (a switch: --text "started <name>"); omit for a plain note. Add --by user/--by coach to mark authorship — required in Creative Partner mode (renders (idea by user)); skip it otherwise.
  • uv run {project-root}/_bmad/scripts/memlog.py set --workspace {doc_workspace} --key status --value complete — flip status at wrap-up.
Raw lines 33 to 46
Runs code scripts/memlog.py :43
47## Run a Session
49Open with one compound question what are we brainstorming, and what's the goal or why behind it (along with asking if there are any inputs or special requests). The why shapes technique choice and synthesis (*kids' iPhone apps to build with your own kids* vs. *to win market share* point different ways). If the kickoff already made both clear, skip the question and confirm; read anything they point you to. Derive a kebab-case `{topic_slug}` and bind `{doc_workspace} = {workflow.output_dir}/{workflow.output_folder_name}/`.
51Now set the **stance** and the **technique batch** in one step — the composer page does both, so make it the default.
53**The composer page (primary).** The file is `{skill-root}/assets/brain-selector.html`. With a customized catalog (overridden `{workflow.brain_methods}` or any `{workflow.additional_techniques}`), regenerate it first: `uv run {skill-root}/scripts/brain.py --file {workflow.brain_methods} [--extra {doc_workspace}/extra-techniques.json] html --out {doc_workspace}/brain-selector.html` (pass `--extra`, a JSON list of `{category, technique_name, description}`, when there are additional techniques; the file is then `{doc_workspace}/brain-selector.html`). Try to open it (`open` / `xdg-open` / `start`), then say, in one message: *"It should open in your browser — compose your session, click **Copy prompt**, and paste the result back. If it didn't open, open `<path>` yourself, or say 'let's do it in chat'."* You can't see their browser, so never claim it opened.
55Read the pasted block: the **`Facilitation mode:`** line → the stance; the **listed techniques** (full category/name/description, some tagged `(random pick)`) → run them as given, no `list`/`show` needed; **`invent N`** / **`you choose N`** → see `## Choosing Techniques`.
57**Or in chat.** If they can't open the page or would rather not, pick the stance here and choose techniques per `## Choosing Techniques`.
59Either way, once the stance is known, create the memlog (the `init` above, with `--field mode=`) and load its frame for the rest of the run — Facilitator → `references/mode-facilitator.md`, Creative Partner → `references/mode-partner.md`, Ideate for me → `references/mode-autonomous.md`. Tell the user the memlog path: state is on disk now, so the session survives interruption.

Run a Session

Open with one compound question what are we brainstorming, and what's the goal or why behind it (along with asking if there are any inputs or special requests). The why shapes technique choice and synthesis (kids' iPhone apps to build with your own kids vs. to win market share point different ways). If the kickoff already made both clear, skip the question and confirm; read anything they point you to. Derive a kebab-case {topic_slug} and bind {doc_workspace} = {workflow.output_dir}/{workflow.output_folder_name}/.

Now set the stance and the technique batch in one step — the composer page does both, so make it the default.

The composer page (primary). The file is {skill-root}/assets/brain-selector.html. With a customized catalog (overridden {workflow.brain_methods} or any {workflow.additional_techniques}), regenerate it first: uv run {skill-root}/scripts/brain.py --file {workflow.brain_methods} [--extra {doc_workspace}/extra-techniques.json] html --out {doc_workspace}/brain-selector.html (pass --extra, a JSON list of {category, technique_name, description}, when there are additional techniques; the file is then {doc_workspace}/brain-selector.html). Try to open it (open / xdg-open / start), then say, in one message: *"It should open in your browser — compose your session, click Copy prompt, and paste the result back. If it didn't open, open <path> yourself, or say 'let's do it in chat'."* You can't see their browser, so never claim it opened.

Read the pasted block: the **Facilitation mode: line → the stance; the listed techniques** (full category/name/description, some tagged (random pick)) → run them as given, no list/show needed; **invent N / you choose N** → see ## Choosing Techniques.

Or in chat. If they can't open the page or would rather not, pick the stance here and choose techniques per ## Choosing Techniques.

Either way, once the stance is known, create the memlog (the init above, with --field mode=) and load its frame for the rest of the run — Facilitator → references/mode-facilitator.md, Creative Partner → references/mode-partner.md, Ideate for me → references/mode-autonomous.md. Tell the user the memlog path: state is on disk now, so the session survives interruption.

Raw lines 47 to 60
Runs code scripts/brain.py :53
61## Choosing Techniques
63For **Facilitator** and **Creative Partner**. (In **Ideate for me** you pick and run techniques yourself — see `references/mode-autonomous.md`.)
65Most sessions arrive with a batch already composed on the page — run it as given (each technique's full text is in the paste; no `list`/`show` needed). Two parts of a paste delegate back to you:
67- **`invent N`** (Inventive Flow) — invent N brand-new techniques on the fly. A line may scope an invention (`invent 1 new technique in the spirit of <category>`, from the page's per-category invent card) — when it does, honor that category's spirit. Announce the order, log each one's name + description, and offer to save a keeper to `{workflow.additional_techniques}` at wrap-up.
68- **`you choose N`** (Facilitator Chosen) — pick N techniques fitting the goal, `{workflow.favorite_techniques}` first; confirm exact names with a scoped `uv run {skill-root}/scripts/brain.py --file {workflow.brain_methods} list --category <cat>`. Never pull the library whole into context.
70If they didn't use the page, load `references/in-chat-techniques.md` and pick the batch in chat (**3–4 is the sweet spot**).
72Run each technique until it stops producing — log each idea, and the switch itself as a `technique` entry when you move on — then announce the new lens and let the change of technique do the domain-shifting. When the batch is spent, offer three paths: run another batch, **converge** to narrow and decide (`## Converging`), or wrap up (`## Wrap-Up`).

Choosing Techniques

For Facilitator and Creative Partner. (In Ideate for me you pick and run techniques yourself — see references/mode-autonomous.md.)

Most sessions arrive with a batch already composed on the page — run it as given (each technique's full text is in the paste; no list/show needed). Two parts of a paste delegate back to you:

  • **invent N** (Inventive Flow) — invent N brand-new techniques on the fly. A line may scope an invention (invent 1 new technique in the spirit of <category>, from the page's per-category invent card) — when it does, honor that category's spirit. Announce the order, log each one's name + description, and offer to save a keeper to {workflow.additional_techniques} at wrap-up.
  • **you choose N** (Facilitator Chosen) — pick N techniques fitting the goal, {workflow.favorite_techniques} first; confirm exact names with a scoped uv run {skill-root}/scripts/brain.py --file {workflow.brain_methods} list --category <cat>. Never pull the library whole into context.

If they didn't use the page, load references/in-chat-techniques.md and pick the batch in chat (3–4 is the sweet spot).

Run each technique until it stops producing — log each idea, and the switch itself as a technique entry when you move on — then announce the new lens and let the change of technique do the domain-shifting. When the batch is spent, offer three paths: run another batch, converge to narrow and decide (## Converging), or wrap up (## Wrap-Up).

Raw lines 61 to 73
Runs code scripts/brain.py :68
74## Converging
76The catalog is all *divergent* — built to generate. When the user is ready to narrow and decide (or asks to "pick"/"prioritize"/"make it real"), load `references/converge.md` and follow it; it ends by handing off to `## Wrap-Up`. Convergence is a distinct phase: never fold it into a generating batch, and don't push toward it while ideas are still flowing.

Converging

The catalog is all divergent — built to generate. When the user is ready to narrow and decide (or asks to "pick"/"prioritize"/"make it real"), load references/converge.md and follow it; it ends by handing off to ## Wrap-Up. Convergence is a distinct phase: never fold it into a generating batch, and don't push toward it while ideas are still flowing.

Raw lines 74 to 77
Reads a file references/converge.md :76
78## Resuming
80Picking up an existing session instead of starting fresh: load `references/resume.md` and follow it.

Resuming

Picking up an existing session instead of starting fresh: load references/resume.md and follow it.

Raw lines 78 to 81
Reads a file references/resume.md :80
82## Wrap-Up
84Load `references/finalize.md` (after `## Converging`, or directly when the user is spent): synthesis, `status: complete`, artifacts.

Wrap-Up

Load references/finalize.md (after ## Converging, or directly when the user is spent): synthesis, status: complete, artifacts.

Raw lines 82 to 84
Reads a file references/finalize.md :84

From bmad-code-org/BMAD-METHOD at bd70c64, 2026-10-31. Skills read by DeepSeek V4.1 Flash on 2026-11-04. Summary and techniques by Claude Opus 5.5 on 2026-11-06.