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.
- package/.github/ISSUE_TEMPLATE/bug_report.md +3 -3
- package/.github/ISSUE_TEMPLATE/feature_request.md +3 -3
- package/.github/workflows/discord.yaml +11 -2
- package/.github/workflows/format-check.yaml +42 -0
- package/.github/workflows/manual-release.yaml +173 -0
- package/.husky/pre-commit +3 -0
- package/.vscode/settings.json +26 -1
- package/CHANGELOG.md +0 -11
- package/README.md +2 -0
- package/bmad-core/agent-teams/team-all.yaml +1 -1
- package/bmad-core/agents/bmad-orchestrator.md +1 -1
- package/bmad-core/agents/dev.md +4 -4
- package/bmad-core/data/bmad-kb.md +1 -1
- package/bmad-core/data/test-levels-framework.md +12 -12
- package/bmad-core/tasks/facilitate-brainstorming-session.md +1 -1
- package/bmad-core/tasks/nfr-assess.md +10 -10
- package/bmad-core/tasks/qa-gate.md +23 -23
- package/bmad-core/tasks/review-story.md +18 -18
- package/bmad-core/tasks/risk-profile.md +25 -25
- package/bmad-core/tasks/test-design.md +9 -9
- package/bmad-core/tasks/trace-requirements.md +21 -21
- package/bmad-core/templates/architecture-tmpl.yaml +49 -49
- package/bmad-core/templates/brainstorming-output-tmpl.yaml +5 -5
- package/bmad-core/templates/brownfield-architecture-tmpl.yaml +31 -31
- package/bmad-core/templates/brownfield-prd-tmpl.yaml +13 -13
- package/bmad-core/templates/competitor-analysis-tmpl.yaml +19 -6
- package/bmad-core/templates/front-end-architecture-tmpl.yaml +21 -9
- package/bmad-core/templates/front-end-spec-tmpl.yaml +24 -24
- package/bmad-core/templates/fullstack-architecture-tmpl.yaml +122 -104
- package/bmad-core/templates/market-research-tmpl.yaml +2 -2
- package/bmad-core/templates/prd-tmpl.yaml +9 -9
- package/bmad-core/templates/project-brief-tmpl.yaml +4 -4
- package/bmad-core/templates/qa-gate-tmpl.yaml +9 -9
- package/bmad-core/templates/story-tmpl.yaml +12 -12
- package/bmad-core/workflows/brownfield-fullstack.yaml +9 -9
- package/bmad-core/workflows/brownfield-service.yaml +1 -1
- package/bmad-core/workflows/brownfield-ui.yaml +1 -1
- package/bmad-core/workflows/greenfield-fullstack.yaml +1 -1
- package/bmad-core/workflows/greenfield-service.yaml +1 -1
- package/bmad-core/workflows/greenfield-ui.yaml +1 -1
- package/common/utils/bmad-doc-template.md +5 -5
- package/dist/agents/analyst.txt +28 -15
- package/dist/agents/architect.txt +220 -190
- package/dist/agents/bmad-master.txt +298 -255
- package/dist/agents/bmad-orchestrator.txt +1 -1
- package/dist/agents/pm.txt +20 -20
- package/dist/agents/po.txt +11 -11
- package/dist/agents/qa.txt +275 -618
- package/dist/agents/sm.txt +11 -11
- package/dist/agents/ux-expert.txt +23 -23
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +109 -109
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +75 -77
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +41 -41
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +483 -474
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +1 -1
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +149 -149
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +20 -20
- package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +371 -358
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +25 -25
- package/dist/teams/team-all.txt +581 -881
- package/dist/teams/team-fullstack.txt +316 -273
- package/dist/teams/team-ide-minimal.txt +276 -619
- package/dist/teams/team-no-ui.txt +281 -238
- package/docs/versioning-and-releases.md +114 -44
- package/eslint.config.mjs +119 -0
- 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
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +4 -4
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +26 -28
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +50 -50
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +23 -23
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +24 -24
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +42 -42
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +5 -5
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +3 -3
- package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +23 -23
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +63 -63
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +20 -20
- package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +5 -5
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +1 -1
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +20 -20
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +7 -7
- package/package.json +62 -39
- package/prettier.config.mjs +32 -0
- package/release_notes.md +30 -0
- package/tools/bmad-npx-wrapper.js +10 -10
- package/tools/builders/web-builder.js +124 -130
- package/tools/bump-all-versions.js +42 -33
- package/tools/bump-expansion-version.js +23 -16
- package/tools/cli.js +10 -12
- package/tools/flattener/aggregate.js +10 -10
- package/tools/flattener/binary.js +44 -17
- package/tools/flattener/discovery.js +19 -18
- package/tools/flattener/files.js +6 -6
- package/tools/flattener/ignoreRules.js +125 -125
- package/tools/flattener/main.js +201 -304
- package/tools/flattener/projectRoot.js +75 -73
- package/tools/flattener/prompts.js +9 -9
- package/tools/flattener/stats.helpers.js +131 -67
- package/tools/flattener/stats.js +3 -3
- package/tools/flattener/test-matrix.js +201 -193
- package/tools/flattener/xml.js +33 -31
- package/tools/installer/bin/bmad.js +130 -89
- package/tools/installer/config/ide-agent-config.yaml +1 -1
- package/tools/installer/config/install.config.yaml +2 -2
- package/tools/installer/lib/config-loader.js +46 -42
- package/tools/installer/lib/file-manager.js +91 -113
- package/tools/installer/lib/ide-base-setup.js +57 -56
- package/tools/installer/lib/ide-setup.js +375 -343
- package/tools/installer/lib/installer.js +875 -714
- package/tools/installer/lib/memory-profiler.js +54 -53
- package/tools/installer/lib/module-manager.js +19 -15
- package/tools/installer/lib/resource-locator.js +26 -28
- package/tools/installer/package.json +19 -19
- package/tools/lib/dependency-resolver.js +26 -30
- package/tools/lib/yaml-utils.js +7 -7
- package/tools/preview-release-notes.js +66 -0
- package/tools/shared/bannerArt.js +3 -3
- package/tools/sync-installer-version.js +7 -9
- package/tools/update-expansion-version.js +14 -15
- package/tools/upgraders/v3-to-v4-upgrader.js +203 -294
- package/tools/version-bump.js +41 -26
- package/tools/yaml-format.js +56 -43
- package/.github/workflows/promote-to-stable.yml +0 -144
- package/.github/workflows/release.yaml +0 -60
- package/.releaserc.json +0 -21
- package/tools/semantic-release-sync-installer.js +0 -30
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
name: Discord Notification
|
|
2
2
|
|
|
3
|
-
on:
|
|
3
|
+
"on":
|
|
4
|
+
[
|
|
5
|
+
pull_request,
|
|
6
|
+
release,
|
|
7
|
+
create,
|
|
8
|
+
delete,
|
|
9
|
+
issue_comment,
|
|
10
|
+
pull_request_review,
|
|
11
|
+
pull_request_review_comment,
|
|
12
|
+
]
|
|
4
13
|
|
|
5
14
|
jobs:
|
|
6
15
|
notify:
|
|
@@ -13,4 +22,4 @@ jobs:
|
|
|
13
22
|
webhook: ${{ secrets.DISCORD_WEBHOOK }}
|
|
14
23
|
status: ${{ job.status }}
|
|
15
24
|
title: "Triggered by ${{ github.event_name }}"
|
|
16
|
-
color: 0x5865F2
|
|
25
|
+
color: 0x5865F2
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: format-check
|
|
2
|
+
|
|
3
|
+
"on":
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: ["**"]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
prettier:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- name: Checkout
|
|
12
|
+
uses: actions/checkout@v4
|
|
13
|
+
|
|
14
|
+
- name: Setup Node
|
|
15
|
+
uses: actions/setup-node@v4
|
|
16
|
+
with:
|
|
17
|
+
node-version: "20"
|
|
18
|
+
cache: "npm"
|
|
19
|
+
|
|
20
|
+
- name: Install dependencies
|
|
21
|
+
run: npm ci
|
|
22
|
+
|
|
23
|
+
- name: Prettier format check
|
|
24
|
+
run: npm run format:check
|
|
25
|
+
|
|
26
|
+
eslint:
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
steps:
|
|
29
|
+
- name: Checkout
|
|
30
|
+
uses: actions/checkout@v4
|
|
31
|
+
|
|
32
|
+
- name: Setup Node
|
|
33
|
+
uses: actions/setup-node@v4
|
|
34
|
+
with:
|
|
35
|
+
node-version: "20"
|
|
36
|
+
cache: "npm"
|
|
37
|
+
|
|
38
|
+
- name: Install dependencies
|
|
39
|
+
run: npm ci
|
|
40
|
+
|
|
41
|
+
- name: ESLint
|
|
42
|
+
run: npm run lint
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
name: Manual Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
version_bump:
|
|
7
|
+
description: Version bump type
|
|
8
|
+
required: true
|
|
9
|
+
default: patch
|
|
10
|
+
type: choice
|
|
11
|
+
options:
|
|
12
|
+
- patch
|
|
13
|
+
- minor
|
|
14
|
+
- major
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
contents: write
|
|
18
|
+
packages: write
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
release:
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout
|
|
25
|
+
uses: actions/checkout@v4
|
|
26
|
+
with:
|
|
27
|
+
fetch-depth: 0
|
|
28
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
29
|
+
|
|
30
|
+
- name: Setup Node.js
|
|
31
|
+
uses: actions/setup-node@v4
|
|
32
|
+
with:
|
|
33
|
+
node-version: "20"
|
|
34
|
+
cache: npm
|
|
35
|
+
registry-url: https://registry.npmjs.org
|
|
36
|
+
|
|
37
|
+
- name: Install dependencies
|
|
38
|
+
run: npm ci
|
|
39
|
+
|
|
40
|
+
- name: Run tests and validation
|
|
41
|
+
run: |
|
|
42
|
+
npm run validate
|
|
43
|
+
npm run format:check
|
|
44
|
+
npm run lint
|
|
45
|
+
|
|
46
|
+
- name: Configure Git
|
|
47
|
+
run: |
|
|
48
|
+
git config user.name "github-actions[bot]"
|
|
49
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
50
|
+
|
|
51
|
+
- name: Bump version
|
|
52
|
+
run: npm run version:${{ github.event.inputs.version_bump }}
|
|
53
|
+
|
|
54
|
+
- name: Get new version and previous tag
|
|
55
|
+
id: version
|
|
56
|
+
run: |
|
|
57
|
+
echo "new_version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
|
|
58
|
+
echo "previous_tag=$(git describe --tags --abbrev=0)" >> $GITHUB_OUTPUT
|
|
59
|
+
|
|
60
|
+
- name: Update installer package.json
|
|
61
|
+
run: |
|
|
62
|
+
sed -i 's/"version": ".*"/"version": "${{ steps.version.outputs.new_version }}"/' tools/installer/package.json
|
|
63
|
+
|
|
64
|
+
- name: Build project
|
|
65
|
+
run: npm run build
|
|
66
|
+
|
|
67
|
+
- name: Commit version bump
|
|
68
|
+
run: |
|
|
69
|
+
git add .
|
|
70
|
+
git commit -m "release: bump to v${{ steps.version.outputs.new_version }}"
|
|
71
|
+
|
|
72
|
+
- name: Generate release notes
|
|
73
|
+
id: release_notes
|
|
74
|
+
run: |
|
|
75
|
+
# Get commits since last tag
|
|
76
|
+
COMMITS=$(git log ${{ steps.version.outputs.previous_tag }}..HEAD --pretty=format:"- %s" --reverse)
|
|
77
|
+
|
|
78
|
+
# Categorize commits
|
|
79
|
+
FEATURES=$(echo "$COMMITS" | grep -E "^- (feat|Feature)" || true)
|
|
80
|
+
FIXES=$(echo "$COMMITS" | grep -E "^- (fix|Fix)" || true)
|
|
81
|
+
CHORES=$(echo "$COMMITS" | grep -E "^- (chore|Chore)" || true)
|
|
82
|
+
OTHERS=$(echo "$COMMITS" | grep -v -E "^- (feat|Feature|fix|Fix|chore|Chore|release:|Release:)" || true)
|
|
83
|
+
|
|
84
|
+
# Build release notes
|
|
85
|
+
cat > release_notes.md << 'EOF'
|
|
86
|
+
## 🚀 What's New in v${{ steps.version.outputs.new_version }}
|
|
87
|
+
|
|
88
|
+
EOF
|
|
89
|
+
|
|
90
|
+
if [ ! -z "$FEATURES" ]; then
|
|
91
|
+
echo "### ✨ New Features" >> release_notes.md
|
|
92
|
+
echo "$FEATURES" >> release_notes.md
|
|
93
|
+
echo "" >> release_notes.md
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
if [ ! -z "$FIXES" ]; then
|
|
97
|
+
echo "### 🐛 Bug Fixes" >> release_notes.md
|
|
98
|
+
echo "$FIXES" >> release_notes.md
|
|
99
|
+
echo "" >> release_notes.md
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
if [ ! -z "$OTHERS" ]; then
|
|
103
|
+
echo "### 📦 Other Changes" >> release_notes.md
|
|
104
|
+
echo "$OTHERS" >> release_notes.md
|
|
105
|
+
echo "" >> release_notes.md
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
if [ ! -z "$CHORES" ]; then
|
|
109
|
+
echo "### 🔧 Maintenance" >> release_notes.md
|
|
110
|
+
echo "$CHORES" >> release_notes.md
|
|
111
|
+
echo "" >> release_notes.md
|
|
112
|
+
fi
|
|
113
|
+
|
|
114
|
+
cat >> release_notes.md << 'EOF'
|
|
115
|
+
|
|
116
|
+
## 📦 Installation
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
npx bmad-method install
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Full Changelog**: https://github.com/bmadcode/BMAD-METHOD/compare/${{ steps.version.outputs.previous_tag }}...v${{ steps.version.outputs.new_version }}
|
|
123
|
+
EOF
|
|
124
|
+
|
|
125
|
+
# Output for GitHub Actions
|
|
126
|
+
echo "RELEASE_NOTES<<EOF" >> $GITHUB_OUTPUT
|
|
127
|
+
cat release_notes.md >> $GITHUB_OUTPUT
|
|
128
|
+
echo "EOF" >> $GITHUB_OUTPUT
|
|
129
|
+
|
|
130
|
+
- name: Create and push tag
|
|
131
|
+
run: |
|
|
132
|
+
# Check if tag already exists
|
|
133
|
+
if git rev-parse "v${{ steps.version.outputs.new_version }}" >/dev/null 2>&1; then
|
|
134
|
+
echo "Tag v${{ steps.version.outputs.new_version }} already exists, skipping tag creation"
|
|
135
|
+
else
|
|
136
|
+
git tag -a "v${{ steps.version.outputs.new_version }}" -m "Release v${{ steps.version.outputs.new_version }}"
|
|
137
|
+
git push origin "v${{ steps.version.outputs.new_version }}"
|
|
138
|
+
fi
|
|
139
|
+
|
|
140
|
+
- name: Push changes to main
|
|
141
|
+
run: |
|
|
142
|
+
if git push origin HEAD:main 2>/dev/null; then
|
|
143
|
+
echo "✅ Successfully pushed to main branch"
|
|
144
|
+
else
|
|
145
|
+
echo "⚠️ Could not push to main (protected branch). This is expected."
|
|
146
|
+
echo "📝 Version bump and tag were created successfully."
|
|
147
|
+
fi
|
|
148
|
+
|
|
149
|
+
- name: Publish to NPM
|
|
150
|
+
env:
|
|
151
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
152
|
+
run: npm publish
|
|
153
|
+
|
|
154
|
+
- name: Create GitHub Release
|
|
155
|
+
uses: actions/create-release@v1
|
|
156
|
+
env:
|
|
157
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
158
|
+
with:
|
|
159
|
+
tag_name: v${{ steps.version.outputs.new_version }}
|
|
160
|
+
release_name: "BMad Method v${{ steps.version.outputs.new_version }}"
|
|
161
|
+
body: ${{ steps.release_notes.outputs.RELEASE_NOTES }}
|
|
162
|
+
draft: false
|
|
163
|
+
prerelease: false
|
|
164
|
+
|
|
165
|
+
- name: Summary
|
|
166
|
+
run: |
|
|
167
|
+
echo "🎉 Successfully released v${{ steps.version.outputs.new_version }}!"
|
|
168
|
+
echo "📦 Published to NPM with @latest tag"
|
|
169
|
+
echo "🏷️ Git tag: v${{ steps.version.outputs.new_version }}"
|
|
170
|
+
echo "✅ Users running 'npx bmad-method install' will now get version ${{ steps.version.outputs.new_version }}"
|
|
171
|
+
echo ""
|
|
172
|
+
echo "📝 Release notes preview:"
|
|
173
|
+
cat release_notes.md
|
package/.vscode/settings.json
CHANGED
|
@@ -40,5 +40,30 @@
|
|
|
40
40
|
"tileset",
|
|
41
41
|
"Trae",
|
|
42
42
|
"VNET"
|
|
43
|
-
]
|
|
43
|
+
],
|
|
44
|
+
"json.schemas": [
|
|
45
|
+
{
|
|
46
|
+
"fileMatch": ["package.json"],
|
|
47
|
+
"url": "https://json.schemastore.org/package.json"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"fileMatch": [".vscode/settings.json"],
|
|
51
|
+
"url": "vscode://schemas/settings/folder"
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"editor.formatOnSave": true,
|
|
55
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
56
|
+
"[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
|
|
57
|
+
"[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
|
|
58
|
+
"[yaml]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
|
|
59
|
+
"[markdown]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
|
|
60
|
+
"prettier.prettierPath": "node_modules/prettier",
|
|
61
|
+
"prettier.requireConfig": true,
|
|
62
|
+
"yaml.format.enable": false,
|
|
63
|
+
"eslint.useFlatConfig": true,
|
|
64
|
+
"eslint.validate": ["javascript", "yaml"],
|
|
65
|
+
"editor.codeActionsOnSave": {
|
|
66
|
+
"source.fixAll.eslint": "explicit"
|
|
67
|
+
},
|
|
68
|
+
"editor.rulers": [100]
|
|
44
69
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
# [5.0.0-beta.2](https://github.com/bmadcode/BMAD-METHOD/compare/v5.0.0-beta.1...v5.0.0-beta.2) (2025-08-16)
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
### Features
|
|
5
|
-
|
|
6
|
-
* **flattener:** prompt for detailed stats; polish .stats.md with emojis ([#422](https://github.com/bmadcode/BMAD-METHOD/issues/422)) ([fab9d5e](https://github.com/bmadcode/BMAD-METHOD/commit/fab9d5e1f55d7876b6909002415af89508cc41a7))
|
|
7
|
-
|
|
8
1
|
## [4.36.2](https://github.com/bmadcode/BMAD-METHOD/compare/v4.36.1...v4.36.2) (2025-08-10)
|
|
9
2
|
|
|
10
3
|
### Bug Fixes
|
|
@@ -581,10 +574,6 @@
|
|
|
581
574
|
|
|
582
575
|
- Manual version bumping via npm scripts is now disabled. Use conventional commits for automated releases.
|
|
583
576
|
|
|
584
|
-
🤖 Generated with [Claude Code](https://claude.ai/code)
|
|
585
|
-
|
|
586
|
-
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
587
|
-
|
|
588
577
|
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)
|
|
589
578
|
|
|
590
579
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -75,6 +75,8 @@ This makes it easy to benefit from the latest improvements, bug fixes, and new a
|
|
|
75
75
|
|
|
76
76
|
```bash
|
|
77
77
|
npx bmad-method install
|
|
78
|
+
# OR explicitly use stable tag:
|
|
79
|
+
npx bmad-method@stable install
|
|
78
80
|
# OR if you already have BMad installed:
|
|
79
81
|
git pull
|
|
80
82
|
npm run install:bmad
|
|
@@ -131,7 +131,7 @@ workflow-guidance:
|
|
|
131
131
|
- Understand each workflow's purpose, options, and decision points
|
|
132
132
|
- Ask clarifying questions based on the workflow's structure
|
|
133
133
|
- Guide users through workflow selection when multiple options exist
|
|
134
|
-
- When appropriate, suggest:
|
|
134
|
+
- When appropriate, suggest: 'Would you like me to create a detailed workflow plan before starting?'
|
|
135
135
|
- For workflows with divergent paths, help users choose the right path
|
|
136
136
|
- Adapt questions to the specific domain (e.g., game dev vs infrastructure vs web dev)
|
|
137
137
|
- Only recommend workflows that actually exist in the current bundle
|
package/bmad-core/agents/dev.md
CHANGED
|
@@ -35,7 +35,7 @@ agent:
|
|
|
35
35
|
id: dev
|
|
36
36
|
title: Full Stack Developer
|
|
37
37
|
icon: 💻
|
|
38
|
-
whenToUse:
|
|
38
|
+
whenToUse: 'Use for code implementation, debugging, refactoring, and development best practices'
|
|
39
39
|
customization:
|
|
40
40
|
|
|
41
41
|
persona:
|
|
@@ -57,13 +57,13 @@ commands:
|
|
|
57
57
|
- explain: teach me what and why you did whatever you just did in detail so I can learn. Explain to me as if you were training a junior engineer.
|
|
58
58
|
- exit: Say goodbye as the Developer, and then abandon inhabiting this persona
|
|
59
59
|
- develop-story:
|
|
60
|
-
- order-of-execution:
|
|
60
|
+
- order-of-execution: 'Read (first or next) task→Implement Task and its subtasks→Write tests→Execute validations→Only if ALL pass, then update the task checkbox with [x]→Update story section File List to ensure it lists and new or modified or deleted source file→repeat order-of-execution until complete'
|
|
61
61
|
- story-file-updates-ONLY:
|
|
62
62
|
- CRITICAL: ONLY UPDATE THE STORY FILE WITH UPDATES TO SECTIONS INDICATED BELOW. DO NOT MODIFY ANY OTHER SECTIONS.
|
|
63
63
|
- CRITICAL: You are ONLY authorized to edit these specific sections of story files - Tasks / Subtasks Checkboxes, Dev Agent Record section and all its subsections, Agent Model Used, Debug Log References, Completion Notes List, File List, Change Log, Status
|
|
64
64
|
- CRITICAL: DO NOT modify Status, Story, Acceptance Criteria, Dev Notes, Testing sections, or any other sections not listed above
|
|
65
|
-
- blocking:
|
|
66
|
-
- ready-for-review:
|
|
65
|
+
- blocking: 'HALT for: Unapproved deps needed, confirm with user | Ambiguous after story check | 3 failures attempting to implement or fix something repeatedly | Missing config | Failing regression'
|
|
66
|
+
- ready-for-review: 'Code matches requirements + All validations pass + Follows standards + File List complete'
|
|
67
67
|
- completion: "All Tasks and Subtasks marked [x] and have tests→Validations and full regression passes (DON'T BE LAZY, EXECUTE ALL TESTS and CONFIRM)→Ensure File List is Complete→run the task execute-checklist for the checklist story-dod-checklist→set story status: 'Ready for Review'→HALT"
|
|
68
68
|
|
|
69
69
|
dependencies:
|
|
@@ -298,7 +298,7 @@ You are the "Vibe CEO" - thinking like a CEO with unlimited resources and a sing
|
|
|
298
298
|
|
|
299
299
|
- **Claude Code**: `/agent-name` (e.g., `/bmad-master`)
|
|
300
300
|
- **Cursor**: `@agent-name` (e.g., `@bmad-master`)
|
|
301
|
-
- **Windsurf**:
|
|
301
|
+
- **Windsurf**: `/agent-name` (e.g., `/bmad-master`)
|
|
302
302
|
- **Trae**: `@agent-name` (e.g., `@bmad-master`)
|
|
303
303
|
- **Roo Code**: Select mode from mode selector (e.g., `bmad-master`)
|
|
304
304
|
- **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select **Agent** from the chat mode selector.
|
|
@@ -25,10 +25,10 @@ Comprehensive guide for determining appropriate test levels (unit, integration,
|
|
|
25
25
|
|
|
26
26
|
```yaml
|
|
27
27
|
unit_test:
|
|
28
|
-
component:
|
|
29
|
-
scenario:
|
|
30
|
-
justification:
|
|
31
|
-
mock_requirements:
|
|
28
|
+
component: 'PriceCalculator'
|
|
29
|
+
scenario: 'Calculate discount with multiple rules'
|
|
30
|
+
justification: 'Complex business logic with multiple branches'
|
|
31
|
+
mock_requirements: 'None - pure function'
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
### Integration Tests
|
|
@@ -52,10 +52,10 @@ unit_test:
|
|
|
52
52
|
|
|
53
53
|
```yaml
|
|
54
54
|
integration_test:
|
|
55
|
-
components: [
|
|
56
|
-
scenario:
|
|
57
|
-
justification:
|
|
58
|
-
test_environment:
|
|
55
|
+
components: ['UserService', 'AuthRepository']
|
|
56
|
+
scenario: 'Create user with role assignment'
|
|
57
|
+
justification: 'Critical data flow between service and persistence'
|
|
58
|
+
test_environment: 'In-memory database'
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
### End-to-End Tests
|
|
@@ -79,10 +79,10 @@ integration_test:
|
|
|
79
79
|
|
|
80
80
|
```yaml
|
|
81
81
|
e2e_test:
|
|
82
|
-
journey:
|
|
83
|
-
scenario:
|
|
84
|
-
justification:
|
|
85
|
-
environment:
|
|
82
|
+
journey: 'Complete checkout process'
|
|
83
|
+
scenario: 'User purchases with saved payment method'
|
|
84
|
+
justification: 'Revenue-critical path requiring full validation'
|
|
85
|
+
environment: 'Staging with test payment gateway'
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
## Test Level Selection Rules
|
|
@@ -6,12 +6,12 @@ Quick NFR validation focused on the core four: security, performance, reliabilit
|
|
|
6
6
|
|
|
7
7
|
```yaml
|
|
8
8
|
required:
|
|
9
|
-
- story_id:
|
|
10
|
-
- story_path:
|
|
9
|
+
- story_id: '{epic}.{story}' # e.g., "1.3"
|
|
10
|
+
- story_path: 'docs/stories/{epic}.{story}.*.md'
|
|
11
11
|
|
|
12
12
|
optional:
|
|
13
|
-
- architecture_refs:
|
|
14
|
-
- technical_preferences:
|
|
13
|
+
- architecture_refs: 'docs/architecture/*.md'
|
|
14
|
+
- technical_preferences: 'docs/technical-preferences.md'
|
|
15
15
|
- acceptance_criteria: From story file
|
|
16
16
|
```
|
|
17
17
|
|
|
@@ -92,16 +92,16 @@ nfr_validation:
|
|
|
92
92
|
_assessed: [security, performance, reliability, maintainability]
|
|
93
93
|
security:
|
|
94
94
|
status: CONCERNS
|
|
95
|
-
notes:
|
|
95
|
+
notes: 'No rate limiting on auth endpoints'
|
|
96
96
|
performance:
|
|
97
97
|
status: PASS
|
|
98
|
-
notes:
|
|
98
|
+
notes: 'Response times < 200ms verified'
|
|
99
99
|
reliability:
|
|
100
100
|
status: PASS
|
|
101
|
-
notes:
|
|
101
|
+
notes: 'Error handling and retries implemented'
|
|
102
102
|
maintainability:
|
|
103
103
|
status: CONCERNS
|
|
104
|
-
notes:
|
|
104
|
+
notes: 'Test coverage at 65%, target is 80%'
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
## Deterministic Status Rules
|
|
@@ -331,10 +331,10 @@ performance_deep_dive:
|
|
|
331
331
|
p99: 350ms
|
|
332
332
|
database:
|
|
333
333
|
slow_queries: 2
|
|
334
|
-
missing_indexes: [
|
|
334
|
+
missing_indexes: ['users.email', 'orders.user_id']
|
|
335
335
|
caching:
|
|
336
336
|
hit_rate: 0%
|
|
337
|
-
recommendation:
|
|
337
|
+
recommendation: 'Add Redis for session data'
|
|
338
338
|
load_test:
|
|
339
339
|
max_rps: 150
|
|
340
340
|
breaking_point: 200 rps
|
|
@@ -27,11 +27,11 @@ Slug rules:
|
|
|
27
27
|
|
|
28
28
|
```yaml
|
|
29
29
|
schema: 1
|
|
30
|
-
story:
|
|
30
|
+
story: '{epic}.{story}'
|
|
31
31
|
gate: PASS|CONCERNS|FAIL|WAIVED
|
|
32
|
-
status_reason:
|
|
33
|
-
reviewer:
|
|
34
|
-
updated:
|
|
32
|
+
status_reason: '1-2 sentence explanation of gate decision'
|
|
33
|
+
reviewer: 'Quinn'
|
|
34
|
+
updated: '{ISO-8601 timestamp}'
|
|
35
35
|
top_issues: [] # Empty array if no issues
|
|
36
36
|
waiver: { active: false } # Only set active: true if WAIVED
|
|
37
37
|
```
|
|
@@ -40,20 +40,20 @@ waiver: { active: false } # Only set active: true if WAIVED
|
|
|
40
40
|
|
|
41
41
|
```yaml
|
|
42
42
|
schema: 1
|
|
43
|
-
story:
|
|
43
|
+
story: '1.3'
|
|
44
44
|
gate: CONCERNS
|
|
45
|
-
status_reason:
|
|
46
|
-
reviewer:
|
|
47
|
-
updated:
|
|
45
|
+
status_reason: 'Missing rate limiting on auth endpoints poses security risk.'
|
|
46
|
+
reviewer: 'Quinn'
|
|
47
|
+
updated: '2025-01-12T10:15:00Z'
|
|
48
48
|
top_issues:
|
|
49
|
-
- id:
|
|
49
|
+
- id: 'SEC-001'
|
|
50
50
|
severity: high # ONLY: low|medium|high
|
|
51
|
-
finding:
|
|
52
|
-
suggested_action:
|
|
53
|
-
- id:
|
|
51
|
+
finding: 'No rate limiting on login endpoint'
|
|
52
|
+
suggested_action: 'Add rate limiting middleware before production'
|
|
53
|
+
- id: 'TEST-001'
|
|
54
54
|
severity: medium
|
|
55
|
-
finding:
|
|
56
|
-
suggested_action:
|
|
55
|
+
finding: 'No integration tests for auth flow'
|
|
56
|
+
suggested_action: 'Add integration test coverage'
|
|
57
57
|
waiver: { active: false }
|
|
58
58
|
```
|
|
59
59
|
|
|
@@ -61,20 +61,20 @@ waiver: { active: false }
|
|
|
61
61
|
|
|
62
62
|
```yaml
|
|
63
63
|
schema: 1
|
|
64
|
-
story:
|
|
64
|
+
story: '1.3'
|
|
65
65
|
gate: WAIVED
|
|
66
|
-
status_reason:
|
|
67
|
-
reviewer:
|
|
68
|
-
updated:
|
|
66
|
+
status_reason: 'Known issues accepted for MVP release.'
|
|
67
|
+
reviewer: 'Quinn'
|
|
68
|
+
updated: '2025-01-12T10:15:00Z'
|
|
69
69
|
top_issues:
|
|
70
|
-
- id:
|
|
70
|
+
- id: 'PERF-001'
|
|
71
71
|
severity: low
|
|
72
|
-
finding:
|
|
73
|
-
suggested_action:
|
|
72
|
+
finding: 'Dashboard loads slowly with 1000+ items'
|
|
73
|
+
suggested_action: 'Implement pagination in next sprint'
|
|
74
74
|
waiver:
|
|
75
75
|
active: true
|
|
76
|
-
reason:
|
|
77
|
-
approved_by:
|
|
76
|
+
reason: 'MVP release - performance optimization deferred'
|
|
77
|
+
approved_by: 'Product Owner'
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
## Gate Decision Criteria
|
|
@@ -6,10 +6,10 @@ Perform a comprehensive test architecture review with quality gate decision. Thi
|
|
|
6
6
|
|
|
7
7
|
```yaml
|
|
8
8
|
required:
|
|
9
|
-
- story_id:
|
|
10
|
-
- story_path:
|
|
11
|
-
- story_title:
|
|
12
|
-
- story_slug:
|
|
9
|
+
- story_id: '{epic}.{story}' # e.g., "1.3"
|
|
10
|
+
- story_path: '{devStoryLocation}/{epic}.{story}.*.md' # Path from core-config.yaml
|
|
11
|
+
- story_title: '{title}' # If missing, derive from story file H1
|
|
12
|
+
- story_slug: '{slug}' # If missing, derive from title (lowercase, hyphenated)
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## Prerequisites
|
|
@@ -191,19 +191,19 @@ Gate file structure:
|
|
|
191
191
|
|
|
192
192
|
```yaml
|
|
193
193
|
schema: 1
|
|
194
|
-
story:
|
|
195
|
-
story_title:
|
|
194
|
+
story: '{epic}.{story}'
|
|
195
|
+
story_title: '{story title}'
|
|
196
196
|
gate: PASS|CONCERNS|FAIL|WAIVED
|
|
197
|
-
status_reason:
|
|
198
|
-
reviewer:
|
|
199
|
-
updated:
|
|
197
|
+
status_reason: '1-2 sentence explanation of gate decision'
|
|
198
|
+
reviewer: 'Quinn (Test Architect)'
|
|
199
|
+
updated: '{ISO-8601 timestamp}'
|
|
200
200
|
|
|
201
201
|
top_issues: [] # Empty if no issues
|
|
202
202
|
waiver: { active: false } # Set active: true only if WAIVED
|
|
203
203
|
|
|
204
204
|
# Extended fields (optional but recommended):
|
|
205
205
|
quality_score: 0-100 # 100 - (20*FAILs) - (10*CONCERNS) or use technical-preferences.md weights
|
|
206
|
-
expires:
|
|
206
|
+
expires: '{ISO-8601 timestamp}' # Typically 2 weeks from review
|
|
207
207
|
|
|
208
208
|
evidence:
|
|
209
209
|
tests_reviewed: { count }
|
|
@@ -215,24 +215,24 @@ evidence:
|
|
|
215
215
|
nfr_validation:
|
|
216
216
|
security:
|
|
217
217
|
status: PASS|CONCERNS|FAIL
|
|
218
|
-
notes:
|
|
218
|
+
notes: 'Specific findings'
|
|
219
219
|
performance:
|
|
220
220
|
status: PASS|CONCERNS|FAIL
|
|
221
|
-
notes:
|
|
221
|
+
notes: 'Specific findings'
|
|
222
222
|
reliability:
|
|
223
223
|
status: PASS|CONCERNS|FAIL
|
|
224
|
-
notes:
|
|
224
|
+
notes: 'Specific findings'
|
|
225
225
|
maintainability:
|
|
226
226
|
status: PASS|CONCERNS|FAIL
|
|
227
|
-
notes:
|
|
227
|
+
notes: 'Specific findings'
|
|
228
228
|
|
|
229
229
|
recommendations:
|
|
230
230
|
immediate: # Must fix before production
|
|
231
|
-
- action:
|
|
232
|
-
refs: [
|
|
231
|
+
- action: 'Add rate limiting'
|
|
232
|
+
refs: ['api/auth/login.ts']
|
|
233
233
|
future: # Can be addressed later
|
|
234
|
-
- action:
|
|
235
|
-
refs: [
|
|
234
|
+
- action: 'Consider caching'
|
|
235
|
+
refs: ['services/data.ts']
|
|
236
236
|
```
|
|
237
237
|
|
|
238
238
|
### Gate Decision Criteria
|