bmad-method 6.0.0-Beta.6 → 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.
Files changed (37) hide show
  1. package/.claude/skills/changelog-social/SKILL.md +11 -2
  2. package/.claude/skills/draft-changelog/SKILL.md +1 -1
  3. package/.claude/skills/gh-triage/SKILL.md +1 -1
  4. package/.claude/skills/release-module/SKILL.md +1 -1
  5. package/.claude/skills/release-module/prompts/instructions.md +0 -20
  6. package/CHANGELOG.md +22 -1
  7. package/package.json +1 -1
  8. package/src/bmm/agents/analyst.agent.yaml +11 -5
  9. package/src/bmm/agents/pm.agent.yaml +3 -6
  10. package/src/bmm/module-help.csv +7 -10
  11. package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +0 -1
  12. package/src/bmm/workflows/1-analysis/research/workflow-domain-research.md +54 -0
  13. package/src/bmm/workflows/1-analysis/research/workflow-market-research.md +54 -0
  14. package/src/bmm/workflows/1-analysis/research/workflow-technical-research.md +54 -0
  15. package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +63 -0
  16. package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +65 -0
  17. package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +65 -0
  18. package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +0 -1
  19. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +0 -1
  20. package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +0 -1
  21. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +0 -1
  22. package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +0 -2
  23. package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +0 -2
  24. package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +0 -2
  25. package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +0 -2
  26. package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +0 -2
  27. package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +0 -2
  28. package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +0 -3
  29. package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +0 -1
  30. package/src/bmm/workflows/document-project/workflow.yaml +0 -2
  31. package/src/bmm/workflows/qa/automate/workflow.yaml +0 -2
  32. package/tools/cli/bmad-cli.js +42 -3
  33. package/tools/cli/installers/lib/core/manifest-generator.js +8 -36
  34. package/tools/cli/installers/lib/modules/manager.js +0 -4
  35. package/src/bmm/workflows/1-analysis/research/workflow.md +0 -173
  36. package/src/bmm/workflows/2-plan-workflows/create-prd/validation-report-prd-workflow.md +0 -433
  37. package/src/bmm/workflows/2-plan-workflows/create-prd/workflow.md +0 -150
@@ -21,5 +21,3 @@ story_file: "" # Explicit story path; auto-discovered if empty
21
21
  implementation_artifacts: "{config_source}:implementation_artifacts"
22
22
  sprint_status: "{implementation_artifacts}/sprint-status.yaml"
23
23
  project_context: "**/project-context.md"
24
-
25
- web_bundle: false
@@ -53,5 +53,3 @@ input_file_patterns:
53
53
  sprint_status_file: "{implementation_artifacts}/sprint-status.yaml"
54
54
  story_directory: "{implementation_artifacts}"
55
55
  retrospectives_folder: "{implementation_artifacts}"
56
-
57
- web_bundle: false
@@ -49,5 +49,3 @@ input_file_patterns:
49
49
 
50
50
  # Output configuration
51
51
  default_output_file: "{status_file}"
52
-
53
- web_bundle: false
@@ -28,6 +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
- # No web bundle needed
33
- 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,5 +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
- web_bundle: false
@@ -45,5 +45,3 @@ execution_hints:
45
45
  interactive: false
46
46
  autonomous: true
47
47
  iterative: false
48
-
49
- web_bundle: false
@@ -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'));
@@ -159,7 +159,11 @@ class ManifestGenerator {
159
159
  // Recurse into subdirectories
160
160
  const newRelativePath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
161
161
  await findWorkflows(fullPath, newRelativePath);
162
- } else if (entry.name === 'workflow.yaml' || entry.name === 'workflow.md') {
162
+ } else if (
163
+ entry.name === 'workflow.yaml' ||
164
+ entry.name === 'workflow.md' ||
165
+ (entry.name.startsWith('workflow-') && entry.name.endsWith('.md'))
166
+ ) {
163
167
  // Parse workflow file (both YAML and MD formats)
164
168
  if (debug) {
165
169
  console.log(`[DEBUG] Found workflow file: ${fullPath}`);
@@ -729,47 +733,15 @@ class ManifestGenerator {
729
733
  async writeWorkflowManifest(cfgDir) {
730
734
  const csvPath = path.join(cfgDir, 'workflow-manifest.csv');
731
735
  const escapeCsv = (value) => `"${String(value ?? '').replaceAll('"', '""')}"`;
732
- const parseCsvLine = (line) => {
733
- const columns = line.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g) || [];
734
- return columns.map((c) => c.replaceAll(/^"|"$/g, ''));
735
- };
736
-
737
- // Read existing manifest to preserve entries
738
- const existingEntries = new Map();
739
- if (await fs.pathExists(csvPath)) {
740
- const content = await fs.readFile(csvPath, 'utf8');
741
- const lines = content.split('\n').filter((line) => line.trim());
742
-
743
- // Skip header
744
- for (let i = 1; i < lines.length; i++) {
745
- const line = lines[i];
746
- if (line) {
747
- const parts = parseCsvLine(line);
748
- if (parts.length >= 4) {
749
- const [name, description, module, workflowPath] = parts;
750
- existingEntries.set(`${module}:${name}`, {
751
- name,
752
- description,
753
- module,
754
- path: workflowPath,
755
- });
756
- }
757
- }
758
- }
759
- }
760
736
 
761
737
  // Create CSV header - standalone column removed, everything is canonicalized to 4 columns
762
738
  let csv = 'name,description,module,path\n';
763
739
 
764
- // Combine existing and new workflows
740
+ // Build workflows map from discovered workflows only
741
+ // Old entries are NOT preserved - the manifest reflects what actually exists on disk
765
742
  const allWorkflows = new Map();
766
743
 
767
- // Add existing entries
768
- for (const [key, value] of existingEntries) {
769
- allWorkflows.set(key, value);
770
- }
771
-
772
- // Add/update new workflows
744
+ // Only add workflows that were actually discovered in this scan
773
745
  for (const workflow of this.workflows) {
774
746
  const key = `${workflow.module}:${workflow.name}`;
775
747
  allWorkflows.set(key, {
@@ -781,10 +781,6 @@ class ModuleManager {
781
781
  return;
782
782
  }
783
783
 
784
- // Remove web_bundle section using regex to preserve formatting
785
- // Match the web_bundle key and all its content (including nested items)
786
- // This handles both web_bundle: false and web_bundle: {...}
787
-
788
784
  // Find the line that starts web_bundle
789
785
  const lines = yamlContent.split('\n');
790
786
  let startIdx = -1;
@@ -1,173 +0,0 @@
1
- ---
2
- name: research
3
- description: Conduct comprehensive research across multiple domains using current web data and verified sources - Market, Technical, Domain and other research types.
4
- web_bundle: true
5
- ---
6
-
7
- # Research Workflow
8
-
9
- **Goal:** Conduct comprehensive, exhaustive research across multiple domains using current web data and verified sources to produce complete research documents with compelling narratives and proper citations.
10
-
11
- **Document Standards:**
12
-
13
- - **Comprehensive Coverage**: Exhaustive research with no critical gaps
14
- - **Source Verification**: Every factual claim backed by web sources with URL citations
15
- - **Document Length**: As long as needed to fully cover the research topic
16
- - **Professional Structure**: Compelling narrative introduction, detailed TOC, and comprehensive summary
17
- - **Authoritative Sources**: Multiple independent sources for all critical claims
18
-
19
- **Your Role:** You are a research facilitator and web data analyst working with an expert partner. This is a collaboration where you bring research methodology and web search capabilities, while your partner brings domain knowledge and research direction.
20
-
21
- **Final Deliverable**: A complete research document that serves as an authoritative reference on the research topic with:
22
-
23
- - Compelling narrative introduction
24
- - Comprehensive table of contents
25
- - Detailed research sections with proper citations
26
- - Executive summary and conclusions
27
-
28
- ## WORKFLOW ARCHITECTURE
29
-
30
- This uses **micro-file architecture** with **routing-based discovery**:
31
-
32
- - Each research type has its own step folder
33
- - Step 01 discovers research type and routes to appropriate sub-workflow
34
- - Sequential progression within each research type
35
- - Document state tracked in output frontmatter
36
-
37
- ## INITIALIZATION
38
-
39
- ### Configuration Loading
40
-
41
- Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
42
-
43
- - `project_name`, `output_folder`, , `planning_artifacts`, `user_name`
44
- - `communication_language`, `document_output_language`, `user_skill_level`
45
- - `date` as a system-generated value
46
-
47
- ### Paths
48
-
49
- - `installed_path` = `{project-root}/_bmad/bmm/workflows/1-analysis/research`
50
- - `template_path` = `{installed_path}/research.template.md`
51
- - `default_output_file` = `{planning_artifacts}/research/{{research_type}}-{{topic}}-research-{{date}}.md` (dynamic based on research type)
52
-
53
- ## PREREQUISITE
54
-
55
- **⛔ Web search required.** If unavailable, abort and tell the user.
56
-
57
- ## RESEARCH BEHAVIOR
58
-
59
- ### Web Research Standards
60
-
61
- - **Current Data Only**: Search the web to verify and supplement your knowledge with current facts
62
- - **Source Verification**: Require citations for all factual claims
63
- - **Anti-Hallucination Protocol**: Never present information without verified sources
64
- - **Multiple Sources**: Require at least 2 independent sources for critical claims
65
- - **Conflict Resolution**: Present conflicting views and note discrepancies
66
- - **Confidence Levels**: Flag uncertain data with [High/Medium/Low Confidence]
67
-
68
- ### Source Quality Standards
69
-
70
- - **Distinguish Clearly**: Facts (from sources) vs Analysis (interpretation) vs Speculation
71
- - **URL Citation**: Always include source URLs when presenting web search data
72
- - **Critical Claims**: Market size, growth rates, competitive data need verification
73
- - **Fact Checking**: Apply fact-checking to critical data points
74
-
75
- ## Implementation Instructions
76
-
77
- Execute research type discovery and routing:
78
-
79
- ### Research Type Discovery
80
-
81
- **Your Role:** You are a research facilitator and web data analyst working with an expert partner. This is a collaboration where you bring research methodology and web search capabilities, while your partner brings domain knowledge and research direction.
82
-
83
- **Research Standards:**
84
-
85
- - **Anti-Hallucination Protocol**: Never present information without verified sources
86
- - **Current Data Only**: Search the web to verify and supplement your knowledge with current facts
87
- - **Source Citation**: Always include URLs for factual claims from web searches
88
- - **Multiple Sources**: Require 2+ independent sources for critical claims
89
- - **Conflict Resolution**: Present conflicting views and note discrepancies
90
- - **Confidence Levels**: Flag uncertain data with [High/Medium/Low Confidence]
91
-
92
- ### Collaborative Research Discovery
93
-
94
- "Welcome {{user_name}}! I'm excited to work with you as your research partner. I bring web research capabilities with rigorous source verification, while you bring the domain expertise and research direction.
95
-
96
- **Let me help you clarify what you'd like to research.**
97
-
98
- **First, tell me: What specific topic, problem, or area do you want to research?**
99
-
100
- For example:
101
-
102
- - 'The electric vehicle market in Europe'
103
- - 'Cloud migration strategies for healthcare'
104
- - 'AI implementation in financial services'
105
- - 'Sustainable packaging regulations'
106
- - 'Or anything else you have in mind...'
107
-
108
- ### Topic Exploration and Clarification
109
-
110
- Based on the user's initial topic, explore and refine the research scope:
111
-
112
- #### Topic Clarification Questions:
113
-
114
- 1. **Core Topic**: "What exactly about [topic] are you most interested in?"
115
- 2. **Research Goals**: "What do you hope to achieve with this research?"
116
- 3. **Scope**: "Should we focus broadly or dive deep into specific aspects?"
117
- 4. **Timeline**: "Are you looking at current state, historical context, or future trends?"
118
- 5. **Application**: "How will you use this research? (product development, strategy, academic, etc.)"
119
-
120
- #### Context Building:
121
-
122
- - **Initial Input**: User provides topic or research interest
123
- - **Collaborative Refinement**: Work together to clarify scope and objectives
124
- - **Goal Alignment**: Ensure research direction matches user needs
125
- - **Research Boundaries**: Establish clear focus areas and deliverables
126
-
127
- ### Research Type Identification
128
-
129
- After understanding the research topic and goals, identify the most appropriate research approach:
130
-
131
- **Research Type Options:**
132
-
133
- 1. **Market Research** - Market size, growth, competition, customer insights
134
- _Best for: Understanding market dynamics, customer behavior, competitive landscape_
135
-
136
- 2. **Domain Research** - Industry analysis, regulations, technology trends in specific domain
137
- _Best for: Understanding industry context, regulatory environment, ecosystem_
138
-
139
- 3. **Technical Research** - Technology evaluation, architecture decisions, implementation approaches
140
- _Best for: Technical feasibility, technology selection, implementation strategies_
141
-
142
- **Recommendation**: Based on [topic] and [goals], I recommend [suggested research type] because [specific rationale].
143
-
144
- **What type of research would work best for your needs?**
145
-
146
- ### Research Type Routing
147
-
148
- <critical>Based on user selection, route to appropriate sub-workflow with the discovered topic using the following IF block sets of instructions. YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`</critical>
149
-
150
- #### If Market Research:
151
-
152
- - Set `research_type = "market"`
153
- - Set `research_topic = [discovered topic from discussion]`
154
- - Create the starter output file: `{planning_artifacts}/research/market-{{research_topic}}-research-{{date}}.md` with exact copy of the ./research.template.md contents
155
- - Load: `./market-steps/step-01-init.md` with topic context
156
-
157
- #### If Domain Research:
158
-
159
- - Set `research_type = "domain"`
160
- - Set `research_topic = [discovered topic from discussion]`
161
- - Create the starter output file: `{planning_artifacts}/research/domain-{{research_topic}}-research-{{date}}.md` with exact copy of the ./research.template.md contents
162
- - Load: `./domain-steps/step-01-init.md` with topic context
163
-
164
- #### If Technical Research:
165
-
166
- - Set `research_type = "technical"`
167
- - Set `research_topic = [discovered topic from discussion]`
168
- - Create the starter output file: `{planning_artifacts}/research/technical-{{research_topic}}-research-{{date}}.md` with exact copy of the ./research.template.md contents
169
- - Load: `./technical-steps/step-01-init.md` with topic context
170
-
171
- **Important**: The discovered topic from the collaborative discussion should be passed to the research initialization steps, so they don't need to ask "What do you want to research?" again - they can focus on refining the scope for their specific research type.
172
-
173
- **Note:** All research workflows require web search for current data and source verification.