Commit Graph
3 Commits
Author SHA1 Message Date
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
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c0412b51bd docs(skills): add product-shaping routing seams (roadmapping bets boundary, neckbeard feature path)
- product-roadmapping-and-portfolio: name the bets boundary in "When Not
  to Use" — this skill sequences strategic bets across cycles; shaping a
  single bounded bet routes to product-shaping.
- product-shaping: sharpen the existing roadmapping boundary sentence to
  spell out bet vs. sequences (appetite + circuit breaker vs.
  continue/pause/kill across cycles).
- neckbeard README: route feature-sized work through product-shaping
  between discovery (product-discovery) and specification
  (spec-driven-development).

Docs-only routing seams per #394; no behavioral content changes.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 13:08:25 -04:00
Magnus Hedemark 673335d21a feat(product-shaping): add Shape Up adaptation skill for bounded product work
New class-level methodology skill adapted from Ryan Singer's Shape Up
(Basecamp, 2019), extended for human+AI-agent build teams:

- SKILL.md: core loop (shape -> bet -> build -> move on) with entry-point
  routing and negative trigger boundaries
- 6 references: principles, shaping (incl. non-UI work), betting, building,
  hybrid-adaptation, anti-patterns (independent field record 2019-2026)
- 2 templates: PITCH.md (five ingredients), SCOPE_MAP.md (hill states)
- evals: 6 output-quality cases incl. hybrid and routing regression cases

Routing surfaces: catalog README entry, skill-triggers index row,
product-methodology seam (consume won bets; no pre-bet shredding).
Generated artifacts regenerated against current main.

Closes #387
2026-08-23 00:45:30 -04:00