bmad-method 6.10.1-next.32 → 6.10.1-next.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +3 -2
- package/package.json +5 -5
- package/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md +1 -1
- package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md +1 -1
- package/src/bmm-skills/2-plan-workflows/bmad-ux/SKILL.md +1 -1
- package/src/bmm-skills/3-solutioning/bmad-architecture/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/bmad-agent-dev/customize.toml +2 -2
- package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/compile-epic-context.md +1 -1
- package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/customize.toml +42 -4
- package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/render.py +11 -4
- package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/step-05-present.md +6 -9
- package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/step-oneshot.md +9 -10
- package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/sync-sprint-status.md +1 -1
- package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/workflow.md +1 -1
- package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/compile-epic-context.md +1 -1
- package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/customize.toml +3 -3
- package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/step-01-clarify-and-route.md +2 -2
- package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/workflow.md +3 -3
- package/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md +3 -3
- package/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md +2 -2
- package/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md +4 -4
- package/src/bmm-skills/module-help.csv +3 -3
- package/src/bmm-skills/module.yaml +2 -2
- package/src/bmm-skills/v6-shims/README.md +2 -0
- package/src/bmm-skills/v6-shims/bmad-create-story/SKILL.md +2 -2
- package/src/bmm-skills/v6-shims/bmad-dev-auto/SKILL.md +19 -0
- package/src/bmm-skills/v6-shims/bmad-dev-story/SKILL.md +2 -2
- package/src/bmm-skills/v6-shims/bmad-quick-dev/SKILL.md +19 -0
- package/src/core-skills/bmad-forge-idea/SKILL.md +1 -1
- package/src/core-skills/module-help.csv +1 -1
- package/src/scripts/__pycache__/config_utils.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_config_utils.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_config.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-311.pyc +0 -0
- package/tools/installer/ide/_config-driven.js +1 -1
- package/tools/validate-published-implementation-model.mjs +5 -2
- package/web-bundles/prd-coach/prd-template.md +1 -1
- /package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/references/deletion-check.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/review-prompts/adversarial.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/review-prompts/edge-case-hunter.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/review-prompts/verification-gap.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/spec-template.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/step-01-clarify-and-route.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/step-02-plan.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/step-03-implement.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/step-04-review.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/references/deletion-check.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/review-prompts/adversarial.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/review-prompts/edge-case-hunter.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/review-prompts/verification-gap.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/spec-template.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/step-02-plan.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/step-03-implement.md +0 -0
- /package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/step-04-review.md +0 -0
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"./src/bmm-skills/3-solutioning/bmad-generate-project-context",
|
|
91
91
|
"./src/bmm-skills/4-implementation/bmad-agent-dev",
|
|
92
92
|
"./src/bmm-skills/4-implementation/bmad-dev-story",
|
|
93
|
-
"./src/bmm-skills/4-implementation/bmad-
|
|
93
|
+
"./src/bmm-skills/4-implementation/bmad-build",
|
|
94
94
|
"./src/bmm-skills/4-implementation/bmad-checkpoint-preview",
|
|
95
95
|
"./src/bmm-skills/4-implementation/bmad-sprint-planning",
|
|
96
96
|
"./src/bmm-skills/4-implementation/bmad-sprint-status",
|
|
@@ -98,7 +98,8 @@
|
|
|
98
98
|
"./src/bmm-skills/4-implementation/bmad-create-story",
|
|
99
99
|
"./src/bmm-skills/4-implementation/bmad-correct-course",
|
|
100
100
|
"./src/bmm-skills/4-implementation/bmad-retrospective",
|
|
101
|
-
"./src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests"
|
|
101
|
+
"./src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests",
|
|
102
|
+
"./src/bmm-skills/v6-shims/bmad-quick-dev"
|
|
102
103
|
]
|
|
103
104
|
}
|
|
104
105
|
]
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "bmad-method",
|
|
4
|
-
"version": "6.10.1-next.
|
|
4
|
+
"version": "6.10.1-next.34",
|
|
5
5
|
"description": "Breakthrough Method of Agile AI-driven Development",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"agile",
|
|
@@ -40,14 +40,14 @@
|
|
|
40
40
|
"lint:fix": "eslint . --ext .js,.cjs,.mjs,.yaml --fix",
|
|
41
41
|
"lint:md": "markdownlint-cli2 \"**/*.md\"",
|
|
42
42
|
"prepare": "command -v husky >/dev/null 2>&1 && husky || exit 0",
|
|
43
|
-
"quality": "npm run format:check && npm run lint && npm run lint:md && npm run docs:build && npm run test:site-url && npm run test:install && npm run test:urls && npm run test:renderer && npm run test:
|
|
43
|
+
"quality": "npm run format:check && npm run lint && npm run lint:md && npm run docs:build && npm run test:site-url && npm run test:install && npm run test:urls && npm run test:renderer && npm run test:build-auto-contract && npm run validate:refs && npm run validate:skills && npm run docs:validate-sidebar",
|
|
44
44
|
"rebundle": "node tools/installer/bundlers/bundle-web.js rebundle",
|
|
45
|
-
"test": "npm run test:refs && npm run test:install && npm run test:urls && npm run test:site-url && npm run test:channels && npm run test:renderer && npm run test:
|
|
45
|
+
"test": "npm run test:refs && npm run test:install && npm run test:urls && npm run test:site-url && npm run test:channels && npm run test:renderer && npm run test:build-auto-contract && npm run test:skills && npm run lint && npm run lint:md && npm run format:check",
|
|
46
|
+
"test:build-auto-contract": "node test/test-build-auto-contract.js",
|
|
46
47
|
"test:channels": "node test/test-installer-channels.js",
|
|
47
|
-
"test:dev-auto-contract": "node test/test-dev-auto-contract.js",
|
|
48
48
|
"test:install": "node test/test-installation-components.js",
|
|
49
49
|
"test:refs": "node test/test-file-refs-csv.js",
|
|
50
|
-
"test:renderer": "uv run --python 3.11 python -m unittest src/scripts/tests/test_config_utils.py src/scripts/tests/test_resolve_config.py src/scripts/tests/test_resolve_customization.py && node test/test-
|
|
50
|
+
"test:renderer": "uv run --python 3.11 python -m unittest src/scripts/tests/test_config_utils.py src/scripts/tests/test_resolve_config.py src/scripts/tests/test_resolve_customization.py && node test/test-build-renderer.js && node test/test-build-auto-renderer.js",
|
|
51
51
|
"test:site-url": "node test/test-site-url.mjs",
|
|
52
52
|
"test:skills": "node test/test-validate-skills.js",
|
|
53
53
|
"test:urls": "node test/test-parse-source-urls.js",
|
|
@@ -20,7 +20,7 @@ You are a master facilitator and coach helping the user create, edit, or validat
|
|
|
20
20
|
1. Resolve customization: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, read `{skill-root}/customize.toml` directly and use defaults.
|
|
21
21
|
2. Run `{workflow.activation_steps_prepend}`. Treat `{workflow.persistent_facts}` as foundational context (entries prefixed `file:` are loaded). `{workflow.external_sources}` is an org-configured registry of internal tools (knowledge bases, MCP tools); consult them alongside generic web research on the same triggers, org tools preferred when their directive matches. Research itself fires during Discovery — see **Research subagents**.
|
|
22
22
|
3. Load `{project-root}/_bmad/bmm/config.yaml` (+ `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. Missing keys → neutral defaults; never block.
|
|
23
|
-
4. If headless, follow `references/headless.md` for the whole run. Otherwise greet the user **by name** using `{user_name}` and **in their language** using `{communication_language}` — and stay in `{communication_language}` for every turn for the entire run, not just the greeting. In the greeting, let the user know that at any point they can invoke `bmad-party-mode` for multi-agent perspectives or `bmad-advanced-elicitation` for deeper exploration on a specific section. Then scan for misroute on the first message: if the signal points elsewhere (game → BMad GDS; express build → `bmad-
|
|
23
|
+
4. If headless, follow `references/headless.md` for the whole run. Otherwise greet the user **by name** using `{user_name}` and **in their language** using `{communication_language}` — and stay in `{communication_language}` for every turn for the entire run, not just the greeting. In the greeting, let the user know that at any point they can invoke `bmad-party-mode` for multi-agent perspectives or `bmad-advanced-elicitation` for deeper exploration on a specific section. Then scan for misroute on the first message: if the signal points elsewhere (game → BMad GDS; express build → `bmad-build`; one-pager → `bmad-product-brief`; vet product idea → `bmad-prfaq`; agent skill or custom agent → `bmad-workflow-builder`), suggest they might want the other options before continuing.
|
|
24
24
|
5. Detect intent: **Create** (no PRD), **Update** (existing PRD), **Validate** (critique only). If ambiguous, ask. For Create intent, before binding a fresh workspace, scan `{workflow.prd_output_path}` for prior in-progress runs (folders matching `{workflow.run_folder_pattern}` whose `prd.md` frontmatter `status` is not `final`); if any exist, offer to resume rather than starting over.
|
|
25
25
|
|
|
26
26
|
Run `{workflow.activation_steps_append}`.
|
|
@@ -161,5 +161,5 @@ updated: {YYYY-MM-DD}
|
|
|
161
161
|
- **Environmental and Reliability Requirements**.
|
|
162
162
|
|
|
163
163
|
### Small-scope all-inclusive *(use when scope is 1-2 stories' worth and the user wants a single captured artifact — chosen during the Right-skill check in Discovery)*
|
|
164
|
-
- **Stories** — story-level specs listed inline at the end of the doc. Each story: *"As a [persona], I can [action] [under conditions]. Acceptance: [testable criteria]."* Numbered Story-1, Story-2, ... for reference. Pair with very lean §1 Vision, §2 Target User (often just JTBD + one UJ), §3 Glossary (handful of terms), §4 Features (often a single feature), §6 MVP Scope (in/out very tight). The whole doc fits on a page or two and captures intent + implementable stories in one place. If the user doesn't want the captured artifact at all, `bmad-
|
|
164
|
+
- **Stories** — story-level specs listed inline at the end of the doc. Each story: *"As a [persona], I can [action] [under conditions]. Acceptance: [testable criteria]."* Numbered Story-1, Story-2, ... for reference. Pair with very lean §1 Vision, §2 Target User (often just JTBD + one UJ), §3 Glossary (handful of terms), §4 Features (often a single feature), §6 MVP Scope (in/out very tight). The whole doc fits on a page or two and captures intent + implementable stories in one place. If the user doesn't want the captured artifact at all, `bmad-build` is the better path — this cluster is only for "I want a doc *and* the stories."
|
|
165
165
|
|
|
@@ -87,4 +87,4 @@ Outcomes, in order:
|
|
|
87
87
|
- **Key-screen mocks rendered.** Key-screens tool → `.working/` for surfaces where layout drives behavior or anchors visual language.
|
|
88
88
|
- **Mock coverage confirmed.** Walk every IA surface; classify *mocked* vs *spine-only*. Ask: *"These will be built from spine tables alone — any need a visual reference?"* Render more if named; log spine-only choices.
|
|
89
89
|
- **Layout extracted, artifacts promoted.** Distill subagent re-reads each `.working/` and `imports/` artifact; lifts visual decisions into DESIGN.md and behavioral decisions into EXPERIENCE.md. Promote `.working/` keepers to `mockups/` (HTML) or `wireframes/` (Excalidraw); imports stay. Inline relative links at relevant spine sections; state spines-win-on-conflict once.
|
|
90
|
-
- **Polished, handed off, closed.** Apply `{workflow.doc_standards}` in order. Execute `{workflow.external_handoffs}`; surface URLs. Set both files' `status: final`, `updated: {date}`. Log finalization via `uv run {project-root}/_bmad/scripts/memlog.py append --workspace {doc_workspace} --type event --text "spines finalized"`. Share paths. Common next: `bmad-architecture`, `bmad-create-epics-and-stories`, `bmad-
|
|
90
|
+
- **Polished, handed off, closed.** Apply `{workflow.doc_standards}` in order. Execute `{workflow.external_handoffs}`; surface URLs. Set both files' `status: final`, `updated: {date}`. Log finalization via `uv run {project-root}/_bmad/scripts/memlog.py append --workspace {doc_workspace} --type event --text "spines finalized"`. Share paths. Common next: `bmad-architecture`, `bmad-create-epics-and-stories`, `bmad-build`. Run `{workflow.on_complete}`.
|
|
@@ -73,7 +73,7 @@ Walk the sequence; reviewer fixes land before polish.
|
|
|
73
73
|
4. **Triage.** Open questions and `[ASSUMPTION]` tags: blockers (unsafe for what's next) resolved one at a time; the rest deferred with a revisit condition in the memlog.
|
|
74
74
|
5. **Renderings & polish.** The spine is the build deliverable; with it and the memlog now in place, produce any *additional* human-facing artifact the user needs, scoped to the purpose and audience drawn out up front. The up-front question already flagged whether one's needed; if it wasn't, still offer one here, seeding concrete options: an interactive HTML+SVG deck to walk a team through the architecture and drive discussion, a fuller HTML/md solution design, a C4 set, or a view of how the work splits across teams/epics. Build only what they pick, right-sized to that purpose; apply `{workflow.doc_standards}` polish to that prose only, never to the spine.
|
|
75
75
|
6. **External handoffs.** Run `{workflow.external_handoffs}`; surface returned URLs/IDs. Offer to invoke the `bmad-spec` skill to adopt the spine as a companion, keeping `AD` IDs stable so downstream can cite them.
|
|
76
|
-
7. **Close.** Set the spine's own frontmatter `status: final`, `updated: {date}`; log a `memlog.py append --type event --text "spine finalized"` (the memlog has no status field). Share paths. Next, **lead with `bmad-spec`** — recommend adopting/refreshing the spine as a spec companion (always the top recommendation when a spec was an input, and a useful next step even when it wasn't), then `bmad-create-epics-and-stories` or — epic altitude — `bmad-
|
|
76
|
+
7. **Close.** Set the spine's own frontmatter `status: final`, `updated: {date}`; log a `memlog.py append --type event --text "spine finalized"` (the memlog has no status field). Share paths. Next, **lead with `bmad-spec`** — recommend adopting/refreshing the spine as a spec companion (always the top recommendation when a spec was an input, and a useful next step even when it wasn't), then `bmad-create-epics-and-stories` or — epic altitude — `bmad-build`; or invoke `bmad-help` to route.
|
|
77
77
|
8. Run `{workflow.on_complete}`.
|
|
78
78
|
|
|
79
79
|
## Update
|
|
@@ -58,9 +58,9 @@ principles = [
|
|
|
58
58
|
# registered skill by name) or `prompt` (executes the prompt text directly).
|
|
59
59
|
|
|
60
60
|
[[agent.menu]]
|
|
61
|
-
code = "
|
|
61
|
+
code = "BD"
|
|
62
62
|
description = "Implement a feature, fix, or story"
|
|
63
|
-
skill = "bmad-
|
|
63
|
+
skill = "bmad-build"
|
|
64
64
|
|
|
65
65
|
[[agent.menu]]
|
|
66
66
|
code = "QA"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: bmad-
|
|
2
|
+
name: bmad-build
|
|
3
3
|
description: 'Implements any user intent, requirement, story, bug fix or change request by producing clean working code artifacts that follow the project''s existing architecture, patterns and conventions. Use when the user wants to build, fix, tweak, refactor, add or modify any code, component or feature.'
|
|
4
4
|
---
|
|
5
5
|
|
package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/compile-epic-context.md
RENAMED
|
@@ -52,7 +52,7 @@ Use these headings:
|
|
|
52
52
|
- **No full copies.** Never quote source documents, section numbers, or paste large blocks verbatim. Always distill.
|
|
53
53
|
- **No story-level details.** The story list is for orientation only. Individual story specs handle the details.
|
|
54
54
|
- **Nothing derivable from the codebase.** Don't document what a developer can learn by reading the code.
|
|
55
|
-
- **Be concise and actionable.** Target 800–1500 tokens total. This file loads into
|
|
55
|
+
- **Be concise and actionable.** Target 800–1500 tokens total. This file loads into build's context alongside other material.
|
|
56
56
|
- **Never hallucinate content.** If source material doesn't say something, don't invent it.
|
|
57
57
|
- **Omit empty sections entirely**, except Goal and Stories, which are always required.
|
|
58
58
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# DO NOT EDIT -- overwritten on every update.
|
|
2
2
|
#
|
|
3
|
-
# Default customization values for bmad-
|
|
4
|
-
# Override in _bmad/custom/bmad-
|
|
5
|
-
# _bmad/custom/bmad-
|
|
3
|
+
# Default customization values for bmad-build.
|
|
4
|
+
# Override in _bmad/custom/bmad-build.toml or
|
|
5
|
+
# _bmad/custom/bmad-build.user.toml.
|
|
6
6
|
#
|
|
7
7
|
# Merge rules:
|
|
8
8
|
# - Strings replace the default.
|
|
@@ -28,11 +28,49 @@ persistent_facts = [
|
|
|
28
28
|
"file:{project-root}/**/project-context.md",
|
|
29
29
|
]
|
|
30
30
|
|
|
31
|
-
# Instruction run after
|
|
31
|
+
# Instruction run after Build completes.
|
|
32
32
|
# Empty means no extra completion behavior.
|
|
33
33
|
|
|
34
34
|
on_complete = ""
|
|
35
35
|
|
|
36
|
+
# How Build opens a completed spec for human review. The default deliberately
|
|
37
|
+
# opens the repository root first and the spec second in a reused VS Code
|
|
38
|
+
# window so relative review links resolve in the correct workspace. Override
|
|
39
|
+
# this with the application and equivalent behavior you prefer. Set it to an
|
|
40
|
+
# empty string to disable automatic opening and all related completion output.
|
|
41
|
+
# Example requests for bmad-customize: "Open completed specs in Cursor and
|
|
42
|
+
# reuse the project window" or "Do not open completed specs automatically."
|
|
43
|
+
#
|
|
44
|
+
# Example `open_spec` override instructions for bmad-build.user.toml:
|
|
45
|
+
# {project-root} and {spec_file} are substituted at run time.
|
|
46
|
+
#
|
|
47
|
+
# VS Code and compatible GUI editors — shipped default uses `code`; Cursor,
|
|
48
|
+
# Windsurf, Antigravity, Zed, and similar editors can substitute their launcher.
|
|
49
|
+
# Preserve reuse-window behavior when the launcher supports it, and always pass
|
|
50
|
+
# the repository root first and the spec second:
|
|
51
|
+
# Run `code -r "{project-root}" "{spec_file}"`, root first.
|
|
52
|
+
# Run `cursor -r "{project-root}" "{spec_file}"`, root first.
|
|
53
|
+
# Run `windsurf -r "{project-root}" "{spec_file}"`, root first.
|
|
54
|
+
# Run `zed "{project-root}" "{spec_file}"`, root first.
|
|
55
|
+
#
|
|
56
|
+
# IntelliJ IDEA — its CLI accepts one path per invocation:
|
|
57
|
+
# Run `idea "{project-root}"` to open the project, then
|
|
58
|
+
# `idea "{spec_file}"` to open the spec in that project.
|
|
59
|
+
#
|
|
60
|
+
# Vim — keep repository context as the working directory:
|
|
61
|
+
# Run `cd "{project-root}" && vim "{spec_file}"`.
|
|
62
|
+
#
|
|
63
|
+
# Emacs — reuse an Emacs server without waiting for the buffer to close:
|
|
64
|
+
# Run `cd "{project-root}" && emacsclient -n "{spec_file}"`.
|
|
65
|
+
#
|
|
66
|
+
# For every non-empty override, also tell Build to note in the completion summary
|
|
67
|
+
# that the spec was sent to the chosen editor and contains a Suggested Review
|
|
68
|
+
# Order, then include the default navigation tip shown below.
|
|
69
|
+
|
|
70
|
+
open_spec = """
|
|
71
|
+
Run `code -r "{project-root}" "{spec_file}"` — the repository root first so VS Code opens in the right context, then the spec file. Always double-quote both paths to handle spaces and special characters. If `code` is unavailable or the command fails, skip gracefully and tell the user the spec file path instead. In the completion summary, note that the spec was sent to VS Code and that it contains a Suggested Review Order, then add this navigation tip: "Ctrl+click (Cmd+click on macOS) the links in the Suggested Review Order to jump to each stop."
|
|
72
|
+
"""
|
|
73
|
+
|
|
36
74
|
# Handoff for the implementation subagent in step 03. The whole execution
|
|
37
75
|
# recipe — a subagent by default, but an override may run it any other way
|
|
38
76
|
# (a different model, an external coding tool via bash). {spec_file} is
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
# /// script
|
|
3
3
|
# requires-python = ">=3.11"
|
|
4
4
|
# ///
|
|
5
|
-
"""render.py — bmad-
|
|
5
|
+
"""render.py — bmad-build template renderer.
|
|
6
6
|
|
|
7
7
|
Resolves compile-time {{.variable}} placeholders from BMad's central config,
|
|
8
8
|
bakes absolute paths for {project-root} into derived values, resolves and
|
|
9
9
|
inlines the skill's [workflow] customization block, and writes rendered .md
|
|
10
|
-
files to {project-root}/_bmad/render/bmad-
|
|
10
|
+
files to {project-root}/_bmad/render/bmad-build/.
|
|
11
11
|
|
|
12
12
|
Config: four-layer merge of _bmad/config.toml + config.user.toml +
|
|
13
13
|
custom/config.toml + custom/config.user.toml (post-#2285 installs).
|
|
@@ -18,7 +18,7 @@ Optional layers may be missing, but one that exists and cannot be parsed
|
|
|
18
18
|
or read → HALT.
|
|
19
19
|
|
|
20
20
|
Customization: three-layer merge of {skill}/customize.toml +
|
|
21
|
-
_bmad/custom/bmad-
|
|
21
|
+
_bmad/custom/bmad-build.toml + .user.toml (same structural rules as
|
|
22
22
|
resolve_customization.py). The resolved [workflow] values fill {workflow.*}
|
|
23
23
|
placeholders, so this skill needs no runtime resolve_customization.py call.
|
|
24
24
|
Other single-curly placeholders ({project-root}, {spec_file}, ...) pass
|
|
@@ -85,7 +85,7 @@ def load_toml(path, required=False):
|
|
|
85
85
|
|
|
86
86
|
def _deep_merge(base, override):
|
|
87
87
|
"""Dict-aware deep merge. Lists and scalars: override wins (we don't need
|
|
88
|
-
the full keyed-merge semantics of resolve_config.py —
|
|
88
|
+
the full keyed-merge semantics of resolve_config.py — build only reads
|
|
89
89
|
flat scalars out of [core] and [modules.bmm])."""
|
|
90
90
|
if isinstance(base, dict) and isinstance(override, dict):
|
|
91
91
|
result = dict(base)
|
|
@@ -391,6 +391,13 @@ def main():
|
|
|
391
391
|
|
|
392
392
|
skill_dir = script_dir.replace(os.sep, "/")
|
|
393
393
|
workflow = resolve_workflow(root, skill_dir, skill_name)
|
|
394
|
+
open_spec = workflow.get("open_spec")
|
|
395
|
+
if not isinstance(open_spec, str):
|
|
396
|
+
print(
|
|
397
|
+
"HALT and report to the user: customization `workflow.open_spec` "
|
|
398
|
+
"must be a string"
|
|
399
|
+
)
|
|
400
|
+
sys.exit(1)
|
|
394
401
|
workflow = expand_review_layer_skill_roots(workflow, skill_dir)
|
|
395
402
|
|
|
396
403
|
out_dir = posixpath.join(root, "_bmad", "render", skill_name)
|
|
@@ -54,20 +54,17 @@ Change `{spec_file}` status to `done` in the frontmatter.
|
|
|
54
54
|
|
|
55
55
|
Follow `./sync-sprint-status.md` with `target_status` = `review`.
|
|
56
56
|
|
|
57
|
-
### Commit and
|
|
57
|
+
### Commit and Complete
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
- If `code` is not available (command fails), skip gracefully and tell the user the spec file path instead.
|
|
59
|
+
If version control is available and the tree is dirty, create a local commit with a conventional message derived from the spec title.
|
|
60
|
+
|
|
61
|
+
{workflow.open_spec}
|
|
63
62
|
|
|
64
63
|
### Display Summary
|
|
65
64
|
|
|
66
|
-
Display summary of your work to the user, including the commit hash if one was created. Any file paths shown in conversation/terminal output must use CWD-relative format (no leading `/`) with `:line` notation (e.g., `src/path/file.ts:42`) for terminal clickability — the goal is to make paths clickable in terminal emulators.
|
|
65
|
+
Display summary of your work to the user, including the commit hash if one was created. Any file paths shown in conversation/terminal output must use CWD-relative format (no leading `/`) with `:line` notation (e.g., `src/path/file.ts:42`) for terminal clickability — the goal is to make paths clickable in terminal emulators.
|
|
67
66
|
|
|
68
|
-
|
|
69
|
-
- **Navigation tip:** "Ctrl+click (Cmd+click on macOS) the links in the Suggested Review Order to jump to each stop."
|
|
70
|
-
- Offer to push and/or create a pull request.
|
|
67
|
+
Offer to push and/or create a pull request.
|
|
71
68
|
|
|
72
69
|
Workflow complete.
|
|
73
70
|
|
|
@@ -56,16 +56,15 @@ If version control is available and the tree is dirty, create a local commit wit
|
|
|
56
56
|
|
|
57
57
|
### Present
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
3. Offer to push and/or create a pull request.
|
|
59
|
+
{workflow.open_spec}
|
|
60
|
+
|
|
61
|
+
Display a summary in conversation output, including:
|
|
62
|
+
|
|
63
|
+
- The commit hash (if one was created).
|
|
64
|
+
- List of files changed with one-line descriptions. Any file paths shown in conversation/terminal output must use CWD-relative format (no leading `/`) with `:line` notation (e.g., `src/path/file.ts:42`) for terminal clickability — this differs from spec-file links which use spec-file-relative paths.
|
|
65
|
+
- Review findings breakdown: patches applied, items deferred, items rejected. If all findings were rejected, say so.
|
|
66
|
+
|
|
67
|
+
Offer to push and/or create a pull request.
|
|
69
68
|
|
|
70
69
|
HALT and wait for human input.
|
|
71
70
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Sync Sprint Status
|
|
2
2
|
|
|
3
|
-
Shared sub-step for updating `sprint-status.yaml` during
|
|
3
|
+
Shared sub-step for updating `sprint-status.yaml` during build. Called from any route (plan-code-review, one-shot, future routes) with a `target_status` parameter.
|
|
4
4
|
|
|
5
5
|
## Preconditions
|
|
6
6
|
|
package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/compile-epic-context.md
RENAMED
|
@@ -52,7 +52,7 @@ Use these headings:
|
|
|
52
52
|
- **No full copies.** Never quote source documents, section numbers, or paste large blocks verbatim. Always distill.
|
|
53
53
|
- **No story-level details.** The story list is for orientation only. Individual story specs handle the details.
|
|
54
54
|
- **Nothing derivable from the codebase.** Don't document what a developer can learn by reading the code.
|
|
55
|
-
- **Be concise and actionable.** Target 800–1500 tokens total. This file loads into bmad-
|
|
55
|
+
- **Be concise and actionable.** Target 800–1500 tokens total. This file loads into bmad-build-auto's context alongside other material.
|
|
56
56
|
- **Never hallucinate content.** If source material doesn't say something, don't invent it.
|
|
57
57
|
- **Omit empty sections entirely**, except Goal and Stories, which are always required.
|
|
58
58
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# DO NOT EDIT -- overwritten on every update.
|
|
2
2
|
#
|
|
3
|
-
# Default customization values for bmad-
|
|
4
|
-
# Override in _bmad/custom/bmad-
|
|
5
|
-
# _bmad/custom/bmad-
|
|
3
|
+
# Default customization values for bmad-build-auto.
|
|
4
|
+
# Override in _bmad/custom/bmad-build-auto.toml or
|
|
5
|
+
# _bmad/custom/bmad-build-auto.user.toml.
|
|
6
6
|
#
|
|
7
7
|
# Merge rules:
|
|
8
8
|
# - Strings replace the default.
|
|
@@ -25,13 +25,13 @@ If the invocation prompt explicitly points to an existing spec file with recogni
|
|
|
25
25
|
|
|
26
26
|
If the invocation prompt instead supplies a spec folder and a story id, with no specific spec file path, this is a **folder+id dispatch**: set `spec_folder` (a `{project-root}`-relative or absolute path) and `story_id` from the prompt. Any further prompt text (e.g. `invoke_dev_with` guidance the caller appended) is additional planning context to carry into step-02 — not a competing description of what to implement.
|
|
27
27
|
|
|
28
|
-
Read `{spec_folder}/stories.yaml`. If the file does not exist or fails to parse, HALT with status `blocked` and blocking condition `no stories.yaml found`. Find the entry whose `id` equals `{story_id}`; if none matches, HALT with status `blocked` and blocking condition `story id not found in stories.yaml`. Take only that entry's `title` and `description` — never read the checkpoint fields or `invoke_dev_with`; those are the caller's orchestration fields, not
|
|
28
|
+
Read `{spec_folder}/stories.yaml`. If the file does not exist or fails to parse, HALT with status `blocked` and blocking condition `no stories.yaml found`. Find the entry whose `id` equals `{story_id}`; if none matches, HALT with status `blocked` and blocking condition `story id not found in stories.yaml`. Take only that entry's `title` and `description` — never read the checkpoint fields or `invoke_dev_with`; those are the caller's orchestration fields, not build-auto's.
|
|
29
29
|
|
|
30
30
|
Look for files matching `{spec_folder}/stories/{story_id}-*.md` (id-prefix match — story ids are prefix-free, so at most one should match):
|
|
31
31
|
- **If more than one matches**, HALT with status `blocked` and blocking condition `ambiguous story file match`.
|
|
32
32
|
- **If exactly one matches**, set `spec_file` to that path.
|
|
33
33
|
- `draft` (planning was interrupted mid-flight): accumulate cross-story context before resuming — load every other file matching `{spec_folder}/stories/*.md` (every match except `{spec_file}` itself), regardless of `status`, and carry forward each one's **Code Map**, **Design Notes**, **Spec Change Log**, **Tasks & Acceptance** checklist state, and **Auto Run Result** details, where present, as additional planning context for step-02. Then **EARLY EXIT** to `[[bmad-snapshot:step-02-plan.md]]`.
|
|
34
|
-
- Any other recognized `status`: **EARLY EXIT** using the same routing as above, including the `review_loop_iteration` reset for `done`. One difference: a `blocked` story HALTs with blocking condition `story already blocked`, not `blocked spec supplied` — the caller did not supply this file;
|
|
34
|
+
- Any other recognized `status`: **EARLY EXIT** using the same routing as above, including the `review_loop_iteration` reset for `done`. One difference: a `blocked` story HALTs with blocking condition `story already blocked`, not `blocked spec supplied` — the caller did not supply this file; build-auto found it by id.
|
|
35
35
|
- `status` missing or unrecognized: HALT with status `blocked` and blocking condition `unrecognized status in existing story file`.
|
|
36
36
|
- **If none matches**, this is the first dispatch for `{story_id}`. The entry's `title` and `description` are the resolved intent. If `{spec_folder}/SPEC.md` does not exist, HALT with status `blocked` and blocking condition `no epic spec found`. Otherwise load it and the files listed in its `companions:` frontmatter as planning context, then accumulate cross-story context the same way as the `draft` case above — load every file matching `{spec_folder}/stories/*.md` (none yet exists for `{story_id}` at this point, so nothing is excluded), regardless of `status`, carrying forward the same fields, where present, as additional planning context for step-02. Then continue to INSTRUCTIONS item 3 below — not `step-03-implement.md`, item 3 of the numbered list in this file (items 1 and 2 do not apply — context and intent are already resolved; item 1.A.5's previous-story continuity scan in particular never runs here, since folder+id dispatch already skips items 1 and 2 entirely — the cross-story accumulation above is its replacement for this dispatch mode).
|
|
37
37
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Build Auto Workflow
|
|
2
2
|
|
|
3
3
|
**Goal:** Turn intent into a hardened, reviewable artifact, without human interaction.
|
|
4
4
|
|
|
@@ -29,13 +29,13 @@ To HALT with a final status and optional blocking condition:
|
|
|
29
29
|
```
|
|
30
30
|
2. **Otherwise:**
|
|
31
31
|
- If `{spec_file}` is known and exists, update `status` in frontmatter and append missing result details under `## Auto Run Result`.
|
|
32
|
-
- If `{spec_file}` is unknown or missing, create `{{.implementation_artifacts}}/bmad-
|
|
32
|
+
- If `{spec_file}` is unknown or missing, create `{{.implementation_artifacts}}/bmad-build-auto-result-<slug-or-timestamp>.md` with:
|
|
33
33
|
```markdown
|
|
34
34
|
---
|
|
35
35
|
status: <final status>
|
|
36
36
|
---
|
|
37
37
|
|
|
38
|
-
# BMad
|
|
38
|
+
# BMad Build Auto Result
|
|
39
39
|
|
|
40
40
|
Status: <final status>
|
|
41
41
|
Blocking condition: <blocking condition, if any>
|
|
@@ -238,13 +238,13 @@ Amelia (Developer): "Before we start the team discussion, let me review all the
|
|
|
238
238
|
Charlie (Senior Dev): "Good idea - those dev notes always have gold in them."
|
|
239
239
|
</output>
|
|
240
240
|
|
|
241
|
-
<action>For each story in epic {{epic_number}}, read the complete story record from {implementation_artifacts}/{{epic_number}}-{{story_num}}-*.md (legacy story files) and {implementation_artifacts}/spec-{{epic_number}}-{{story_num}}-*.md (
|
|
241
|
+
<action>For each story in epic {{epic_number}}, read the complete story record from {implementation_artifacts}/{{epic_number}}-{{story_num}}-*.md (legacy story files) and {implementation_artifacts}/spec-{{epic_number}}-{{story_num}}-*.md (build specs)</action>
|
|
242
242
|
|
|
243
243
|
<action>Extract and analyze from each story:</action>
|
|
244
244
|
|
|
245
245
|
**Dev Notes and Struggles:**
|
|
246
246
|
|
|
247
|
-
- Look for sections like "## Dev Notes", "## Implementation Notes", "## Challenges", "## Development Log" — in
|
|
247
|
+
- Look for sections like "## Dev Notes", "## Implementation Notes", "## Challenges", "## Development Log" — in build specs: "## Tasks & Acceptance", "## Code Map", "## Design Notes", "## Spec Change Log"
|
|
248
248
|
- Identify where developers struggled or made mistakes
|
|
249
249
|
- Note unexpected complexity or gotchas discovered
|
|
250
250
|
- Record technical decisions that didn't work out as planned
|
|
@@ -1480,7 +1480,7 @@ Retrospective document was saved successfully, but {sprint_status_file} may need
|
|
|
1480
1480
|
{{else}}
|
|
1481
1481
|
|
|
1482
1482
|
4. **Begin Epic {{next_epic_num}} when ready**
|
|
1483
|
-
- Start the next epic's stories with Developer agent's `
|
|
1483
|
+
- Start the next epic's stories with Developer agent's `build`
|
|
1484
1484
|
- Epic will be marked as `in-progress` automatically when first story is created
|
|
1485
1485
|
- Ensure all critical path items are done first
|
|
1486
1486
|
{{/if}}
|
|
@@ -181,7 +181,7 @@ development_status:
|
|
|
181
181
|
# - done: All stories in epic completed
|
|
182
182
|
#
|
|
183
183
|
# Epic Status Transitions:
|
|
184
|
-
# - backlog → in-progress: Automatically when first story starts (via
|
|
184
|
+
# - backlog → in-progress: Automatically when first story starts (via build's sprint sync)
|
|
185
185
|
# - in-progress → done: Manually when all stories reach 'done' status
|
|
186
186
|
#
|
|
187
187
|
# Story Status:
|
|
@@ -202,7 +202,7 @@ development_status:
|
|
|
202
202
|
#
|
|
203
203
|
# WORKFLOW NOTES:
|
|
204
204
|
# ===============
|
|
205
|
-
# - Epic transitions to 'in-progress' automatically when first story starts (via
|
|
205
|
+
# - Epic transitions to 'in-progress' automatically when first story starts (via build's sprint sync)
|
|
206
206
|
# - Stories can be worked in parallel if team capacity allows
|
|
207
207
|
# - Developer typically creates next story after previous one is 'done' to incorporate learnings
|
|
208
208
|
# - Dev moves story to 'review', then runs code-review (fresh context, different LLM recommended)
|
|
@@ -152,7 +152,7 @@ Enter corrections (e.g., "1=in-progress, 2=backlog") or "skip" to continue witho
|
|
|
152
152
|
|
|
153
153
|
- IF any story has status "review": suggest `/bmad:bmm:workflows:code-review`
|
|
154
154
|
- IF any story has status "in-progress" AND no stories have status "ready-for-dev": recommend staying focused on active story
|
|
155
|
-
- IF all epics have status "backlog" AND no stories have status "ready-for-dev": recommend `bmad-
|
|
155
|
+
- IF all epics have status "backlog" AND no stories have status "ready-for-dev": recommend `bmad-build` to start the first backlog story
|
|
156
156
|
- IF `last_updated` timestamp is more than 7 days old (or `last_updated` is missing, fall back to `generated`): warn "sprint-status.yaml may be stale"
|
|
157
157
|
- IF any story key doesn't match an epic pattern (e.g., story "5-1-..." but no "epic-5"): warn "orphaned story detected"
|
|
158
158
|
- IF any epic has status in-progress but has no associated stories: warn "in-progress epic has no stories"
|
|
@@ -161,10 +161,10 @@ Enter corrections (e.g., "1=in-progress, 2=backlog") or "skip" to continue witho
|
|
|
161
161
|
<step n="3" goal="Select next action recommendation">
|
|
162
162
|
<action>Pick the next recommended workflow using priority:</action>
|
|
163
163
|
<note>When selecting "first" story: sort by epic number, then story number (e.g., 1-1 before 1-2 before 2-1)</note>
|
|
164
|
-
1. If any story status == in-progress → recommend `
|
|
164
|
+
1. If any story status == in-progress → recommend `build` to resume the first in-progress story
|
|
165
165
|
2. Else if any story status == review → recommend `code-review` for the first review story
|
|
166
|
-
3. Else if any story status == ready-for-dev → recommend `
|
|
167
|
-
4. Else if any story status == backlog → recommend `
|
|
166
|
+
3. Else if any story status == ready-for-dev → recommend `build` to start work on the first ready-for-dev story
|
|
167
|
+
4. Else if any story status == backlog → recommend `build` to start the first backlog story
|
|
168
168
|
5. Else if any retrospective status == optional → recommend `retrospective`
|
|
169
169
|
6. Else → All implementation items done; congratulate the user - you both did amazing work together!
|
|
170
170
|
<action>Store selected recommendation as: next_story_id, next_workflow_id, next_agent (DEV)</action>
|
|
@@ -2,7 +2,7 @@ module,skill,display-name,menu-code,description,action,args,phase,preceded-by,fo
|
|
|
2
2
|
BMad Method,_meta,,,,,,,,,false,https://docs.bmad-method.org/llms.txt,
|
|
3
3
|
BMad Method,bmad-document-project,Document Project,DP,Analyze an existing project to produce useful documentation.,,,anytime,,,false,project-knowledge,*
|
|
4
4
|
BMad Method,bmad-generate-project-context,Generate Project Context,GPC,Scan existing codebase to generate a lean LLM-optimized project-context.md. Essential for brownfield projects.,,,anytime,,,false,output_folder,project context
|
|
5
|
-
BMad Method,bmad-
|
|
5
|
+
BMad Method,bmad-build,Build,BD,Official Phase 4 implementation loop: clarify intent plan implement review and present.,,,4-implementation,bmad-sprint-planning,bmad-code-review,true,implementation_artifacts,spec and project implementation
|
|
6
6
|
BMad Method,bmad-spec,Spec,SPC,"Use to distill any intent input (brief, PRD, transcript, brain dump, design folder, mixed multi-source) into a succinct, no-fluff SPEC.md contract + companions that downstream work derives from. Locks the WHAT before the HOW. Works for software, game design, research, editorial, policy, business, anything intent-bearing. Validation mode also available.",,[path],anytime,,,false,{output_folder}/specs/spec-{slug},SPEC.md + companion files
|
|
7
7
|
BMad Method,bmad-correct-course,Correct Course,CC,Navigate significant changes. May recommend start over update PRD redo architecture sprint planning or correct epics and stories.,,,anytime,,,false,planning_artifacts,change proposal
|
|
8
8
|
BMad Method,bmad-agent-tech-writer,Write Document,WD,"Describe in detail what you want, and the agent will follow documentation best practices. Multi-turn conversation with subprocess for research/review.",write,,anytime,,,false,project-knowledge,document
|
|
@@ -20,7 +20,7 @@ BMad Method,bmad-create-epics-and-stories,Create Epics and Stories,CE,,,,3-solut
|
|
|
20
20
|
BMad Method,bmad-check-implementation-readiness,Check Implementation Readiness,IR,Ensure PRD UX Architecture and Epics Stories are aligned.,,,3-solutioning,bmad-create-epics-and-stories,,true,planning_artifacts,readiness report
|
|
21
21
|
BMad Method,bmad-sprint-planning,Sprint Planning,SP,Kicks off implementation by producing a plan the implementation agents will follow in sequence for every story.,,,4-implementation,,,true,implementation_artifacts,sprint status
|
|
22
22
|
BMad Method,bmad-sprint-status,Sprint Status,SS,Anytime: Summarize sprint status and route to next workflow.,,,4-implementation,bmad-sprint-planning,,false,,
|
|
23
|
-
BMad Method,bmad-code-review,Code Review,CR,Ad hoc review of any code change. Optional extra layer after
|
|
23
|
+
BMad Method,bmad-code-review,Code Review,CR,Ad hoc review of any code change. Optional extra layer after Build's built-in review.,,,4-implementation,bmad-build,,false,,
|
|
24
24
|
BMad Method,bmad-checkpoint-preview,Checkpoint,CK,Guided walkthrough of a change from purpose and context into details. Use for human review of commits branches or PRs.,,,4-implementation,,,false,,
|
|
25
|
-
BMad Method,bmad-qa-generate-e2e-tests,QA Automation Test,QA,Generate automated API and E2E tests for implemented code. NOT for code review or story validation — use CR for that.,,,4-implementation,bmad-
|
|
25
|
+
BMad Method,bmad-qa-generate-e2e-tests,QA Automation Test,QA,Generate automated API and E2E tests for implemented code. NOT for code review or story validation — use CR for that.,,,4-implementation,bmad-build,,false,implementation_artifacts,test suite
|
|
26
26
|
BMad Method,bmad-retrospective,Retrospective,ER,Optional at epic end: Review completed work lessons learned and next epic or if major issues consider CC.,,,4-implementation,bmad-code-review,,false,implementation_artifacts,retrospective
|
|
@@ -30,8 +30,8 @@ planning_artifacts: # Phase 1-3 artifacts
|
|
|
30
30
|
default: "{output_folder}/planning-artifacts"
|
|
31
31
|
result: "{project-root}/{value}"
|
|
32
32
|
|
|
33
|
-
implementation_artifacts: # Phase 4 artifacts and
|
|
34
|
-
prompt: "Where should implementation artifacts be stored? (Sprint status, stories, reviews, retrospectives,
|
|
33
|
+
implementation_artifacts: # Phase 4 artifacts and build flow output
|
|
34
|
+
prompt: "Where should implementation artifacts be stored? (Sprint status, stories, reviews, retrospectives, Build output)"
|
|
35
35
|
default: "{output_folder}/implementation-artifacts"
|
|
36
36
|
result: "{project-root}/{value}"
|
|
37
37
|
|
|
@@ -6,6 +6,8 @@ stated intent and pre-resolved customization fields so the target skips its own
|
|
|
6
6
|
|
|
7
7
|
| Shim | Forwards to |
|
|
8
8
|
| -------------------------- | ------------------------------------ |
|
|
9
|
+
| `bmad-quick-dev` | `bmad-build` |
|
|
10
|
+
| `bmad-dev-auto` | `bmad-build-auto` |
|
|
9
11
|
| `bmad-create-story` | Retained in full |
|
|
10
12
|
| `bmad-dev-story` | Retained in full |
|
|
11
13
|
| `bmad-create-prd` | `bmad-prd` (create intent) |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bmad-create-story
|
|
3
|
-
description: "Deprecated: `bmad-
|
|
3
|
+
description: "Deprecated: `bmad-build` is now the official implementation method. Only use this when explicitly invoked by name."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Create Story Workflow
|
|
@@ -62,7 +62,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
|
|
|
62
62
|
|
|
63
63
|
Greet `{user_name}`, speaking in `{communication_language}`.
|
|
64
64
|
|
|
65
|
-
<output>Deprecated: `bmad-
|
|
65
|
+
<output>Deprecated: `bmad-build` is now the official implementation method. Only use this when explicitly invoked by name.</output>
|
|
66
66
|
|
|
67
67
|
### Step 6: Execute Append Steps
|
|
68
68
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bmad-dev-auto
|
|
3
|
+
description: "Deprecated: forwards to bmad-build-auto. Do not use unless invoked by name."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Deprecated Build Auto Alias
|
|
7
|
+
|
|
8
|
+
## On Activation
|
|
9
|
+
|
|
10
|
+
1. Check whether either legacy customization file exists:
|
|
11
|
+
- `{project-root}/_bmad/custom/bmad-dev-auto.toml`
|
|
12
|
+
- `{project-root}/_bmad/custom/bmad-dev-auto.user.toml`
|
|
13
|
+
2. If neither legacy file exists, output exactly `bmad-dev-auto is deprecated. Redirecting to bmad-build-auto. Please use bmad-build-auto in the future.`, invoke `bmad-build-auto` exactly once with the user's original input verbatim, then execute no further steps in this shim.
|
|
14
|
+
3. For every legacy file that exists, use its matching new filename:
|
|
15
|
+
- `{project-root}/_bmad/custom/bmad-dev-auto.toml` becomes `{project-root}/_bmad/custom/bmad-build-auto.toml`.
|
|
16
|
+
- `{project-root}/_bmad/custom/bmad-dev-auto.user.toml` becomes `{project-root}/_bmad/custom/bmad-build-auto.user.toml`.
|
|
17
|
+
4. If the matching new file does not exist, tell the user that the customization file uses the deprecated name and offer to rename it. Rename it only after explicit approval. If approval is declined or unavailable, or the rename fails, HALT and do not invoke any skill.
|
|
18
|
+
5. If the matching new file already exists, do not overwrite it. Read both files, explain their differences, and propose the exact content for the new file. Resolve conflicting values with the user. Only after the user explicitly approves that content, save and verify the new file, then remove the legacy file. If approval is declined or unavailable, or any operation fails, HALT and do not invoke any skill.
|
|
19
|
+
6. After every detected legacy file has been migrated successfully and no legacy file remains, output exactly `bmad-dev-auto is deprecated. Redirecting to bmad-build-auto. Please use bmad-build-auto in the future.`, invoke `bmad-build-auto` exactly once with the user's original input verbatim, then execute no further steps in this shim.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bmad-dev-story
|
|
3
|
-
description: "Deprecated: `bmad-
|
|
3
|
+
description: "Deprecated: `bmad-build` is now the official implementation method. Only use this when explicitly invoked by name."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Dev Story Workflow
|
|
@@ -60,7 +60,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
|
|
|
60
60
|
|
|
61
61
|
Greet `{user_name}`, speaking in `{communication_language}`.
|
|
62
62
|
|
|
63
|
-
<output>Deprecated: `bmad-
|
|
63
|
+
<output>Deprecated: `bmad-build` is now the official implementation method. Only use this when explicitly invoked by name.</output>
|
|
64
64
|
|
|
65
65
|
### Step 6: Execute Append Steps
|
|
66
66
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bmad-quick-dev
|
|
3
|
+
description: "Deprecated: forwards to bmad-build. Do not use unless invoked by name."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Deprecated Build Alias
|
|
7
|
+
|
|
8
|
+
## On Activation
|
|
9
|
+
|
|
10
|
+
1. Check whether either legacy customization file exists:
|
|
11
|
+
- `{project-root}/_bmad/custom/bmad-quick-dev.toml`
|
|
12
|
+
- `{project-root}/_bmad/custom/bmad-quick-dev.user.toml`
|
|
13
|
+
2. If neither legacy file exists, output exactly `bmad-quick-dev is deprecated. Redirecting to bmad-build. Please use bmad-build in the future.`, invoke `bmad-build` exactly once with the user's original input verbatim, then execute no further steps in this shim.
|
|
14
|
+
3. For every legacy file that exists, use its matching new filename:
|
|
15
|
+
- `{project-root}/_bmad/custom/bmad-quick-dev.toml` becomes `{project-root}/_bmad/custom/bmad-build.toml`.
|
|
16
|
+
- `{project-root}/_bmad/custom/bmad-quick-dev.user.toml` becomes `{project-root}/_bmad/custom/bmad-build.user.toml`.
|
|
17
|
+
4. If the matching new file does not exist, tell the user that the customization file uses the deprecated name and offer to rename it. Rename it only after explicit approval. If approval is declined or unavailable, or the rename fails, HALT and do not invoke any skill.
|
|
18
|
+
5. If the matching new file already exists, do not overwrite it. Read both files, explain their differences, and propose the exact content for the new file. Resolve conflicting values with the user. Only after the user explicitly approves that content, save and verify the new file, then remove the legacy file. If approval is declined or unavailable, or any operation fails, HALT and do not invoke any skill.
|
|
19
|
+
6. After every detected legacy file has been migrated successfully and no legacy file remains, output exactly `bmad-quick-dev is deprecated. Redirecting to bmad-build. Please use bmad-build in the future.`, invoke `bmad-build` exactly once with the user's original input verbatim, then execute no further steps in this shim.
|
|
@@ -97,7 +97,7 @@ Voice the personas yourself by default. Spawn separate agents only when a branch
|
|
|
97
97
|
|
|
98
98
|
The session can end in three valid states:
|
|
99
99
|
|
|
100
|
-
- **Hardened** — the idea is stronger and specific enough to use. Distill the memlog into `{workspace}/forged-idea.md`. Keep it extremely short: only the decisions, rejected options, and reasons that matter downstream, in the user's meaning. Do not write a prose summary, template, or conversation recap. If it reads like a document, it is too long. If planning or dev skills are installed (`bmad-spec`, `bmad-prd`, `bmad-prfaq`, `bmad-
|
|
100
|
+
- **Hardened** — the idea is stronger and specific enough to use. Distill the memlog into `{workspace}/forged-idea.md`. Keep it extremely short: only the decisions, rejected options, and reasons that matter downstream, in the user's meaning. Do not write a prose summary, template, or conversation recap. If it reads like a document, it is too long. If planning or dev skills are installed (`bmad-spec`, `bmad-prd`, `bmad-prfaq`, `bmad-build`), offer the file as their input; if none are, the file stands on its own — never treat a missing skill as an error.
|
|
101
101
|
- **Killed** — the idea does not hold up. Say so plainly and record why. Finding that out early is a valid outcome.
|
|
102
102
|
- **Clearer** — the user understands the idea better, but there is no hardened idea to hand off. Leave the memlog as the record; no `forged-idea.md` is needed.
|
|
103
103
|
|
|
@@ -6,5 +6,5 @@ Core,bmad-help,BMad Help,BH,,,,anytime,,,false,,
|
|
|
6
6
|
Core,bmad-customize,BMad Customize,BC,"Use when you want to change how an agent or workflow behaves — add persistent facts, swap templates, insert activation hooks, or customize menus. Scans what's customizable, picks the right scope (agent vs workflow), writes the override to _bmad/custom/, and verifies the merge. No TOML hand-authoring required.",,,anytime,,,false,{project-root}/_bmad/custom,TOML override files
|
|
7
7
|
Core,bmad-advanced-elicitation,Advanced Elicitation,AE,"Use at any checkpoint to push a just-produced draft, section, or plan past its first version — pick from a menu of elicitation methods (pre-mortem, first principles, red team, socratic) and apply the improvements.",,,anytime,,,false,,
|
|
8
8
|
Core,bmad-review,Review,RV,"Use to review anything before it ships — a diff, branch, or uncommitted changes; a PRD, spec, story, or architecture doc; any prose document. Runs whichever installed lenses fit the content and reports findings in one shape: shipped lenses cover adversarial critique, edge cases, verification gaps, document structure (cuts, merges, moves), and prose copy-edit, and installs may add more. Reach for it to tighten a bloated or LLM-slop draft, pressure-test a plan before building, or check a change is adequately tested. Run every applicable lens or name the ones you want. Code Review in other modules calls it automatically.",,[path],anytime,,,false,,findings JSON array + markdown report
|
|
9
|
-
Core,bmad-forge-idea,Forge Idea,FI,"Use to pressure-test and harden an idea — software, business, creative, research, or life — until it proves out, hardens into something buildable, or dies cheaply. Persona-driven interrogation; optional handoff to bmad-spec or bmad-
|
|
9
|
+
Core,bmad-forge-idea,Forge Idea,FI,"Use to pressure-test and harden an idea — software, business, creative, research, or life — until it proves out, hardens into something buildable, or dies cheaply. Persona-driven interrogation; optional handoff to bmad-spec or bmad-build.",,,anytime,,,false,{output_folder}/forge,refined-idea brief (optional)
|
|
10
10
|
Core,bmad-deep-recon,Deep Recon,RS,Decision-grade research three ways: draft a deep-research prompt for your own AI tool then process the returned report into a downstream-ready cited summary — or run the research directly via web fan-out. Types: market domain technical competitive user-voice academic-lit plus a select shape for choose-between decisions; claim verification and refresh lifecycle. Custom types via overrides.,,[type],anytime,,,false,{planning_artifacts}/research,research report/summary + optional html briefing
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -434,7 +434,7 @@ class ConfigDrivenIdeSetup {
|
|
|
434
434
|
if (!canonicalId) continue;
|
|
435
435
|
|
|
436
436
|
// Derive source directory from path column
|
|
437
|
-
// path is like "_bmad/bmm/workflows/bmad-quick-flow/bmad-
|
|
437
|
+
// path is like "_bmad/bmm/workflows/bmad-quick-flow/bmad-build-new-preview/SKILL.md"
|
|
438
438
|
// Strip bmadFolderName prefix and join with bmadDir, then get dirname
|
|
439
439
|
const relativePath = record.path.startsWith(bmadPrefix) ? record.path.slice(bmadPrefix.length) : record.path;
|
|
440
440
|
const sourceFile = path.join(bmadDir, relativePath);
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
|
|
4
|
-
const CANONICAL_LLMS_ENTRY = '**[
|
|
4
|
+
const CANONICAL_LLMS_ENTRY = '**[Build]';
|
|
5
5
|
const CANONICAL_LLMS_DESCRIPTION = 'Canonical implementation workflow for direct intent and fully planned work';
|
|
6
6
|
|
|
7
7
|
const FORBIDDEN_TERMS = [
|
|
8
|
+
/\bbmad-(?:quick-dev|dev-auto)\b/gi,
|
|
9
|
+
/\bQuick[ -]?Dev\b/gi,
|
|
10
|
+
/\bDev[ -]?Auto\b/gi,
|
|
8
11
|
/\bbmad-(?:create|dev)-story\b/gi,
|
|
9
12
|
/\b(?:create-story|dev-story)\b/gi,
|
|
10
13
|
/\b(?:Create Story|Dev Story)\b/g,
|
|
@@ -26,7 +29,7 @@ export function validatePublishedImplementationModel(siteDir) {
|
|
|
26
29
|
const llmsPath = path.join(siteDir, 'llms.txt');
|
|
27
30
|
const llmsContent = fs.readFileSync(llmsPath, 'utf-8');
|
|
28
31
|
if (!llmsContent.includes(CANONICAL_LLMS_ENTRY) || !llmsContent.includes(CANONICAL_LLMS_DESCRIPTION)) {
|
|
29
|
-
throw new Error('llms.txt must describe
|
|
32
|
+
throw new Error('llms.txt must describe Build as canonical for both direct intent and fully planned work');
|
|
30
33
|
}
|
|
31
34
|
}
|
|
32
35
|
|
|
@@ -161,5 +161,5 @@ updated: {YYYY-MM-DD}
|
|
|
161
161
|
- **Environmental and Reliability Requirements**.
|
|
162
162
|
|
|
163
163
|
### Small-scope all-inclusive *(use when scope is 1-2 stories' worth and the user wants a single captured artifact: chosen during the Right-skill check in Discovery)*
|
|
164
|
-
- **Stories**: story-level specs listed inline at the end of the doc. Each story: *"As a [persona], I can [action] [under conditions]. Acceptance: [testable criteria]."* Numbered Story-1, Story-2, ... for reference. Pair with very lean §1 Vision, §2 Target User (often just JTBD + one UJ), §3 Glossary (handful of terms), §4 Features (often a single feature), §6 MVP Scope (in/out very tight). The whole doc fits on a page or two and captures intent + implementable stories in one place. If the user doesn't want the captured artifact at all, `bmad-
|
|
164
|
+
- **Stories**: story-level specs listed inline at the end of the doc. Each story: *"As a [persona], I can [action] [under conditions]. Acceptance: [testable criteria]."* Numbered Story-1, Story-2, ... for reference. Pair with very lean §1 Vision, §2 Target User (often just JTBD + one UJ), §3 Glossary (handful of terms), §4 Features (often a single feature), §6 MVP Scope (in/out very tight). The whole doc fits on a page or two and captures intent + implementable stories in one place. If the user doesn't want the captured artifact at all, `bmad-build` is the better path; this cluster is only for "I want a doc *and* the stories."
|
|
165
165
|
|
/package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/references/deletion-check.md
RENAMED
|
File without changes
|
/package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/review-prompts/adversarial.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/bmm-skills/4-implementation/{bmad-quick-dev → bmad-build}/step-01-clarify-and-route.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/step-03-implement.md
RENAMED
|
File without changes
|
/package/src/bmm-skills/4-implementation/{bmad-dev-auto → bmad-build-auto}/step-04-review.md
RENAMED
|
File without changes
|