Skills bmad-code-org bmad-method BMad Method
bmad-party-mode
- Use it when:
- You want several perspectives on a topic at once, argued out like a group chat rather than filed as reports.
- It does:
- Voices the installed BMad agents, a saved group, or a cast you name inline, and pulls you into the conversation.
- Keeps:
- The clash: voices push back, take sides and aren't reconciled into a tidy consensus.
- Modes:
- One mind voicing every persona by default; real subagents every round or only when independent thinking matters; or a persistent agent team in Claude Code.
- You get:
- An open-ended discussion; at the end, the best takeaways and an optional HTML keepsake; the default room remembers past sessions, a saved group only if set to.
- Also:
- Creates custom parties, such as a focus-group panel distilled from customer data.
- Needs:
- uv and BMad set up in the project: run the bmad skill's setup first.
Skill 21 of 24 in the BMad Method bundle, after bmad-advanced-elicitation and before bmad-customize.
Only works inside its bundle: Runs its scripts from the _bmad/ folder that the bmad skill's setup creates, and offers that setup when it's missing. Install BMad Method instead.
Needs uv and BMad set up in the project: it runs scripts from the _bmad/ folder that the bmad skill's setup creates.
TL;DR
The agent becomes the orchestrator of a round-table. A script supplies the roster: the default party if one is set, otherwise the installed BMad agents. A cast you name inline takes over for the session, and you can switch groups or summon any member by name midway. Agents whose skills aren't installed are still voiced from their persona. The bar is a group chat, not a panel: short turns, distinct and unequal voices, disagreement left unresolved, characters who talk to you and build running jokes and grudges, staging played as written, and no summaries unless you ask. It runs round after round until you signal you're done; only an explicit --non-interactive run closes by itself. Then it reads back the best takeaways, tops up the party's memory when it keeps one, offers a self-contained HTML keepsake laid out by persona, and offers to save walk-on characters to your party settings. The built-in members include code reviewers such as a security engineer, an adversary and an edge-case hunter.
Summarizes the skill at e734d3a.
npx skills add https://github.com/bmad-code-org/bmad-method --skill bmad-party-mode skills.sh pageSource on GitHubAll skills from bmad-code-org/bmad-method
- Total Downloads
- 14,300 on skills.sh, Nov 9, 2026
- Repo stars
- 55,140 bmad-code-org/bmad-method
- First seen
- Mar 12, 2026 on skills.sh
Weekly values
| Week to | Installs |
|---|---|
| Sep 21 | 941 |
| Sep 28 | 1,193 |
| Oct 5 | 2,302 |
| Oct 12 | 2,511 |
| Oct 19 | 1,416 |
| Oct 26 | 1,584 |
| Nov 2 | 1,368 |
| Nov 9 | 1,454 |
| Category |
Build agents, orchestrate workers and give agents memory. Everything for building software: planning, coding, debugging, design, frameworks, cloud, agents and skills. |
|---|---|
| Type |
Changes how the agent talks or behaves for the rest of the session. |
| Effect |
Its own steps create or change files, git state or local tools. |
| Needs |
A specific command-line tool or desktop app must be installed, such as gh, agent-browser, LibreOffice, Obsidian or a vendor CLI. |
| Publisher |
Everyone else. Unverified vendor claims default to community. |
| Topics |
SKILL.md
From bmad-code-org/bmad-method at e734d3a. Checked daily, last changed Nov 6, 2026.
Frontmatter
name: bmad-party-mode
description: 'Orchestrates lively group discussions between installed BMAD agents or custom personas, and helps author custom parties. Use when the user requests party mode, a roundtable, or multiple agent perspectives — or wants to create/configure a party, define personas, or build an AI focus-group panel'Party Mode
Run a round-table where these agents talk to each other and to the user like real, distinct people in conversation. You're the orchestrator.
Conventions
- Paths: bare paths (e.g.
references/create-party.md) resolve from{skill-root}(wherecustomize.tomllives);{project-root}-prefixed paths from the project working dir.{workflow.<name>}resolves tocustomize.toml's[workflow]table (overrides win). - Scripts (run via
uv run):{project-root}/_bmad/scripts/resolve_config.pyresolves central config (four-layer TOML merge);{project-root}/_bmad/scripts/roster.pyreports the agents, guests and groups the installed skills offer;{project-root}/_bmad/scripts/resolve_customization.pyresolves{workflow.*};{skill-root}/scripts/resolve_party.pyresolves the roster,party_mode,memory_enabled, and scene/open_cast;{project-root}/_bmad/scripts/memlog.pyreads/writes per-party memory. - File roles: a party's memory is the per-party memlog at
{workflow.memory_dir}/<party>/.memlog.md; custom members and groups live in the user'scustomize.tomloverrides. Mechanics inreferences/party-memory.md(memory) andreferences/create-party.md(authoring). - Search: Web-search, don't guess — anything past your cutoff or unfamiliar; subagents too.
On Activation
-
Resolve customization:
uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow.- Script not found: BMad is not set up here. Offer to run the
bmadskill's setup, installingbmadfirst if you do not have it (npx skills add bmad-code-org/BMAD-METHOD --skill bmad), then run the command again. - Any other failure: read
{skill-root}/customize.tomldirectly and use defaults.
Then run each
{workflow.activation_steps_prepend}entry, and hold each{workflow.persistent_facts}entry as session-long context (file:-prefixed = paths/globs whose contents load as facts;skill:-prefixed = a skill to consult; others = literal facts). - Script not found: BMad is not set up here. Offer to run the
-
Resolve core config:
uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key core.output_folder --key core.active_initiative. Greet the user.- Script not found, or no
output_folder: BMad is not set up here. Offer to run thebmadskill's setup, installingbmadfirst if you do not have it (npx skills add bmad-code-org/BMAD-METHOD --skill bmad), then run the command again. - No
active_initiative: ask once per session, before writing, whether this belongs to an initiative (hand off to thebmadskill to set one, then run the command again) or is loose. Loose work drops/{active_initiative}from every path.
- Script not found, or no
-
Detect intent and route. If they want to create or configure a saved party setup (invent a cast, add a persona, distill customer data into a focus-group panel, set a default, or edit an existing custom party), load
references/create-party.mdand follow it. Otherwise run a party — continue below. -
Resolve the roster:
uv run {skill-root}/scripts/resolve_party.py --project-root {project-root} --skill {skill-root}. It returns the active roster ({workflow.default_party}group if set, else the installed agents), the other group names (yours, the built-in ones, and any an installed module offers),party_mode,memory_enabled, and any scene/open_cast. Apply them:openalready in the scene and let it shape how the room behaves; castopen_castrooms on the fly (whoever fits the moment, varying as the topic shifts); ifinstalled_agents_resolvedis false, codes come backunresolved, orroster_problemsis present, tell the user, carry on with what returned, and improvise. A member markedinstalled: falseis an agent whose skill is absent: voice them from theirpersonaas usual, and mention theirinstallcommand once if the user would want the full agent. Overrides: an inline-named cast IS the roster for the session (conjure them, go straight in);--party <id>(alias--group <id>) overrides the configureddefault_party(unknown id -> show the available names and ask);--list-groupsfor just the menu. Mid-session the same levers apply: switch rooms by re-runningresolve_party.py --party <id>and carrying the thread over, or summon any collective member by name. -
Memory. If
memory_enabled(fromresolve_party.py), followreferences/party-memory.mdfor the whole run. -
Welcome the user: show who's in the room (icon, name, one-line role); note other groups can be switched to. Then ask what they want to get into, unless it's already obvious from how the skill was launched.
-
Run each
{workflow.activation_steps_append}entry; if either hook list was non-empty, confirm every entry ran before continuing.
Keep It Feeling Like a Party
This is the bar — strive for every one of these, every round. It's the difference between a party and a panel:
- It reads like people talking, not a report. Short turns, real reactions, banter, momentum — a group chat, not a stack of memos. Brevity by default: a persona goes long only when asked. The instant it reads like answers being filed, the party's dead.
- Every voice is unmistakably itself. Diction, humor, pet peeves, ethos, embedded capabilities — hide the labels and you'd still know who's speaking. Voices are unequal and idiosyncratic: someone dominates, someone keeps dragging it back to their pet topic. Vary who's in the spotlight round to round. A balanced panel is boring.
- They clash, and you don't resolve it. Challenge, push back hard, get heated when it's warranted; alliances and factions form. Your instinct is to reconcile the voices and tie a bow — resist it. Clean consensus that took no effort is where the party dies.
- One exchange, woven — never softened. Present a single conversation — turns as
{icon} **{name}:**, back to back — not a row of answers. Add staging and connective tissue, but never change what a persona argued, and never paraphrase their speech in third person; let them say it. Weave the delivery, keep the substance. - Pull the user into the room. Characters talk to them (and each other) — challenge, tease, put a question back. They're a guest who got pulled into the argument, not someone running a panel from outside.
- Make the collision earn its keep. Push the voices until their clash surfaces an angle no single one of them (or you) would've reached alone. That's the whole point of more than one mind in the room.
- Let a history form. Grudges, alliances, a running bit, a callback to three turns back — let the relationships accrue so these people feel like they're becoming something across the session, not resetting each turn.
- Commit to the fiction. The scene and each persona are binding — play the staging, the characters, and the world around the table (stage business, a non-verbal beat, an event that lands mid-sentence) exactly as written, and carry both into any spawned brief. Never break the fourth wall about the mechanism (no "you have 4 agents in the room"). Lean into the world when it heightens the moment; stay out when the scene is just a room.
- When it sags, change something — don't force it. A flat turn? Move on, don't retry it. Drifting into Q&A or going in circles? Bring in a new voice, crack a joke, name the impasse, or ask where they want to take it. Never work in a summary or takeaways — they're there if the user asks.
How It Runs
Use {workflow.party_mode} for the session unless the user passed --mode <session|auto|subagent|agent-team> (the older --subagents means subagent) — runtime intent always wins. One mode is active at a time; if its mechanism isn't available in your harness, fall back to session without comment.
A party is interactive and open-ended. The opening prompt is a topic to dig into, not a task that ends the party once it's answered — it runs round after round until the user signals done (see Wrapping Up). A served opening intent means what's next?, never we're finished: don't wrap up, disband the room, or close spawned agents just because the first ask is satisfied. The one exception is an explicit --non-interactive — run the party on the given intent to a natural close, then wrap up and release any agents. That's the only non-interactive path, and only when the user asked for it.
session— voice every persona inline, one mind behind every voice. The floor every other mode degrades to; needs no extra instructions.auto— voice inline for ordinary back-and-forth, spawn real agents only when independent thinking changes the outcome. Loadreferences/mode-auto.mdfor that call; when it says to spawn, followreferences/mode-subagent.md.subagent— a real agent behind each persona every substantive round so each thinks independently. Loadreferences/mode-subagent.md, favor faster cheaper models if available for each subagent.agent-team— stand the personas up as a persistent team who address each other directly (Claude Code only). Loadreferences/mode-agent-team.md.
Wrapping Up
When the user signals done — read the room, don't wait for a magic word — or an explicit --non-interactive run has served its intent (never merely because the opening prompt got answered):
- Read back the best takeaways.
- If memory is on, top up the memlog with the final outcome and any memorable beat not yet captured (
references/party-memory.md) — a top-up; memory accrued live. - Offer a keepsake: a single self-contained very creative HTML of the session, laid out by persona (icons, names, voice), genuinely nice remembrance, with inline SVG/light animation where it lifts the piece — written as
party-<slug>/party-<slug>.htmlin{workflow.output_dir}/,<slug>the session's topic in kebab-case, or wherever they ask. - If memory is on and new faces showed up who aren't in the party's roster (open-cast walk-ons, or members the user added on the fly), offer once to save them into the users party customization - if yes then follow the instruction in
references/create-party.md(declinable; don't stall the close). - Run
{workflow.on_complete}if non-empty, then drop back to normal mode.