ma-agents 3.3.0 → 3.4.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 (80) hide show
  1. package/.opencode/skills/.ma-agents.json +99 -99
  2. package/.roo/skills/.ma-agents.json +99 -99
  3. package/README.md +56 -15
  4. package/bin/cli.js +63 -8
  5. package/lib/agents.js +23 -0
  6. package/lib/bmad-cache/cache-manifest.json +1 -1
  7. package/lib/bmad-customizations/bmm-demerzel.customize.yaml +36 -0
  8. package/lib/bmad-customizations/demerzel.md +32 -0
  9. package/lib/bmad-extension/module-help.csv +13 -0
  10. package/lib/bmad-extension/skills/bmad-ma-agent-ml/.gitkeep +0 -0
  11. package/lib/bmad-extension/skills/bmad-ma-agent-ml/SKILL.md +59 -0
  12. package/lib/bmad-extension/skills/bmad-ma-agent-ml/bmad-skill-manifest.yaml +11 -0
  13. package/lib/bmad-extension/skills/generate-backlog/.gitkeep +0 -0
  14. package/lib/bmad-extension/skills/ml-advise/.gitkeep +0 -0
  15. package/lib/bmad-extension/skills/ml-advise/SKILL.md +76 -0
  16. package/lib/bmad-extension/skills/ml-advise/bmad-skill-manifest.yaml +3 -0
  17. package/lib/bmad-extension/skills/ml-advise/skill.json +7 -0
  18. package/lib/bmad-extension/skills/ml-analysis/.gitkeep +0 -0
  19. package/lib/bmad-extension/skills/ml-analysis/SKILL.md +60 -0
  20. package/lib/bmad-extension/skills/ml-analysis/bmad-skill-manifest.yaml +3 -0
  21. package/lib/bmad-extension/skills/ml-analysis/skill.json +7 -0
  22. package/lib/bmad-extension/skills/ml-architecture/.gitkeep +0 -0
  23. package/lib/bmad-extension/skills/ml-architecture/SKILL.md +55 -0
  24. package/lib/bmad-extension/skills/ml-architecture/bmad-skill-manifest.yaml +3 -0
  25. package/lib/bmad-extension/skills/ml-architecture/skill.json +7 -0
  26. package/lib/bmad-extension/skills/ml-detailed-design/.gitkeep +0 -0
  27. package/lib/bmad-extension/skills/ml-detailed-design/SKILL.md +67 -0
  28. package/lib/bmad-extension/skills/ml-detailed-design/bmad-skill-manifest.yaml +3 -0
  29. package/lib/bmad-extension/skills/ml-detailed-design/skill.json +7 -0
  30. package/lib/bmad-extension/skills/ml-eda/.gitkeep +0 -0
  31. package/lib/bmad-extension/skills/ml-eda/SKILL.md +56 -0
  32. package/lib/bmad-extension/skills/ml-eda/bmad-skill-manifest.yaml +3 -0
  33. package/lib/bmad-extension/skills/ml-eda/scripts/baseline_classifier.py +522 -0
  34. package/lib/bmad-extension/skills/ml-eda/scripts/class_weights_calculator.py +295 -0
  35. package/lib/bmad-extension/skills/ml-eda/scripts/clustering_explorer.py +383 -0
  36. package/lib/bmad-extension/skills/ml-eda/scripts/eda_analyzer.py +654 -0
  37. package/lib/bmad-extension/skills/ml-eda/skill.json +7 -0
  38. package/lib/bmad-extension/skills/ml-experiment/.gitkeep +0 -0
  39. package/lib/bmad-extension/skills/ml-experiment/SKILL.md +74 -0
  40. package/lib/bmad-extension/skills/ml-experiment/assets/advanced_trainer_configs.py +430 -0
  41. package/lib/bmad-extension/skills/ml-experiment/assets/quick_trainer_setup.py +233 -0
  42. package/lib/bmad-extension/skills/ml-experiment/assets/template_datamodule.py +219 -0
  43. package/lib/bmad-extension/skills/ml-experiment/assets/template_gnn_module.py +341 -0
  44. package/lib/bmad-extension/skills/ml-experiment/assets/template_lightning_module.py +158 -0
  45. package/lib/bmad-extension/skills/ml-experiment/bmad-skill-manifest.yaml +3 -0
  46. package/lib/bmad-extension/skills/ml-experiment/skill.json +7 -0
  47. package/lib/bmad-extension/skills/ml-hparam/.gitkeep +0 -0
  48. package/lib/bmad-extension/skills/ml-hparam/SKILL.md +81 -0
  49. package/lib/bmad-extension/skills/ml-hparam/bmad-skill-manifest.yaml +3 -0
  50. package/lib/bmad-extension/skills/ml-hparam/skill.json +7 -0
  51. package/lib/bmad-extension/skills/ml-ideation/.gitkeep +0 -0
  52. package/lib/bmad-extension/skills/ml-ideation/SKILL.md +50 -0
  53. package/lib/bmad-extension/skills/ml-ideation/bmad-skill-manifest.yaml +3 -0
  54. package/lib/bmad-extension/skills/ml-ideation/scripts/validate_ml_prd.py +287 -0
  55. package/lib/bmad-extension/skills/ml-ideation/skill.json +7 -0
  56. package/lib/bmad-extension/skills/ml-infra/.gitkeep +0 -0
  57. package/lib/bmad-extension/skills/ml-infra/SKILL.md +58 -0
  58. package/lib/bmad-extension/skills/ml-infra/bmad-skill-manifest.yaml +3 -0
  59. package/lib/bmad-extension/skills/ml-infra/skill.json +7 -0
  60. package/lib/bmad-extension/skills/ml-retrospective/.gitkeep +0 -0
  61. package/lib/bmad-extension/skills/ml-retrospective/SKILL.md +63 -0
  62. package/lib/bmad-extension/skills/ml-retrospective/bmad-skill-manifest.yaml +3 -0
  63. package/lib/bmad-extension/skills/ml-retrospective/skill.json +7 -0
  64. package/lib/bmad-extension/skills/ml-revision/.gitkeep +0 -0
  65. package/lib/bmad-extension/skills/ml-revision/SKILL.md +82 -0
  66. package/lib/bmad-extension/skills/ml-revision/bmad-skill-manifest.yaml +3 -0
  67. package/lib/bmad-extension/skills/ml-revision/skill.json +7 -0
  68. package/lib/bmad-extension/skills/ml-techspec/.gitkeep +0 -0
  69. package/lib/bmad-extension/skills/ml-techspec/SKILL.md +80 -0
  70. package/lib/bmad-extension/skills/ml-techspec/bmad-skill-manifest.yaml +3 -0
  71. package/lib/bmad-extension/skills/ml-techspec/skill.json +7 -0
  72. package/lib/bmad.js +85 -8
  73. package/lib/skill-authoring.js +1 -1
  74. package/package.json +2 -2
  75. package/test/agent-injection-strategy.test.js +4 -4
  76. package/test/bmad-version-bump.test.js +34 -34
  77. package/test/build-bmad-args.test.js +13 -6
  78. package/test/convert-agents-to-skills.test.js +11 -1
  79. package/test/extension-module-restructure.test.js +31 -7
  80. package/test/migration-validation.test.js +14 -11
@@ -8,233 +8,233 @@
8
8
  "skills": {
9
9
  "ai-audit-trail": {
10
10
  "version": "1.0.0",
11
- "installedAt": "2026-03-31T04:59:38.321Z",
12
- "updatedAt": "2026-03-31T04:59:38.321Z",
13
- "installerVersion": "3.2.0",
11
+ "installedAt": "2026-04-01T00:01:11.312Z",
12
+ "updatedAt": "2026-04-01T00:01:11.312Z",
13
+ "installerVersion": "3.4.0",
14
14
  "agentVersion": "1.0.0"
15
15
  },
16
16
  "auto-bug-detection": {
17
17
  "version": "1.0.0",
18
- "installedAt": "2026-03-31T04:59:38.538Z",
19
- "updatedAt": "2026-03-31T04:59:38.538Z",
20
- "installerVersion": "3.2.0",
18
+ "installedAt": "2026-04-01T00:01:11.590Z",
19
+ "updatedAt": "2026-04-01T00:01:11.590Z",
20
+ "installerVersion": "3.4.0",
21
21
  "agentVersion": "1.0.0"
22
22
  },
23
23
  "cmake-best-practices": {
24
24
  "version": "1.0.0",
25
- "installedAt": "2026-03-31T04:59:38.737Z",
26
- "updatedAt": "2026-03-31T04:59:38.737Z",
27
- "installerVersion": "3.2.0",
25
+ "installedAt": "2026-04-01T00:01:12.128Z",
26
+ "updatedAt": "2026-04-01T00:01:12.128Z",
27
+ "installerVersion": "3.4.0",
28
28
  "agentVersion": "1.0.0"
29
29
  },
30
30
  "code-documentation": {
31
31
  "version": "1.0.0",
32
- "installedAt": "2026-03-31T04:59:39.021Z",
33
- "updatedAt": "2026-03-31T04:59:39.021Z",
34
- "installerVersion": "3.2.0",
32
+ "installedAt": "2026-04-01T00:01:12.920Z",
33
+ "updatedAt": "2026-04-01T00:01:12.920Z",
34
+ "installerVersion": "3.4.0",
35
35
  "agentVersion": "1.0.0"
36
36
  },
37
37
  "code-review": {
38
38
  "version": "1.0.0",
39
- "installedAt": "2026-03-31T04:59:39.389Z",
40
- "updatedAt": "2026-03-31T04:59:39.389Z",
41
- "installerVersion": "3.2.0",
39
+ "installedAt": "2026-04-01T00:01:13.463Z",
40
+ "updatedAt": "2026-04-01T00:01:13.463Z",
41
+ "installerVersion": "3.4.0",
42
42
  "agentVersion": "1.0.0"
43
43
  },
44
44
  "commit-message": {
45
45
  "version": "1.0.0",
46
- "installedAt": "2026-03-31T04:59:39.758Z",
47
- "updatedAt": "2026-03-31T04:59:39.758Z",
48
- "installerVersion": "3.2.0",
46
+ "installedAt": "2026-04-01T00:01:14.003Z",
47
+ "updatedAt": "2026-04-01T00:01:14.003Z",
48
+ "installerVersion": "3.4.0",
49
49
  "agentVersion": "1.0.0"
50
50
  },
51
51
  "cpp-best-practices": {
52
52
  "version": "1.0.0",
53
- "installedAt": "2026-03-31T04:59:40.200Z",
54
- "updatedAt": "2026-03-31T04:59:40.200Z",
55
- "installerVersion": "3.2.0",
53
+ "installedAt": "2026-04-01T00:01:14.423Z",
54
+ "updatedAt": "2026-04-01T00:01:14.423Z",
55
+ "installerVersion": "3.4.0",
56
56
  "agentVersion": "1.0.0"
57
57
  },
58
58
  "cpp-concurrency-safety": {
59
59
  "version": "1.0.0",
60
- "installedAt": "2026-03-31T04:59:40.582Z",
61
- "updatedAt": "2026-03-31T04:59:40.582Z",
62
- "installerVersion": "3.2.0",
60
+ "installedAt": "2026-04-01T00:01:14.811Z",
61
+ "updatedAt": "2026-04-01T00:01:14.811Z",
62
+ "installerVersion": "3.4.0",
63
63
  "agentVersion": "1.0.0"
64
64
  },
65
65
  "cpp-const-correctness": {
66
66
  "version": "1.0.0",
67
- "installedAt": "2026-03-31T04:59:41.383Z",
68
- "updatedAt": "2026-03-31T04:59:41.383Z",
69
- "installerVersion": "3.2.0",
67
+ "installedAt": "2026-04-01T00:01:15.441Z",
68
+ "updatedAt": "2026-04-01T00:01:15.441Z",
69
+ "installerVersion": "3.4.0",
70
70
  "agentVersion": "1.0.0"
71
71
  },
72
72
  "cpp-memory-handling": {
73
73
  "version": "1.0.0",
74
- "installedAt": "2026-03-31T04:59:41.992Z",
75
- "updatedAt": "2026-03-31T04:59:41.992Z",
76
- "installerVersion": "3.2.0",
74
+ "installedAt": "2026-04-01T00:01:15.865Z",
75
+ "updatedAt": "2026-04-01T00:01:15.865Z",
76
+ "installerVersion": "3.4.0",
77
77
  "agentVersion": "1.0.0"
78
78
  },
79
79
  "cpp-modern-composition": {
80
80
  "version": "1.0.0",
81
- "installedAt": "2026-03-31T04:59:42.546Z",
82
- "updatedAt": "2026-03-31T04:59:42.546Z",
83
- "installerVersion": "3.2.0",
81
+ "installedAt": "2026-04-01T00:01:16.357Z",
82
+ "updatedAt": "2026-04-01T00:01:16.357Z",
83
+ "installerVersion": "3.4.0",
84
84
  "agentVersion": "1.0.0"
85
85
  },
86
86
  "cpp-robust-interfaces": {
87
87
  "version": "1.0.0",
88
- "installedAt": "2026-03-31T04:59:42.947Z",
89
- "updatedAt": "2026-03-31T04:59:42.947Z",
90
- "installerVersion": "3.2.0",
88
+ "installedAt": "2026-04-01T00:01:16.727Z",
89
+ "updatedAt": "2026-04-01T00:01:16.727Z",
90
+ "installerVersion": "3.4.0",
91
91
  "agentVersion": "1.0.0"
92
92
  },
93
93
  "create-hardened-docker-skill": {
94
94
  "version": "1.0.0",
95
- "installedAt": "2026-03-31T04:59:43.655Z",
96
- "updatedAt": "2026-03-31T04:59:43.655Z",
97
- "installerVersion": "3.2.0",
95
+ "installedAt": "2026-04-01T00:01:17.395Z",
96
+ "updatedAt": "2026-04-01T00:01:17.395Z",
97
+ "installerVersion": "3.4.0",
98
98
  "agentVersion": "1.0.0"
99
99
  },
100
100
  "csharp-best-practices": {
101
101
  "version": "1.0.0",
102
- "installedAt": "2026-03-31T04:59:44.871Z",
103
- "updatedAt": "2026-03-31T04:59:44.871Z",
104
- "installerVersion": "3.2.0",
102
+ "installedAt": "2026-04-01T00:01:17.797Z",
103
+ "updatedAt": "2026-04-01T00:01:17.797Z",
104
+ "installerVersion": "3.4.0",
105
105
  "agentVersion": "1.0.0"
106
106
  },
107
107
  "docker-hardening-verification": {
108
108
  "version": "1.0.0",
109
- "installedAt": "2026-03-31T04:59:45.468Z",
110
- "updatedAt": "2026-03-31T04:59:45.468Z",
111
- "installerVersion": "3.2.0",
109
+ "installedAt": "2026-04-01T00:01:18.332Z",
110
+ "updatedAt": "2026-04-01T00:01:18.332Z",
111
+ "installerVersion": "3.4.0",
112
112
  "agentVersion": "1.0.0"
113
113
  },
114
114
  "docker-image-signing": {
115
115
  "version": "1.0.0",
116
- "installedAt": "2026-03-31T04:59:46.686Z",
117
- "updatedAt": "2026-03-31T04:59:46.686Z",
118
- "installerVersion": "3.2.0",
116
+ "installedAt": "2026-04-01T00:01:18.647Z",
117
+ "updatedAt": "2026-04-01T00:01:18.647Z",
118
+ "installerVersion": "3.4.0",
119
119
  "agentVersion": "1.0.0"
120
120
  },
121
121
  "document-revision-history": {
122
122
  "version": "1.0.0",
123
- "installedAt": "2026-03-31T04:59:47.392Z",
124
- "updatedAt": "2026-03-31T04:59:47.392Z",
125
- "installerVersion": "3.2.0",
123
+ "installedAt": "2026-04-01T00:01:19.047Z",
124
+ "updatedAt": "2026-04-01T00:01:19.047Z",
125
+ "installerVersion": "3.4.0",
126
126
  "agentVersion": "1.0.0"
127
127
  },
128
128
  "git-workflow-skill": {
129
129
  "version": "2.1.0",
130
- "installedAt": "2026-03-31T04:59:50.392Z",
131
- "updatedAt": "2026-03-31T04:59:50.392Z",
132
- "installerVersion": "3.2.0",
130
+ "installedAt": "2026-04-01T00:01:19.709Z",
131
+ "updatedAt": "2026-04-01T00:01:19.709Z",
132
+ "installerVersion": "3.4.0",
133
133
  "agentVersion": "1.0.0"
134
134
  },
135
135
  "js-ts-dependency-mgmt": {
136
136
  "version": "1.0.0",
137
- "installedAt": "2026-03-31T04:59:50.853Z",
138
- "updatedAt": "2026-03-31T04:59:50.853Z",
139
- "installerVersion": "3.2.0",
137
+ "installedAt": "2026-04-01T00:01:20.361Z",
138
+ "updatedAt": "2026-04-01T00:01:20.361Z",
139
+ "installerVersion": "3.4.0",
140
140
  "agentVersion": "1.0.0"
141
141
  },
142
142
  "js-ts-security-skill": {
143
143
  "version": "1.0.0",
144
- "installedAt": "2026-03-31T04:59:51.253Z",
145
- "updatedAt": "2026-03-31T04:59:51.253Z",
146
- "installerVersion": "3.2.0",
144
+ "installedAt": "2026-04-01T00:01:20.763Z",
145
+ "updatedAt": "2026-04-01T00:01:20.763Z",
146
+ "installerVersion": "3.4.0",
147
147
  "agentVersion": "1.0.0"
148
148
  },
149
149
  "logging-best-practices": {
150
150
  "version": "1.0.0",
151
- "installedAt": "2026-03-31T04:59:51.673Z",
152
- "updatedAt": "2026-03-31T04:59:51.673Z",
153
- "installerVersion": "3.2.0",
151
+ "installedAt": "2026-04-01T00:01:21.709Z",
152
+ "updatedAt": "2026-04-01T00:01:21.709Z",
153
+ "installerVersion": "3.4.0",
154
154
  "agentVersion": "1.0.0"
155
155
  },
156
156
  "open-presentation": {
157
157
  "version": "1.0.0",
158
- "installedAt": "2026-03-31T04:59:52.139Z",
159
- "updatedAt": "2026-03-31T04:59:52.139Z",
160
- "installerVersion": "3.2.0",
158
+ "installedAt": "2026-04-01T00:01:22.109Z",
159
+ "updatedAt": "2026-04-01T00:01:22.109Z",
160
+ "installerVersion": "3.4.0",
161
161
  "agentVersion": "1.0.0"
162
162
  },
163
163
  "opentelemetry-best-practices": {
164
164
  "version": "1.0.0",
165
- "installedAt": "2026-03-31T04:59:52.669Z",
166
- "updatedAt": "2026-03-31T04:59:52.669Z",
167
- "installerVersion": "3.2.0",
165
+ "installedAt": "2026-04-01T00:01:22.865Z",
166
+ "updatedAt": "2026-04-01T00:01:22.865Z",
167
+ "installerVersion": "3.4.0",
168
168
  "agentVersion": "1.0.0"
169
169
  },
170
170
  "python-best-practices": {
171
171
  "version": "1.0.0",
172
- "installedAt": "2026-03-31T04:59:53.080Z",
173
- "updatedAt": "2026-03-31T04:59:53.080Z",
174
- "installerVersion": "3.2.0",
172
+ "installedAt": "2026-04-01T00:01:23.509Z",
173
+ "updatedAt": "2026-04-01T00:01:23.509Z",
174
+ "installerVersion": "3.4.0",
175
175
  "agentVersion": "1.0.0"
176
176
  },
177
177
  "python-dependency-mgmt": {
178
178
  "version": "1.0.0",
179
- "installedAt": "2026-03-31T04:59:53.448Z",
180
- "updatedAt": "2026-03-31T04:59:53.448Z",
181
- "installerVersion": "3.2.0",
179
+ "installedAt": "2026-04-01T00:01:24.237Z",
180
+ "updatedAt": "2026-04-01T00:01:24.237Z",
181
+ "installerVersion": "3.4.0",
182
182
  "agentVersion": "1.0.0"
183
183
  },
184
184
  "python-security-skill": {
185
185
  "version": "1.0.0",
186
- "installedAt": "2026-03-31T04:59:53.982Z",
187
- "updatedAt": "2026-03-31T04:59:53.982Z",
188
- "installerVersion": "3.2.0",
186
+ "installedAt": "2026-04-01T00:01:24.673Z",
187
+ "updatedAt": "2026-04-01T00:01:24.673Z",
188
+ "installerVersion": "3.4.0",
189
189
  "agentVersion": "1.0.0"
190
190
  },
191
191
  "self-signed-cert": {
192
192
  "version": "1.0.0",
193
- "installedAt": "2026-03-31T04:59:54.434Z",
194
- "updatedAt": "2026-03-31T04:59:54.434Z",
195
- "installerVersion": "3.2.0",
193
+ "installedAt": "2026-04-01T00:01:25.122Z",
194
+ "updatedAt": "2026-04-01T00:01:25.122Z",
195
+ "installerVersion": "3.4.0",
196
196
  "agentVersion": "1.0.0"
197
197
  },
198
198
  "skill-creator": {
199
199
  "version": "1.0.0",
200
- "installedAt": "2026-03-31T04:59:55.062Z",
201
- "updatedAt": "2026-03-31T04:59:55.062Z",
202
- "installerVersion": "3.2.0",
200
+ "installedAt": "2026-04-01T00:01:26.240Z",
201
+ "updatedAt": "2026-04-01T00:01:26.240Z",
202
+ "installerVersion": "3.4.0",
203
203
  "agentVersion": "1.0.0"
204
204
  },
205
205
  "story-status-lookup": {
206
206
  "version": "1.0.0",
207
- "installedAt": "2026-03-31T04:59:55.976Z",
208
- "updatedAt": "2026-03-31T04:59:55.976Z",
209
- "installerVersion": "3.2.0",
207
+ "installedAt": "2026-04-01T00:01:26.744Z",
208
+ "updatedAt": "2026-04-01T00:01:26.744Z",
209
+ "installerVersion": "3.4.0",
210
210
  "agentVersion": "1.0.0"
211
211
  },
212
212
  "test-accompanied-development": {
213
213
  "version": "1.0.0",
214
- "installedAt": "2026-03-31T04:59:56.427Z",
215
- "updatedAt": "2026-03-31T04:59:56.427Z",
216
- "installerVersion": "3.2.0",
214
+ "installedAt": "2026-04-01T00:01:27.143Z",
215
+ "updatedAt": "2026-04-01T00:01:27.143Z",
216
+ "installerVersion": "3.4.0",
217
217
  "agentVersion": "1.0.0"
218
218
  },
219
219
  "test-generator": {
220
220
  "version": "1.0.0",
221
- "installedAt": "2026-03-31T04:59:56.704Z",
222
- "updatedAt": "2026-03-31T04:59:56.704Z",
223
- "installerVersion": "3.2.0",
221
+ "installedAt": "2026-04-01T00:01:27.682Z",
222
+ "updatedAt": "2026-04-01T00:01:27.682Z",
223
+ "installerVersion": "3.4.0",
224
224
  "agentVersion": "1.0.0"
225
225
  },
226
226
  "vercel-react-best-practices": {
227
227
  "version": "1.0.0",
228
- "installedAt": "2026-03-31T04:59:57.025Z",
229
- "updatedAt": "2026-03-31T04:59:57.025Z",
230
- "installerVersion": "3.2.0",
228
+ "installedAt": "2026-04-01T00:01:28.371Z",
229
+ "updatedAt": "2026-04-01T00:01:28.371Z",
230
+ "installerVersion": "3.4.0",
231
231
  "agentVersion": "1.0.0"
232
232
  },
233
233
  "verify-hardened-docker-skill": {
234
234
  "version": "1.0.0",
235
- "installedAt": "2026-03-31T04:59:57.550Z",
236
- "updatedAt": "2026-03-31T04:59:57.550Z",
237
- "installerVersion": "3.2.0",
235
+ "installedAt": "2026-04-01T00:01:28.928Z",
236
+ "updatedAt": "2026-04-01T00:01:28.928Z",
237
+ "installerVersion": "3.4.0",
238
238
  "agentVersion": "1.0.0"
239
239
  }
240
240
  }
package/README.md CHANGED
@@ -105,10 +105,12 @@ The file is version-controlled as part of `_bmad-output/` project knowledge. Com
105
105
 
106
106
  ---
107
107
 
108
- ## Supported Agents
108
+ ## Supported Coding Tools
109
109
 
110
- | Agent | Project Path | Template | Instruction File |
111
- |-------|-------------|----------|------------------|
110
+ Skills can be installed into any of these AI coding agents:
111
+
112
+ | Tool | Project Path | Template | Instruction File |
113
+ |------|-------------|----------|------------------|
112
114
  | Claude Code | `.claude/skills/` | `claude-code` | `.claude/CLAUDE.md` |
113
115
  | Google Gemini | `.gemini/skills/` | `generic` | `.gemini/gemini.md` |
114
116
  | GitHub Copilot | `.github/copilot/skills/` | `generic` | `.github/copilot/copilot.md` |
@@ -116,13 +118,26 @@ The file is version-controlled as part of `_bmad-output/` project knowledge. Com
116
118
  | Kilocode | `.kilocode/skills/` | `generic` | `.kilocode/kilocode.md` |
117
119
  | Cline | `.cline/skills/` | `cline` | `.cline/clinerules.md` |
118
120
  | Roo Code | `.roo/skills/` | `generic` | `.roo/rules/00-ma-agents.md` |
119
- | SRE Agent (Alex) | `_bmad/skills/` | `generic` | `_bmad/bmm/agents/sre.md` |
120
- | DevOps Agent (Amit) | `_bmad/skills/` | `generic` | `_bmad/bmm/agents/devops.md` |
121
- | Cyber Analyst (Yael) | `_bmad/skills/` | `generic` | `_bmad/bmm/agents/cyber.md` |
122
- | Joseph (MIL-STD-498) | `_bmad/skills/` | `generic` | `_bmad/bmm/agents/mil498.md` |
123
121
  | Antigravity | `_bmad/skills/` | `generic` | `_bmad/bmm/agents/antigravity.md` |
122
+ | OpenCode | `.opencode/skills/` | `generic` | `opencode.json` |
123
+
124
+ ## Specialized BMAD Agents
125
+
126
+ These domain-expert agents are installed alongside BMAD-METHOD and provide guided workflows through their agent menus:
127
+
128
+ | Agent | Persona | Skills Path | Instruction File |
129
+ |-------|---------|-------------|------------------|
130
+ | SRE Agent | Alex | `_bmad/skills/sre/` | `_bmad/bmm/agents/sre.md` |
131
+ | DevOps Agent | Amit | `_bmad/skills/devops/` | `_bmad/bmm/agents/devops.md` |
132
+ | Cyber Analyst | Yael | `_bmad/skills/cyber/` | `_bmad/bmm/agents/cyber.md` |
133
+ | MIL-STD-498 Expert | Joseph | `_bmad/skills/mil498/` | `_bmad/bmm/agents/mil498.md` |
134
+ | ML Scientist | Demerzel | `_bmad/skills/demerzel/` | `_bmad/bmm/agents/demerzel.md` |
135
+
136
+ ## Available Skills
124
137
 
125
- ## Available Skills (34)
138
+ ### General-Purpose Skills (34)
139
+
140
+ These skills are installed into your coding tool of choice and provide reusable best-practice guidance:
126
141
 
127
142
  | Skill ID | Domain | Description |
128
143
  | :--- | :--- | :--- |
@@ -159,13 +174,33 @@ The file is version-controlled as part of `_bmad-output/` project knowledge. Com
159
174
  | `self-signed-cert` | Security | Automated Root CA and self-signed certificate generation |
160
175
  | `docker-image-signing` | Security | Automated cryptographic signing for Docker images |
161
176
  | `docker-hardening-verification` | Security | Audits images for least-privilege and OpenShift compatibility |
177
+
178
+ ### Agent Workflows (18)
179
+
180
+ These workflows are installed as part of the BMAD agent system and are invoked through the agent's menu (not installed individually):
181
+
182
+ | Workflow | Agent | Description |
183
+ | :--- | :--- | :--- |
184
+ | **Machine Learning (Demerzel)** | | |
185
+ | `ml-ideation` | ML Scientist | Frame ML research problem, produce Research Thesis and PRD |
186
+ | `ml-eda` | ML Scientist | Exploratory Data Analysis, establish baselines, produce EDA report |
187
+ | `ml-architecture` | ML Scientist | Model architecture, stack, and experiment tracking strategy |
188
+ | `ml-detailed-design` | ML Scientist | Implementation task breakdown (INF-* and EXP-* namespaces) |
189
+ | `ml-techspec` | ML Scientist | Lock experiment parameters and performance tiers before training |
190
+ | `ml-infra` | ML Scientist | Build ML infrastructure, manage dependencies, run smoke tests |
191
+ | `ml-experiment` | ML Scientist | Execute training experiments against locked TechSpec, log metrics |
192
+ | `ml-analysis` | ML Scientist | Evaluate experiment outcomes against TechSpec success tiers |
193
+ | `ml-hparam` | ML Scientist | Automated hyperparameter optimization (Optuna, W&B Sweeps, Ray Tune) |
194
+ | `ml-revision` | ML Scientist | Amend hypothesis and requirements based on experiment findings |
195
+ | `ml-advise` | ML Scientist | Search past experiments, surface findings and failure warnings |
196
+ | `ml-retrospective` | ML Scientist | Capture session learnings and update project context |
162
197
  | **Sprint Management** | | |
163
- | `add-sprint` | Agile | Create sprint entities with capacity, ISO dates, and structured YAML schema |
164
- | `generate-backlog` | Agile | Generate or refresh a flat prioritized backlog from epics and bug stories |
165
- | `add-to-sprint` | Agile | Assign backlog items to a sprint with capacity enforcement |
166
- | `remove-from-sprint` | Agile | Remove items from a sprint and return to unassigned backlog |
167
- | `cleanup-done` | Agile | Archive done items to `done/` and remove from sprint/backlog tracking |
168
- | `prioritize-backlog` | Agile | Reprioritize backlog using severity, value, dependencies, and type |
198
+ | `add-sprint` | Scrum Master | Create sprint entities with capacity, ISO dates, and structured YAML schema |
199
+ | `generate-backlog` | Scrum Master | Generate or refresh a flat prioritized backlog from epics and bug stories |
200
+ | `add-to-sprint` | Scrum Master | Assign backlog items to a sprint with capacity enforcement |
201
+ | `remove-from-sprint` | Scrum Master | Remove items from a sprint and return to unassigned backlog |
202
+ | `cleanup-done` | Scrum Master | Archive done items to `done/` and remove from sprint/backlog tracking |
203
+ | `prioritize-backlog` | Scrum Master | Reprioritize backlog using severity, value, dependencies, and type |
169
204
 
170
205
  ## Automated Skill Discovery
171
206
 
@@ -191,6 +226,7 @@ npx ma-agents # Launch interactive wizard
191
226
  npx ma-agents install # Interactive install wizard
192
227
  npx ma-agents install --yes # Non-interactive, use defaults (CI/CD)
193
228
  npx ma-agents install --yes --agent <id> # Non-interactive, target one agent
229
+ npx ma-agents install --log # Log all output to install_<datetime>.log
194
230
  npx ma-agents status # Show installed skills and paths
195
231
  npx ma-agents list # List all available skills
196
232
  npx ma-agents agents # List supported agents
@@ -207,7 +243,7 @@ Running `ma-agents` on a project where skills are already installed triggers the
207
243
  - Updates BMAD-METHOD personas and workflows to the latest versions if detected.
208
244
 
209
245
  ### BMAD-METHOD Integration
210
- `ma-agents` features first-class integration with [BMAD-METHOD](https://docs.bmad-method.org/) to provide advanced orchestration and specialized personas.
246
+ `ma-agents` bundles [BMAD-METHOD](https://docs.bmad-method.org/) **v6.2.2** to provide advanced orchestration and specialized personas.
211
247
 
212
248
  #### Core Features
213
249
  - **Auto-Detection**: Recognizes existing BMAD installations and prompts for silent updates.
@@ -246,6 +282,10 @@ npx ma-agents install --yes # fully offline BMAD install — no network neede
246
282
  - **Focus**: Technical standards compliance and military document generation.
247
283
  - **Capabilities**: Document Data Descriptions (DIDs), requirements traceability, and complex specification writing.
248
284
  - **Workflows**: SRS, SSS, and SSDD generation with strict structural validation.
285
+ 5. **Demerzel (ML Scientist)**:
286
+ - **Focus**: Hypothesis-driven machine learning lifecycle with scientific rigor.
287
+ - **Capabilities**: EDA, architecture design, locked TechSpec contracts, experiment execution, failure-cost analysis.
288
+ - **Workflows**: 12-stage ML lifecycle from ideation through retrospective, with mandatory review gates.
249
289
 
250
290
  #### Operational Workflows
251
291
  The integration includes a suite of specialized playbooks:
@@ -314,6 +354,7 @@ npx ma-agents install code-review claude-code --force
314
354
  | `--force` | Skip upgrade prompts, always overwrite existing installations. |
315
355
  | `--global` | Install to global/user-level paths instead of project-level. |
316
356
  | `--path <dir>` | Custom installation directory. |
357
+ | `--log` | Log all console output to `install_<datetime>.log` in the current directory. |
317
358
 
318
359
  ## Requirements
319
360
 
package/bin/cli.js CHANGED
@@ -13,6 +13,46 @@ const PKG = require('../package.json');
13
13
  const NAME = PKG.name;
14
14
  const VERSION = PKG.version;
15
15
 
16
+ /**
17
+ * Set up logging to tee all stdout/stderr output to a file.
18
+ * Returns a cleanup function to close the file descriptor.
19
+ *
20
+ * @param {string} logFilePath - Path to the log file
21
+ * @returns {Function} cleanup function
22
+ */
23
+ function setupLogging(logFilePath) {
24
+ const logFd = fs.openSync(logFilePath, 'w');
25
+ const header = `[${new Date().toISOString()}] ${NAME} v${VERSION} — log started\n`;
26
+ fs.writeSync(logFd, header);
27
+
28
+ const origStdoutWrite = process.stdout.write.bind(process.stdout);
29
+ const origStderrWrite = process.stderr.write.bind(process.stderr);
30
+
31
+ process.stdout.write = function (chunk, encoding, callback) {
32
+ const str = typeof chunk === 'string' ? chunk : chunk.toString();
33
+ try { fs.writeSync(logFd, str); } catch { /* ignore write errors */ }
34
+ return origStdoutWrite(chunk, encoding, callback);
35
+ };
36
+
37
+ process.stderr.write = function (chunk, encoding, callback) {
38
+ const str = typeof chunk === 'string' ? chunk : chunk.toString();
39
+ try { fs.writeSync(logFd, str); } catch { /* ignore write errors */ }
40
+ return origStderrWrite(chunk, encoding, callback);
41
+ };
42
+
43
+ // Store log fd globally so bmad.js can use pipe mode
44
+ process.env.MA_AGENTS_LOG_ACTIVE = '1';
45
+
46
+ return function cleanup() {
47
+ process.stdout.write = origStdoutWrite;
48
+ process.stderr.write = origStderrWrite;
49
+ const footer = `\n[${new Date().toISOString()}] log ended\n`;
50
+ try { fs.writeSync(logFd, footer); } catch { /* ignore */ }
51
+ try { fs.closeSync(logFd); } catch { /* ignore */ }
52
+ delete process.env.MA_AGENTS_LOG_ACTIVE;
53
+ };
54
+ }
55
+
16
56
  function showHelp() {
17
57
  console.log(`
18
58
  ${chalk.bold.cyan(NAME)} ${chalk.gray(`v${VERSION}`)}
@@ -40,6 +80,7 @@ ${chalk.bold('Install options:')}
40
80
  ${chalk.cyan('--force')} Skip upgrade prompts, always overwrite
41
81
  ${chalk.cyan('--yes')} Skip all prompts, use defaults (for CI/CD)
42
82
  ${chalk.cyan('--agent <name>')} Target a specific agent (skip agent selection)
83
+ ${chalk.cyan('--log')} Log all console output to install_<datetime>.log
43
84
 
44
85
  ${chalk.bold('Examples:')}
45
86
  npx ${NAME} install
@@ -830,11 +871,11 @@ async function installWizard(preselectedSkill, preselectedAgents, customPath, fo
830
871
  if (yesFlag) {
831
872
  console.log(chalk.cyan('\n Installing BMAD-METHOD...'));
832
873
  const bmadTools = selectedAgentIds.filter(id => bmadToolsFilter.includes(id));
833
- const success = await bmad.installBmad(['bmm', 'bmb'], bmadTools);
874
+ const success = await bmad.installBmad(['bmm'], bmadTools);
834
875
  if (success) {
835
876
  console.log(chalk.green(' BMAD-METHOD installed successfully!'));
836
877
  console.log(chalk.cyan(' Applying ma-agents customizations...'));
837
- await bmad.applyCustomizations(process.cwd(), ['bmm', 'bmb'], bmadTools, selectedAgentIds);
878
+ await bmad.applyCustomizations(process.cwd(), ['bmm'], bmadTools, selectedAgentIds);
838
879
  }
839
880
  } else {
840
881
  const { installBmad } = await prompts({
@@ -847,11 +888,11 @@ async function installWizard(preselectedSkill, preselectedAgents, customPath, fo
847
888
  if (installBmad) {
848
889
  console.log(chalk.cyan('\n Installing BMAD-METHOD...'));
849
890
  const bmadTools = selectedAgentIds.filter(id => bmadToolsFilter.includes(id));
850
- const success = await bmad.installBmad(['bmm', 'bmb'], bmadTools);
891
+ const success = await bmad.installBmad(['bmm'], bmadTools);
851
892
  if (success) {
852
893
  console.log(chalk.green(' BMAD-METHOD installed successfully!'));
853
894
  console.log(chalk.cyan(' Applying ma-agents customizations...'));
854
- await bmad.applyCustomizations(process.cwd(), ['bmm', 'bmb'], bmadTools, selectedAgentIds);
895
+ await bmad.applyCustomizations(process.cwd(), ['bmm'], bmadTools, selectedAgentIds);
855
896
  }
856
897
  }
857
898
  }
@@ -859,11 +900,11 @@ async function installWizard(preselectedSkill, preselectedAgents, customPath, fo
859
900
  if (yesFlag) {
860
901
  console.log(chalk.cyan('\n Updating BMAD-METHOD...'));
861
902
  const bmadTools = selectedAgentIds.filter(id => bmadToolsFilter.includes(id));
862
- const success = await bmad.updateBmad(['bmm', 'bmb'], bmadTools);
903
+ const success = await bmad.updateBmad(['bmm'], bmadTools);
863
904
  if (success) {
864
905
  console.log(chalk.green(' BMAD-METHOD updated successfully!'));
865
906
  console.log(chalk.cyan(' Re-applying ma-agents customizations...'));
866
- await bmad.applyCustomizations(process.cwd(), ['bmm', 'bmb'], bmadTools, selectedAgentIds);
907
+ await bmad.applyCustomizations(process.cwd(), ['bmm'], bmadTools, selectedAgentIds);
867
908
  }
868
909
  } else {
869
910
  const { updateBmad } = await prompts({
@@ -876,11 +917,11 @@ async function installWizard(preselectedSkill, preselectedAgents, customPath, fo
876
917
  if (updateBmad) {
877
918
  console.log(chalk.cyan('\n Updating BMAD-METHOD...'));
878
919
  const bmadTools = selectedAgentIds.filter(id => bmadToolsFilter.includes(id));
879
- const success = await bmad.updateBmad(['bmm', 'bmb'], bmadTools);
920
+ const success = await bmad.updateBmad(['bmm'], bmadTools);
880
921
  if (success) {
881
922
  console.log(chalk.green(' BMAD-METHOD updated successfully!'));
882
923
  console.log(chalk.cyan(' Re-applying ma-agents customizations...'));
883
- await bmad.applyCustomizations(process.cwd(), ['bmm', 'bmb'], bmadTools, selectedAgentIds);
924
+ await bmad.applyCustomizations(process.cwd(), ['bmm'], bmadTools, selectedAgentIds);
884
925
  }
885
926
  }
886
927
  }
@@ -1164,6 +1205,18 @@ async function interactiveMode() {
1164
1205
 
1165
1206
  async function main() {
1166
1207
  const args = process.argv.slice(2);
1208
+
1209
+ // Handle --log flag globally (before command routing)
1210
+ let cleanupLog = null;
1211
+ const logIdx = args.indexOf('--log');
1212
+ if (logIdx !== -1) {
1213
+ const ts = new Date().toISOString().replace(/[:.]/g, '-').replace('T', '_').replace('Z', '');
1214
+ const logFile = `install_${ts}.log`;
1215
+ cleanupLog = setupLogging(logFile);
1216
+ console.log(chalk.gray(` Logging to ${logFile}`));
1217
+ args.splice(logIdx, 1);
1218
+ }
1219
+
1167
1220
  const command = args[0];
1168
1221
 
1169
1222
  switch (command) {
@@ -1223,6 +1276,8 @@ async function main() {
1223
1276
  await interactiveMode();
1224
1277
  break;
1225
1278
  }
1279
+
1280
+ if (cleanupLog) cleanupLog();
1226
1281
  }
1227
1282
 
1228
1283
  if (require.main === module) {
package/lib/agents.js CHANGED
@@ -318,6 +318,29 @@ const agents = [
318
318
  template: 'generic',
319
319
  instructionFiles: ['_bmad/bmm/agents/mil498.md'],
320
320
  injectionStrategy: { position: 'top', skipPatterns: ['---'] }
321
+ },
322
+ {
323
+ id: 'bmm-demerzel',
324
+ name: 'ML Scientist (Demerzel)',
325
+ version: '1.0.0',
326
+ category: 'bmad',
327
+ description: 'Machine Learning Lifecycle Agent (Demerzel)',
328
+ skillsDir: '_bmad/skills/demerzel',
329
+ getProjectPath: () => path.join(process.cwd(), '_bmad', 'skills', 'demerzel'),
330
+ getGlobalPath: () => {
331
+ const platform = os.platform();
332
+ if (platform === 'win32') {
333
+ return path.join(os.homedir(), 'AppData', 'Roaming', 'Demerzel', 'skills');
334
+ } else if (platform === 'darwin') {
335
+ return path.join(os.homedir(), 'Library', 'Application Support', 'Demerzel', 'skills');
336
+ } else {
337
+ return path.join(os.homedir(), '.config', 'demerzel', 'skills');
338
+ }
339
+ },
340
+ fileExtension: '.md',
341
+ template: 'generic',
342
+ instructionFiles: ['_bmad/bmm/agents/demerzel.md'],
343
+ injectionStrategy: { position: 'top', skipPatterns: ['---'] }
321
344
  }
322
345
  ];
323
346
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "generated": "2026-03-28T12:59:06.172Z",
3
- "bmadMethodVersion": "6.2.1",
3
+ "bmadMethodVersion": "6.2.2",
4
4
  "modules": {
5
5
  "bmb": {
6
6
  "url": "https://github.com/bmad-code-org/bmad-builder",