* feat(bmad): add BMad control-plane protocol skill New standalone methodology skill that lets any agent run the BMad method (Breakthrough Method of Agile AI-Driven Development) as a harness-agnostic control-plane protocol: five-field intent contracts, direct/bounded/initiative classification, review-as-triage, failure routing by layer, and autonomy gating with machine-readable spec status. - SKILL.md protocol core with progressive disclosure + When not to use - README.md human-facing install guide - 9 references: protocol, classification, spec, lifecycle, project-context, review-and-failure-routing, autonomy, party-mode, adoption - 4 templates: SPEC, INTENT, STORY, REVIEW - scripts/check-spec.py + 16 tests (stdlib, deterministic spec validation) - evals/evals.json: 9 output-quality cases - Routing seams from bmad to adjacent skills and back from spec-driven-development, product-shaping, implementation-planning, neckbeard - Catalog updates: root README, skill-triggers, marketplace/plugin/llms.txt Closes #399 * fix(bmad): address droid-review findings - check-spec.py: skip headings inside fenced/indented code blocks so a spec cannot PASS on section text that only appears in a code sample - check-spec.py: catch UnicodeDecodeError on non-UTF-8 files and report FAIL instead of crashing - STORY.md template: add created key for resumability/traceability parity - SPEC.md template: split in-progress and in-review status bullets - add 2 regression tests (heading-in-fence, non-UTF-8) * fix(bmad): address droid-review round 2 - check-spec.py: read specs with utf-8-sig so a UTF-8 BOM cannot silently disable the frontmatter status check - check-spec.py: handle standard YAML inline comments after status values (status: draft # pending review) without a false FAIL - references/protocol.md: make lifecycle phrasing consistent with lifecycle.md — four phases plus a learning closeout - add 2 regression tests (BOM, inline comment) * fix(bmad): tolerate trailing whitespace on frontmatter delimiters A spec whose --- delimiter lines carry trailing spaces or tabs would silently disable the status check and let an invalid status PASS. Relax the delimiter pattern and add a regression test. * fix(bmad): ignore inline comments in quoted status values * fix(bmad): tolerate leading blank lines before frontmatter * fix(bmad): fail closed on unparseable frontmatter, matching fence markers Address droid-review round 5 and 6 findings as a single closed class: - Fail closed when a file opens with a --- delimiter that cannot be parsed, so no whitespace/frontmatter permutation can silently disable the status check (previously: unparseable frontmatter was treated as 'no status' warning, letting an invalid status PASS). - Track fence opener markers in collect_headings so a mismatched fence no longer closes a code block early (false-PASS on missing sections) and an unclosed fence no longer swallows real headings. - Accept empty well-formed frontmatter (---\n---) and closing delimiters without a trailing newline. - STORY.md template: parent-spec points at the sibling SPEC.md. - README: status vocabulary is not a strict linear chain; blocked is a resumable routing signal. Whitespace/frontmatter mutation sweep: 9 formatting variants x valid/invalid status all verdict correctly; malformed delimiters fail closed. 29 tests.
2.3 KiB
Party Mode: Multi-Persona Deliberation
Party Mode puts several BMad roles into one conversation to find missing concerns, pressure-test a plan, run a post-mortem, or debate a trade-off. It is a deliberation protocol — not an implementation method.
When to use
- Trade-off decisions with several defensible answers.
- Finding missing concerns before committing to a plan.
- Pressure-testing a plan or spec.
- Post-mortems.
- Design debates.
Execution modes
| Mode | Mechanics | Cost | Independence |
|---|---|---|---|
| session | One model voices all personas inline | Cheapest, most fluid | None — one shared mind |
| auto | Inline unless separate agents would change the answer | Depends | Conditional |
| subagent | Separate agent for each persona in substantive rounds | Higher | Real separation of reasoning paths |
| agent-team | Persistent multi-agent team in supported harnesses | Highest | Real, persistent |
The mode is not cosmetic. Session mode is cheap and fluid but cannot provide genuinely independent reasoning — the perspectives share one underlying mind. Subagent and team modes cost more but reduce shared-context convergence, which is the whole point when independence matters.
The independence caveat
Role names provide continuity, expectations, and a consistent point of view. They do not guarantee separate cognition. Five names in a conversation do not create five minds. Role separation is still valuable with one model — it changes the checklist, priorities, and questions the model is instructed to apply — but never describe it as independent review unless the reasoning paths are actually independent.
Ground rules
- Each persona applies its own checklist and asks its own questions; do not let one persona's conclusion pre-empt another's.
- Surface disagreements explicitly; consensus among personas is not independent validation.
- Converge toward a decision landscape: shared risks, remaining disagreements, confidence, and a recommended path — not a false unanimity.
- End with the decision or the open question that needs the human.
Harness mapping
In this repository, agent-council is the nearest equivalent for genuinely separate
deliberation agents, and agent-evals-and-observability covers independent evaluators.
Use them when the independence of the reasoning paths matters to the decision.