bmad-method 5.0.0-beta.2 → 5.0.1

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 (131) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +3 -3
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +3 -3
  3. package/.github/workflows/discord.yaml +11 -2
  4. package/.github/workflows/format-check.yaml +42 -0
  5. package/.github/workflows/manual-release.yaml +173 -0
  6. package/.husky/pre-commit +3 -0
  7. package/.vscode/settings.json +26 -1
  8. package/CHANGELOG.md +0 -11
  9. package/README.md +2 -0
  10. package/bmad-core/agent-teams/team-all.yaml +1 -1
  11. package/bmad-core/agents/bmad-orchestrator.md +1 -1
  12. package/bmad-core/agents/dev.md +4 -4
  13. package/bmad-core/data/bmad-kb.md +1 -1
  14. package/bmad-core/data/test-levels-framework.md +12 -12
  15. package/bmad-core/tasks/facilitate-brainstorming-session.md +1 -1
  16. package/bmad-core/tasks/nfr-assess.md +10 -10
  17. package/bmad-core/tasks/qa-gate.md +23 -23
  18. package/bmad-core/tasks/review-story.md +18 -18
  19. package/bmad-core/tasks/risk-profile.md +25 -25
  20. package/bmad-core/tasks/test-design.md +9 -9
  21. package/bmad-core/tasks/trace-requirements.md +21 -21
  22. package/bmad-core/templates/architecture-tmpl.yaml +49 -49
  23. package/bmad-core/templates/brainstorming-output-tmpl.yaml +5 -5
  24. package/bmad-core/templates/brownfield-architecture-tmpl.yaml +31 -31
  25. package/bmad-core/templates/brownfield-prd-tmpl.yaml +13 -13
  26. package/bmad-core/templates/competitor-analysis-tmpl.yaml +19 -6
  27. package/bmad-core/templates/front-end-architecture-tmpl.yaml +21 -9
  28. package/bmad-core/templates/front-end-spec-tmpl.yaml +24 -24
  29. package/bmad-core/templates/fullstack-architecture-tmpl.yaml +122 -104
  30. package/bmad-core/templates/market-research-tmpl.yaml +2 -2
  31. package/bmad-core/templates/prd-tmpl.yaml +9 -9
  32. package/bmad-core/templates/project-brief-tmpl.yaml +4 -4
  33. package/bmad-core/templates/qa-gate-tmpl.yaml +9 -9
  34. package/bmad-core/templates/story-tmpl.yaml +12 -12
  35. package/bmad-core/workflows/brownfield-fullstack.yaml +9 -9
  36. package/bmad-core/workflows/brownfield-service.yaml +1 -1
  37. package/bmad-core/workflows/brownfield-ui.yaml +1 -1
  38. package/bmad-core/workflows/greenfield-fullstack.yaml +1 -1
  39. package/bmad-core/workflows/greenfield-service.yaml +1 -1
  40. package/bmad-core/workflows/greenfield-ui.yaml +1 -1
  41. package/common/utils/bmad-doc-template.md +5 -5
  42. package/dist/agents/analyst.txt +28 -15
  43. package/dist/agents/architect.txt +220 -190
  44. package/dist/agents/bmad-master.txt +298 -255
  45. package/dist/agents/bmad-orchestrator.txt +1 -1
  46. package/dist/agents/pm.txt +20 -20
  47. package/dist/agents/po.txt +11 -11
  48. package/dist/agents/qa.txt +275 -618
  49. package/dist/agents/sm.txt +11 -11
  50. package/dist/agents/ux-expert.txt +23 -23
  51. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +109 -109
  52. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +75 -77
  53. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +41 -41
  54. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +483 -474
  55. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +1 -1
  56. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +149 -149
  57. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +20 -20
  58. package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +371 -358
  59. package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +25 -25
  60. package/dist/teams/team-all.txt +581 -881
  61. package/dist/teams/team-fullstack.txt +316 -273
  62. package/dist/teams/team-ide-minimal.txt +276 -619
  63. package/dist/teams/team-no-ui.txt +281 -238
  64. package/docs/versioning-and-releases.md +114 -44
  65. package/eslint.config.mjs +119 -0
  66. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.4 Deployment Configuration/1.4.2 - cloudbuild.yaml +26 -26
  67. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +4 -4
  68. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +1 -1
  69. package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +26 -28
  70. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +50 -50
  71. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +23 -23
  72. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +24 -24
  73. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +42 -42
  74. package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
  75. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +5 -5
  76. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +1 -1
  77. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +3 -3
  78. package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +1 -1
  79. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +23 -23
  80. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +63 -63
  81. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +20 -20
  82. package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
  83. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +5 -5
  84. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +1 -1
  85. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +20 -20
  86. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +7 -7
  87. package/package.json +62 -39
  88. package/prettier.config.mjs +32 -0
  89. package/release_notes.md +30 -0
  90. package/tools/bmad-npx-wrapper.js +10 -10
  91. package/tools/builders/web-builder.js +124 -130
  92. package/tools/bump-all-versions.js +42 -33
  93. package/tools/bump-expansion-version.js +23 -16
  94. package/tools/cli.js +10 -12
  95. package/tools/flattener/aggregate.js +10 -10
  96. package/tools/flattener/binary.js +44 -17
  97. package/tools/flattener/discovery.js +19 -18
  98. package/tools/flattener/files.js +6 -6
  99. package/tools/flattener/ignoreRules.js +125 -125
  100. package/tools/flattener/main.js +201 -304
  101. package/tools/flattener/projectRoot.js +75 -73
  102. package/tools/flattener/prompts.js +9 -9
  103. package/tools/flattener/stats.helpers.js +131 -67
  104. package/tools/flattener/stats.js +3 -3
  105. package/tools/flattener/test-matrix.js +201 -193
  106. package/tools/flattener/xml.js +33 -31
  107. package/tools/installer/bin/bmad.js +130 -89
  108. package/tools/installer/config/ide-agent-config.yaml +1 -1
  109. package/tools/installer/config/install.config.yaml +2 -2
  110. package/tools/installer/lib/config-loader.js +46 -42
  111. package/tools/installer/lib/file-manager.js +91 -113
  112. package/tools/installer/lib/ide-base-setup.js +57 -56
  113. package/tools/installer/lib/ide-setup.js +375 -343
  114. package/tools/installer/lib/installer.js +875 -714
  115. package/tools/installer/lib/memory-profiler.js +54 -53
  116. package/tools/installer/lib/module-manager.js +19 -15
  117. package/tools/installer/lib/resource-locator.js +26 -28
  118. package/tools/installer/package.json +19 -19
  119. package/tools/lib/dependency-resolver.js +26 -30
  120. package/tools/lib/yaml-utils.js +7 -7
  121. package/tools/preview-release-notes.js +66 -0
  122. package/tools/shared/bannerArt.js +3 -3
  123. package/tools/sync-installer-version.js +7 -9
  124. package/tools/update-expansion-version.js +14 -15
  125. package/tools/upgraders/v3-to-v4-upgrader.js +203 -294
  126. package/tools/version-bump.js +41 -26
  127. package/tools/yaml-format.js +56 -43
  128. package/.github/workflows/promote-to-stable.yml +0 -144
  129. package/.github/workflows/release.yaml +0 -60
  130. package/.releaserc.json +0 -21
  131. package/tools/semantic-release-sync-installer.js +0 -30
@@ -1,147 +1,147 @@
1
- const fs = require("fs-extra");
2
- const path = require("node:path");
3
- const ignore = require("ignore");
1
+ const fs = require('fs-extra');
2
+ const path = require('node:path');
3
+ const ignore = require('ignore');
4
4
 
5
5
  // Central default ignore patterns for discovery and filtering.
6
6
  // These complement .gitignore and are applied regardless of VCS presence.
7
7
  const DEFAULT_PATTERNS = [
8
8
  // Project/VCS
9
- "**/.bmad-core/**",
10
- "**/.git/**",
11
- "**/.svn/**",
12
- "**/.hg/**",
13
- "**/.bzr/**",
9
+ '**/.bmad-core/**',
10
+ '**/.git/**',
11
+ '**/.svn/**',
12
+ '**/.hg/**',
13
+ '**/.bzr/**',
14
14
  // Package/build outputs
15
- "**/node_modules/**",
16
- "**/bower_components/**",
17
- "**/vendor/**",
18
- "**/packages/**",
19
- "**/build/**",
20
- "**/dist/**",
21
- "**/out/**",
22
- "**/target/**",
23
- "**/bin/**",
24
- "**/obj/**",
25
- "**/release/**",
26
- "**/debug/**",
15
+ '**/node_modules/**',
16
+ '**/bower_components/**',
17
+ '**/vendor/**',
18
+ '**/packages/**',
19
+ '**/build/**',
20
+ '**/dist/**',
21
+ '**/out/**',
22
+ '**/target/**',
23
+ '**/bin/**',
24
+ '**/obj/**',
25
+ '**/release/**',
26
+ '**/debug/**',
27
27
  // Environments
28
- "**/.venv/**",
29
- "**/venv/**",
30
- "**/.virtualenv/**",
31
- "**/virtualenv/**",
32
- "**/env/**",
28
+ '**/.venv/**',
29
+ '**/venv/**',
30
+ '**/.virtualenv/**',
31
+ '**/virtualenv/**',
32
+ '**/env/**',
33
33
  // Logs & coverage
34
- "**/*.log",
35
- "**/npm-debug.log*",
36
- "**/yarn-debug.log*",
37
- "**/yarn-error.log*",
38
- "**/lerna-debug.log*",
39
- "**/coverage/**",
40
- "**/.nyc_output/**",
41
- "**/.coverage/**",
42
- "**/test-results/**",
34
+ '**/*.log',
35
+ '**/npm-debug.log*',
36
+ '**/yarn-debug.log*',
37
+ '**/yarn-error.log*',
38
+ '**/lerna-debug.log*',
39
+ '**/coverage/**',
40
+ '**/.nyc_output/**',
41
+ '**/.coverage/**',
42
+ '**/test-results/**',
43
43
  // Caches & temp
44
- "**/.cache/**",
45
- "**/.tmp/**",
46
- "**/.temp/**",
47
- "**/tmp/**",
48
- "**/temp/**",
49
- "**/.sass-cache/**",
44
+ '**/.cache/**',
45
+ '**/.tmp/**',
46
+ '**/.temp/**',
47
+ '**/tmp/**',
48
+ '**/temp/**',
49
+ '**/.sass-cache/**',
50
50
  // IDE/editor
51
- "**/.vscode/**",
52
- "**/.idea/**",
53
- "**/*.swp",
54
- "**/*.swo",
55
- "**/*~",
56
- "**/.project",
57
- "**/.classpath",
58
- "**/.settings/**",
59
- "**/*.sublime-project",
60
- "**/*.sublime-workspace",
51
+ '**/.vscode/**',
52
+ '**/.idea/**',
53
+ '**/*.swp',
54
+ '**/*.swo',
55
+ '**/*~',
56
+ '**/.project',
57
+ '**/.classpath',
58
+ '**/.settings/**',
59
+ '**/*.sublime-project',
60
+ '**/*.sublime-workspace',
61
61
  // Lockfiles
62
- "**/package-lock.json",
63
- "**/yarn.lock",
64
- "**/pnpm-lock.yaml",
65
- "**/composer.lock",
66
- "**/Pipfile.lock",
62
+ '**/package-lock.json',
63
+ '**/yarn.lock',
64
+ '**/pnpm-lock.yaml',
65
+ '**/composer.lock',
66
+ '**/Pipfile.lock',
67
67
  // Python/Java/compiled artifacts
68
- "**/*.pyc",
69
- "**/*.pyo",
70
- "**/*.pyd",
71
- "**/__pycache__/**",
72
- "**/*.class",
73
- "**/*.jar",
74
- "**/*.war",
75
- "**/*.ear",
76
- "**/*.o",
77
- "**/*.so",
78
- "**/*.dll",
79
- "**/*.exe",
68
+ '**/*.pyc',
69
+ '**/*.pyo',
70
+ '**/*.pyd',
71
+ '**/__pycache__/**',
72
+ '**/*.class',
73
+ '**/*.jar',
74
+ '**/*.war',
75
+ '**/*.ear',
76
+ '**/*.o',
77
+ '**/*.so',
78
+ '**/*.dll',
79
+ '**/*.exe',
80
80
  // System junk
81
- "**/lib64/**",
82
- "**/.venv/lib64/**",
83
- "**/venv/lib64/**",
84
- "**/_site/**",
85
- "**/.jekyll-cache/**",
86
- "**/.jekyll-metadata",
87
- "**/.DS_Store",
88
- "**/.DS_Store?",
89
- "**/._*",
90
- "**/.Spotlight-V100/**",
91
- "**/.Trashes/**",
92
- "**/ehthumbs.db",
93
- "**/Thumbs.db",
94
- "**/desktop.ini",
81
+ '**/lib64/**',
82
+ '**/.venv/lib64/**',
83
+ '**/venv/lib64/**',
84
+ '**/_site/**',
85
+ '**/.jekyll-cache/**',
86
+ '**/.jekyll-metadata',
87
+ '**/.DS_Store',
88
+ '**/.DS_Store?',
89
+ '**/._*',
90
+ '**/.Spotlight-V100/**',
91
+ '**/.Trashes/**',
92
+ '**/ehthumbs.db',
93
+ '**/Thumbs.db',
94
+ '**/desktop.ini',
95
95
  // XML outputs
96
- "**/flattened-codebase.xml",
97
- "**/repomix-output.xml",
96
+ '**/flattened-codebase.xml',
97
+ '**/repomix-output.xml',
98
98
  // Images, media, fonts, archives, docs, dylibs
99
- "**/*.jpg",
100
- "**/*.jpeg",
101
- "**/*.png",
102
- "**/*.gif",
103
- "**/*.bmp",
104
- "**/*.ico",
105
- "**/*.svg",
106
- "**/*.pdf",
107
- "**/*.doc",
108
- "**/*.docx",
109
- "**/*.xls",
110
- "**/*.xlsx",
111
- "**/*.ppt",
112
- "**/*.pptx",
113
- "**/*.zip",
114
- "**/*.tar",
115
- "**/*.gz",
116
- "**/*.rar",
117
- "**/*.7z",
118
- "**/*.dylib",
119
- "**/*.mp3",
120
- "**/*.mp4",
121
- "**/*.avi",
122
- "**/*.mov",
123
- "**/*.wav",
124
- "**/*.ttf",
125
- "**/*.otf",
126
- "**/*.woff",
127
- "**/*.woff2",
99
+ '**/*.jpg',
100
+ '**/*.jpeg',
101
+ '**/*.png',
102
+ '**/*.gif',
103
+ '**/*.bmp',
104
+ '**/*.ico',
105
+ '**/*.svg',
106
+ '**/*.pdf',
107
+ '**/*.doc',
108
+ '**/*.docx',
109
+ '**/*.xls',
110
+ '**/*.xlsx',
111
+ '**/*.ppt',
112
+ '**/*.pptx',
113
+ '**/*.zip',
114
+ '**/*.tar',
115
+ '**/*.gz',
116
+ '**/*.rar',
117
+ '**/*.7z',
118
+ '**/*.dylib',
119
+ '**/*.mp3',
120
+ '**/*.mp4',
121
+ '**/*.avi',
122
+ '**/*.mov',
123
+ '**/*.wav',
124
+ '**/*.ttf',
125
+ '**/*.otf',
126
+ '**/*.woff',
127
+ '**/*.woff2',
128
128
  // Env files
129
- "**/.env",
130
- "**/.env.*",
131
- "**/*.env",
129
+ '**/.env',
130
+ '**/.env.*',
131
+ '**/*.env',
132
132
  // Misc
133
- "**/junit.xml",
133
+ '**/junit.xml',
134
134
  ];
135
135
 
136
136
  async function readIgnoreFile(filePath) {
137
137
  try {
138
- if (!await fs.pathExists(filePath)) return [];
139
- const content = await fs.readFile(filePath, "utf8");
138
+ if (!(await fs.pathExists(filePath))) return [];
139
+ const content = await fs.readFile(filePath, 'utf8');
140
140
  return content
141
- .split("\n")
141
+ .split('\n')
142
142
  .map((l) => l.trim())
143
- .filter((l) => l && !l.startsWith("#"));
144
- } catch (err) {
143
+ .filter((l) => l && !l.startsWith('#'));
144
+ } catch {
145
145
  return [];
146
146
  }
147
147
  }
@@ -153,18 +153,18 @@ async function parseGitignore(gitignorePath) {
153
153
 
154
154
  async function loadIgnore(rootDir, extraPatterns = []) {
155
155
  const ig = ignore();
156
- const gitignorePath = path.join(rootDir, ".gitignore");
156
+ const gitignorePath = path.join(rootDir, '.gitignore');
157
157
  const patterns = [
158
- ...await readIgnoreFile(gitignorePath),
158
+ ...(await readIgnoreFile(gitignorePath)),
159
159
  ...DEFAULT_PATTERNS,
160
160
  ...extraPatterns,
161
161
  ];
162
162
  // De-duplicate
163
- const unique = Array.from(new Set(patterns.map((p) => String(p))));
163
+ const unique = [...new Set(patterns.map(String))];
164
164
  ig.add(unique);
165
165
 
166
166
  // Include-only filter: return true if path should be included
167
- const filter = (relativePath) => !ig.ignores(relativePath.replace(/\\/g, "/"));
167
+ const filter = (relativePath) => !ig.ignores(relativePath.replaceAll('\\', '/'));
168
168
 
169
169
  return { ig, filter, patterns: unique };
170
170
  }