bmad-plus 0.12.0 → 0.12.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/CHANGELOG.md +26 -0
- package/README.md +582 -577
- package/package.json +5 -5
- package/readme-international/README.de.md +9 -4
- package/readme-international/README.es.md +9 -4
- package/readme-international/README.fr.md +9 -4
- package/src/bmad-plus/packs/pack-memory/shared/memory-protocol.md +14 -0
- package/tools/build/generated-adapters/.codex/AGENTS.md +1 -1
- package/tools/build/generated-adapters/.cursor/rules/bmad-plus.mdc +1 -1
- package/tools/build/generated-adapters/.opencode/AGENTS.md +1 -1
- package/tools/build/generated-adapters/AGENTS.md +1 -1
- package/tools/build/generated-adapters/CLAUDE.md +1 -1
- package/tools/build/generated-adapters/CONVENTIONS.md +1 -1
- package/tools/build/generated-adapters/GEMINI.md +1 -1
- package/tools/cli/commands/autoconfig.js +1 -3
- package/tools/cli/commands/install.js +8 -2
- package/tools/cli/commands/scan.js +2 -18
- package/tools/cli/lib/memory-init.js +204 -113
- package/tools/cli/lib/packs.js +209 -209
- package/tools/cli/lib/path-hash.js +39 -0
package/tools/cli/lib/packs.js
CHANGED
|
@@ -1,209 +1,209 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BMAD+ Shared PACKS Module — AUTO-GENERATED, DO NOT EDIT.
|
|
3
|
-
* Source of truth: registry.yaml (repo root).
|
|
4
|
-
* Regenerate: node tools/build/generate.js --out tools/cli/lib/packs.js
|
|
5
|
-
*
|
|
6
|
-
* Author: Laurent Rochetta
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
const PACKS = {
|
|
10
|
-
"core": {
|
|
11
|
-
"name": "Core",
|
|
12
|
-
"icon": "b",
|
|
13
|
-
"agents": [
|
|
14
|
-
"agent-strategist",
|
|
15
|
-
"agent-architect-dev",
|
|
16
|
-
"agent-quality",
|
|
17
|
-
"agent-orchestrator"
|
|
18
|
-
],
|
|
19
|
-
"skills": [
|
|
20
|
-
"bmad-plus-autopilot",
|
|
21
|
-
"bmad-plus-parallel",
|
|
22
|
-
"bmad-plus-sync"
|
|
23
|
-
],
|
|
24
|
-
"data": [
|
|
25
|
-
"role-triggers.yaml"
|
|
26
|
-
],
|
|
27
|
-
"packDir": "pack-core",
|
|
28
|
-
"packSrcDir": "packs",
|
|
29
|
-
"required": true,
|
|
30
|
-
"desc": "Core agents & skills"
|
|
31
|
-
},
|
|
32
|
-
"osint": {
|
|
33
|
-
"name": "OSINT",
|
|
34
|
-
"icon": "j",
|
|
35
|
-
"agents": [
|
|
36
|
-
"agent-shadow"
|
|
37
|
-
],
|
|
38
|
-
"skills": [],
|
|
39
|
-
"externalPackage": "osint-agent-package",
|
|
40
|
-
"packDir": "pack-osint",
|
|
41
|
-
"packSrcDir": "packs",
|
|
42
|
-
"desc": "OSINT & investigation"
|
|
43
|
-
},
|
|
44
|
-
"maker": {
|
|
45
|
-
"name": "Maker",
|
|
46
|
-
"icon": "f",
|
|
47
|
-
"agents": [
|
|
48
|
-
"agent-maker"
|
|
49
|
-
],
|
|
50
|
-
"skills": [],
|
|
51
|
-
"data": [],
|
|
52
|
-
"packDir": "pack-maker",
|
|
53
|
-
"packSrcDir": "packs",
|
|
54
|
-
"desc": "Agent creation toolkit"
|
|
55
|
-
},
|
|
56
|
-
"shield": {
|
|
57
|
-
"name": "Shield",
|
|
58
|
-
"icon": "m",
|
|
59
|
-
"agents": [
|
|
60
|
-
"shield-orchestrator"
|
|
61
|
-
],
|
|
62
|
-
"skills": [],
|
|
63
|
-
"packDir": "pack-shield",
|
|
64
|
-
"packSrcDir": "packs",
|
|
65
|
-
"desc": "GRC compliance (25+ frameworks)"
|
|
66
|
-
},
|
|
67
|
-
"seo": {
|
|
68
|
-
"name": "SEO",
|
|
69
|
-
"icon": "k",
|
|
70
|
-
"agents": [
|
|
71
|
-
"seo-scout",
|
|
72
|
-
"seo-chief",
|
|
73
|
-
"seo-judge"
|
|
74
|
-
],
|
|
75
|
-
"skills": [],
|
|
76
|
-
"packDir": "pack-seo",
|
|
77
|
-
"packSrcDir": "packs",
|
|
78
|
-
"desc": "SEO audit & optimization"
|
|
79
|
-
},
|
|
80
|
-
"memory": {
|
|
81
|
-
"name": "Memory",
|
|
82
|
-
"icon": "x",
|
|
83
|
-
"agents": [
|
|
84
|
-
"zecher"
|
|
85
|
-
],
|
|
86
|
-
"skills": [],
|
|
87
|
-
"packDir": "pack-memory",
|
|
88
|
-
"packSrcDir": "packs",
|
|
89
|
-
"desc": "Persistent cross-session memory"
|
|
90
|
-
},
|
|
91
|
-
"dev-studio": {
|
|
92
|
-
"name": "Dev Studio",
|
|
93
|
-
"icon": "v",
|
|
94
|
-
"agents": [
|
|
95
|
-
"dev-studio-orchestrator"
|
|
96
|
-
],
|
|
97
|
-
"skills": [
|
|
98
|
-
"dev-studio"
|
|
99
|
-
],
|
|
100
|
-
"packDir": "pack-dev-studio",
|
|
101
|
-
"packSrcDir": "packs",
|
|
102
|
-
"desc": "SDLC automation (6 agents, 56+ skills)"
|
|
103
|
-
},
|
|
104
|
-
"backup": {
|
|
105
|
-
"name": "Backup",
|
|
106
|
-
"icon": "y",
|
|
107
|
-
"agents": [
|
|
108
|
-
"backup-agent"
|
|
109
|
-
],
|
|
110
|
-
"skills": [],
|
|
111
|
-
"packDir": "pack-backup",
|
|
112
|
-
"packSrcDir": "packs",
|
|
113
|
-
"desc": "Backup & restore"
|
|
114
|
-
},
|
|
115
|
-
"animated": {
|
|
116
|
-
"name": "Animated",
|
|
117
|
-
"icon": "z",
|
|
118
|
-
"agents": [
|
|
119
|
-
"animated-website-agent"
|
|
120
|
-
],
|
|
121
|
-
"skills": [],
|
|
122
|
-
"packDir": "pack-animated",
|
|
123
|
-
"packSrcDir": "packs",
|
|
124
|
-
"desc": "Animated website agents"
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
const PACK_ORDER = [
|
|
129
|
-
"core",
|
|
130
|
-
"osint",
|
|
131
|
-
"maker",
|
|
132
|
-
"shield",
|
|
133
|
-
"seo",
|
|
134
|
-
"memory",
|
|
135
|
-
"dev-studio",
|
|
136
|
-
"backup",
|
|
137
|
-
"animated"
|
|
138
|
-
];
|
|
139
|
-
|
|
140
|
-
const EXPECTED_AGENTS = {
|
|
141
|
-
"core": {
|
|
142
|
-
"agents": [
|
|
143
|
-
"agent-strategist",
|
|
144
|
-
"agent-architect-dev",
|
|
145
|
-
"agent-quality",
|
|
146
|
-
"agent-orchestrator"
|
|
147
|
-
],
|
|
148
|
-
"packDir": null
|
|
149
|
-
},
|
|
150
|
-
"osint": {
|
|
151
|
-
"agents": [
|
|
152
|
-
"agent-shadow"
|
|
153
|
-
],
|
|
154
|
-
"packDir": null
|
|
155
|
-
},
|
|
156
|
-
"maker": {
|
|
157
|
-
"agents": [
|
|
158
|
-
"agent-maker"
|
|
159
|
-
],
|
|
160
|
-
"packDir": null
|
|
161
|
-
},
|
|
162
|
-
"shield": {
|
|
163
|
-
"agents": [],
|
|
164
|
-
"packDir": "pack-shield",
|
|
165
|
-
"packAgents": [
|
|
166
|
-
"shield-orchestrator.md"
|
|
167
|
-
]
|
|
168
|
-
},
|
|
169
|
-
"seo": {
|
|
170
|
-
"agents": [],
|
|
171
|
-
"packDir": "pack-seo",
|
|
172
|
-
"packAgents": [
|
|
173
|
-
"seo-scout.md",
|
|
174
|
-
"seo-chief.md",
|
|
175
|
-
"seo-judge.md"
|
|
176
|
-
]
|
|
177
|
-
},
|
|
178
|
-
"memory": {
|
|
179
|
-
"agents": [],
|
|
180
|
-
"packDir": "pack-memory",
|
|
181
|
-
"packAgents": [
|
|
182
|
-
"zecher-agent.md",
|
|
183
|
-
"memory-orchestrator.md"
|
|
184
|
-
]
|
|
185
|
-
},
|
|
186
|
-
"dev-studio": {
|
|
187
|
-
"agents": [],
|
|
188
|
-
"packDir": "pack-dev-studio",
|
|
189
|
-
"packAgents": [
|
|
190
|
-
"dev-studio-orchestrator.md"
|
|
191
|
-
]
|
|
192
|
-
},
|
|
193
|
-
"backup": {
|
|
194
|
-
"agents": [],
|
|
195
|
-
"packDir": "pack-backup",
|
|
196
|
-
"packAgents": [
|
|
197
|
-
"backup-agent.md"
|
|
198
|
-
]
|
|
199
|
-
},
|
|
200
|
-
"animated": {
|
|
201
|
-
"agents": [],
|
|
202
|
-
"packDir": "pack-animated",
|
|
203
|
-
"packAgents": [
|
|
204
|
-
"animated-website-agent.md"
|
|
205
|
-
]
|
|
206
|
-
}
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
module.exports = { PACKS, PACK_ORDER, EXPECTED_AGENTS };
|
|
1
|
+
/**
|
|
2
|
+
* BMAD+ Shared PACKS Module — AUTO-GENERATED, DO NOT EDIT.
|
|
3
|
+
* Source of truth: registry.yaml (repo root).
|
|
4
|
+
* Regenerate: node tools/build/generate.js --out tools/cli/lib/packs.js
|
|
5
|
+
*
|
|
6
|
+
* Author: Laurent Rochetta
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const PACKS = {
|
|
10
|
+
"core": {
|
|
11
|
+
"name": "Core",
|
|
12
|
+
"icon": "b",
|
|
13
|
+
"agents": [
|
|
14
|
+
"agent-strategist",
|
|
15
|
+
"agent-architect-dev",
|
|
16
|
+
"agent-quality",
|
|
17
|
+
"agent-orchestrator"
|
|
18
|
+
],
|
|
19
|
+
"skills": [
|
|
20
|
+
"bmad-plus-autopilot",
|
|
21
|
+
"bmad-plus-parallel",
|
|
22
|
+
"bmad-plus-sync"
|
|
23
|
+
],
|
|
24
|
+
"data": [
|
|
25
|
+
"role-triggers.yaml"
|
|
26
|
+
],
|
|
27
|
+
"packDir": "pack-core",
|
|
28
|
+
"packSrcDir": "packs",
|
|
29
|
+
"required": true,
|
|
30
|
+
"desc": "Core agents & skills"
|
|
31
|
+
},
|
|
32
|
+
"osint": {
|
|
33
|
+
"name": "OSINT",
|
|
34
|
+
"icon": "j",
|
|
35
|
+
"agents": [
|
|
36
|
+
"agent-shadow"
|
|
37
|
+
],
|
|
38
|
+
"skills": [],
|
|
39
|
+
"externalPackage": "osint-agent-package",
|
|
40
|
+
"packDir": "pack-osint",
|
|
41
|
+
"packSrcDir": "packs",
|
|
42
|
+
"desc": "OSINT & investigation"
|
|
43
|
+
},
|
|
44
|
+
"maker": {
|
|
45
|
+
"name": "Maker",
|
|
46
|
+
"icon": "f",
|
|
47
|
+
"agents": [
|
|
48
|
+
"agent-maker"
|
|
49
|
+
],
|
|
50
|
+
"skills": [],
|
|
51
|
+
"data": [],
|
|
52
|
+
"packDir": "pack-maker",
|
|
53
|
+
"packSrcDir": "packs",
|
|
54
|
+
"desc": "Agent creation toolkit"
|
|
55
|
+
},
|
|
56
|
+
"shield": {
|
|
57
|
+
"name": "Shield",
|
|
58
|
+
"icon": "m",
|
|
59
|
+
"agents": [
|
|
60
|
+
"shield-orchestrator"
|
|
61
|
+
],
|
|
62
|
+
"skills": [],
|
|
63
|
+
"packDir": "pack-shield",
|
|
64
|
+
"packSrcDir": "packs",
|
|
65
|
+
"desc": "GRC compliance (25+ frameworks)"
|
|
66
|
+
},
|
|
67
|
+
"seo": {
|
|
68
|
+
"name": "SEO",
|
|
69
|
+
"icon": "k",
|
|
70
|
+
"agents": [
|
|
71
|
+
"seo-scout",
|
|
72
|
+
"seo-chief",
|
|
73
|
+
"seo-judge"
|
|
74
|
+
],
|
|
75
|
+
"skills": [],
|
|
76
|
+
"packDir": "pack-seo",
|
|
77
|
+
"packSrcDir": "packs",
|
|
78
|
+
"desc": "SEO audit & optimization"
|
|
79
|
+
},
|
|
80
|
+
"memory": {
|
|
81
|
+
"name": "Memory",
|
|
82
|
+
"icon": "x",
|
|
83
|
+
"agents": [
|
|
84
|
+
"zecher"
|
|
85
|
+
],
|
|
86
|
+
"skills": [],
|
|
87
|
+
"packDir": "pack-memory",
|
|
88
|
+
"packSrcDir": "packs",
|
|
89
|
+
"desc": "Persistent cross-session memory"
|
|
90
|
+
},
|
|
91
|
+
"dev-studio": {
|
|
92
|
+
"name": "Dev Studio",
|
|
93
|
+
"icon": "v",
|
|
94
|
+
"agents": [
|
|
95
|
+
"dev-studio-orchestrator"
|
|
96
|
+
],
|
|
97
|
+
"skills": [
|
|
98
|
+
"dev-studio"
|
|
99
|
+
],
|
|
100
|
+
"packDir": "pack-dev-studio",
|
|
101
|
+
"packSrcDir": "packs",
|
|
102
|
+
"desc": "SDLC automation (6 agents, 56+ skills)"
|
|
103
|
+
},
|
|
104
|
+
"backup": {
|
|
105
|
+
"name": "Backup",
|
|
106
|
+
"icon": "y",
|
|
107
|
+
"agents": [
|
|
108
|
+
"backup-agent"
|
|
109
|
+
],
|
|
110
|
+
"skills": [],
|
|
111
|
+
"packDir": "pack-backup",
|
|
112
|
+
"packSrcDir": "packs",
|
|
113
|
+
"desc": "Backup & restore"
|
|
114
|
+
},
|
|
115
|
+
"animated": {
|
|
116
|
+
"name": "Animated",
|
|
117
|
+
"icon": "z",
|
|
118
|
+
"agents": [
|
|
119
|
+
"animated-website-agent"
|
|
120
|
+
],
|
|
121
|
+
"skills": [],
|
|
122
|
+
"packDir": "pack-animated",
|
|
123
|
+
"packSrcDir": "packs",
|
|
124
|
+
"desc": "Animated website agents"
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
const PACK_ORDER = [
|
|
129
|
+
"core",
|
|
130
|
+
"osint",
|
|
131
|
+
"maker",
|
|
132
|
+
"shield",
|
|
133
|
+
"seo",
|
|
134
|
+
"memory",
|
|
135
|
+
"dev-studio",
|
|
136
|
+
"backup",
|
|
137
|
+
"animated"
|
|
138
|
+
];
|
|
139
|
+
|
|
140
|
+
const EXPECTED_AGENTS = {
|
|
141
|
+
"core": {
|
|
142
|
+
"agents": [
|
|
143
|
+
"agent-strategist",
|
|
144
|
+
"agent-architect-dev",
|
|
145
|
+
"agent-quality",
|
|
146
|
+
"agent-orchestrator"
|
|
147
|
+
],
|
|
148
|
+
"packDir": null
|
|
149
|
+
},
|
|
150
|
+
"osint": {
|
|
151
|
+
"agents": [
|
|
152
|
+
"agent-shadow"
|
|
153
|
+
],
|
|
154
|
+
"packDir": null
|
|
155
|
+
},
|
|
156
|
+
"maker": {
|
|
157
|
+
"agents": [
|
|
158
|
+
"agent-maker"
|
|
159
|
+
],
|
|
160
|
+
"packDir": null
|
|
161
|
+
},
|
|
162
|
+
"shield": {
|
|
163
|
+
"agents": [],
|
|
164
|
+
"packDir": "pack-shield",
|
|
165
|
+
"packAgents": [
|
|
166
|
+
"shield-orchestrator.md"
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
"seo": {
|
|
170
|
+
"agents": [],
|
|
171
|
+
"packDir": "pack-seo",
|
|
172
|
+
"packAgents": [
|
|
173
|
+
"seo-scout.md",
|
|
174
|
+
"seo-chief.md",
|
|
175
|
+
"seo-judge.md"
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
"memory": {
|
|
179
|
+
"agents": [],
|
|
180
|
+
"packDir": "pack-memory",
|
|
181
|
+
"packAgents": [
|
|
182
|
+
"zecher-agent.md",
|
|
183
|
+
"memory-orchestrator.md"
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
"dev-studio": {
|
|
187
|
+
"agents": [],
|
|
188
|
+
"packDir": "pack-dev-studio",
|
|
189
|
+
"packAgents": [
|
|
190
|
+
"dev-studio-orchestrator.md"
|
|
191
|
+
]
|
|
192
|
+
},
|
|
193
|
+
"backup": {
|
|
194
|
+
"agents": [],
|
|
195
|
+
"packDir": "pack-backup",
|
|
196
|
+
"packAgents": [
|
|
197
|
+
"backup-agent.md"
|
|
198
|
+
]
|
|
199
|
+
},
|
|
200
|
+
"animated": {
|
|
201
|
+
"agents": [],
|
|
202
|
+
"packDir": "pack-animated",
|
|
203
|
+
"packAgents": [
|
|
204
|
+
"animated-website-agent.md"
|
|
205
|
+
]
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
module.exports = { PACKS, PACK_ORDER, EXPECTED_AGENTS };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BMAD+ Path Hashing — shared project-identity hashing for the global brain index.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth: memory-init.js and scan.js MUST produce identical
|
|
5
|
+
* hashes for the same project, or the brain index double-counts it (one entry
|
|
6
|
+
* per drive-letter casing on Windows).
|
|
7
|
+
*
|
|
8
|
+
* Author: Laurent Rochetta
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const path = require('node:path');
|
|
12
|
+
const crypto = require('node:crypto');
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Normalize a filesystem path for stable hashing.
|
|
16
|
+
* On Windows the same project can be referenced as `D:\proj` or `d:\proj`
|
|
17
|
+
* (case-insensitive drive) with mixed separators. Resolving + lowercasing the
|
|
18
|
+
* drive letter ensures the same project produces the same index key and is not
|
|
19
|
+
* double-indexed.
|
|
20
|
+
* @param {string} p - Raw filesystem path
|
|
21
|
+
* @returns {string} Normalized path suitable for hashing
|
|
22
|
+
*/
|
|
23
|
+
function normalizePathForHash(p) {
|
|
24
|
+
let resolved = path.resolve(p);
|
|
25
|
+
// Lowercase a leading Windows drive letter (e.g. "D:" → "d:").
|
|
26
|
+
resolved = resolved.replace(/^([A-Za-z]):/, (_m, drive) => drive.toLowerCase() + ':');
|
|
27
|
+
return resolved;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Stable 8-hex-char identity hash for a project directory.
|
|
32
|
+
* @param {string} projectDir - Raw project path (normalized internally)
|
|
33
|
+
* @returns {string} 8-character hex hash
|
|
34
|
+
*/
|
|
35
|
+
function projectHash(projectDir) {
|
|
36
|
+
return crypto.createHash('sha256').update(normalizePathForHash(projectDir)).digest('hex').slice(0, 8);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
module.exports = { normalizePathForHash, projectHash };
|