bmad-plus 0.5.0 → 0.7.0

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 (84) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +144 -142
  3. package/package.json +1 -1
  4. package/readme-international/README.de.md +125 -125
  5. package/readme-international/README.es.md +215 -215
  6. package/readme-international/README.fr.md +213 -213
  7. package/src/bmad-plus/module.yaml +46 -0
  8. package/src/bmad-plus/packs/pack-dev-studio/README.md +162 -0
  9. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/analyst-agent.md +74 -0
  10. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/document-project.md +62 -0
  11. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/domain-research.md +96 -0
  12. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/market-research.md +96 -0
  13. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/prfaq.md +135 -0
  14. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/product-brief.md +81 -0
  15. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/tech-writer-agent.md +74 -0
  16. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/technical-research.md +96 -0
  17. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/architect-agent.md +74 -0
  18. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-architecture.md +74 -0
  19. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-epics-stories.md +93 -0
  20. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/generate-project-context.md +81 -0
  21. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/implementation-readiness.md +91 -0
  22. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01-init.md +153 -0
  23. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01b-continue.md +173 -0
  24. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-02-context.md +224 -0
  25. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-03-starter.md +329 -0
  26. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-04-decisions.md +318 -0
  27. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-05-patterns.md +359 -0
  28. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-06-structure.md +379 -0
  29. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-07-validation.md +361 -0
  30. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-08-complete.md +82 -0
  31. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/checkpoint-preview.md +68 -0
  32. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-01-gather-context.md +85 -0
  33. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-02-review.md +35 -0
  34. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-03-triage.md +49 -0
  35. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-04-present.md +132 -0
  36. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review.md +90 -0
  37. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/correct-course.md +301 -0
  38. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/create-story.md +429 -0
  39. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-agent.md +74 -0
  40. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story-checklist.md +80 -0
  41. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story.md +485 -0
  42. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/investigate.md +194 -0
  43. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/qa-e2e-tests.md +176 -0
  44. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/quick-dev.md +111 -0
  45. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/retrospective.md +1512 -0
  46. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-planning.md +299 -0
  47. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-status.md +297 -0
  48. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-prd.md +30 -0
  49. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-ux-design.md +75 -0
  50. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/edit-prd.md +30 -0
  51. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/pm-agent.md +74 -0
  52. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/prd.md +90 -0
  53. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/ux-designer-agent.md +74 -0
  54. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/validate-prd.md +30 -0
  55. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/advanced-elicitation.md +142 -0
  56. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/adversarial-review.md +37 -0
  57. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/bmad-help.md +75 -0
  58. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/brainstorming.md +6 -0
  59. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/customize.md +111 -0
  60. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/distillator.md +177 -0
  61. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/edge-case-hunter.md +67 -0
  62. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-prose.md +86 -0
  63. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-structure.md +179 -0
  64. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/index-docs.md +66 -0
  65. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/party-mode.md +128 -0
  66. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/shard-doc.md +105 -0
  67. package/src/bmad-plus/packs/pack-dev-studio/dev-studio-orchestrator.md +120 -0
  68. package/src/bmad-plus/packs/pack-dev-studio/shared/architecture-decision-template.md +12 -0
  69. package/src/bmad-plus/packs/pack-dev-studio/shared/bwml-spec.md +328 -0
  70. package/src/bmad-plus/packs/pack-dev-studio/shared/module-help.csv +32 -0
  71. package/src/bmad-plus/packs/pack-dev-studio/upstream-sync.yaml +81 -0
  72. package/src/bmad-plus/packs/pack-memory/README.md +106 -0
  73. package/src/bmad-plus/packs/pack-memory/memory-orchestrator.md +79 -0
  74. package/src/bmad-plus/packs/pack-memory/shared/karpathy-guardrails.md +86 -0
  75. package/src/bmad-plus/packs/pack-memory/shared/memory-protocol.md +143 -0
  76. package/src/bmad-plus/packs/pack-memory/templates/context.md +39 -0
  77. package/src/bmad-plus/packs/pack-memory/templates/decisions.md +25 -0
  78. package/src/bmad-plus/packs/pack-memory/templates/identity.yaml +39 -0
  79. package/src/bmad-plus/packs/pack-memory/templates/lessons.md +31 -0
  80. package/src/bmad-plus/packs/pack-memory/templates/patterns.md +24 -0
  81. package/src/bmad-plus/packs/pack-memory/templates/session-handoff.md +25 -0
  82. package/src/bmad-plus/packs/pack-memory/zecher-agent.md +157 -0
  83. package/tools/cli/commands/install.js +145 -1
  84. package/tools/cli/i18n.js +10 -10
@@ -8,6 +8,7 @@
8
8
 
9
9
  const path = require('node:path');
10
10
  const fs = require('node:fs');
11
+ const os = require('node:os');
11
12
  const fsExtra = require('fs-extra');
12
13
  const clack = require('@clack/prompts');
13
14
  const pc = require('picocolors');
@@ -52,6 +53,16 @@ const PACKS = {
52
53
  packDir: 'pack-shield',
53
54
  packSrcDir: 'packs',
54
55
  },
56
+ 'dev-studio': {
57
+ name: 'Dev Studio — Full SDLC',
58
+ icon: '🏗️',
59
+ description: '6 Torah-named agents + 30 workflows — Analysis → Architecture → Implementation',
60
+ required: false,
61
+ agents: [],
62
+ skills: [],
63
+ packDir: 'pack-dev-studio',
64
+ packSrcDir: 'packs',
65
+ },
55
66
  seo: {
56
67
  name: 'SEO Audit 360',
57
68
  icon: '🔍',
@@ -79,6 +90,16 @@ const PACKS = {
79
90
  skills: [],
80
91
  packDir: 'pack-animated',
81
92
  },
93
+ memory: {
94
+ name: 'Memory — Persistent Brain',
95
+ icon: '🧠',
96
+ description: 'Cross-session memory + project scanner + Karpathy guardrails. Agents learn.',
97
+ required: false,
98
+ agents: [],
99
+ skills: [],
100
+ packDir: 'pack-memory',
101
+ packSrcDir: 'packs',
102
+ },
82
103
  };
83
104
 
84
105
  // IDE configurations
@@ -330,6 +351,94 @@ module.exports = {
330
351
  copiedFiles++;
331
352
  }
332
353
  }
354
+
355
+ // Memory pack: initialize brain with existing brain detection
356
+ if (packId === 'memory' && pack.packDir) {
357
+ const memoryDir = path.join(projectDir, '.agents', 'memory');
358
+ const sessionsDir = path.join(memoryDir, 'sessions');
359
+ const globalBrainDir = path.join(os.homedir(), '.bmad-plus', 'brain', 'projects');
360
+ const templateDir = path.join(bmadSrc, 'packs', 'pack-memory', 'templates');
361
+
362
+ // Create project memory (never overwrite existing)
363
+ fsExtra.ensureDirSync(sessionsDir);
364
+ const memoryFiles = ['decisions.md', 'lessons.md', 'patterns.md', 'context.md'];
365
+ for (const mf of memoryFiles) {
366
+ const dest = path.join(memoryDir, mf);
367
+ if (!fs.existsSync(dest)) {
368
+ const src = path.join(templateDir, mf);
369
+ if (fs.existsSync(src)) {
370
+ let content = fs.readFileSync(src, 'utf8');
371
+ content = content.replace(/\{\{date\}\}/g, new Date().toISOString().slice(0, 10));
372
+ content = content.replace(/\{\{project_name\}\}/g, path.basename(projectDir));
373
+ content = content.replace(/\{\{project_path\}\}/g, projectDir);
374
+ fs.writeFileSync(dest, content, 'utf8');
375
+ }
376
+ }
377
+ }
378
+
379
+ // Detect existing brain directories
380
+ const brainCandidates = [
381
+ path.join(os.homedir(), '.bmad-plus', 'brain'),
382
+ path.join(projectDir, '_brain'),
383
+ path.join(os.homedir(), '.claude', 'memory'),
384
+ ];
385
+ const existingBrain = brainCandidates.find(p => fs.existsSync(p));
386
+
387
+ if (existingBrain) {
388
+ clack.log.info(`🧠 ${i.brain_detected || 'Existing brain detected'}: ${existingBrain}`);
389
+ // Write brain link pointer
390
+ fs.writeFileSync(
391
+ path.join(memoryDir, '.brain-link'),
392
+ JSON.stringify({ linked_brain: existingBrain, linked_at: new Date().toISOString() }, null, 2),
393
+ 'utf8'
394
+ );
395
+ } else {
396
+ // Create fresh global brain
397
+ fsExtra.ensureDirSync(globalBrainDir);
398
+ const identitySrc = path.join(templateDir, 'identity.yaml');
399
+ const identityDest = path.join(os.homedir(), '.bmad-plus', 'brain', 'identity.yaml');
400
+ if (fs.existsSync(identitySrc) && !fs.existsSync(identityDest)) {
401
+ let content = fs.readFileSync(identitySrc, 'utf8');
402
+ content = content.replace(/\{\{user_name\}\}/g, userName);
403
+ content = content.replace(/\{\{language\}\}/g, commLang);
404
+ content = content.replace(/\{\{date\}\}/g, new Date().toISOString().slice(0, 10));
405
+ fs.writeFileSync(identityDest, content, 'utf8');
406
+ }
407
+ // Copy global memory templates
408
+ for (const gf of ['decisions.md', 'lessons.md', 'patterns.md']) {
409
+ const dest = path.join(os.homedir(), '.bmad-plus', 'brain', gf);
410
+ if (!fs.existsSync(dest)) {
411
+ const src = path.join(templateDir, gf);
412
+ if (fs.existsSync(src)) {
413
+ let content = fs.readFileSync(src, 'utf8');
414
+ content = content.replace(/\{\{date\}\}/g, new Date().toISOString().slice(0, 10));
415
+ content = content.replace(/\{\{project_name\}\}/g, 'Global Brain');
416
+ fs.writeFileSync(dest, content, 'utf8');
417
+ }
418
+ }
419
+ }
420
+ clack.log.info(`🧠 ${i.brain_created || 'Global brain created'}: ${path.join(os.homedir(), '.bmad-plus', 'brain')}`);
421
+ }
422
+
423
+ // Index this project in global brain
424
+ const crypto = require('node:crypto');
425
+ const projHash = crypto.createHash('sha256').update(projectDir).digest('hex').slice(0, 8);
426
+ const projMeta = {
427
+ path: projectDir,
428
+ name: path.basename(projectDir),
429
+ hash: projHash,
430
+ status: 'active',
431
+ bmad_installed: true,
432
+ packs_installed: selectedPacks,
433
+ last_scanned: new Date().toISOString().slice(0, 10),
434
+ };
435
+ fsExtra.ensureDirSync(globalBrainDir);
436
+ fs.writeFileSync(
437
+ path.join(globalBrainDir, `${projHash}.yaml`),
438
+ Object.entries(projMeta).map(([k, v]) => `${k}: ${JSON.stringify(v)}`).join('\n'),
439
+ 'utf8'
440
+ );
441
+ }
333
442
  }
334
443
 
335
444
  // Copy module config
@@ -430,6 +539,14 @@ module.exports = {
430
539
  agentGuide.push(` ${(i.guide_shield || '🛡️ GRC Compliance').padEnd(28)} → "Shield, audit my SaaS for GDPR"`);
431
540
  }
432
541
 
542
+ if (selectedPacks.includes('memory')) {
543
+ agentGuide.push(` ${(i.guide_memory || '🧠 Memory Brain').padEnd(28)} → "Zecher, scan projects in [path]"`);
544
+ }
545
+
546
+ if (selectedPacks.includes('dev-studio')) {
547
+ agentGuide.push(` ${(i.guide_dev_studio || '🏗️ Dev Studio').padEnd(28)} → "Miriam, brainstorm my app idea"`);
548
+ }
549
+
433
550
  agentGuide.push(
434
551
  '',
435
552
  i.guide_workflow,
@@ -471,6 +588,20 @@ module.exports = {
471
588
  ` ${i.guide_example_shield_3 || '🛡️ GRC: "Shield, generate SOC 2 evidence checklist"'}`,
472
589
  );
473
590
  }
591
+ if (selectedPacks.includes('dev-studio')) {
592
+ examples.push(
593
+ ` ${i.guide_example_dev_studio_1 || '🏗️ Dev Studio: "Miriam, brainstorm a productivity app"'}`,
594
+ ` ${i.guide_example_dev_studio_2 || '🏗️ Dev Studio: "Bezalel, design the architecture"'}`,
595
+ ` ${i.guide_example_dev_studio_3 || '🏗️ Dev Studio: "Oholiab, implement story S1"'}`,
596
+ );
597
+ }
598
+ if (selectedPacks.includes('memory')) {
599
+ examples.push(
600
+ ` ${i.guide_example_memory_1 || '🧠 Memory: "Zecher, scan projects in D:\\travail\\DEV"'}`,
601
+ ` ${i.guide_example_memory_2 || '🧠 Memory: "Zecher, where were we?"'}`,
602
+ ` ${i.guide_example_memory_3 || '🧠 Memory: "Zecher, consolidate memory"'}`,
603
+ );
604
+ }
474
605
 
475
606
  if (examples.length > 0) {
476
607
  agentGuide.push(
@@ -511,11 +642,24 @@ function generateIDEConfig(userName, language, packs) {
511
642
  agents.push('- **Shield** (GRC) — 38 compliance agents (GDPR, ISO 27001, SOC 2, HIPAA, EU AI Act, DORA, NIS2...)');
512
643
  }
513
644
 
645
+ if (packs.includes('dev-studio')) {
646
+ agents.push('- **Miriam** (מרים) — Business Analyst — Strategic analysis, research, product briefs');
647
+ agents.push('- **Huldah** (חולדה) — Technical Writer — Documentation, diagrams, editorial review');
648
+ agents.push('- **Yosef** (יוסף) — Product Manager — PRD, requirements, feature prioritization');
649
+ agents.push('- **Rachel** (רחל) — UX Designer — User experience, wireframes, empathy mapping');
650
+ agents.push('- **Bezalel** (בצלאל) — System Architect — Architecture, ADRs, epics & stories');
651
+ agents.push('- **Oholiab** (אהליאב) — Senior Engineer — TDD, sprint, code review, implementation');
652
+ }
653
+
654
+ if (packs.includes('memory')) {
655
+ agents.push('- **Zecher** (זכר) — Memory Archivist — Consolidation, project scanning, context recall');
656
+ }
657
+
514
658
  return `# BMAD+ — AI Agent Configuration
515
659
 
516
660
  ## Project Context
517
661
  This project uses BMAD+, an augmented AI-driven development framework.
518
- Based on BMAD-METHOD v6.2.0 with multi-role agents, autopilot mode, and parallel execution.
662
+ Based on BMAD-METHOD v6.6.0 with multi-role agents, autopilot mode, and parallel execution.
519
663
 
520
664
  ## Agents
521
665
  To activate an agent, say its name or persona:
package/tools/cli/i18n.js CHANGED
@@ -10,7 +10,7 @@ const LANGUAGES = {
10
10
  flag: '🇬🇧',
11
11
  name: 'English',
12
12
  locale: 'en',
13
- installer_title: ' BMAD+ Installer v0.5.0 ',
13
+ installer_title: ' BMAD+ Installer v0.7.0 ',
14
14
  select_language: 'Select your language',
15
15
  installing_to: 'Installing to',
16
16
  select_packs: 'Which packs to install? (Core is always included)',
@@ -82,7 +82,7 @@ const LANGUAGES = {
82
82
  flag: '🇫🇷',
83
83
  name: 'Français',
84
84
  locale: 'fr',
85
- installer_title: ' BMAD+ Installeur v0.5.0 ',
85
+ installer_title: ' BMAD+ Installeur v0.7.0 ',
86
86
  select_language: 'Choisissez votre langue',
87
87
  installing_to: 'Installation dans',
88
88
  select_packs: 'Quels packs installer ? (Core est toujours inclus)',
@@ -152,7 +152,7 @@ const LANGUAGES = {
152
152
  flag: '🇪🇸',
153
153
  name: 'Español',
154
154
  locale: 'es',
155
- installer_title: ' BMAD+ Instalador v0.5.0 ',
155
+ installer_title: ' BMAD+ Instalador v0.7.0 ',
156
156
  select_language: 'Seleccione su idioma',
157
157
  installing_to: 'Instalando en',
158
158
  select_packs: '¿Qué packs instalar? (Core siempre está incluido)',
@@ -222,7 +222,7 @@ const LANGUAGES = {
222
222
  flag: '🇩🇪',
223
223
  name: 'Deutsch',
224
224
  locale: 'de',
225
- installer_title: ' BMAD+ Installer v0.5.0 ',
225
+ installer_title: ' BMAD+ Installer v0.7.0 ',
226
226
  select_language: 'Wählen Sie Ihre Sprache',
227
227
  installing_to: 'Installiere in',
228
228
  select_packs: 'Welche Packs installieren? (Core ist immer enthalten)',
@@ -292,7 +292,7 @@ const LANGUAGES = {
292
292
  flag: '🇧🇷',
293
293
  name: 'Português (Brasil)',
294
294
  locale: 'pt-BR',
295
- installer_title: ' BMAD+ Instalador v0.5.0 ',
295
+ installer_title: ' BMAD+ Instalador v0.7.0 ',
296
296
  select_language: 'Selecione seu idioma',
297
297
  installing_to: 'Instalando em',
298
298
  select_packs: 'Quais packs instalar? (Core sempre está incluído)',
@@ -362,7 +362,7 @@ const LANGUAGES = {
362
362
  flag: '🇷🇺',
363
363
  name: 'Русский',
364
364
  locale: 'ru',
365
- installer_title: ' BMAD+ Установщик v0.5.0 ',
365
+ installer_title: ' BMAD+ Установщик v0.7.0 ',
366
366
  select_language: 'Выберите язык',
367
367
  installing_to: 'Установка в',
368
368
  select_packs: 'Какие пакеты установить? (Core всегда включён)',
@@ -432,7 +432,7 @@ const LANGUAGES = {
432
432
  flag: '🇨🇳',
433
433
  name: '中文 (简体)',
434
434
  locale: 'zh-CN',
435
- installer_title: ' BMAD+ 安装程序 v0.5.0 ',
435
+ installer_title: ' BMAD+ 安装程序 v0.7.0 ',
436
436
  select_language: '选择您的语言',
437
437
  installing_to: '安装到',
438
438
  select_packs: '安装哪些包?(Core 始终包含)',
@@ -502,7 +502,7 @@ const LANGUAGES = {
502
502
  flag: '🇮🇱',
503
503
  name: 'עברית',
504
504
  locale: 'he',
505
- installer_title: ' BMAD+ מתקין v0.5.0 ',
505
+ installer_title: ' BMAD+ מתקין v0.7.0 ',
506
506
  select_language: 'בחר את השפה שלך',
507
507
  installing_to: 'מתקין ב',
508
508
  select_packs: 'אילו חבילות להתקין? (Core תמיד כלול)',
@@ -572,7 +572,7 @@ const LANGUAGES = {
572
572
  flag: '🇯🇵',
573
573
  name: '日本語',
574
574
  locale: 'ja',
575
- installer_title: ' BMAD+ インストーラー v0.5.0 ',
575
+ installer_title: ' BMAD+ インストーラー v0.7.0 ',
576
576
  select_language: '言語を選択してください',
577
577
  installing_to: 'インストール先',
578
578
  select_packs: 'どのパックをインストールしますか?(Coreは常に含まれます)',
@@ -642,7 +642,7 @@ const LANGUAGES = {
642
642
  flag: '🇮🇹',
643
643
  name: 'Italiano',
644
644
  locale: 'it',
645
- installer_title: ' BMAD+ Installatore v0.5.0 ',
645
+ installer_title: ' BMAD+ Installatore v0.7.0 ',
646
646
  select_language: 'Seleziona la tua lingua',
647
647
  installing_to: 'Installazione in',
648
648
  select_packs: 'Quali pack installare? (Core è sempre incluso)',