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.
- package/.opencode/skills/.ma-agents.json +99 -99
- package/.roo/skills/.ma-agents.json +99 -99
- package/README.md +56 -15
- package/bin/cli.js +63 -8
- package/lib/agents.js +23 -0
- package/lib/bmad-cache/cache-manifest.json +1 -1
- package/lib/bmad-customizations/bmm-demerzel.customize.yaml +36 -0
- package/lib/bmad-customizations/demerzel.md +32 -0
- package/lib/bmad-extension/module-help.csv +13 -0
- package/lib/bmad-extension/skills/bmad-ma-agent-ml/.gitkeep +0 -0
- package/lib/bmad-extension/skills/bmad-ma-agent-ml/SKILL.md +59 -0
- package/lib/bmad-extension/skills/bmad-ma-agent-ml/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-extension/skills/generate-backlog/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-advise/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-advise/SKILL.md +76 -0
- package/lib/bmad-extension/skills/ml-advise/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/ml-advise/skill.json +7 -0
- package/lib/bmad-extension/skills/ml-analysis/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-analysis/SKILL.md +60 -0
- package/lib/bmad-extension/skills/ml-analysis/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/ml-analysis/skill.json +7 -0
- package/lib/bmad-extension/skills/ml-architecture/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-architecture/SKILL.md +55 -0
- package/lib/bmad-extension/skills/ml-architecture/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/ml-architecture/skill.json +7 -0
- package/lib/bmad-extension/skills/ml-detailed-design/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-detailed-design/SKILL.md +67 -0
- package/lib/bmad-extension/skills/ml-detailed-design/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/ml-detailed-design/skill.json +7 -0
- package/lib/bmad-extension/skills/ml-eda/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-eda/SKILL.md +56 -0
- package/lib/bmad-extension/skills/ml-eda/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/ml-eda/scripts/baseline_classifier.py +522 -0
- package/lib/bmad-extension/skills/ml-eda/scripts/class_weights_calculator.py +295 -0
- package/lib/bmad-extension/skills/ml-eda/scripts/clustering_explorer.py +383 -0
- package/lib/bmad-extension/skills/ml-eda/scripts/eda_analyzer.py +654 -0
- package/lib/bmad-extension/skills/ml-eda/skill.json +7 -0
- package/lib/bmad-extension/skills/ml-experiment/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-experiment/SKILL.md +74 -0
- package/lib/bmad-extension/skills/ml-experiment/assets/advanced_trainer_configs.py +430 -0
- package/lib/bmad-extension/skills/ml-experiment/assets/quick_trainer_setup.py +233 -0
- package/lib/bmad-extension/skills/ml-experiment/assets/template_datamodule.py +219 -0
- package/lib/bmad-extension/skills/ml-experiment/assets/template_gnn_module.py +341 -0
- package/lib/bmad-extension/skills/ml-experiment/assets/template_lightning_module.py +158 -0
- package/lib/bmad-extension/skills/ml-experiment/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/ml-experiment/skill.json +7 -0
- package/lib/bmad-extension/skills/ml-hparam/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-hparam/SKILL.md +81 -0
- package/lib/bmad-extension/skills/ml-hparam/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/ml-hparam/skill.json +7 -0
- package/lib/bmad-extension/skills/ml-ideation/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-ideation/SKILL.md +50 -0
- package/lib/bmad-extension/skills/ml-ideation/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/ml-ideation/scripts/validate_ml_prd.py +287 -0
- package/lib/bmad-extension/skills/ml-ideation/skill.json +7 -0
- package/lib/bmad-extension/skills/ml-infra/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-infra/SKILL.md +58 -0
- package/lib/bmad-extension/skills/ml-infra/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/ml-infra/skill.json +7 -0
- package/lib/bmad-extension/skills/ml-retrospective/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-retrospective/SKILL.md +63 -0
- package/lib/bmad-extension/skills/ml-retrospective/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/ml-retrospective/skill.json +7 -0
- package/lib/bmad-extension/skills/ml-revision/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-revision/SKILL.md +82 -0
- package/lib/bmad-extension/skills/ml-revision/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/ml-revision/skill.json +7 -0
- package/lib/bmad-extension/skills/ml-techspec/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ml-techspec/SKILL.md +80 -0
- package/lib/bmad-extension/skills/ml-techspec/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/ml-techspec/skill.json +7 -0
- package/lib/bmad.js +85 -8
- package/lib/skill-authoring.js +1 -1
- package/package.json +2 -2
- package/test/agent-injection-strategy.test.js +4 -4
- package/test/bmad-version-bump.test.js +34 -34
- package/test/build-bmad-args.test.js +13 -6
- package/test/convert-agents-to-skills.test.js +11 -1
- package/test/extension-module-restructure.test.js +31 -7
- 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-
|
|
12
|
-
"updatedAt": "2026-
|
|
13
|
-
"installerVersion": "3.
|
|
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-
|
|
19
|
-
"updatedAt": "2026-
|
|
20
|
-
"installerVersion": "3.
|
|
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-
|
|
26
|
-
"updatedAt": "2026-
|
|
27
|
-
"installerVersion": "3.
|
|
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-
|
|
33
|
-
"updatedAt": "2026-
|
|
34
|
-
"installerVersion": "3.
|
|
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-
|
|
40
|
-
"updatedAt": "2026-
|
|
41
|
-
"installerVersion": "3.
|
|
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-
|
|
47
|
-
"updatedAt": "2026-
|
|
48
|
-
"installerVersion": "3.
|
|
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-
|
|
54
|
-
"updatedAt": "2026-
|
|
55
|
-
"installerVersion": "3.
|
|
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-
|
|
61
|
-
"updatedAt": "2026-
|
|
62
|
-
"installerVersion": "3.
|
|
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-
|
|
68
|
-
"updatedAt": "2026-
|
|
69
|
-
"installerVersion": "3.
|
|
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-
|
|
75
|
-
"updatedAt": "2026-
|
|
76
|
-
"installerVersion": "3.
|
|
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-
|
|
82
|
-
"updatedAt": "2026-
|
|
83
|
-
"installerVersion": "3.
|
|
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-
|
|
89
|
-
"updatedAt": "2026-
|
|
90
|
-
"installerVersion": "3.
|
|
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-
|
|
96
|
-
"updatedAt": "2026-
|
|
97
|
-
"installerVersion": "3.
|
|
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-
|
|
103
|
-
"updatedAt": "2026-
|
|
104
|
-
"installerVersion": "3.
|
|
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-
|
|
110
|
-
"updatedAt": "2026-
|
|
111
|
-
"installerVersion": "3.
|
|
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-
|
|
117
|
-
"updatedAt": "2026-
|
|
118
|
-
"installerVersion": "3.
|
|
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-
|
|
124
|
-
"updatedAt": "2026-
|
|
125
|
-
"installerVersion": "3.
|
|
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-
|
|
131
|
-
"updatedAt": "2026-
|
|
132
|
-
"installerVersion": "3.
|
|
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-
|
|
138
|
-
"updatedAt": "2026-
|
|
139
|
-
"installerVersion": "3.
|
|
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-
|
|
145
|
-
"updatedAt": "2026-
|
|
146
|
-
"installerVersion": "3.
|
|
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-
|
|
152
|
-
"updatedAt": "2026-
|
|
153
|
-
"installerVersion": "3.
|
|
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-
|
|
159
|
-
"updatedAt": "2026-
|
|
160
|
-
"installerVersion": "3.
|
|
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-
|
|
166
|
-
"updatedAt": "2026-
|
|
167
|
-
"installerVersion": "3.
|
|
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-
|
|
173
|
-
"updatedAt": "2026-
|
|
174
|
-
"installerVersion": "3.
|
|
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-
|
|
180
|
-
"updatedAt": "2026-
|
|
181
|
-
"installerVersion": "3.
|
|
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-
|
|
187
|
-
"updatedAt": "2026-
|
|
188
|
-
"installerVersion": "3.
|
|
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-
|
|
194
|
-
"updatedAt": "2026-
|
|
195
|
-
"installerVersion": "3.
|
|
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-
|
|
201
|
-
"updatedAt": "2026-
|
|
202
|
-
"installerVersion": "3.
|
|
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-
|
|
208
|
-
"updatedAt": "2026-
|
|
209
|
-
"installerVersion": "3.
|
|
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-
|
|
215
|
-
"updatedAt": "2026-
|
|
216
|
-
"installerVersion": "3.
|
|
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-
|
|
222
|
-
"updatedAt": "2026-
|
|
223
|
-
"installerVersion": "3.
|
|
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-
|
|
229
|
-
"updatedAt": "2026-
|
|
230
|
-
"installerVersion": "3.
|
|
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-
|
|
236
|
-
"updatedAt": "2026-
|
|
237
|
-
"installerVersion": "3.
|
|
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
|
|
108
|
+
## Supported Coding Tools
|
|
109
109
|
|
|
110
|
-
|
|
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
|
-
|
|
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` |
|
|
164
|
-
| `generate-backlog` |
|
|
165
|
-
| `add-to-sprint` |
|
|
166
|
-
| `remove-from-sprint` |
|
|
167
|
-
| `cleanup-done` |
|
|
168
|
-
| `prioritize-backlog` |
|
|
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`
|
|
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'
|
|
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'
|
|
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'
|
|
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'
|
|
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'
|
|
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'
|
|
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'
|
|
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'
|
|
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
|
|