bmad-method 6.0.0-Beta.5 → 6.0.0-Beta.7
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/skills/changelog-social/SKILL.md +178 -0
- package/.claude/skills/changelog-social/examples/discord-example.md +53 -0
- package/.claude/skills/changelog-social/examples/linkedin-example.md +49 -0
- package/.claude/skills/changelog-social/examples/twitter-example.md +55 -0
- package/.claude/skills/changelog-social.skill +0 -0
- package/.claude/skills/draft-changelog/SKILL.md +2 -2
- package/.claude/skills/draft-changelog/prompts/instructions.md +25 -1
- package/.claude/skills/gh-triage/SKILL.md +1 -1
- package/.claude/skills/release-module/SKILL.md +1 -1
- package/.claude/skills/release-module/prompts/instructions.md +0 -4
- package/.github/workflows/quality.yaml +3 -0
- package/.vscode/settings.json +1 -2
- package/CHANGELOG.md +65 -1
- package/docs/bmgd/game-types.md +1 -0
- package/docs/bmgd/index.md +1 -1
- package/docs/bmgd/quick-flow-workflows.md +1 -0
- package/docs/reference/agents.md +22 -0
- package/docs/reference/commands.md +34 -0
- package/docs/reference/testing.md +21 -0
- package/docs/reference/workflow-map.md +1 -1
- package/package.json +5 -2
- package/src/bmm/agents/analyst.agent.yaml +11 -5
- package/src/bmm/agents/dev.agent.yaml +0 -1
- package/src/bmm/agents/pm.agent.yaml +3 -6
- package/src/bmm/agents/{quinn.agent.yaml → qa.agent.yaml} +3 -3
- package/src/bmm/module-help.csv +13 -20
- package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +0 -1
- package/src/bmm/workflows/1-analysis/research/workflow-domain-research.md +54 -0
- package/src/bmm/workflows/1-analysis/research/workflow-market-research.md +54 -0
- package/src/bmm/workflows/1-analysis/research/workflow-technical-research.md +54 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +2 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +63 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +65 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +65 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +0 -1
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +0 -1
- package/src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +2 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +0 -1
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +0 -1
- package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +0 -3
- package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +0 -4
- package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +0 -4
- package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +0 -4
- package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +0 -3
- package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +0 -4
- package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +0 -6
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +0 -1
- package/src/bmm/workflows/document-project/workflow.yaml +0 -8
- package/src/bmm/workflows/qa/automate/workflow.yaml +0 -2
- package/src/core/tasks/editorial-review-prose.xml +14 -12
- package/src/core/tasks/editorial-review-structure.xml +28 -28
- package/src/core/tasks/help.md +36 -16
- package/src/core/tasks/index-docs.xml +1 -1
- package/src/core/tasks/review-adversarial-general.xml +2 -2
- package/src/core/tasks/shard-doc.xml +1 -2
- package/src/core/tasks/workflow.xml +1 -1
- package/src/core/workflows/advanced-elicitation/workflow.xml +1 -1
- package/test/test-installation-components.js +1 -1
- package/tools/build-docs.js +21 -1
- package/tools/cli/bmad-cli.js +42 -3
- package/tools/cli/installers/lib/core/config-collector.js +5 -1
- package/tools/cli/installers/lib/core/dependency-resolver.js +1 -1
- package/tools/cli/installers/lib/core/installer.js +1 -6
- package/tools/cli/installers/lib/core/manifest-generator.js +149 -125
- package/tools/cli/installers/lib/custom/handler.js +1 -1
- package/tools/cli/installers/lib/ide/_base-ide.js +25 -15
- package/tools/cli/installers/lib/ide/_config-driven.js +79 -9
- package/tools/cli/installers/lib/ide/codex.js +7 -1
- package/tools/cli/installers/lib/ide/manager.js +8 -2
- package/tools/cli/installers/lib/ide/platform-codes.yaml +0 -3
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +2 -2
- package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +14 -3
- package/tools/cli/installers/lib/ide/shared/path-utils.js +9 -2
- package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +126 -29
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +2 -2
- package/tools/cli/installers/lib/ide/templates/combined/default-task.md +10 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-tool.md +10 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-task.toml +11 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-tool.toml +11 -0
- package/tools/cli/installers/lib/modules/manager.js +3 -6
- package/tools/cli/lib/agent/installer.js +1 -1
- package/tools/cli/lib/prompts.js +192 -6
- package/tools/cli/lib/ui.js +124 -72
- package/tools/schema/agent.js +0 -1
- package/tools/validate-file-refs.js +480 -0
- package/website/astro.config.mjs +1 -35
- package/src/bmm/workflows/1-analysis/research/workflow.md +0 -173
- package/src/bmm/workflows/2-plan-workflows/create-prd/validation-report-prd-workflow.md +0 -433
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow.md +0 -150
- package/src/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +0 -90
- package/src/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +0 -127
- package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +0 -39
- package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +0 -130
- package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +0 -27
- package/src/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +0 -43
- package/src/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +0 -141
- package/src/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +0 -27
- package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +0 -49
- package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +0 -241
- package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +0 -27
- package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +0 -38
- package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +0 -133
- package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +0 -27
- package/src/core/resources/excalidraw/README.md +0 -160
- package/src/core/resources/excalidraw/excalidraw-helpers.md +0 -127
- package/src/core/resources/excalidraw/library-loader.md +0 -50
- package/src/core/resources/excalidraw/validate-json-instructions.md +0 -79
- package/tools/flattener/aggregate.js +0 -76
- package/tools/flattener/binary.js +0 -80
- package/tools/flattener/discovery.js +0 -71
- package/tools/flattener/files.js +0 -35
- package/tools/flattener/ignoreRules.js +0 -172
- package/tools/flattener/main.js +0 -483
- package/tools/flattener/projectRoot.js +0 -201
- package/tools/flattener/prompts.js +0 -44
- package/tools/flattener/stats.helpers.js +0 -368
- package/tools/flattener/stats.js +0 -75
- package/tools/flattener/test-matrix.js +0 -409
- package/tools/flattener/xml.js +0 -82
|
@@ -28,9 +28,3 @@ input_file_patterns:
|
|
|
28
28
|
description: "Sprint status file generated by sprint-planning"
|
|
29
29
|
whole: "{implementation_artifacts}/sprint-status.yaml"
|
|
30
30
|
load_strategy: "FULL_LOAD"
|
|
31
|
-
|
|
32
|
-
# Standalone so IDE commands get generated
|
|
33
|
-
standalone: true
|
|
34
|
-
|
|
35
|
-
# No web bundle needed
|
|
36
|
-
web_bundle: false
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
name: quick-spec
|
|
3
3
|
description: Conversational spec engineering - ask questions, investigate code, produce implementation-ready tech-spec.
|
|
4
4
|
main_config: '{project-root}/_bmad/bmm/config.yaml'
|
|
5
|
-
web_bundle: true
|
|
6
5
|
|
|
7
6
|
# Checkpoint handler paths
|
|
8
7
|
advanced_elicitation: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
|
@@ -20,11 +20,3 @@ validation: "{installed_path}/checklist.md"
|
|
|
20
20
|
|
|
21
21
|
# Required data files - CRITICAL for project type detection and documentation requirements
|
|
22
22
|
documentation_requirements_csv: "{installed_path}/documentation-requirements.csv"
|
|
23
|
-
|
|
24
|
-
# Output configuration - Multiple files generated in output folder
|
|
25
|
-
# Primary output: {output_folder}/project-documentation/
|
|
26
|
-
# Additional files generated by sub-workflows based on project structure
|
|
27
|
-
|
|
28
|
-
standalone: true
|
|
29
|
-
|
|
30
|
-
web_bundle: false
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<task id="_bmad/core/tasks/editorial-review-prose.xml"
|
|
2
2
|
name="Editorial Review - Prose"
|
|
3
|
-
description="Clinical copy-editor that reviews text for communication issues"
|
|
4
|
-
standalone="true">
|
|
3
|
+
description="Clinical copy-editor that reviews text for communication issues">
|
|
5
4
|
|
|
6
5
|
<objective>Review text for communication issues that impede comprehension and output suggested fixes in a three-column table</objective>
|
|
7
6
|
|
|
@@ -10,7 +9,7 @@
|
|
|
10
9
|
<input name="style_guide" required="false"
|
|
11
10
|
desc="Project-specific style guide. When provided, overrides all generic
|
|
12
11
|
principles in this task (except CONTENT IS SACROSANCT). The style guide
|
|
13
|
-
is the final authority on tone, structure, and language choices."/>
|
|
12
|
+
is the final authority on tone, structure, and language choices." />
|
|
14
13
|
<input name="reader_type" required="false" default="humans" desc="'humans' (default) for standard editorial, 'llm' for precision focus" />
|
|
15
14
|
</inputs>
|
|
16
15
|
|
|
@@ -62,7 +61,8 @@
|
|
|
62
61
|
</step>
|
|
63
62
|
|
|
64
63
|
<step n="3" title="Editorial Review" critical="true">
|
|
65
|
-
<action if="style_guide provided">Consult style_guide now and note its key requirements—these override default principles for this
|
|
64
|
+
<action if="style_guide provided">Consult style_guide now and note its key requirements—these override default principles for this
|
|
65
|
+
review</action>
|
|
66
66
|
<action>Review all prose sections (skip code blocks, frontmatter, structural markup)</action>
|
|
67
67
|
<action>Identify communication issues that impede comprehension</action>
|
|
68
68
|
<action>For each issue, determine the minimal fix that achieves clarity</action>
|
|
@@ -77,16 +77,18 @@
|
|
|
77
77
|
<action if="no issues found">Output: "No editorial issues identified"</action>
|
|
78
78
|
|
|
79
79
|
<output-format>
|
|
80
|
-
| Original Text | Revised Text | Changes |
|
|
81
|
-
|---------------|--------------|---------|
|
|
82
|
-
| The exact original passage | The suggested revision | Brief explanation of what changed and why |
|
|
80
|
+
| Original Text | Revised Text | Changes |
|
|
81
|
+
|---------------|--------------|---------|
|
|
82
|
+
| The exact original passage | The suggested revision | Brief explanation of what changed and why |
|
|
83
83
|
</output-format>
|
|
84
84
|
|
|
85
85
|
<example title="Correct output format">
|
|
86
|
-
| Original Text | Revised Text | Changes |
|
|
87
|
-
|---------------|--------------|---------|
|
|
88
|
-
| The system will processes data and it handles errors. | The system processes data and handles errors. | Fixed subject-verb
|
|
89
|
-
|
|
86
|
+
| Original Text | Revised Text | Changes |
|
|
87
|
+
|---------------|--------------|---------|
|
|
88
|
+
| The system will processes data and it handles errors. | The system processes data and handles errors. | Fixed subject-verb
|
|
89
|
+
agreement ("will processes" to "processes"); removed redundant "it" |
|
|
90
|
+
| Users can chose from options (lines 12, 45, 78) | Users can choose from options | Fixed spelling: "chose" to "choose" (appears in
|
|
91
|
+
3 locations) |
|
|
90
92
|
</example>
|
|
91
93
|
</step>
|
|
92
94
|
</flow>
|
|
@@ -97,4 +99,4 @@
|
|
|
97
99
|
<condition>If no issues found after thorough review, output "No editorial issues identified" (this is valid completion, not an error)</condition>
|
|
98
100
|
</halt-conditions>
|
|
99
101
|
|
|
100
|
-
</task>
|
|
102
|
+
</task>
|
|
@@ -4,29 +4,28 @@
|
|
|
4
4
|
<task id="_bmad/core/tasks/editorial-review-structure.xml"
|
|
5
5
|
name="Editorial Review - Structure"
|
|
6
6
|
description="Structural editor that proposes cuts, reorganization,
|
|
7
|
-
and simplification while preserving comprehension"
|
|
8
|
-
standalone="true">
|
|
7
|
+
and simplification while preserving comprehension">
|
|
9
8
|
<objective>Review document structure and propose substantive changes
|
|
10
9
|
to improve clarity and flow-run this BEFORE copy editing</objective>
|
|
11
10
|
<inputs>
|
|
12
11
|
<input name="content" required="true"
|
|
13
|
-
desc="Document to review (markdown, plain text, or structured content)"/>
|
|
12
|
+
desc="Document to review (markdown, plain text, or structured content)" />
|
|
14
13
|
<input name="style_guide" required="false"
|
|
15
14
|
desc="Project-specific style guide. When provided, overrides all generic
|
|
16
15
|
principles in this task (except CONTENT IS SACROSANCT). The style guide
|
|
17
|
-
is the final authority on tone, structure, and language choices."/>
|
|
16
|
+
is the final authority on tone, structure, and language choices." />
|
|
18
17
|
<input name="purpose" required="false"
|
|
19
18
|
desc="Document's intended purpose (e.g., 'quickstart tutorial',
|
|
20
|
-
'API reference', 'conceptual overview')"/>
|
|
19
|
+
'API reference', 'conceptual overview')" />
|
|
21
20
|
<input name="target_audience" required="false"
|
|
22
21
|
desc="Who reads this? (e.g., 'new users', 'experienced developers',
|
|
23
|
-
'decision makers')"/>
|
|
22
|
+
'decision makers')" />
|
|
24
23
|
<input name="reader_type" required="false" default="humans"
|
|
25
24
|
desc="'humans' (default) preserves comprehension aids;
|
|
26
|
-
'llm' optimizes for precision and density"/>
|
|
25
|
+
'llm' optimizes for precision and density" />
|
|
27
26
|
<input name="length_target" required="false"
|
|
28
27
|
desc="Target reduction (e.g., '30% shorter', 'half the length',
|
|
29
|
-
'no limit')"/>
|
|
28
|
+
'no limit')" />
|
|
30
29
|
</inputs>
|
|
31
30
|
<llm critical="true">
|
|
32
31
|
<i>MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER</i>
|
|
@@ -69,7 +68,7 @@
|
|
|
69
68
|
<i>Cut emotional language, encouragement, and orientation sections</i>
|
|
70
69
|
<i>
|
|
71
70
|
IF concept is well-known from training (e.g., "conventional
|
|
72
|
-
|
|
71
|
+
commits", "REST APIs"): Reference the standard-don't re-teach it
|
|
73
72
|
ELSE: Be explicit-don't assume the LLM will infer correctly
|
|
74
73
|
</i>
|
|
75
74
|
<i>Use consistent terminology-same word for same concept throughout</i>
|
|
@@ -132,7 +131,8 @@
|
|
|
132
131
|
<action>Note reader_type and which principles apply (human-reader-principles or llm-reader-principles)</action>
|
|
133
132
|
</step>
|
|
134
133
|
<step n="3" title="Structural Analysis" critical="true">
|
|
135
|
-
<action if="style_guide provided">Consult style_guide now and note its key requirements—these override default principles for this
|
|
134
|
+
<action if="style_guide provided">Consult style_guide now and note its key requirements—these override default principles for this
|
|
135
|
+
analysis</action>
|
|
136
136
|
<action>Map the document structure: list each major section with its word count</action>
|
|
137
137
|
<action>Evaluate structure against the selected model's primary rules
|
|
138
138
|
(e.g., 'Does recommendation come first?' for Pyramid)</action>
|
|
@@ -176,27 +176,27 @@
|
|
|
176
176
|
<action>Output estimated total reduction if all recommendations accepted</action>
|
|
177
177
|
<action if="no recommendations">Output: "No substantive changes recommended-document structure is sound"</action>
|
|
178
178
|
<output-format>
|
|
179
|
-
## Document Summary
|
|
180
|
-
- **Purpose:** [inferred or provided purpose]
|
|
181
|
-
- **Audience:** [inferred or provided audience]
|
|
182
|
-
- **Reader type:** [selected reader type]
|
|
183
|
-
- **Structure model:** [selected structure model]
|
|
184
|
-
- **Current length:** [X] words across [Y] sections
|
|
179
|
+
## Document Summary
|
|
180
|
+
- **Purpose:** [inferred or provided purpose]
|
|
181
|
+
- **Audience:** [inferred or provided audience]
|
|
182
|
+
- **Reader type:** [selected reader type]
|
|
183
|
+
- **Structure model:** [selected structure model]
|
|
184
|
+
- **Current length:** [X] words across [Y] sections
|
|
185
185
|
|
|
186
|
-
## Recommendations
|
|
186
|
+
## Recommendations
|
|
187
187
|
|
|
188
|
-
### 1. [CUT/MERGE/MOVE/CONDENSE/QUESTION/PRESERVE] - [Section or element name]
|
|
189
|
-
**Rationale:** [One sentence explanation]
|
|
190
|
-
**Impact:** ~[X] words
|
|
191
|
-
**Comprehension note:** [If applicable, note impact on reader understanding]
|
|
188
|
+
### 1. [CUT/MERGE/MOVE/CONDENSE/QUESTION/PRESERVE] - [Section or element name]
|
|
189
|
+
**Rationale:** [One sentence explanation]
|
|
190
|
+
**Impact:** ~[X] words
|
|
191
|
+
**Comprehension note:** [If applicable, note impact on reader understanding]
|
|
192
192
|
|
|
193
|
-
### 2. ...
|
|
193
|
+
### 2. ...
|
|
194
194
|
|
|
195
|
-
## Summary
|
|
196
|
-
- **Total recommendations:** [N]
|
|
197
|
-
- **Estimated reduction:** [X] words ([Y]% of original)
|
|
198
|
-
- **Meets length target:** [Yes/No/No target specified]
|
|
199
|
-
- **Comprehension trade-offs:** [Note any cuts that sacrifice reader engagement for brevity]
|
|
195
|
+
## Summary
|
|
196
|
+
- **Total recommendations:** [N]
|
|
197
|
+
- **Estimated reduction:** [X] words ([Y]% of original)
|
|
198
|
+
- **Meets length target:** [Yes/No/No target specified]
|
|
199
|
+
- **Comprehension trade-offs:** [Note any cuts that sacrifice reader engagement for brevity]
|
|
200
200
|
</output-format>
|
|
201
201
|
</step>
|
|
202
202
|
</flow>
|
|
@@ -206,4 +206,4 @@
|
|
|
206
206
|
<condition>If no structural issues found, output "No substantive changes
|
|
207
207
|
recommended" (this is valid completion, not an error)</condition>
|
|
208
208
|
</halt-conditions>
|
|
209
|
-
</task>
|
|
209
|
+
</task>
|
package/src/core/tasks/help.md
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: help
|
|
3
3
|
description: Get unstuck by showing what workflow steps come next or answering questions about what to do
|
|
4
|
-
standalone: true
|
|
5
4
|
---
|
|
6
5
|
|
|
7
6
|
# Task: BMAD Help
|
|
8
7
|
|
|
9
|
-
##
|
|
8
|
+
## ROUTING RULES
|
|
10
9
|
|
|
11
10
|
- **Empty `phase` = anytime** — Universal tools work regardless of workflow state
|
|
12
11
|
- **Numbered phases indicate sequence** — Phases like `1-discover` → `2-define` → `3-build` → `4-ship` flow in order (naming varies by module)
|
|
@@ -15,6 +14,26 @@ standalone: true
|
|
|
15
14
|
- **`required=true` blocks progress** — Required workflows must complete before proceeding to later phases
|
|
16
15
|
- **Artifacts reveal completion** — Search resolved output paths for `outputs` patterns, fuzzy-match found files to workflow rows
|
|
17
16
|
|
|
17
|
+
## DISPLAY RULES
|
|
18
|
+
|
|
19
|
+
### Command-Based Workflows
|
|
20
|
+
When `command` field has a value:
|
|
21
|
+
- Show the command prefixed with `/` (e.g., `/bmad-bmm-create-prd`)
|
|
22
|
+
|
|
23
|
+
### Agent-Based Workflows
|
|
24
|
+
When `command` field is empty:
|
|
25
|
+
- User loads agent first via `/agent-command`
|
|
26
|
+
- Then invokes by referencing the `code` field or describing the `name` field
|
|
27
|
+
- Do NOT show a slash command — show the code value and agent load instruction instead
|
|
28
|
+
|
|
29
|
+
Example presentation for empty command:
|
|
30
|
+
```
|
|
31
|
+
Explain Concept (EC)
|
|
32
|
+
Load: /tech-writer, then ask to "EC about [topic]"
|
|
33
|
+
Agent: Tech Writer
|
|
34
|
+
Description: Create clear technical explanations with examples...
|
|
35
|
+
```
|
|
36
|
+
|
|
18
37
|
## MODULE DETECTION
|
|
19
38
|
|
|
20
39
|
- **Empty `module` column** → universal tools (work across all modules)
|
|
@@ -25,10 +44,10 @@ Detect the active module from conversation context, recent workflows, or user qu
|
|
|
25
44
|
## INPUT ANALYSIS
|
|
26
45
|
|
|
27
46
|
Determine what was just completed:
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
- If
|
|
47
|
+
- Explicit completion stated by user
|
|
48
|
+
- Workflow completed in current conversation
|
|
49
|
+
- Artifacts found matching `outputs` patterns
|
|
50
|
+
- If `index.md` exists, read it for additional context
|
|
32
51
|
- If still unclear, ask: "What workflow did you most recently complete?"
|
|
33
52
|
|
|
34
53
|
## EXECUTION
|
|
@@ -37,26 +56,27 @@ Determine what was just completed:
|
|
|
37
56
|
|
|
38
57
|
2. **Resolve output locations** — Scan each folder under `_bmad/` (except `_config`) for `config.yaml`. For each workflow row, resolve its `output-location` variables against that module's config so artifact paths can be searched.
|
|
39
58
|
|
|
40
|
-
3. **
|
|
41
|
-
|
|
42
|
-
4. **Detect active module** — Use MODULE DETECTION above to determine which module the user is working in.
|
|
59
|
+
3. **Detect active module** — Use MODULE DETECTION above
|
|
43
60
|
|
|
44
|
-
|
|
61
|
+
4. **Analyze input** — Task may provide a workflow name/code, conversational phrase, or nothing. Infer what was just completed using INPUT ANALYSIS above.
|
|
45
62
|
|
|
46
|
-
|
|
63
|
+
5. **Present recommendations** — Show next steps based on:
|
|
64
|
+
- Completed workflows detected
|
|
65
|
+
- Phase/sequence ordering (ROUTING RULES)
|
|
66
|
+
- Artifact presence
|
|
47
67
|
|
|
48
68
|
**Optional items first** — List optional workflows until a required step is reached
|
|
49
69
|
**Required items next** — List the next required workflow
|
|
50
|
-
|
|
70
|
+
|
|
71
|
+
For each item, apply DISPLAY RULES above and include:
|
|
51
72
|
- Workflow **name**
|
|
52
|
-
- **Command**
|
|
73
|
+
- **Command** OR **Code + Agent load instruction** (per DISPLAY RULES)
|
|
53
74
|
- **Agent** title and display name from the CSV (e.g., "🎨 Alex (Designer)")
|
|
54
75
|
- Brief **description**
|
|
55
76
|
|
|
56
|
-
|
|
77
|
+
6. **Additional guidance to convey**:
|
|
57
78
|
- Run each workflow in a **fresh context window**
|
|
58
|
-
- Load the agent using (`/` + `agent-command`), or run the workflow command directly
|
|
59
79
|
- For **validation workflows**: recommend using a different high-quality LLM if available
|
|
60
80
|
- For conversational requests: match the user's tone while presenting clearly
|
|
61
81
|
|
|
62
|
-
|
|
82
|
+
7. Return to the calling process after presenting recommendations.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<task id="_bmad/core/tasks/index-docs" name="Index Docs"
|
|
2
|
-
description="Generates or updates an index.md of all documents in the specified directory"
|
|
2
|
+
description="Generates or updates an index.md of all documents in the specified directory">
|
|
3
3
|
<llm critical="true">
|
|
4
4
|
<i>MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER</i>
|
|
5
5
|
<i>DO NOT skip steps or change the sequence</i>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- if possible, run this in a separate subagent or process with read access to the project,
|
|
2
2
|
but no context except the content to review -->
|
|
3
3
|
|
|
4
|
-
<task id="_bmad/core/tasks/review-adversarial-general.xml" name="Adversarial Review (General)"
|
|
4
|
+
<task id="_bmad/core/tasks/review-adversarial-general.xml" name="Adversarial Review (General)">
|
|
5
5
|
<objective>Cynically review content and produce findings</objective>
|
|
6
6
|
|
|
7
7
|
<inputs>
|
|
@@ -45,4 +45,4 @@
|
|
|
45
45
|
<condition>HALT if content is empty or unreadable</condition>
|
|
46
46
|
</halt-conditions>
|
|
47
47
|
|
|
48
|
-
</task>
|
|
48
|
+
</task>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
<task id="_bmad/core/tasks/shard-doc" name="Shard Document"
|
|
2
|
-
description="Splits large markdown documents into smaller, organized files based on level 2 (default) sections"
|
|
3
|
-
standalone="true">
|
|
2
|
+
description="Splits large markdown documents into smaller, organized files based on level 2 (default) sections">
|
|
4
3
|
<objective>Split large markdown documents into smaller, organized files based on level 2 sections using @kayvan/markdown-tree-parser tool</objective>
|
|
5
4
|
|
|
6
5
|
<llm critical="true">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<task id="_bmad/core/tasks/workflow.xml" name="Execute Workflow"
|
|
1
|
+
<task id="_bmad/core/tasks/workflow.xml" name="Execute Workflow" internal="true">
|
|
2
2
|
<objective>Execute given workflow by loading its configuration, following instructions, and producing output</objective>
|
|
3
3
|
|
|
4
4
|
<llm critical="true">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<task id="_bmad/core/workflows/advanced-elicitation/workflow.xml" name="Advanced Elicitation"
|
|
1
|
+
<task id="_bmad/core/workflows/advanced-elicitation/workflow.xml" name="Advanced Elicitation"
|
|
2
2
|
methods="{project-root}/_bmad/core/workflows/advanced-elicitation/methods.csv"
|
|
3
3
|
agent-party="{project-root}/_bmad/_config/agent-manifest.csv">
|
|
4
4
|
<llm critical="true">
|
|
@@ -164,7 +164,7 @@ async function runTests() {
|
|
|
164
164
|
|
|
165
165
|
try {
|
|
166
166
|
const builder = new YamlXmlBuilder();
|
|
167
|
-
const qaAgentPath = path.join(projectRoot, 'src/bmm/agents/
|
|
167
|
+
const qaAgentPath = path.join(projectRoot, 'src/bmm/agents/qa.agent.yaml');
|
|
168
168
|
const tempOutput = path.join(__dirname, 'temp-qa-agent.md');
|
|
169
169
|
|
|
170
170
|
try {
|
package/tools/build-docs.js
CHANGED
|
@@ -38,6 +38,7 @@ const LLM_EXCLUDE_PATTERNS = [
|
|
|
38
38
|
'faq',
|
|
39
39
|
'reference/glossary/',
|
|
40
40
|
'explanation/game-dev/',
|
|
41
|
+
'bmgd/',
|
|
41
42
|
// Note: Files/dirs starting with _ (like _STYLE_GUIDE.md, _archive/) are excluded in shouldExcludeFromLlm()
|
|
42
43
|
];
|
|
43
44
|
|
|
@@ -194,7 +195,7 @@ function generateLlmsFullTxt(docsDir, outputDir) {
|
|
|
194
195
|
console.log(' → Generating llms-full.txt...');
|
|
195
196
|
|
|
196
197
|
const date = new Date().toISOString().split('T')[0];
|
|
197
|
-
const files = getAllMarkdownFiles(docsDir);
|
|
198
|
+
const files = getAllMarkdownFiles(docsDir).sort(compareLlmDocs);
|
|
198
199
|
|
|
199
200
|
const output = [
|
|
200
201
|
'# BMAD Method Documentation (Full)',
|
|
@@ -236,6 +237,25 @@ function generateLlmsFullTxt(docsDir, outputDir) {
|
|
|
236
237
|
);
|
|
237
238
|
}
|
|
238
239
|
|
|
240
|
+
function compareLlmDocs(a, b) {
|
|
241
|
+
const aKey = getLlmSortKey(a);
|
|
242
|
+
const bKey = getLlmSortKey(b);
|
|
243
|
+
|
|
244
|
+
if (aKey !== bKey) return aKey - bKey;
|
|
245
|
+
return a.localeCompare(b);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
function getLlmSortKey(filePath) {
|
|
249
|
+
if (filePath === 'index.md') return 0;
|
|
250
|
+
if (filePath === 'downloads.md') return 1;
|
|
251
|
+
if (filePath.startsWith(`tutorials${path.sep}`) || filePath.startsWith('tutorials/')) return 2;
|
|
252
|
+
if (filePath.startsWith(`how-to${path.sep}`) || filePath.startsWith('how-to/')) return 3;
|
|
253
|
+
if (filePath.startsWith(`explanation${path.sep}`) || filePath.startsWith('explanation/')) return 4;
|
|
254
|
+
if (filePath.startsWith(`reference${path.sep}`) || filePath.startsWith('reference/')) return 5;
|
|
255
|
+
if (filePath.startsWith(`bmgd${path.sep}`) || filePath.startsWith('bmgd/')) return 6;
|
|
256
|
+
return 7;
|
|
257
|
+
}
|
|
258
|
+
|
|
239
259
|
/**
|
|
240
260
|
* Collects all Markdown (.md) files under a directory and returns their paths relative to a base directory.
|
|
241
261
|
* @param {string} dir - Directory to search for Markdown files.
|
package/tools/cli/bmad-cli.js
CHANGED
|
@@ -1,6 +1,48 @@
|
|
|
1
1
|
const { program } = require('commander');
|
|
2
2
|
const path = require('node:path');
|
|
3
3
|
const fs = require('node:fs');
|
|
4
|
+
const { execSync } = require('node:child_process');
|
|
5
|
+
|
|
6
|
+
// Check for updates - do this asynchronously so it doesn't block startup
|
|
7
|
+
const packageJson = require('../../package.json');
|
|
8
|
+
const packageName = 'bmad-method';
|
|
9
|
+
checkForUpdate().catch(() => {
|
|
10
|
+
// Silently ignore errors - version check is best-effort
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
async function checkForUpdate() {
|
|
14
|
+
try {
|
|
15
|
+
// For beta versions, check the beta tag; otherwise check latest
|
|
16
|
+
const isBeta =
|
|
17
|
+
packageJson.version.includes('Beta') ||
|
|
18
|
+
packageJson.version.includes('beta') ||
|
|
19
|
+
packageJson.version.includes('alpha') ||
|
|
20
|
+
packageJson.version.includes('rc');
|
|
21
|
+
const tag = isBeta ? 'beta' : 'latest';
|
|
22
|
+
|
|
23
|
+
const result = execSync(`npm view ${packageName}@${tag} version`, {
|
|
24
|
+
encoding: 'utf8',
|
|
25
|
+
stdio: 'pipe',
|
|
26
|
+
timeout: 5000,
|
|
27
|
+
}).trim();
|
|
28
|
+
|
|
29
|
+
if (result && result !== packageJson.version) {
|
|
30
|
+
console.warn('');
|
|
31
|
+
console.warn(' ╔═══════════════════════════════════════════════════════════════════════════════╗');
|
|
32
|
+
console.warn(' ║ UPDATE AVAILABLE ║');
|
|
33
|
+
console.warn(' ║ ║');
|
|
34
|
+
console.warn(` ║ You are using version ${packageJson.version} but ${result} is available. ║`);
|
|
35
|
+
console.warn(' ║ ║');
|
|
36
|
+
console.warn(' ║ To update,exir and first run: ║');
|
|
37
|
+
console.warn(` ║ npm cache clean --force && npx bmad-method@${tag} install ║`);
|
|
38
|
+
console.warn(' ║ ║');
|
|
39
|
+
console.warn(' ╚═══════════════════════════════════════════════════════════════════════════════╝');
|
|
40
|
+
console.warn('');
|
|
41
|
+
}
|
|
42
|
+
} catch {
|
|
43
|
+
// Silently fail - network issues or npm not available
|
|
44
|
+
}
|
|
45
|
+
}
|
|
4
46
|
|
|
5
47
|
// Fix for stdin issues when running through npm on Windows
|
|
6
48
|
// Ensures keyboard interaction works properly with CLI prompts
|
|
@@ -20,9 +62,6 @@ if (process.stdin.isTTY) {
|
|
|
20
62
|
}
|
|
21
63
|
}
|
|
22
64
|
|
|
23
|
-
// Load package.json from root for version info
|
|
24
|
-
const packageJson = require('../../package.json');
|
|
25
|
-
|
|
26
65
|
// Load all command modules
|
|
27
66
|
const commandsPath = path.join(__dirname, 'commands');
|
|
28
67
|
const commandFiles = fs.readdirSync(commandsPath).filter((file) => file.endsWith('.js'));
|
|
@@ -586,7 +586,11 @@ class ConfigCollector {
|
|
|
586
586
|
console.log();
|
|
587
587
|
console.log(chalk.cyan('?') + ' ' + chalk.magenta(moduleDisplayName));
|
|
588
588
|
let customize = true;
|
|
589
|
-
if (moduleName
|
|
589
|
+
if (moduleName === 'core') {
|
|
590
|
+
// Core module: no confirm prompt, so add spacing manually to match visual style
|
|
591
|
+
console.log(chalk.gray('│'));
|
|
592
|
+
} else {
|
|
593
|
+
// Non-core modules: show "Accept Defaults?" confirm prompt (clack adds spacing)
|
|
590
594
|
const customizeAnswer = await prompts.prompt([
|
|
591
595
|
{
|
|
592
596
|
type: 'confirm',
|
|
@@ -146,7 +146,7 @@ class DependencyResolver {
|
|
|
146
146
|
const content = await fs.readFile(file.path, 'utf8');
|
|
147
147
|
|
|
148
148
|
// Parse YAML frontmatter for explicit dependencies
|
|
149
|
-
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
149
|
+
const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
150
150
|
if (frontmatterMatch) {
|
|
151
151
|
try {
|
|
152
152
|
// Pre-process to handle backticks in YAML values
|
|
@@ -17,9 +17,7 @@ const { ManifestGenerator } = require('./manifest-generator');
|
|
|
17
17
|
const { IdeConfigManager } = require('./ide-config-manager');
|
|
18
18
|
const { CustomHandler } = require('../custom/handler');
|
|
19
19
|
const prompts = require('../../../lib/prompts');
|
|
20
|
-
|
|
21
|
-
// BMAD installation folder name - this is constant and should never change
|
|
22
|
-
const BMAD_FOLDER_NAME = '_bmad';
|
|
20
|
+
const { BMAD_FOLDER_NAME } = require('../ide/shared/path-utils');
|
|
23
21
|
|
|
24
22
|
class Installer {
|
|
25
23
|
constructor() {
|
|
@@ -697,9 +695,6 @@ class Installer {
|
|
|
697
695
|
config.skipIde = toolSelection.skipIde;
|
|
698
696
|
const ideConfigurations = toolSelection.configurations;
|
|
699
697
|
|
|
700
|
-
// Add spacing after prompts before installation progress
|
|
701
|
-
console.log('');
|
|
702
|
-
|
|
703
698
|
if (spinner.isSpinning) {
|
|
704
699
|
spinner.text = 'Continuing installation...';
|
|
705
700
|
} else {
|