Ask first, then swarm
Described transcript
On screen: A single amber point of light in a dark teal cloud, with faint rays spreading from it. The caption reads “Ask first”.
Narration: Before a pack acts, it asks.
On screen: A terminal window titled “~/app”. The command bmad-plus intake plan is typed, pointing at the Design pack’s intake.yaml and an answers file. The view zooms in on the result: “design-read (design): not ready — 0 answered, 0 defaulted, 0 unknown” and, outlined in orange, “Must-haves still open: surface_kind, audience, job”. Below is the first batch of questions (at most 6 per message), each with its type and a “must-have” mark where it applies: surface_kind, audience, job, brand_assets, design_system and aesthetic_family. Then bmad-plus intake record is typed with three answers (surface_kind=dashboard; audience=“Accountants in a practice, on a desktop, at month end”; job=UNKNOWN) and a default for design_system. The next batch of questions follows: brand_assets, aesthetic_family, variance, motion, density and stack. The screen ends on a yellow line, outlined: “Unknown: job — risk: There is no goal to review against, so hierarchy and the primary action cannot be judged, only decorated.”
Narration: The intake puts a few questions at a time and marks the must-haves. Where you have no answer, it proposes a default, or records the question as unknown with its risk.
On screen: Two terminal panes. On the left, bmad-plus intake render is typed and prints “Brief written to _bmad-output/design/brief.md (3238 bytes); the intake is ready.” The right pane opens brief.md and scrolls through it. Under headings such as “Who and why”, each question appears with its answer (“dashboard”; “Accountants in a practice, on a desktop, at month end”) or with “Answer: not asked yet.”, and a line “Feeds: brief.md#…”. The pane stops on a heading, “Open questions”. The first item is outlined: “job (must-have): unknown — risk: There is no goal to review against, so hierarchy and the primary action cannot be judged, only decorated.” Below it, a list of other items, each marked “not asked yet”: brand_assets, aesthetic_family, variance, motion, density, stack, accessibility_target, languages and more.
Narration: The answers become a brief, and nothing in it is invented.
On screen: A terminal. The command bmad-plus swarm init is typed with a swarm definition, a profile, a context file, 40 units (--n 40) and a seed of 7, followed by an echo of the exit code. The output: “buyer-panel-20261018-asuq: needs approval.” (the words “needs approval” are outlined) “The run needs 40 sub-agents and the budget is 26: ask the user, then re-run init with --approved --seed 7.” and “exit code: 2” (outlined). The same command is run again with --approved. The view zooms in on the result, with “panel of 40 units” outlined: “buyer-panel-20261018-zho8: panel of 40 units, budget 26, approval user. Seed 7 (same seed, same cards).” and “Next: bmad-plus swarm briefs buyer-panel-20261018-zho8”.
Narration: Next, the swarm. By default, a run may use 26 sub-agents before the assistant must ask you. Ask for more, and the run waits, marked needs approval, until a person says yes.
On screen: Amber particles fly outward from a bright centre and form a widening ring against a dark purple background. The caption reads “Waves of 10”.
Narration: Once approved, sub-agents work in waves of ten by default, each reading one brief and writing one answer.
On screen: A terminal. bmad-plus swarm briefs buyer-panel-20261018-zho8 prints “40 of 40 units need a sub-agent, in waves of 10.” and lists the briefs wave by wave, each with the path of a brief file (B001.md, B011.md, B021.md, B031.md). Below are the instruction “Each sub-agent: Read the brief and follow it exactly; it is your whole instruction.” and the disclosure line “Simulated units are not people. Read rates as an upper bound and confirm with real ones.” Then bmad-plus swarm check prints “8 of 40 valid answers.” and lists the problems: “B009 invalid: field “buys” must be true or false” (outlined), “B010 missing: no answer file”, “B011 missing: no answer file”, then “B012 … B040 (missing)”.
Narration: The runtime validates every answer file and counts only the valid ones.
On screen: Two terminal panes. The command bmad-plus swarm tally buyer-panel-20261018-zho8 is typed on the left and prints the path of tally.md, “8 of 40 units counted; 32 skipped.” and the “Disclosure:” line. The right pane opens tally.md and scrolls through short quoted replies grouped by segment (mid career, high earner) and behaviour (occasional, explorer, daily regular), then stops on “Numbers: price_floor”: a table with the columns group, count, median, mean, min and max. The first row, “all”, reads 8, 3.65, 3.7, 3 and 4.5. Rows for three segments and three behaviours follow.
Narration: This tally is demo data, and it opens with its disclosure: simulated units are not people.
On screen: Under water: many translucent bubbles drift in blue light, and two of them glow amber and move together until they overlap. The caption reads “Simulated units are not people.”
Narration: Read the rates as an upper bound, and confirm them with real people.