ma-agents 3.5.2 → 3.5.3
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/lib/agents.js +7 -7
- package/lib/bmad-cache/cache-manifest.json +1 -1
- package/lib/bmad-extension/skills/bmad-ma-agent-sqa/SKILL.md +3 -2
- package/lib/skill-authoring.js +2 -2
- package/package.json +1 -1
- package/test/agent-injection-strategy.test.js +1 -1
- package/test/bmad-extension.test.js +2 -2
- package/test/convert-agents-to-skills.test.js +8 -8
- package/test/skill-customize-agent.test.js +2 -2
package/lib/agents.js
CHANGED
|
@@ -273,17 +273,17 @@ const agents = [
|
|
|
273
273
|
injectionStrategy: { position: 'top', skipPatterns: ['---'] }
|
|
274
274
|
},
|
|
275
275
|
{
|
|
276
|
-
id: 'bmm-
|
|
277
|
-
name: '
|
|
278
|
-
version: '
|
|
276
|
+
id: 'bmm-qa',
|
|
277
|
+
name: 'SQA & Standards Expert (Gad)',
|
|
278
|
+
version: '1.0.0',
|
|
279
279
|
category: 'bmad',
|
|
280
|
-
description: 'MIL-STD-498
|
|
281
|
-
skillsDir: '_bmad/skills/
|
|
282
|
-
getProjectPath: () => path.join(process.cwd(), '_bmad', 'skills', '
|
|
280
|
+
description: 'Software Quality Assurance and MIL-STD-498 Standards Expert (Gad)',
|
|
281
|
+
skillsDir: '_bmad/skills/sqa',
|
|
282
|
+
getProjectPath: () => path.join(process.cwd(), '_bmad', 'skills', 'sqa'),
|
|
283
283
|
getGlobalPath: () => null,
|
|
284
284
|
fileExtension: '.md',
|
|
285
285
|
template: 'generic',
|
|
286
|
-
instructionFiles: ['_bmad/bmm/agents/
|
|
286
|
+
instructionFiles: ['_bmad/bmm/agents/qa.md'],
|
|
287
287
|
injectionStrategy: { position: 'top', skipPatterns: ['---'] }
|
|
288
288
|
},
|
|
289
289
|
{
|
|
@@ -54,5 +54,6 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
54
54
|
|
|
55
55
|
## Critical Actions
|
|
56
56
|
1. Read the skills MANIFEST at {project-root}/_bmad/skills/MANIFEST.yaml
|
|
57
|
-
2.
|
|
58
|
-
3.
|
|
57
|
+
2. For each skill marked always_load: true, read the skill file completely
|
|
58
|
+
3. If _bmad-output/project-context.md exists, read it completely
|
|
59
|
+
4. Follow all skill directives and project-context rules during this session
|
package/lib/skill-authoring.js
CHANGED
|
@@ -405,8 +405,8 @@ async function handleSetMandatory(args) {
|
|
|
405
405
|
|
|
406
406
|
// ─── Story 3.4: BMAD Persona Customization Tooling ───────────────────────────
|
|
407
407
|
|
|
408
|
-
const CUSTOM_AGENTS = ['bmm-sre', 'bmm-devops', 'bmm-cyber', 'bmm-
|
|
409
|
-
const BUILTIN_AGENTS = ['bmm-pm', 'bmm-architect', 'bmm-dev', 'bmm-
|
|
408
|
+
const CUSTOM_AGENTS = ['bmm-sre', 'bmm-devops', 'bmm-cyber', 'bmm-qa', 'bmm-demerzel'];
|
|
409
|
+
const BUILTIN_AGENTS = ['bmm-pm', 'bmm-architect', 'bmm-dev', 'bmm-sm', 'bmm-tech-writer', 'bmm-ux-designer'];
|
|
410
410
|
|
|
411
411
|
const MANDATORY_CRITICAL_ACTIONS = {
|
|
412
412
|
1: 'Read the skills MANIFEST at skills/MANIFEST.yaml (relative to project root)',
|
package/package.json
CHANGED
|
@@ -66,7 +66,7 @@ test('3.3: installer.js contains NO agent-name-specific logic', () => {
|
|
|
66
66
|
console.log('\nTask 4 — Registry completeness');
|
|
67
67
|
|
|
68
68
|
const EXPECTED_IDE = ['claude-code', 'gemini', 'copilot', 'kilocode', 'cline', 'cursor', 'antigravity', 'opencode'];
|
|
69
|
-
const EXPECTED_BMAD = ['bmm-sre', 'bmm-devops', 'bmm-cyber', 'bmm-
|
|
69
|
+
const EXPECTED_BMAD = ['bmm-sre', 'bmm-devops', 'bmm-cyber', 'bmm-qa', 'bmm-demerzel'];
|
|
70
70
|
const EXPECTED_ALL = [...EXPECTED_IDE, ...EXPECTED_BMAD];
|
|
71
71
|
|
|
72
72
|
test('4.1: registry has at least 13 agents (8+ IDE + 5 BMAD)', () => {
|
|
@@ -79,7 +79,7 @@ test('2.1: lib/bmad-customize/ directory exists', () => {
|
|
|
79
79
|
});
|
|
80
80
|
|
|
81
81
|
const builtinAgents = [
|
|
82
|
-
'bmm-pm', 'bmm-architect', 'bmm-dev',
|
|
82
|
+
'bmm-pm', 'bmm-architect', 'bmm-dev',
|
|
83
83
|
'bmm-sm', 'bmm-tech-writer', 'bmm-ux-designer', 'bmm-bmad-master'
|
|
84
84
|
];
|
|
85
85
|
|
|
@@ -182,7 +182,7 @@ test('3.7: bmad-customizations retains platform and generic files (agent files r
|
|
|
182
182
|
assert.ok(fs.existsSync(filePath), `${name}.customize.yaml must still exist in bmad-customizations/`);
|
|
183
183
|
}
|
|
184
184
|
// Custom agent files (bmm-sre, bmm-devops, etc.) were removed — now in skill folders
|
|
185
|
-
const removedAgents = ['bmm-sre', 'bmm-devops', 'bmm-cyber', 'bmm-
|
|
185
|
+
const removedAgents = ['bmm-sre', 'bmm-devops', 'bmm-cyber', 'bmm-qa'];
|
|
186
186
|
for (const id of removedAgents) {
|
|
187
187
|
const filePath = path.join(customDir, `${id}.customize.yaml`);
|
|
188
188
|
assert.ok(!fs.existsSync(filePath), `${id}.customize.yaml should NOT exist in bmad-customizations/ (moved to skill folders)`);
|
|
@@ -66,14 +66,14 @@ const AGENTS = [
|
|
|
66
66
|
menuItemCount: 6 // MH, CH, VS, SA, TM, DA
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
|
-
folder: 'bmad-ma-agent-
|
|
70
|
-
name: 'bmad-ma-agent-
|
|
71
|
-
displayName: '
|
|
72
|
-
title: '
|
|
73
|
-
skillNames: ['
|
|
74
|
-
oldPaths: ['bmm/workflows/
|
|
75
|
-
chatTopic: '
|
|
76
|
-
menuItemCount:
|
|
69
|
+
folder: 'bmad-ma-agent-sqa',
|
|
70
|
+
name: 'bmad-ma-agent-sqa',
|
|
71
|
+
displayName: 'Gad',
|
|
72
|
+
title: 'Software Quality Assurance & Standards Expert',
|
|
73
|
+
skillNames: ['sqa-audit', 'sqa-ieee12207', 'sqa-requirements-quality'],
|
|
74
|
+
oldPaths: ['bmm/workflows/sqa/', '_bmad/bmm/workflows/sqa/'],
|
|
75
|
+
chatTopic: 'quality assurance',
|
|
76
|
+
menuItemCount: 14 // MH, CH, AU, IC, RQ, GS, GD, GP, GO, SS, GT, SD, MR, DA
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
folder: 'bmad-ma-agent-ml',
|
|
@@ -50,7 +50,7 @@ try {
|
|
|
50
50
|
console.log('\n validateBmadAgent unit tests\n');
|
|
51
51
|
|
|
52
52
|
test('validates custom agents (full customization)', () => {
|
|
53
|
-
const customAgents = ['bmm-sre', 'bmm-devops', 'bmm-cyber', 'bmm-
|
|
53
|
+
const customAgents = ['bmm-sre', 'bmm-devops', 'bmm-cyber', 'bmm-qa'];
|
|
54
54
|
for (const agent of customAgents) {
|
|
55
55
|
const result = validateBmadAgent(agent);
|
|
56
56
|
assert.strictEqual(result.valid, true, `Expected ${agent} to be valid`);
|
|
@@ -59,7 +59,7 @@ test('validates custom agents (full customization)', () => {
|
|
|
59
59
|
});
|
|
60
60
|
|
|
61
61
|
test('validates builtin agents (critical_actions only)', () => {
|
|
62
|
-
const builtinAgents = ['bmm-pm', 'bmm-architect', 'bmm-dev', 'bmm-
|
|
62
|
+
const builtinAgents = ['bmm-pm', 'bmm-architect', 'bmm-dev', 'bmm-sm', 'bmm-tech-writer', 'bmm-ux-designer'];
|
|
63
63
|
for (const agent of builtinAgents) {
|
|
64
64
|
const result = validateBmadAgent(agent);
|
|
65
65
|
assert.strictEqual(result.valid, true, `Expected ${agent} to be valid`);
|