Skip to content

feat(bmad-auto-dev): rebuild as standalone machine-first skill#9

Closed
pbean wants to merge 4 commits into
mainfrom
feat/bmad-auto-dev-standalone-skill
Closed

feat(bmad-auto-dev): rebuild as standalone machine-first skill#9
pbean wants to merge 4 commits into
mainfrom
feat/bmad-auto-dev-standalone-skill

Conversation

@pbean

@pbean pbean commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator

What

Rebuilds bmad-auto-dev from a near-clone fork of bmad-quick-dev into a standalone, machine-first skill, and makes the dev result.json workflow value an enforced contract.

Adopts the direction of the upstream draft bmad-code-org/BMAD-METHOD#2498 (feat(bmm): draft bmad-dev-auto skill), renamed bmad-dev-autobmad-auto-dev to match the orchestrator's /bmad-auto-dev invocation, and fleshed out with the capabilities our orchestrator and sibling skills depend on.

Why

The old bmad-auto-dev was a hand-maintained fork of bmad-quick-dev: a full interactive workflow (greeting, menus, step-05-present, step-oneshot) plus an automation-mode.md decision table whose only purpose was to override all that interactivity when BMAD_AUTO_MODE=1. That meant upstream diff -r merges to maintain, a SKILL.md that still read "Quick Dev Workflow / Greet the User," and an automation-mode.md layer that existed only to suppress behavior we never wanted in automation.

PR #2498 prototypes the cleaner model: a machine-first workflow with no interactive surface to override. This PR brings that model into bmad-auto while preserving everything the orchestrator actually relies on — including the inline triple-review.

What changed

Skill rebuilt (src/automator/data/skills/bmad-auto-dev/):

  • Lean steps — step-01-resolvestep-02-planstep-03-implementstep-04-review (inline triple-review) → step-05-finalize — replacing the dual-mode interactive step files and the automation-mode.md override layer.
  • SKILL.md states the contract up front: Invocation (all four forms incl. --dw-bundle), Identity & I/O, escalation schema (CRITICAL/PREFERENCE), Result Schema. No greeting, no menus, no HALTs.
  • Removed: step-01-clarify-and-route, step-05-present, step-oneshot, step-auto-finalize, automation-mode.md.
  • Preserved: the inline three-layer adversarial review (Blind Hunter / Edge Case Hunter / Acceptance Auditor, with the intent_gap → escalate, bad_spec → amend-and-re-derive loop, and review-loop-exceeded cap); epic-context compilation + previous-story continuity for sprint stories; deferred-work-format.md (sibling-skill dependency for bmad-auto-review); spec-template.md frozen-block semantics (used by bmad-auto-resolve); sync-sprint-status.md.

Review wiring (unchanged behavior, now machine-first): driven by the existing review.enabled policy flag / $BMAD_AUTO_SKIP_REVIEW:

  • review.enabled = true → dev finalizes at in-review; the orchestrator runs a separate fresh-context bmad-auto-review session.
  • review.enabled = false → the dev session runs its own inline triple-review (step-04) and finalizes to done. As @alexeyv noted, a judging session that did the planning is a better-informed judge — so that inline path is retained, not dropped.

workflow is now an enforced contract on the dev path (src/automator/verify.py):

  • Added verify.DEV_WORKFLOW = "auto-dev"; verify_dev / verify_dev_bundle now reject a mismatched workflow (retryable) instead of ignoring the field. Previously this value was documented as a "machine contract" but only the sweep validators actually checked their workflow value — the dev path never did.
  • The skill now emits "auto-dev" rather than the misleading legacy "quick-dev" (a skill named bmad-auto-dev should not report quick-dev).
  • Review's "code-review" is left informational and documented as such: verify_review is purely disk-derived and is never handed the result.json, so enforcing it there would require a signature change for marginal, redundant benefit. The README now states the per-skill enforcement status honestly.

spec-template.md: reframed the <frozen-after-approval> reason as orchestrator-owned-intent (it's locked at approval; only a human renegotiation via bmad-auto-resolve may change it), and dropped the interactive "Ask First → HALT and ask the user" boundary tier, which is meaningless in an unattended skill.

Design decisions

  • Home/name: canonical source is intended to live upstream in bmm-core (the renamed #2498); this repo vendors a synced copy for wheel bundling. No longer a hand-maintained bmad-quick-dev fork. (bmad-auto-review remains a bmad-code-review fork.)
  • Inline review retained: an earlier draft of this PR dropped it for a leaner verify-only finalize; corrected after maintainer feedback — the inline triple-review is a value-add (a reviewer with planning context), so it stays.
  • Epic context: kept (not in #2498's draft) — sprint stories need cross-story continuity.

Testing

  • pytest: 954 passed (added test_verify_dev_wrong_workflow to lock the new contract; updated all dev-path fixtures to "auto-dev"). The only failures are pre-existing .claude//.agents/ workspace-drift on other bmad-auto-* skills — gitignored trees that are absent (skipped) in CI.
  • trunk check (no filter): clean.
  • Module validator clean for bmad-auto-dev.
  • No engine change needed: the orchestrator already invokes /bmad-auto-dev, and the on-disk contract (spec status, baseline, sprint-status, dw_ids) plus the review.enabled skip-review wiring are unchanged.

Follow-up (separate repo)

The same files should land upstream as bmad-code-org/BMAD-METHOD#2498, renamed bmad-dev-autobmad-auto-dev and extended with the epic-context + inline-review capabilities.

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • Documentation

    • Updated bmad-auto-dev docs to formalize unattended “resolve → plan → implement → finalize” behavior and intent handling.
    • Documented new spec boundary tiering (“Block If”), and tightened frozen-spec rules; updated epic-context and spec template wording.
  • Changed

    • Development workflow identifier is now enforced as auto-dev in result.json, with deterministic verification gates.
  • Bug Fixes

    • Sprint status sync now records a machine-readable sprint-sync-skipped warning when a story key is missing.

@coderabbitai

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 36924913-dfdc-4484-b7ce-f5fc4efa8579

📥 Commits

Reviewing files that changed from the base of the PR and between 9fbfaa5 and cb47451.

📒 Files selected for processing (8)
  • CHANGELOG.md
  • src/automator/data/skills/bmad-auto-dev/compile-epic-context.md
  • src/automator/data/skills/bmad-auto-dev/spec-template.md
  • src/automator/data/skills/bmad-auto-dev/step-02-plan.md
  • src/automator/data/skills/bmad-auto-dev/step-03-implement.md
  • src/automator/data/skills/bmad-auto-dev/step-04-review.md
  • src/automator/data/skills/bmad-auto-dev/sync-sprint-status.md
  • tests/conftest.py
✅ Files skipped from review due to trivial changes (1)
  • CHANGELOG.md
🚧 Files skipped from review as they are similar to previous changes (4)
  • src/automator/data/skills/bmad-auto-dev/spec-template.md
  • tests/conftest.py
  • src/automator/data/skills/bmad-auto-dev/step-03-implement.md
  • src/automator/data/skills/bmad-auto-dev/step-02-plan.md

Walkthrough

bmad-auto-dev is rebuilt as a standalone machine-first unattended skill with a four-step flow (resolve → plan → implement → finalize), replacing the prior interactive quick-dev-derived workflow. The Python verifier gains a DEV_WORKFLOW = "auto-dev" constant enforced in verify_dev and verify_dev_bundle, with sprint-status validation now conditional on review_enabled. All tests, fixtures, and documentation are updated accordingly.

Changes

bmad-auto-dev Rebuild and Workflow Contract

Layer / File(s) Summary
DEV_WORKFLOW constant and verifier enforcement
src/automator/verify.py, tests/test_verify.py
Adds DEV_WORKFLOW = "auto-dev" constant; verify_dev and verify_dev_bundle reject mismatched workflow values with VerifyOutcome.retry. Sprint-status gate is updated to expect "done" when review_enabled=False and "review" when true. Two new tests cover wrong-workflow rejection and review-disabled sprint-status enforcement.
SKILL.md unattended contract rewrite
src/automator/data/skills/bmad-auto-dev/SKILL.md, src/automator/data/skills/bmad-auto-dev/customize.toml
Rewrites the skill contract for unattended-only execution: environment-variable I/O, escalation.json/result.json output paths, invocation modes (story, bundle, feedback-repair), On Activation sequence, operational rules removing all human-wait semantics, fixed workflow: "auto-dev" result schema, and entry point changed to step-01-resolve.md.
Resolve and Finalize workflow bookends
src/automator/data/skills/bmad-auto-dev/step-01-resolve.md, src/automator/data/skills/bmad-auto-dev/step-05-finalize.md
Adds step-01-resolve.md for environment-path derivation, invocation mode parsing, worktree sanity escalation, and spec-status routing to plan or implement. Adds step-05-finalize.md for task/verification gating, status assignment, result.json writing, and on-complete hook execution.
Step 2: Planning with spec writing and scope splitting
src/automator/data/skills/bmad-auto-dev/step-02-plan.md
Rewrites as deterministic spec-writing pipeline: preserves frozen-approval blocks from draft specs, loads mode-specific planning context (story-mode epic validation and prior-story continuity; bundle-mode ledger context), delegates investigation to sub-agents, writes spec with self-review and CRITICAL intent-gap escalation, enforces scope splitting (primary goal in spec, secondary in deferred-work-file), and deterministically sets status: ready-for-dev with locked frozen blocks.
Step 3: Implementation with unattended preconditions and bundle constraints
src/automator/data/skills/bmad-auto-dev/step-03-implement.md
Updates preconditions to CRITICAL escalate on missing spec, enforces sequential execution with frozen-content read-only semantics, captures baseline via full git rev-parse HEAD hash (or NO_VCS), conditionally syncs sprint status only in non-bundle mode, loads context frontmatter, enforces bundle-mode single-cohesive-goal with CRITICAL escalation, tightens path formatting, and requires all tasks marked [x] before proceeding. NEXT simplified to two branches based on $BMAD_AUTO_SKIP_REVIEW=1.
Step 4: Inline triple-review for skip-review mode
src/automator/data/skills/bmad-auto-dev/step-04-review.md
Rewrites as "Inline Triple-Review (skip-review mode only)" gated on $BMAD_AUTO_SKIP_REVIEW=1. Removes human HALT and communication-language rules. Runs three adversarial reviewers inline with tightened input contracts. Changes loopback semantics: intent_gap escalates CRITICAL and ends run; bad_spec reverts, extracts KEEP instructions, appends Spec Change Log, then re-derives; adds block-if triggered path (CRITICAL type: block-if + end run); loopback overflow becomes CRITICAL type: review-loop-exceeded. NEXT always follows step-05-finalize.md.
Supporting spec and sprint documentation
src/automator/data/skills/bmad-auto-dev/spec-template.md, src/automator/data/skills/bmad-auto-dev/compile-epic-context.md, src/automator/data/skills/bmad-auto-dev/sync-sprint-status.md
Updates spec-template.md frozen-after-approval to orchestrator-owned intent and replaces Ask First tier with Block If tier for CRITICAL escalation. Updates compile-epic-context.md to place missing-artifacts message under Requirements & Constraints. Updates sync-sprint-status.md to write sprint-sync-skipped frontmatter warning when story key is absent.
Policy, engine, README, and CHANGELOG alignment
src/automator/policy.py, src/automator/engine.py, src/automator/data/skills/README.md, CHANGELOG.md
Updates policy.py review-disabled comment to reference bmad-auto-dev's inline triple-review. Rewords engine.py _skip_review_and_commit docstring. Revises skills README to document bmm-core upstream lineage and expanded result.json workflow contract mappings. Adds CHANGELOG entries for the skill rebuild and auto-dev workflow enforcement.
Test suite updates for auto-dev workflow value
tests/conftest.py, tests/test_engine.py, tests/test_engine_worktree.py, tests/test_generic_tmux.py, tests/test_sweep.py
Updates all SessionResult.result_json["workflow"] values from "quick-dev" to "auto-dev" across fixtures, inline payloads, fake CLI scripts, and assertion strings.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐇 Hop, hop, the quick-dev is gone,
auto-dev stands on its own at dawn.
No menus, no greetings, no HALTs in the way,
resolve → plan → implement → hooray!
The verifier checks "auto-dev" with glee,
A machine-first rabbit, unattended and free! 🎉

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 37.14% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the main change: rebuilding bmad-auto-dev as a standalone machine-first skill, which is the central objective of the PR.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/bmad-auto-dev-standalone-skill

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@augmentcode

augmentcode Bot commented Jun 22, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: Rebuilds bmad-auto-dev into a standalone, machine-first automation skill and tightens the orchestrator’s validation of the dev result.json contract.

Changes:

  • Replaces the prior interactive/override-heavy bmad-auto-dev fork with a lean flow: resolve → plan → implement → (optional inline triple-review) → finalize.
  • Adds new step files (step-01-resolve.md, step-05-finalize.md) and removes the old automation-mode decision table and interactive-only steps (oneshot/present/auto-finalize/clarify-and-route).
  • Updates SKILL.md to state the invocation modes, I/O paths, escalation schema, and the enforced result.json shape up front.
  • Retains the inline three-layer adversarial review, but only in skip-review mode ($BMAD_AUTO_SKIP_REVIEW=1).
  • Adjusts spec-template.md and planning/implementation step instructions to match unattended execution (no HALTs/menus).
  • Introduces verify.DEV_WORKFLOW = "auto-dev" and enforces it in verify_dev/verify_dev_bundle; updates fixtures/tests from "quick-dev""auto-dev" and adds coverage for workflow/sprint-state mismatches.

Technical Notes: Updates engine/policy docs to reflect the skip-review behavior (no separate review session; dev does inline triple-review and finalizes to done) and clarifies in the skills README which workflows are enforced vs informational.

🤖 Was this summary useful? React with 👍 or 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 4 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Comment thread src/automator/verify.py
if not spec_path.is_file():
return VerifyOutcome.retry(f"claimed spec file does not exist: {spec_path}")

workflow = rj.get("workflow")

@augmentcode augmentcode Bot Jun 22, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verify_dev() currently allows sprint-status to be either 'review' or 'done' regardless of review_enabled (see the sprint = story_status(...) check later in the function), which can let a skip-review run pass dev verification even if sprint-status wasn’t advanced to 'done'. Consider making the expected sprint state conditional (and updating the error text) the same way expected is handled for the spec status.

Severity: medium

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 9fbfaa5. verify_dev now derives the expected sprint state from review_enabled ('review' when a separate review session follows, 'done' in skip-review mode) instead of accepting both, and the error text reflects the conditional expectation. Added test_verify_dev_review_disabled_rejects_review_sprint covering the skip-review-but-sprint-left-at-'review' hole. (verify_dev_bundle is unchanged — bundles have no sprint-status entry.)

Comment thread src/automator/verify.py
f"dev result.json workflow is {workflow!r}, expected {DEV_WORKFLOW!r}"
)

# With review disabled, the dev session runs its own internal review and

@augmentcode augmentcode Bot Jun 22, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment says the dev session “runs its own internal review” when review is disabled, but the updated skill/docs describe skip-review mode as verification-only finalize (no adversarial review). Consider updating this comment to match the new behavior to avoid misleading future changes.

Severity: low

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't fix — the comment is accurate. Skip-review mode is not verification-only: the dev session runs the inline three-layer adversarial review (step-04-review.md, titled "Inline Triple-Review (skip-review mode only)") before finalizing to done. This matches ReviewPolicy (policy.py), POLICY_TEMPLATE, engine.py:_skip_review_and_commit, and SKILL.md Rules. So "runs its own internal review and finalizes straight to done" is the correct description.

- `escalations` = contents of any escalations raised this run (else empty).
- **Bundle mode only:** include `"dw_ids": [<the bundle's ids, verbatim>]`.

6. **End the turn** with a one-line statement of what was implemented. Do not ask questions, offer next steps, or wait for anything.

@augmentcode augmentcode Bot Jun 22, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instruction 6 says to “End the turn”, but the subsequent “On Complete” block instructs running an additional command afterward, which is contradictory/unreachable as written. This also conflicts with the earlier statement that writing result.json is the last action if workflow.on_complete has side effects.

Severity: low

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 9fbfaa5. Reworded so the ordering is unambiguous: result.json is the last artifact written, and the On Complete hook is now an explicit numbered step (run on_complete if non-empty → then end the turn). Updated the step-05 header line and the matching SKILL.md contract line so they no longer claim result.json is the final action when on_complete has side effects.

Comment thread src/automator/data/skills/README.md Outdated
@@ -10,14 +10,14 @@ plus the orchestrator that invokes them. Standard BMAD installs are never
modified; the skills are automator-owned forks maintained against their upstream

@augmentcode augmentcode Bot Jun 22, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The intro says the skills are “forks maintained against their upstream counterparts,” but this PR positions bmad-auto-dev as first-class/standalone and bmad-auto-resolve/bmad-auto-sweep as automator-native. Consider adjusting that sentence so it doesn’t imply all bundled skills are forks.

Severity: low

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 9fbfaa5. The intro no longer claims all skills are forks — it now says the skills are automator-owned, some forks of upstream (bmad-auto-review), others standalone or automator-native, consistent with the component table and the "Maintaining the forks" section below.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
src/automator/data/skills/bmad-auto-dev/SKILL.md (1)

14-15: 🧹 Nitpick | 🔵 Trivial | 💤 Low value

Consider rewording repeated sentence-initial "No" for clarity.

Static analysis flagged three successive sentences beginning with "No" (lines 14–15). While the repetition emphasizes the machine-first contract, rephrasing could improve readability without loss of meaning:

- No greeting. No questions. No menus. No editor.
- No commit. No push. No remote ops. The orchestrator...
+ No greeting, questions, menus, or editor.
+ No commit, push, or remote operations — the orchestrator...

This is optional; the current phrasing is emphatic and may be intentional for contract clarity.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/automator/data/skills/bmad-auto-dev/SKILL.md` around lines 14 - 15, In
the SKILL.md file, rephrase the bullet points on lines 14-15 to reduce
repetition of sentence-initial "No" while maintaining the emphatic machine-first
contract clarity. Consider restructuring at least one of the statements to
convey the same restrictions (no greeting, questions, menus, editor, commit,
push, or remote operations) with varied sentence construction, such as
converting a "No" statement into an affirmative description of what is allowed
or using different grammatical structures for the second bullet point.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@src/automator/data/skills/bmad-auto-dev/SKILL.md`:
- Around line 14-15: In the SKILL.md file, rephrase the bullet points on lines
14-15 to reduce repetition of sentence-initial "No" while maintaining the
emphatic machine-first contract clarity. Consider restructuring at least one of
the statements to convey the same restrictions (no greeting, questions, menus,
editor, commit, push, or remote operations) with varied sentence construction,
such as converting a "No" statement into an affirmative description of what is
allowed or using different grammatical structures for the second bullet point.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b0489253-1dd5-4442-867f-b85192b64889

📥 Commits

Reviewing files that changed from the base of the PR and between d90628c and c011230.

📒 Files selected for processing (23)
  • CHANGELOG.md
  • src/automator/data/skills/README.md
  • src/automator/data/skills/bmad-auto-dev/SKILL.md
  • src/automator/data/skills/bmad-auto-dev/automation-mode.md
  • src/automator/data/skills/bmad-auto-dev/customize.toml
  • src/automator/data/skills/bmad-auto-dev/step-01-clarify-and-route.md
  • src/automator/data/skills/bmad-auto-dev/step-01-resolve.md
  • src/automator/data/skills/bmad-auto-dev/step-02-plan.md
  • src/automator/data/skills/bmad-auto-dev/step-03-implement.md
  • src/automator/data/skills/bmad-auto-dev/step-04-finalize.md
  • src/automator/data/skills/bmad-auto-dev/step-04-review.md
  • src/automator/data/skills/bmad-auto-dev/step-05-present.md
  • src/automator/data/skills/bmad-auto-dev/step-auto-finalize.md
  • src/automator/data/skills/bmad-auto-dev/step-oneshot.md
  • src/automator/engine.py
  • src/automator/policy.py
  • src/automator/verify.py
  • tests/conftest.py
  • tests/test_engine.py
  • tests/test_engine_worktree.py
  • tests/test_generic_tmux.py
  • tests/test_sweep.py
  • tests/test_verify.py
💤 Files with no reviewable changes (6)
  • src/automator/data/skills/bmad-auto-dev/step-05-present.md
  • src/automator/data/skills/bmad-auto-dev/automation-mode.md
  • src/automator/data/skills/bmad-auto-dev/step-04-review.md
  • src/automator/data/skills/bmad-auto-dev/step-oneshot.md
  • src/automator/data/skills/bmad-auto-dev/step-01-clarify-and-route.md
  • src/automator/data/skills/bmad-auto-dev/step-auto-finalize.md

Replace the bmad-quick-dev fork (interactive workflow + an automation-mode.md
decision table that existed only to override that interactivity) with a
first-class machine-first skill: lean steps (resolve/plan/implement/review/
finalize), the orchestrator contract stated up front, no greeting/menus/HALTs.
Preserves epic-context compilation, previous-story continuity, and the inline
three-layer adversarial review: with review.enabled=false the dev session runs
that inline triple-review itself before finalizing to done (a judge that did the
planning is a better-informed judge); with review.enabled=true the orchestrator
runs a separate fresh-context review session instead. Mirrors the upstream draft
bmad-code-org/BMAD-METHOD#2498 (renamed bmad-dev-auto -> bmad-auto-dev to match
the orchestrator's /bmad-auto-dev invocation). No engine change required.

Also make the dev result.json `workflow` an enforced contract instead of a
documented-but-ignored string: verify_dev/verify_dev_bundle reject a mismatch
against verify.DEV_WORKFLOW ("auto-dev"), and the skill emits "auto-dev" rather
than the misleading legacy "quick-dev". Review's "code-review" is documented as
informational by design (verify_review is purely disk-derived and is never
handed the result.json).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@pbean pbean force-pushed the feat/bmad-auto-dev-standalone-skill branch from c011230 to 1a622dd Compare June 22, 2026 20:30
…ordering

Remediate review comments on PR #9:

- verify_dev: the sprint-status gate accepted both 'review' and 'done'
  regardless of review_enabled, so a skip-review run that left the sprint
  at 'review' could pass dev verification. Make the expected sprint state
  conditional (mirrors the spec-status `expected`) and fix the hardcoded
  error text. Add a regression test + a docstring. (Augment, medium)
- step-05-finalize.md / SKILL.md: "result.json is your last action" + "End
  the turn" contradicted the On Complete hook that runs afterward. Reword so
  result.json is the last *artifact* and the on_complete hook is an explicit
  numbered terminal step before ending the turn. (Augment, low)
- skills/README.md: intro claimed all skills are upstream forks; bmad-auto-dev
  is standalone and resolve/sweep are automator-native. Soften the sentence
  to match the component table. (Augment, low)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@pbean

pbean commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator Author

augment review

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 1 suggestion posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Comment thread tests/conftest.py Outdated
"""Simulate a quick-dev bundle session (--dw-bundle): edits code, writes
the bundle spec, and (like step-auto-finalize bundle mode) marks the
"""Simulate a bmad-auto-dev bundle session (--dw-bundle): edits code, writes
the bundle spec, and (like step-04-finalize bundle mode) marks the

@augmentcode augmentcode Bot Jun 22, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This docstring references step-04-finalize, but that step file doesn’t exist in this skill anymore (the terminal step is step-05-finalize.md). Keeping the reference in sync would avoid confusion when using these helpers as documentation for the workflow.

Severity: low

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 45205ef. The docstring now references step-05-finalize (the terminal step that performs bundle ledger-marking) — there is no step-04-finalize; step 4 is step-04-review.md.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
CHANGELOG.md (1)

18-18: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Use "who" instead of "that" for person referent.

"Judge" refers to an agent; use "who" instead of "that".

✏️ Suggested fix
- better-informed); with `review.enabled = true` the orchestrator runs a separate fresh-context
- review session instead. Mirrors the upstream draft bmad-code-org/BMAD-METHOD#2498 (renamed
+ better-informed); with `review.enabled = true` the orchestrator runs a separate fresh-context
+ review session instead. Mirrors the upstream draft bmad-code-org/BMAD-METHOD#2498 (renamed

Actually, the easier fix:

-  better-informed); with `review.enabled = true` the orchestrator runs a separate fresh-context
+  better-informed); with `review.enabled = true` the orchestrator runs a separate fresh-context

Let me be more precise with the actual line content. The text is:

- a judge that did the planning is better-informed); with `review.enabled = true`
+ a judge who did the planning is better-informed); with `review.enabled = true`
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CHANGELOG.md` at line 18, In the CHANGELOG.md file, the text uses "that" to
refer to "judge," which is an agent (person), but should use "who" instead. Find
the sentence containing "a judge that did the planning" and replace "that" with
"who" to correctly refer to the judge as a person. Use "who" for person and
agent referents, and "that" for non-person referents.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@CHANGELOG.md`:
- Line 18: In the CHANGELOG.md file, the text uses "that" to refer to "judge,"
which is an agent (person), but should use "who" instead. Find the sentence
containing "a judge that did the planning" and replace "that" with "who" to
correctly refer to the judge as a person. Use "who" for person and agent
referents, and "that" for non-person referents.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 9803e31d-c3bc-4978-8bb2-c2bd660f06a6

📥 Commits

Reviewing files that changed from the base of the PR and between c011230 and 9fbfaa5.

📒 Files selected for processing (24)
  • CHANGELOG.md
  • src/automator/data/skills/README.md
  • src/automator/data/skills/bmad-auto-dev/SKILL.md
  • src/automator/data/skills/bmad-auto-dev/automation-mode.md
  • src/automator/data/skills/bmad-auto-dev/customize.toml
  • src/automator/data/skills/bmad-auto-dev/spec-template.md
  • src/automator/data/skills/bmad-auto-dev/step-01-clarify-and-route.md
  • src/automator/data/skills/bmad-auto-dev/step-01-resolve.md
  • src/automator/data/skills/bmad-auto-dev/step-02-plan.md
  • src/automator/data/skills/bmad-auto-dev/step-03-implement.md
  • src/automator/data/skills/bmad-auto-dev/step-04-review.md
  • src/automator/data/skills/bmad-auto-dev/step-05-finalize.md
  • src/automator/data/skills/bmad-auto-dev/step-05-present.md
  • src/automator/data/skills/bmad-auto-dev/step-auto-finalize.md
  • src/automator/data/skills/bmad-auto-dev/step-oneshot.md
  • src/automator/engine.py
  • src/automator/policy.py
  • src/automator/verify.py
  • tests/conftest.py
  • tests/test_engine.py
  • tests/test_engine_worktree.py
  • tests/test_generic_tmux.py
  • tests/test_sweep.py
  • tests/test_verify.py
💤 Files with no reviewable changes (5)
  • src/automator/data/skills/bmad-auto-dev/automation-mode.md
  • src/automator/data/skills/bmad-auto-dev/step-05-present.md
  • src/automator/data/skills/bmad-auto-dev/step-oneshot.md
  • src/automator/data/skills/bmad-auto-dev/step-auto-finalize.md
  • src/automator/data/skills/bmad-auto-dev/step-01-clarify-and-route.md
✅ Files skipped from review due to trivial changes (8)
  • src/automator/engine.py
  • src/automator/data/skills/bmad-auto-dev/step-05-finalize.md
  • tests/conftest.py
  • tests/test_engine_worktree.py
  • tests/test_engine.py
  • tests/test_sweep.py
  • src/automator/policy.py
  • src/automator/data/skills/bmad-auto-dev/customize.toml
🚧 Files skipped from review as they are similar to previous changes (5)
  • tests/test_generic_tmux.py
  • src/automator/verify.py
  • tests/test_verify.py
  • src/automator/data/skills/README.md
  • src/automator/data/skills/bmad-auto-dev/step-02-plan.md

pbean and others added 2 commits June 22, 2026 14:26
- conftest.py: bundle_dev_effect docstring referenced a nonexistent
  step-04-finalize; the terminal finalize step is step-05-finalize. (Augment)
- CHANGELOG: "a judge that did the planning" -> "who" (person referent). (CodeRabbit)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…eam #2500

Fold three refinements from bmad-code-org/BMAD-METHOD#2500 into the skill:

- Spec Boundaries gain a frozen "Block If" tier enumerating decisions that
  cannot be made unattended. Triggering one in step-03 (implement) or step-04
  (review) escalates CRITICAL (type: block-if); step-02 populates it during
  planning. Reuses the existing CRITICAL pause path — no engine change.
- sync-sprint-status now writes a machine-readable `sprint-sync-skipped`
  frontmatter warning when a story key is absent (was log-only).
- compile-epic-context uses a deterministic fallback sentence when planning
  artifacts are missing, and drops "Edit freely" from the regenerated banner.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@pbean

pbean commented Jun 24, 2026

Copy link
Copy Markdown
Collaborator Author

Closing — no longer valid. The bmad-dev-auto integration was substantially reworked (orchestrator-side review gate removed); the branch is being repurposed as release/0.6.5.

@pbean pbean closed this Jun 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant