Files
Magnus HedemarkandGitHub e10508b034 feat(bmad): add BMad control-plane protocol skill (#400)
* 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.
2026-08-24 08:05:43 -04:00

1.7 KiB

status, slug, owner, created
status slug owner created
draft example-change human YYYY-MM-DD

Example Change

Why

What outcome are we trying to create, and why does it matter? Name the user or system that benefits and the cost of not doing it.

Capabilities

  • Capability one — observable behavior the system must have.
  • Capability two — with the actor and the trigger for each.

Constraints

  • Technical boundary (stack, integration, compatibility).
  • Operational boundary (deployment, support, runbooks).
  • Security or privacy boundary (data, access, retention).
  • Time, cost, or organizational boundary.

Non-goals

  • Explicitly excluded behavior — say what this change will NOT do.
  • Deferred items — name where they are tracked so they do not leak back in.

Success signal

  • Observable acceptance criterion (binary: PASS or FAIL is possible).
  • Test or evaluation that demonstrates success.
  • Manual observation that confirms the result in the real environment.

Architecture decisions

  • Decision or link to an ADR for each consequential choice.
  • Boundaries future agents must preserve.

Implementation slices

  1. Story one — bounded, independently finishable unit.
  2. Story two — with its own acceptance criteria.

Verification

  • Tests:
  • Manual observations:
  • Independent review: (who/what — separate evaluator where risk warrants it)

Residual risks and deferred work

  • Risk:
  • Deferred item:

Status history

  • draft — created.
  • ready-for-dev — passed readiness; implementation may start.
  • in-progress — implementation underway.
  • in-review — review or triage underway.
  • done — completed successfully.
  • blocked — cannot continue safely; routing signal for orchestrator or human.