bmad-method 4.40.0 → 4.42.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/FORK_GUIDE.md +106 -0
- package/.github/workflows/discord.yaml +1 -0
- package/.github/workflows/format-check.yaml +2 -0
- package/.github/workflows/manual-release.yaml +1 -0
- package/.github/workflows/pr-validation.yaml +55 -0
- package/CONTRIBUTING.md +41 -0
- package/README.md +37 -1
- package/bmad-core/agents/bmad-master.md +4 -4
- package/bmad-core/agents/dev.md +1 -0
- package/bmad-core/workflows/brownfield-fullstack.yaml +2 -2
- package/bmad-core/workflows/brownfield-service.yaml +2 -2
- package/bmad-core/workflows/brownfield-ui.yaml +2 -2
- package/bmad-core/workflows/greenfield-fullstack.yaml +4 -4
- package/bmad-core/workflows/greenfield-service.yaml +2 -2
- package/bmad-core/workflows/greenfield-ui.yaml +3 -3
- package/dist/agents/dev.txt +1 -0
- package/dist/teams/team-all.txt +16 -15
- package/dist/teams/team-fullstack.txt +15 -15
- package/dist/teams/team-ide-minimal.txt +1 -0
- package/dist/teams/team-no-ui.txt +4 -4
- package/docs/user-guide.md +26 -0
- package/implement-fork-friendly-ci.sh +229 -0
- package/package.json +16 -11
- package/release_notes.md +13 -2
- package/test.md +1 -0
- package/tools/installer/bin/bmad.js +1 -1
- package/tools/installer/config/install.config.yaml +22 -0
- package/tools/installer/lib/ide-setup.js +175 -0
- package/tools/installer/package.json +1 -1
- package/tools/setup-hooks.sh +37 -0
|
@@ -9252,7 +9252,7 @@ workflow:
|
|
|
9252
9252
|
- Dev Agent (New Chat): Address remaining items
|
|
9253
9253
|
- Return to QA for final approval
|
|
9254
9254
|
|
|
9255
|
-
- repeat_development_cycle
|
|
9255
|
+
- step: repeat_development_cycle
|
|
9256
9256
|
action: continue_for_all_stories
|
|
9257
9257
|
notes: |
|
|
9258
9258
|
Repeat story cycle (SM → Dev → QA) for all epic stories
|
|
@@ -9269,7 +9269,7 @@ workflow:
|
|
|
9269
9269
|
- Validate epic was completed correctly
|
|
9270
9270
|
- Document learnings and improvements
|
|
9271
9271
|
|
|
9272
|
-
- workflow_end
|
|
9272
|
+
- step: workflow_end
|
|
9273
9273
|
action: project_complete
|
|
9274
9274
|
notes: |
|
|
9275
9275
|
All stories implemented and reviewed!
|
|
@@ -9499,7 +9499,7 @@ workflow:
|
|
|
9499
9499
|
- Dev Agent (New Chat): Address remaining items
|
|
9500
9500
|
- Return to QA for final approval
|
|
9501
9501
|
|
|
9502
|
-
- repeat_development_cycle
|
|
9502
|
+
- step: repeat_development_cycle
|
|
9503
9503
|
action: continue_for_all_stories
|
|
9504
9504
|
notes: |
|
|
9505
9505
|
Repeat story cycle (SM → Dev → QA) for all epic stories
|
|
@@ -9516,7 +9516,7 @@ workflow:
|
|
|
9516
9516
|
- Validate epic was completed correctly
|
|
9517
9517
|
- Document learnings and improvements
|
|
9518
9518
|
|
|
9519
|
-
- workflow_end
|
|
9519
|
+
- step: workflow_end
|
|
9520
9520
|
action: project_complete
|
|
9521
9521
|
notes: |
|
|
9522
9522
|
All stories implemented and reviewed!
|
|
@@ -9697,7 +9697,7 @@ workflow:
|
|
|
9697
9697
|
- Dev Agent (New Chat): Address remaining items
|
|
9698
9698
|
- Return to QA for final approval
|
|
9699
9699
|
|
|
9700
|
-
- repeat_development_cycle
|
|
9700
|
+
- step: repeat_development_cycle
|
|
9701
9701
|
action: continue_for_all_stories
|
|
9702
9702
|
notes: |
|
|
9703
9703
|
Repeat story cycle (SM → Dev → QA) for all epic stories
|
|
@@ -9714,7 +9714,7 @@ workflow:
|
|
|
9714
9714
|
- Validate epic was completed correctly
|
|
9715
9715
|
- Document learnings and improvements
|
|
9716
9716
|
|
|
9717
|
-
- workflow_end
|
|
9717
|
+
- step: workflow_end
|
|
9718
9718
|
action: project_complete
|
|
9719
9719
|
notes: |
|
|
9720
9720
|
All stories implemented and reviewed!
|
|
@@ -9850,12 +9850,12 @@ workflow:
|
|
|
9850
9850
|
condition: po_checklist_issues
|
|
9851
9851
|
notes: "If PO finds issues, return to relevant agent to fix and re-export updated documents to docs/ folder."
|
|
9852
9852
|
|
|
9853
|
-
- project_setup_guidance
|
|
9853
|
+
- step: project_setup_guidance
|
|
9854
9854
|
action: guide_project_structure
|
|
9855
9855
|
condition: user_has_generated_ui
|
|
9856
9856
|
notes: "If user generated UI with v0/Lovable: For polyrepo setup, place downloaded project in separate frontend repo alongside backend repo. For monorepo, place in apps/web or packages/frontend directory. Review architecture document for specific guidance."
|
|
9857
9857
|
|
|
9858
|
-
- development_order_guidance
|
|
9858
|
+
- step: development_order_guidance
|
|
9859
9859
|
action: guide_development_sequence
|
|
9860
9860
|
notes: "Based on PRD stories: If stories are frontend-heavy, start with frontend project/directory first. If backend-heavy or API-first, start with backend. For tightly coupled features, follow story sequence in monorepo setup. Reference sharded PRD epics for development order."
|
|
9861
9861
|
|
|
@@ -9923,7 +9923,7 @@ workflow:
|
|
|
9923
9923
|
- Dev Agent (New Chat): Address remaining items
|
|
9924
9924
|
- Return to QA for final approval
|
|
9925
9925
|
|
|
9926
|
-
- repeat_development_cycle
|
|
9926
|
+
- step: repeat_development_cycle
|
|
9927
9927
|
action: continue_for_all_stories
|
|
9928
9928
|
notes: |
|
|
9929
9929
|
Repeat story cycle (SM → Dev → QA) for all epic stories
|
|
@@ -9940,7 +9940,7 @@ workflow:
|
|
|
9940
9940
|
- Validate epic was completed correctly
|
|
9941
9941
|
- Document learnings and improvements
|
|
9942
9942
|
|
|
9943
|
-
- workflow_end
|
|
9943
|
+
- step: workflow_end
|
|
9944
9944
|
action: project_complete
|
|
9945
9945
|
notes: |
|
|
9946
9946
|
All stories implemented and reviewed!
|
|
@@ -10143,7 +10143,7 @@ workflow:
|
|
|
10143
10143
|
- Dev Agent (New Chat): Address remaining items
|
|
10144
10144
|
- Return to QA for final approval
|
|
10145
10145
|
|
|
10146
|
-
- repeat_development_cycle
|
|
10146
|
+
- step: repeat_development_cycle
|
|
10147
10147
|
action: continue_for_all_stories
|
|
10148
10148
|
notes: |
|
|
10149
10149
|
Repeat story cycle (SM → Dev → QA) for all epic stories
|
|
@@ -10160,7 +10160,7 @@ workflow:
|
|
|
10160
10160
|
- Validate epic was completed correctly
|
|
10161
10161
|
- Document learnings and improvements
|
|
10162
10162
|
|
|
10163
|
-
- workflow_end
|
|
10163
|
+
- step: workflow_end
|
|
10164
10164
|
action: project_complete
|
|
10165
10165
|
notes: |
|
|
10166
10166
|
All stories implemented and reviewed!
|
|
@@ -10303,7 +10303,7 @@ workflow:
|
|
|
10303
10303
|
condition: po_checklist_issues
|
|
10304
10304
|
notes: "If PO finds issues, return to relevant agent to fix and re-export updated documents to docs/ folder."
|
|
10305
10305
|
|
|
10306
|
-
- project_setup_guidance
|
|
10306
|
+
- step: project_setup_guidance
|
|
10307
10307
|
action: guide_project_structure
|
|
10308
10308
|
condition: user_has_generated_ui
|
|
10309
10309
|
notes: "If user generated UI with v0/Lovable: For polyrepo setup, place downloaded project in separate frontend repo. For monorepo, place in apps/web or frontend/ directory. Review architecture document for specific guidance."
|
|
@@ -10372,7 +10372,7 @@ workflow:
|
|
|
10372
10372
|
- Dev Agent (New Chat): Address remaining items
|
|
10373
10373
|
- Return to QA for final approval
|
|
10374
10374
|
|
|
10375
|
-
- repeat_development_cycle
|
|
10375
|
+
- step: repeat_development_cycle
|
|
10376
10376
|
action: continue_for_all_stories
|
|
10377
10377
|
notes: |
|
|
10378
10378
|
Repeat story cycle (SM → Dev → QA) for all epic stories
|
|
@@ -10389,7 +10389,7 @@ workflow:
|
|
|
10389
10389
|
- Validate epic was completed correctly
|
|
10390
10390
|
- Document learnings and improvements
|
|
10391
10391
|
|
|
10392
|
-
- workflow_end
|
|
10392
|
+
- step: workflow_end
|
|
10393
10393
|
action: project_complete
|
|
10394
10394
|
notes: |
|
|
10395
10395
|
All stories implemented and reviewed!
|
|
@@ -309,6 +309,7 @@ persona:
|
|
|
309
309
|
focus: Executing story tasks with precision, updating Dev Agent Record sections only, maintaining minimal context overhead
|
|
310
310
|
core_principles:
|
|
311
311
|
- CRITICAL: Story has ALL info you will need aside from what you loaded during the startup commands. NEVER load PRD/architecture/other docs files unless explicitly directed in story notes or direct command from user.
|
|
312
|
+
- CRITICAL: ALWAYS check current folder structure before starting your story tasks, don't create new working directory if it already exists. Create new one when you're sure it's a brand new project.
|
|
312
313
|
- CRITICAL: ONLY update story file Dev Agent Record sections (checkboxes/Debug Log/Completion Notes/Change Log)
|
|
313
314
|
- CRITICAL: FOLLOW THE develop-story command when the user tells you to implement the story
|
|
314
315
|
- Numbered Options - Always use numbered lists when presenting choices to the user
|
|
@@ -8743,7 +8743,7 @@ workflow:
|
|
|
8743
8743
|
- Dev Agent (New Chat): Address remaining items
|
|
8744
8744
|
- Return to QA for final approval
|
|
8745
8745
|
|
|
8746
|
-
- repeat_development_cycle
|
|
8746
|
+
- step: repeat_development_cycle
|
|
8747
8747
|
action: continue_for_all_stories
|
|
8748
8748
|
notes: |
|
|
8749
8749
|
Repeat story cycle (SM → Dev → QA) for all epic stories
|
|
@@ -8760,7 +8760,7 @@ workflow:
|
|
|
8760
8760
|
- Validate epic was completed correctly
|
|
8761
8761
|
- Document learnings and improvements
|
|
8762
8762
|
|
|
8763
|
-
- workflow_end
|
|
8763
|
+
- step: workflow_end
|
|
8764
8764
|
action: project_complete
|
|
8765
8765
|
notes: |
|
|
8766
8766
|
All stories implemented and reviewed!
|
|
@@ -8945,7 +8945,7 @@ workflow:
|
|
|
8945
8945
|
- Dev Agent (New Chat): Address remaining items
|
|
8946
8946
|
- Return to QA for final approval
|
|
8947
8947
|
|
|
8948
|
-
- repeat_development_cycle
|
|
8948
|
+
- step: repeat_development_cycle
|
|
8949
8949
|
action: continue_for_all_stories
|
|
8950
8950
|
notes: |
|
|
8951
8951
|
Repeat story cycle (SM → Dev → QA) for all epic stories
|
|
@@ -8962,7 +8962,7 @@ workflow:
|
|
|
8962
8962
|
- Validate epic was completed correctly
|
|
8963
8963
|
- Document learnings and improvements
|
|
8964
8964
|
|
|
8965
|
-
- workflow_end
|
|
8965
|
+
- step: workflow_end
|
|
8966
8966
|
action: project_complete
|
|
8967
8967
|
notes: |
|
|
8968
8968
|
All stories implemented and reviewed!
|
package/docs/user-guide.md
CHANGED
|
@@ -187,6 +187,32 @@ If you want to do the planning on the web with Claude (Sonnet 4 or Opus), Gemini
|
|
|
187
187
|
npx bmad-method install
|
|
188
188
|
```
|
|
189
189
|
|
|
190
|
+
### Codex (CLI & Web)
|
|
191
|
+
|
|
192
|
+
BMAD integrates with OpenAI Codex via `AGENTS.md` and committed core agent files.
|
|
193
|
+
|
|
194
|
+
- Two installation modes:
|
|
195
|
+
- Codex (local only): keeps `.bmad-core/` ignored for local dev.
|
|
196
|
+
- `npx bmad-method install -f -i codex -d .`
|
|
197
|
+
- Codex Web Enabled: ensures `.bmad-core/` is tracked so you can commit it for Codex Web.
|
|
198
|
+
- `npx bmad-method install -f -i codex-web -d .`
|
|
199
|
+
|
|
200
|
+
- What gets generated:
|
|
201
|
+
- `AGENTS.md` at the project root with a BMAD section containing
|
|
202
|
+
- How-to-use with Codex (CLI & Web)
|
|
203
|
+
- Agent Directory (Title, ID, When To Use)
|
|
204
|
+
- Detailed per‑agent sections with source path, when-to-use, activation phrasing, and YAML
|
|
205
|
+
- Tasks with quick usage notes
|
|
206
|
+
- If a `package.json` exists, helpful scripts are added:
|
|
207
|
+
- `bmad:refresh`, `bmad:list`, `bmad:validate`
|
|
208
|
+
|
|
209
|
+
- Using Codex:
|
|
210
|
+
- CLI: run `codex` in the project root and prompt naturally, e.g., “As dev, implement …”.
|
|
211
|
+
- Web: commit `.bmad-core/` and `AGENTS.md`, then open the repo in Codex and prompt the same way.
|
|
212
|
+
|
|
213
|
+
- Refresh after changes:
|
|
214
|
+
- Re-run the appropriate install mode (`codex` or `codex-web`) to update the BMAD block in `AGENTS.md`.
|
|
215
|
+
|
|
190
216
|
## Special Agents
|
|
191
217
|
|
|
192
218
|
There are two BMad agents — in the future they'll be consolidated into a single BMad-Master.
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Fork-Friendly CI/CD Implementation Script
|
|
4
|
+
# Usage: ./implement-fork-friendly-ci.sh
|
|
5
|
+
#
|
|
6
|
+
# This script automates the implementation of fork-friendly CI/CD
|
|
7
|
+
# by adding fork detection conditions to all GitHub Actions workflows
|
|
8
|
+
|
|
9
|
+
set -e
|
|
10
|
+
|
|
11
|
+
echo "🚀 Implementing Fork-Friendly CI/CD..."
|
|
12
|
+
|
|
13
|
+
# Colors for output
|
|
14
|
+
RED='\033[0;31m'
|
|
15
|
+
GREEN='\033[0;32m'
|
|
16
|
+
YELLOW='\033[1;33m'
|
|
17
|
+
NC='\033[0m' # No Color
|
|
18
|
+
|
|
19
|
+
# 1. Check if .github/workflows directory exists
|
|
20
|
+
if [ ! -d ".github/workflows" ]; then
|
|
21
|
+
echo -e "${RED}✗${NC} No .github/workflows directory found"
|
|
22
|
+
echo "This script must be run from the repository root"
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# 2. Backup existing workflows
|
|
27
|
+
echo "📦 Backing up workflows..."
|
|
28
|
+
backup_dir=".github/workflows.backup.$(date +%Y%m%d_%H%M%S)"
|
|
29
|
+
cp -r .github/workflows "$backup_dir"
|
|
30
|
+
echo -e "${GREEN}✓${NC} Workflows backed up to $backup_dir"
|
|
31
|
+
|
|
32
|
+
# 3. Count workflow files and jobs
|
|
33
|
+
WORKFLOW_COUNT=$(ls -1 .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null | wc -l)
|
|
34
|
+
echo "📊 Found ${WORKFLOW_COUNT} workflow files"
|
|
35
|
+
|
|
36
|
+
# 4. Process each workflow file
|
|
37
|
+
UPDATED_FILES=0
|
|
38
|
+
MANUAL_REVIEW_NEEDED=0
|
|
39
|
+
|
|
40
|
+
for file in .github/workflows/*.yml .github/workflows/*.yaml; do
|
|
41
|
+
if [ -f "$file" ]; then
|
|
42
|
+
filename=$(basename "$file")
|
|
43
|
+
echo -n "Processing ${filename}... "
|
|
44
|
+
|
|
45
|
+
# Create temporary file
|
|
46
|
+
temp_file="${file}.tmp"
|
|
47
|
+
|
|
48
|
+
# Track if file needs manual review
|
|
49
|
+
needs_review=0
|
|
50
|
+
|
|
51
|
+
# Process the file with awk
|
|
52
|
+
awk '
|
|
53
|
+
BEGIN {
|
|
54
|
+
in_jobs = 0
|
|
55
|
+
job_count = 0
|
|
56
|
+
modified = 0
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/^jobs:/ {
|
|
60
|
+
in_jobs = 1
|
|
61
|
+
print
|
|
62
|
+
next
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# Match job definitions (2 spaces + name + colon)
|
|
66
|
+
in_jobs && /^ [a-z][a-z0-9_-]*:/ {
|
|
67
|
+
job_name = $0
|
|
68
|
+
print job_name
|
|
69
|
+
job_count++
|
|
70
|
+
|
|
71
|
+
# Look ahead for existing conditions
|
|
72
|
+
getline next_line
|
|
73
|
+
|
|
74
|
+
# Check if next line is already an if condition
|
|
75
|
+
if (next_line ~ /^ if:/) {
|
|
76
|
+
# Job already has condition - combine with fork detection
|
|
77
|
+
existing_condition = next_line
|
|
78
|
+
sub(/^ if: /, "", existing_condition)
|
|
79
|
+
|
|
80
|
+
# Check if fork condition already exists
|
|
81
|
+
if (existing_condition !~ /github\.event\.repository\.fork/) {
|
|
82
|
+
print " # Fork-friendly CI: Combined with existing condition"
|
|
83
|
+
print " if: (" existing_condition ") && (github.event.repository.fork != true || vars.ENABLE_CI_IN_FORK == '\''true'\'')"
|
|
84
|
+
modified++
|
|
85
|
+
} else {
|
|
86
|
+
# Already has fork detection
|
|
87
|
+
print next_line
|
|
88
|
+
}
|
|
89
|
+
} else if (next_line ~ /^ runs-on:/) {
|
|
90
|
+
# No condition exists, add before runs-on
|
|
91
|
+
print " if: github.event.repository.fork != true || vars.ENABLE_CI_IN_FORK == '\''true'\''"
|
|
92
|
+
print next_line
|
|
93
|
+
modified++
|
|
94
|
+
} else {
|
|
95
|
+
# Some other configuration, preserve as-is
|
|
96
|
+
print next_line
|
|
97
|
+
}
|
|
98
|
+
next
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
# Reset when leaving jobs section
|
|
102
|
+
/^[a-z]/ && in_jobs {
|
|
103
|
+
in_jobs = 0
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
# Print all other lines
|
|
107
|
+
{
|
|
108
|
+
if (!in_jobs) print
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
END {
|
|
112
|
+
if (modified > 0) {
|
|
113
|
+
exit 0 # Success - file was modified
|
|
114
|
+
} else {
|
|
115
|
+
exit 1 # No modifications needed
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
' "$file" > "$temp_file"
|
|
119
|
+
|
|
120
|
+
# Check if modifications were made
|
|
121
|
+
if [ $? -eq 0 ]; then
|
|
122
|
+
mv "$temp_file" "$file"
|
|
123
|
+
echo -e "${GREEN}✓${NC} Updated"
|
|
124
|
+
((UPDATED_FILES++))
|
|
125
|
+
else
|
|
126
|
+
rm -f "$temp_file"
|
|
127
|
+
echo -e "${YELLOW}○${NC} No changes needed"
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
# Check for complex conditions that might need manual review
|
|
131
|
+
if grep -q "needs:" "$file" || grep -q "strategy:" "$file"; then
|
|
132
|
+
echo " ⚠️ Complex workflow detected - manual review recommended"
|
|
133
|
+
((MANUAL_REVIEW_NEEDED++))
|
|
134
|
+
fi
|
|
135
|
+
fi
|
|
136
|
+
done
|
|
137
|
+
|
|
138
|
+
echo -e "${GREEN}✓${NC} Updated ${UPDATED_FILES} workflow files"
|
|
139
|
+
|
|
140
|
+
# 5. Create Fork Guide if it doesn't exist
|
|
141
|
+
if [ ! -f ".github/FORK_GUIDE.md" ]; then
|
|
142
|
+
echo "📝 Creating Fork Guide documentation..."
|
|
143
|
+
cat > .github/FORK_GUIDE.md << 'EOF'
|
|
144
|
+
# Fork Guide - CI/CD Configuration
|
|
145
|
+
|
|
146
|
+
## CI/CD in Forks
|
|
147
|
+
|
|
148
|
+
By default, CI/CD workflows are **disabled in forks** to conserve GitHub Actions resources.
|
|
149
|
+
|
|
150
|
+
### Enabling CI/CD in Your Fork
|
|
151
|
+
|
|
152
|
+
If you need to run CI/CD workflows in your fork:
|
|
153
|
+
|
|
154
|
+
1. Navigate to **Settings** → **Secrets and variables** → **Actions** → **Variables**
|
|
155
|
+
2. Click **New repository variable**
|
|
156
|
+
3. Create variable:
|
|
157
|
+
- **Name**: `ENABLE_CI_IN_FORK`
|
|
158
|
+
- **Value**: `true`
|
|
159
|
+
4. Click **Add variable**
|
|
160
|
+
|
|
161
|
+
### Disabling CI/CD Again
|
|
162
|
+
|
|
163
|
+
Either:
|
|
164
|
+
- Delete the `ENABLE_CI_IN_FORK` variable, or
|
|
165
|
+
- Set its value to `false`
|
|
166
|
+
|
|
167
|
+
### Alternative Testing Options
|
|
168
|
+
|
|
169
|
+
- **Local testing**: Run tests locally before pushing
|
|
170
|
+
- **Pull Request CI**: Workflows automatically run when you open a PR
|
|
171
|
+
- **GitHub Codespaces**: Full development environment
|
|
172
|
+
EOF
|
|
173
|
+
echo -e "${GREEN}✓${NC} Fork Guide created"
|
|
174
|
+
else
|
|
175
|
+
echo "ℹ️ Fork Guide already exists"
|
|
176
|
+
fi
|
|
177
|
+
|
|
178
|
+
# 6. Validate YAML files (if yamllint is available)
|
|
179
|
+
if command -v yamllint &> /dev/null; then
|
|
180
|
+
echo "🔍 Validating YAML syntax..."
|
|
181
|
+
VALIDATION_ERRORS=0
|
|
182
|
+
for file in .github/workflows/*.yml .github/workflows/*.yaml; do
|
|
183
|
+
if [ -f "$file" ]; then
|
|
184
|
+
filename=$(basename "$file")
|
|
185
|
+
if yamllint -d relaxed "$file" &>/dev/null; then
|
|
186
|
+
echo -e " ${GREEN}✓${NC} ${filename}"
|
|
187
|
+
else
|
|
188
|
+
echo -e " ${RED}✗${NC} ${filename} - YAML validation failed"
|
|
189
|
+
((VALIDATION_ERRORS++))
|
|
190
|
+
fi
|
|
191
|
+
fi
|
|
192
|
+
done
|
|
193
|
+
|
|
194
|
+
if [ $VALIDATION_ERRORS -gt 0 ]; then
|
|
195
|
+
echo -e "${YELLOW}⚠${NC} ${VALIDATION_ERRORS} files have YAML errors"
|
|
196
|
+
fi
|
|
197
|
+
else
|
|
198
|
+
echo "ℹ️ yamllint not found - skipping YAML validation"
|
|
199
|
+
echo " Install with: pip install yamllint"
|
|
200
|
+
fi
|
|
201
|
+
|
|
202
|
+
# 7. Summary
|
|
203
|
+
echo ""
|
|
204
|
+
echo "═══════════════════════════════════════"
|
|
205
|
+
echo " Fork-Friendly CI/CD Summary"
|
|
206
|
+
echo "═══════════════════════════════════════"
|
|
207
|
+
echo " 📁 Files updated: ${UPDATED_FILES}"
|
|
208
|
+
echo " 📊 Total workflows: ${WORKFLOW_COUNT}"
|
|
209
|
+
echo " 📝 Fork Guide: .github/FORK_GUIDE.md"
|
|
210
|
+
if [ $MANUAL_REVIEW_NEEDED -gt 0 ]; then
|
|
211
|
+
echo " ⚠️ Files needing review: ${MANUAL_REVIEW_NEEDED}"
|
|
212
|
+
fi
|
|
213
|
+
echo ""
|
|
214
|
+
echo "Next steps:"
|
|
215
|
+
echo "1. Review the changes: git diff"
|
|
216
|
+
echo "2. Test workflows locally (if possible)"
|
|
217
|
+
echo "3. Commit changes: git commit -m 'feat: implement fork-friendly CI/CD'"
|
|
218
|
+
echo "4. Push and create PR"
|
|
219
|
+
echo ""
|
|
220
|
+
echo "Remember to update README.md with fork information!"
|
|
221
|
+
echo "═══════════════════════════════════════"
|
|
222
|
+
|
|
223
|
+
# Exit with appropriate code
|
|
224
|
+
if [ $UPDATED_FILES -gt 0 ]; then
|
|
225
|
+
exit 0
|
|
226
|
+
else
|
|
227
|
+
echo "No files were updated - workflows may already be fork-friendly"
|
|
228
|
+
exit 1
|
|
229
|
+
fi
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "bmad-method",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.42.1",
|
|
5
5
|
"description": "Breakthrough Method of Agile AI-driven Development",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"agile",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"build": "node tools/cli.js build",
|
|
28
28
|
"build:agents": "node tools/cli.js build --agents-only",
|
|
29
29
|
"build:teams": "node tools/cli.js build --teams-only",
|
|
30
|
+
"fix": "npm run format && npm run lint:fix",
|
|
30
31
|
"flatten": "node tools/flattener/main.js",
|
|
31
32
|
"format": "prettier --write \"**/*.{js,cjs,mjs,json,md,yaml}\"",
|
|
32
33
|
"format:check": "prettier --check \"**/*.{js,cjs,mjs,json,md,yaml}\"",
|
|
@@ -34,12 +35,14 @@
|
|
|
34
35
|
"lint": "eslint . --ext .js,.cjs,.mjs,.yaml --max-warnings=0",
|
|
35
36
|
"lint:fix": "eslint . --ext .js,.cjs,.mjs,.yaml --fix",
|
|
36
37
|
"list:agents": "node tools/cli.js list:agents",
|
|
38
|
+
"pre-release": "npm run validate && npm run format:check && npm run lint",
|
|
37
39
|
"prepare": "husky",
|
|
38
40
|
"preview:release": "node tools/preview-release-notes.js",
|
|
39
41
|
"release:major": "gh workflow run \"Manual Release\" -f version_bump=major",
|
|
40
42
|
"release:minor": "gh workflow run \"Manual Release\" -f version_bump=minor",
|
|
41
43
|
"release:patch": "gh workflow run \"Manual Release\" -f version_bump=patch",
|
|
42
44
|
"release:watch": "gh run watch",
|
|
45
|
+
"setup:hooks": "chmod +x tools/setup-hooks.sh && ./tools/setup-hooks.sh",
|
|
43
46
|
"validate": "node tools/cli.js validate",
|
|
44
47
|
"version:all": "node tools/bump-all-versions.js",
|
|
45
48
|
"version:all:major": "node tools/bump-all-versions.js major",
|
|
@@ -69,31 +72,33 @@
|
|
|
69
72
|
]
|
|
70
73
|
},
|
|
71
74
|
"dependencies": {
|
|
72
|
-
"@kayvan/markdown-tree-parser": "^1.
|
|
73
|
-
"bmad-method": "^4.30.3",
|
|
75
|
+
"@kayvan/markdown-tree-parser": "^1.6.1",
|
|
74
76
|
"chalk": "^4.1.2",
|
|
75
77
|
"commander": "^14.0.0",
|
|
76
|
-
"fs-extra": "^11.3.
|
|
78
|
+
"fs-extra": "^11.3.1",
|
|
77
79
|
"glob": "^11.0.3",
|
|
78
80
|
"ignore": "^7.0.5",
|
|
79
81
|
"inquirer": "^8.2.6",
|
|
80
82
|
"js-yaml": "^4.1.0",
|
|
81
83
|
"ora": "^5.4.1",
|
|
82
|
-
"semver": "^7.
|
|
84
|
+
"semver": "^7.7.2"
|
|
83
85
|
},
|
|
84
86
|
"devDependencies": {
|
|
85
|
-
"@eslint/js": "^9.
|
|
86
|
-
"
|
|
87
|
+
"@eslint/js": "^9.34.0",
|
|
88
|
+
"@semantic-release/changelog": "6.0.3",
|
|
89
|
+
"@semantic-release/git": "^10.0.1",
|
|
90
|
+
"eslint": "^9.34.0",
|
|
87
91
|
"eslint-config-prettier": "^10.1.8",
|
|
88
92
|
"eslint-plugin-n": "^17.21.3",
|
|
89
93
|
"eslint-plugin-unicorn": "^60.0.0",
|
|
90
94
|
"eslint-plugin-yml": "^1.18.0",
|
|
91
95
|
"husky": "^9.1.7",
|
|
92
|
-
"jest": "^30.0.
|
|
93
|
-
"lint-staged": "^16.1.
|
|
94
|
-
"prettier": "^3.
|
|
96
|
+
"jest": "^30.0.5",
|
|
97
|
+
"lint-staged": "^16.1.5",
|
|
98
|
+
"prettier": "^3.6.2",
|
|
95
99
|
"prettier-plugin-packagejson": "^2.5.19",
|
|
96
|
-
"
|
|
100
|
+
"semantic-release": "24.2.7",
|
|
101
|
+
"yaml-eslint-parser": "^1.3.0",
|
|
97
102
|
"yaml-lint": "^1.7.0"
|
|
98
103
|
},
|
|
99
104
|
"engines": {
|
package/release_notes.md
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
## 🚀 What's New in v4.
|
|
1
|
+
## 🚀 What's New in v4.42.1
|
|
2
|
+
|
|
3
|
+
### ✨ New Features
|
|
4
|
+
- feat: implement fork-friendly CI/CD with opt-in mechanism (#476)
|
|
5
|
+
- feat(installer): add Codex CLI + Codex Web modes, generate AGENTS.md, inject npm scripts, and docs (#529)
|
|
6
|
+
- feat: add PR validation workflow and contribution checks
|
|
2
7
|
|
|
3
8
|
### 🐛 Bug Fixes
|
|
4
9
|
- fix: update installer version display to show 4.39.0
|
|
@@ -6,12 +11,18 @@
|
|
|
6
11
|
- fix: previous merge set wrong default install location
|
|
7
12
|
- fix: documentation and trademark updates
|
|
8
13
|
- fix: remove incorrect else branch causing flatten command regression (#452)
|
|
14
|
+
- fix: correct dependency path format in bmad-master agent (#495)
|
|
9
15
|
|
|
10
16
|
### 📦 Other Changes
|
|
11
17
|
- patch: move script to tools folder
|
|
18
|
+
- typo in README.md (#515)
|
|
19
|
+
- Update dev.md (#491)
|
|
20
|
+
- test: trigger PR validation (#533)
|
|
12
21
|
|
|
13
22
|
### 🔧 Maintenance
|
|
14
23
|
- chore: bump to 4.39.1 to fix installer version display
|
|
24
|
+
- chore: update project dependencies and development tooling (#508)
|
|
25
|
+
- chore: bump version to 4.42.0 for release
|
|
15
26
|
|
|
16
27
|
|
|
17
28
|
## 📦 Installation
|
|
@@ -20,4 +31,4 @@
|
|
|
20
31
|
npx bmad-method install
|
|
21
32
|
```
|
|
22
33
|
|
|
23
|
-
**Full Changelog**: https://github.com/bmadcode/BMAD-METHOD/compare/v4.39.0...v4.
|
|
34
|
+
**Full Changelog**: https://github.com/bmadcode/BMAD-METHOD/compare/v4.39.0...v4.42.1
|
package/test.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Test
|
|
@@ -49,7 +49,7 @@ program
|
|
|
49
49
|
.option('-d, --directory <path>', 'Installation directory')
|
|
50
50
|
.option(
|
|
51
51
|
'-i, --ide <ide...>',
|
|
52
|
-
'Configure for specific IDE(s) - can specify multiple (cursor, claude-code, windsurf, trae, roo, kilo, cline, gemini, qwen-code, github-copilot, other)',
|
|
52
|
+
'Configure for specific IDE(s) - can specify multiple (cursor, claude-code, windsurf, trae, roo, kilo, cline, gemini, qwen-code, github-copilot, codex, codex-web, other)',
|
|
53
53
|
)
|
|
54
54
|
.option(
|
|
55
55
|
'-e, --expansion-packs <packs...>',
|
|
@@ -121,3 +121,25 @@ ide-configurations:
|
|
|
121
121
|
# 2. It concatenates all agent files into a single QWEN.md file.
|
|
122
122
|
# 3. Simply mention the agent in your prompt (e.g., "As *dev, ...").
|
|
123
123
|
# 4. The Qwen Code CLI will automatically have the context for that agent.
|
|
124
|
+
|
|
125
|
+
codex:
|
|
126
|
+
name: Codex CLI
|
|
127
|
+
format: project-memory
|
|
128
|
+
file: AGENTS.md
|
|
129
|
+
instructions: |
|
|
130
|
+
# To use BMAD agents with Codex CLI:
|
|
131
|
+
# 1. The installer updates/creates AGENTS.md at your project root with BMAD agents and tasks.
|
|
132
|
+
# 2. Run `codex` in your project. Codex automatically reads AGENTS.md as project memory.
|
|
133
|
+
# 3. Mention agents in your prompt (e.g., "As dev, please implement ...") or reference tasks.
|
|
134
|
+
# 4. You can further customize global Codex behavior via ~/.codex/config.toml.
|
|
135
|
+
|
|
136
|
+
codex-web:
|
|
137
|
+
name: Codex Web Enabled
|
|
138
|
+
format: project-memory
|
|
139
|
+
file: AGENTS.md
|
|
140
|
+
instructions: |
|
|
141
|
+
# To enable BMAD agents for Codex Web (cloud):
|
|
142
|
+
# 1. The installer updates/creates AGENTS.md and ensures `.bmad-core` is NOT ignored by git.
|
|
143
|
+
# 2. Commit `.bmad-core/` and `AGENTS.md` to your repository.
|
|
144
|
+
# 3. Open the repo in Codex Web and reference agents naturally (e.g., "As dev, ...").
|
|
145
|
+
# 4. Re-run this installer to refresh agent sections when the core changes.
|