bmad-plus 0.17.0 → 0.17.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 (57) hide show
  1. package/CHANGELOG.md +90 -29
  2. package/README.md +21 -21
  3. package/SECURITY.md +9 -1
  4. package/osint-agent-package/README.md +13 -0
  5. package/osint-agent-package/SETUP_KEYS.md +13 -0
  6. package/package.json +30 -8
  7. package/readme-international/README.de.md +134 -542
  8. package/readme-international/README.es.md +136 -561
  9. package/readme-international/README.fr.md +135 -558
  10. package/src/bmad-plus/agents/agent-shadow/SKILL.md +6 -0
  11. package/src/bmad-plus/packs/pack-memory/README.md +1 -1
  12. package/src/bmad-plus/packs/pack-memory/memory-orchestrator.md +1 -1
  13. package/src/bmad-plus/packs/pack-memory/shared/memory-protocol.md +1 -1
  14. package/src/bmad-plus/packs/pack-shield/README.md +2 -0
  15. package/src/bmad-plus/packs/pack-shield/SKILL.md +2 -0
  16. package/src/bmad-plus/packs/pack-shield/shared/audit-report-template.md +6 -0
  17. package/src/bmad-plus/packs/pack-shield/shield-orchestrator.md +4 -0
  18. package/tools/build/adapters.config.js +1 -1
  19. package/tools/build/generate-adapters.js +186 -60
  20. package/tools/build/generate.js +49 -13
  21. package/tools/cli/bmad-plus-cli.js +3 -6
  22. package/tools/cli/commands/autoconfig.js +62 -22
  23. package/tools/cli/commands/install.js +620 -356
  24. package/tools/cli/commands/memory.js +40 -13
  25. package/tools/cli/commands/scan.js +94 -30
  26. package/tools/cli/commands/uninstall.js +65 -16
  27. package/tools/cli/commands/update-check.js +8 -3
  28. package/tools/cli/commands/update-policy.js +14 -5
  29. package/tools/cli/commands/update.js +89 -20
  30. package/tools/cli/i18n.js +120 -68
  31. package/tools/cli/lib/ide-config.js +3 -1
  32. package/tools/cli/lib/install-manifest.js +13 -6
  33. package/tools/cli/lib/installation-health.js +33 -1
  34. package/tools/cli/lib/installed-adapters.js +29 -6
  35. package/tools/cli/lib/memory-init.js +19 -4
  36. package/tools/cli/lib/packs.js +17 -28
  37. package/tools/cli/lib/path-hash.js +5 -1
  38. package/tools/cli/lib/python-provision.js +51 -12
  39. package/tools/cli/lib/stack-detect.js +51 -25
  40. package/tools/cli/lib/update-check.js +132 -34
  41. package/tools/cli/lib/update-dispatch.js +2 -2
  42. package/tools/cli/lib/update-policy.js +57 -19
  43. package/tools/cli/lib/update-transaction.js +439 -85
  44. package/tools/build/README.md +0 -78
  45. package/tools/build/check-counts.js +0 -626
  46. package/tools/build/check-install-contract.js +0 -648
  47. package/tools/build/generated-adapters/.codex/AGENTS.md +0 -134
  48. package/tools/build/generated-adapters/.cursor/rules/bmad-plus.mdc +0 -139
  49. package/tools/build/generated-adapters/.opencode/AGENTS.md +0 -134
  50. package/tools/build/generated-adapters/AGENTS.md +0 -132
  51. package/tools/build/generated-adapters/CLAUDE.md +0 -135
  52. package/tools/build/generated-adapters/CONVENTIONS.md +0 -134
  53. package/tools/build/generated-adapters/GEMINI.md +0 -139
  54. package/tools/build/generated-adapters/README.md +0 -79
  55. package/tools/maintain/upstream-candidate.js +0 -456
  56. package/tools/release/publication-content.js +0 -904
  57. package/tools/release/supply-chain.js +0 -282
package/CHANGELOG.md CHANGED
@@ -7,6 +7,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.17.1] - 2026-09-24
11
+
12
+ ### Changed
13
+ - **`install` no longer overwrites a different installed version.** A downgrade is refused; an upgrade stops and points to `bmad-plus update`, which keeps backups and restorable receipts. Re-installing the same version only adds what is missing. Scripts that re-ran `install` to change versions must call `update` instead.
14
+ - **`--packs` and `--tools` add to the previous installation** instead of replacing it. An unknown pack or tool ID now fails before anything is written, and the error lists the valid IDs.
15
+ - **Unattended installs default to English.** Without a terminal, the communication language comes from `--lang`, then from the system locale, then English. `--yes` with no detected AI tool writes no adapter files.
16
+ - `update` deletes files that a new version no longer ships when you have not changed them; each deletion is backed up in the update receipt and `--restore` brings it back. Files you edited are kept and reported as `modified-orphaned-file`.
17
+ - The npm package no longer ships the maintainers' release and maintenance scripts, only the launcher, the CLI and the build modules it needs at runtime. The archive is smaller; installed projects are unaffected.
18
+ - The OSINT pack opens with a legal and ethics notice (GDPR lawful basis, platform terms, no private profiling), and Shadow's reports start with an AI-generated, not-legal-advice disclaimer. Shadow is described as governed public-source research; its lawful-basis gate is unchanged.
19
+ - The Shield pack and its audit report template carry a shared not-legal-advice notice, an AI-generated banner and a qualified-reviewer sign-off field.
20
+
21
+ ### Fixed
22
+ - Re-installing keeps your `_bmad/config.yaml`: existing settings win, missing defaults are added, and an unparsable file is left untouched. The manifest and configuration are written atomically, so an interrupted install cannot leave them half-written.
23
+ - A `.bmad/update.lock` left by a crashed process no longer blocks the project: when its owner is provably dead on this machine, the lock is moved aside and taken over. Other stale locks are reported by `doctor`, and the error states the manual remedy.
24
+ - `uninstall` accepts `-d`/`--directory` like the other maintenance commands. Help names the program `bmad-plus`, and a subcommand's `--lang` is no longer swallowed by a global option.
25
+ - The installer shows each pack with its emoji icon.
26
+ - Release automation now waits for npm's publish-time scanning before verifying public archive integrity. Polling is bounded to thirty attempts with thirty-second intervals and a twenty-minute step limit. An unavailable version still blocks the landing, and recovery instructions explicitly forbid uploading the same version again.
27
+
28
+ ### Security
29
+ - The development-only `js-yaml` copy used by the coverage tooling is pinned to the patched 4.3.2. The production dependency audit remains clean.
30
+
31
+ ### Documentation
32
+ - The French, Spanish and German READMEs mirror the public README section by section. The README states that BMAD+ is not affiliated with BMad Code, LLC, and replaces the BMAD-METHOD comparison with a factual list of what BMAD+ ships.
33
+ - The website shows the install command with a copy control in its hero, supports a dark color scheme, folds navigation on small screens and names the supported tools.
34
+
10
35
  ## [0.17.0] - 2026-09-22
11
36
 
12
37
  ### Added
@@ -177,7 +202,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
177
202
  ### Verified
178
203
  - `npm test` 333/333 (16 suites); lint 0 errors under eslint 10; both `npx npm@10 ci --dry-run` and `npm ci --dry-run` green; CI + Platform workflows green on GOLDEN master.
179
204
 
180
- ## [0.12.0] — 2026-07-02
205
+ ## [0.12.0] - 2026-07-02
181
206
 
182
207
  ### Added — Load-bearing activation (north-star Pillars 3, 4, 5)
183
208
  - **Pillar 4 executable:** `evals/_runner/providers.py` — a provider-neutral model gateway (anthropic / openai / generic-HTTP adapters selected by `BMAD_EVAL_PROVIDER`, default deterministic **mock** so `--self-check` and CI never hit the network). `run_agent(spec, model)` now routes through it; the eval harness genuinely runs (3/3 specs pass).
@@ -190,7 +215,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
190
215
  ### Verified
191
216
  - `npm test` **333 passed / 16 suites**; `build:check` + `generate-adapters --check` no drift; `run.py --self-check` 3/3; edited Python parses.
192
217
 
193
- ## [0.11.0] — 2026-07-02
218
+ ## [0.11.0] - 2026-07-02
194
219
 
195
220
  ### Added — Karpathy loop CLI + multi-CLI adapters (north-star Pillars 3 & 5)
196
221
  - **`bmad mem` command (Pillar 3):** `recall <query>` / `write` / `reinforce` expose the memory-journal (append/recall + Elo reward + governance guard) from the CLI, so the learning loop is usable from any driving tool. `tests/unit/memory-journal-cmd.test.js`.
@@ -203,7 +228,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
203
228
  ### Verified
204
229
  - `npm test` **325 passed / 16 suites**; `npm run build:check` no drift; `generate-adapters.js --check` no drift.
205
230
 
206
- ## [0.10.0] — 2026-07-02
231
+ ## [0.10.0] - 2026-07-02
207
232
 
208
233
  ### Added — Platform-spine foundations (north-star Phase 2)
209
234
  Built as **new files only** (no existing core file modified); test suite grew from 176/10 to **258 passed / 13 suites**. Cut nothing; multi-tool/multi-model preserved.
@@ -216,7 +241,7 @@ Built as **new files only** (no existing core file modified); test suite grew fr
216
241
 
217
242
  Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remaining integration (provisioning called from install, memory exposed via MCP, generated multi-CLI adapters) lands next as its own tested commit — see `audit/2026-07-01/PHASE-2-STATUS.md`.
218
243
 
219
- ## [0.9.2] — 2026-07-01
244
+ ## [0.9.2] - 2026-07-01
220
245
 
221
246
  ### Security — Phase 1 remediation (exploitable findings)
222
247
  - **RCE closed** (`ci_cd.py`): command allowlist now uses exact-token matching (shlex.split) + realpath/commonpath containment instead of prefix/`startswith` — defeats argument injection (`make -f attacker.mk`) and sibling-path bypass; `shell=False` throughout; dead Makefile fallback removed.
@@ -237,7 +262,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
237
262
  - Documented residual follow-ups (SSRF crawler-class redirect hops, DNS-rebinding IP pinning, Dockerfile digest pin) are tracked in `audit/2026-07-01/PHASE-1-STATUS.md`.
238
263
  - Verified: `npm test` 176/176, `npm run lint` 0 errors, all edited Python parses; SEO report smoke-tested (renders + XSS escaped).
239
264
 
240
- ## [0.9.1] — 2026-07-01
265
+ ## [0.9.1] - 2026-07-01
241
266
 
242
267
  ### Fixed — Credibility (honest status)
243
268
  - **Real CI on push/PR** (`.github/workflows/ci.yml`): lint + test + npm audit, all blocking. Previously the only workflow ran at release-tag and swallowed failures with `|| echo`.
@@ -252,7 +277,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
252
277
  - Fixed the corrupted version-history table (0.9.0/0.8.0 were duplicated).
253
278
  - **Note on 0.9.0 below:** the "64/64 fixed, score A+" and "auth on all endpoints" claims in the 0.9.0 entry were **overstated**. A 2026-07-01 adversarial re-audit (see `audit/2026-07-01/`) found 102 open findings and re-graded the project **C+**. The MCP token *is* checked by middleware on `/sse` and `/messages/`, but the prior "all endpoints" phrasing and the A+ score were not accurate. This release begins the honest remediation.
254
279
 
255
- ## [0.9.0] — 2026-06-24
280
+ ## [0.9.0] - 2026-06-24
256
281
 
257
282
  ### Security
258
283
  - Full audit remediation: 64/64 findings fixed, score C- → A+
@@ -280,7 +305,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
280
305
  ### Tests
281
306
  - 143/143 tests passing
282
307
 
283
- ## [0.8.0] — 2026-06-24
308
+ ## [0.8.0] - 2026-06-24
284
309
 
285
310
  ### Added
286
311
  - 3 new packs: pack-animated (web animation agent), pack-backup (universal backup agent), pack-seo (full SEO audit — 15 files with agents, refs, templates, playbooks)
@@ -305,7 +330,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
305
330
  ### Tests
306
331
  - 143/143 tests passing ✅
307
332
 
308
- ## [0.7.5] — 2026-05-17
333
+ ## [0.7.5] - 2026-05-17
309
334
 
310
335
  ### 🩺 Quality & Compliance
311
336
 
@@ -323,7 +348,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
323
348
  - 2 decisions (anti-regression protocol, i18n-first CLI)
324
349
  - 2 patterns (dual-tier memory, surgical edit protocol)
325
350
 
326
- ## [0.7.4] — 2026-05-17
351
+ ## [0.7.4] - 2026-05-17
327
352
 
328
353
  ### 🧠 Smart Autoconfig
329
354
 
@@ -338,7 +363,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
338
363
  ### Fixed
339
364
  - `--tools none` installer crash (undefined IDE name)
340
365
 
341
- ## [0.7.3] — 2026-05-17
366
+ ## [0.7.3] - 2026-05-17
342
367
 
343
368
  ### 🎨 Scan UX Improvements
344
369
 
@@ -347,11 +372,11 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
347
372
  - **`--active-days <n>`** — Custom threshold for "active" status (default: 30 days)
348
373
  - **`--paused-days <n>`** — Custom threshold for "paused" status (default: 180 days)
349
374
 
350
- ## [0.7.2] - 2026-06-XX
375
+ ## [0.7.2] - 2026-05-17
351
376
  ### Fixed
352
377
  - `scan` command: `bmad-plus scan <path>` now accepts a positional path argument
353
378
 
354
- ## [0.7.1] — 2026-05-17
379
+ ## [0.7.1] - 2026-05-17
355
380
 
356
381
  ### 🛠️ CLI Commands & Guardrails Injection
357
382
 
@@ -370,7 +395,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
370
395
  - **Karpathy Guardrails injection** — 4 principles auto-injected into CLAUDE.md/GEMINI.md/AGENTS.md when Memory pack is installed
371
396
  - **i18n** — Memory + Dev Studio keys for EN and FR (other languages use fallback)
372
397
 
373
- ## [0.7.0] — 2026-05-17
398
+ ## [0.7.0] - 2026-05-17
374
399
 
375
400
  ### 🧠 Pack Memory — Persistent Brain
376
401
 
@@ -390,7 +415,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
390
415
  - IDE config generation: Zecher agent listed when memory pack selected
391
416
  - Install guide: memory-specific examples (Zecher commands)
392
417
 
393
- ## [0.6.0] — 2026-05-17
418
+ ## [0.6.0] - 2026-05-17
394
419
 
395
420
  ### 🏗️ Pack Dev Studio — Full Software Development Lifecycle
396
421
 
@@ -413,7 +438,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
413
438
  - **install.js** — IDE configs now include 6 Torah-named agents when Dev Studio is selected
414
439
  - **Version reference** — Updated from BMAD-METHOD v6.2.0 to v6.6.0
415
440
 
416
- ## [0.5.0] — 2026-05-17
441
+ ## [0.5.0] - 2026-05-17
417
442
 
418
443
  > **Correction (2026-07-15)** — as published, this section announced "38 expert compliance agents"
419
444
  > and "85 Reference Files". Both were false on the day they were written, so they are corrected
@@ -453,7 +478,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
453
478
 
454
479
  ---
455
480
 
456
- ## [0.4.4] — 2026-05-17
481
+ ## [0.4.4] - 2026-05-17
457
482
 
458
483
  ### 🔧 Encoding Fix + i18n Complete + Tests
459
484
 
@@ -469,7 +494,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
469
494
 
470
495
  ---
471
496
 
472
- ## [0.4.3] — 2026-05-17
497
+ ## [0.4.3] - 2026-05-17
473
498
 
474
499
  ### 🔧 CLI Commands + Security Hardening + UX Enhancements
475
500
 
@@ -497,7 +522,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
497
522
 
498
523
  ---
499
524
 
500
- ## [0.4.2] — 2026-03-19
525
+ ## [0.4.2] - 2026-03-19
501
526
 
502
527
  ### 📦 Public Packs — SEO/Backup/Animated now in npm
503
528
 
@@ -508,7 +533,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
508
533
 
509
534
  ---
510
535
 
511
- ## [0.4.1] — 2026-03-19
536
+ ## [0.4.1] - 2026-03-19
512
537
 
513
538
  ### 🌐 CLI Internationalization + DevOps Hardening
514
539
 
@@ -526,7 +551,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
526
551
 
527
552
  ---
528
553
 
529
- ## [0.4.0] — 2026-03-19
554
+ ## [0.4.0] - 2026-03-19
530
555
 
531
556
  ### 🏢 SEO Engine — Enterprise Extensions (Sprint 4)
532
557
 
@@ -542,7 +567,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
542
567
 
543
568
  ---
544
569
 
545
- ## [0.3.3] — 2026-03-19
570
+ ## [0.3.3] - 2026-03-19
546
571
 
547
572
  ### 🧪 SEO Engine — Quality & Security (Sprint 3)
548
573
 
@@ -554,7 +579,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
554
579
 
555
580
  ---
556
581
 
557
- ## [0.3.2] — 2026-03-19
582
+ ## [0.3.2] - 2026-03-19
558
583
 
559
584
  ### 📊 SEO Engine — Reports, Competitor & Hreflang (Sprint 2)
560
585
 
@@ -565,7 +590,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
565
590
 
566
591
  ---
567
592
 
568
- ## [0.3.1] — 2026-03-19
593
+ ## [0.3.1] - 2026-03-19
569
594
 
570
595
  ### 🔧 SEO Engine Enhancements (Sprint 1)
571
596
 
@@ -577,7 +602,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
577
602
 
578
603
  ---
579
604
 
580
- ## [0.3.0] — 2026-03-19
605
+ ## [0.3.0] - 2026-03-19
581
606
 
582
607
  ### 🚀 SEO Engine v2.0 — Complete Rewrite
583
608
 
@@ -614,7 +639,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
614
639
 
615
640
  ---
616
641
 
617
- ## [0.2.0] — 2026-03-18
642
+ ## [0.2.0] - 2026-03-18
618
643
 
619
644
  ### 🔀 Oveanet Fusion
620
645
 
@@ -635,7 +660,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
635
660
 
636
661
  ---
637
662
 
638
- ## [0.1.3] — 2026-03-18
663
+ ## [0.1.3] - 2026-03-18
639
664
 
640
665
  ### 🔧 Cross-Platform Fix
641
666
 
@@ -645,7 +670,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
645
670
 
646
671
  ---
647
672
 
648
- ## [0.1.2] — 2026-03-17
673
+ ## [0.1.2] - 2026-03-17
649
674
 
650
675
  ### 📝 Credits Update
651
676
 
@@ -655,7 +680,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
655
680
 
656
681
  ---
657
682
 
658
- ## [0.1.1] — 2026-03-17
683
+ ## [0.1.1] - 2026-03-17
659
684
 
660
685
  ### 👤 Author Attribution
661
686
 
@@ -665,7 +690,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
665
690
 
666
691
  ---
667
692
 
668
- ## [0.1.0] — 2026-03-17
693
+ ## [0.1.0] - 2026-03-17
669
694
 
670
695
  ### 🎉 Initial Release — Foundation
671
696
 
@@ -733,3 +758,39 @@ First release of BMAD+, an augmented fork of BMAD-METHOD v6.2.0.
733
758
  ---
734
759
 
735
760
  *For earlier history, see the upstream [BMAD-METHOD CHANGELOG](https://github.com/bmad-code-org/BMAD-METHOD/blob/main/CHANGELOG.md).*
761
+
762
+ <!-- Version links point to the npm release page. The public repository is a single snapshot, so per-version compare links are not available. Not published on npm: 0.15.0, 0.11.0, 0.10.0, 0.1.2. -->
763
+
764
+ [0.17.1]: https://www.npmjs.com/package/bmad-plus/v/0.17.1
765
+ [0.17.0]: https://www.npmjs.com/package/bmad-plus/v/0.17.0
766
+ [0.16.0]: https://www.npmjs.com/package/bmad-plus/v/0.16.0
767
+ [0.14.0]: https://www.npmjs.com/package/bmad-plus/v/0.14.0
768
+ [0.13.0]: https://www.npmjs.com/package/bmad-plus/v/0.13.0
769
+ [0.12.2]: https://www.npmjs.com/package/bmad-plus/v/0.12.2
770
+ [0.12.1]: https://www.npmjs.com/package/bmad-plus/v/0.12.1
771
+ [0.12.0]: https://www.npmjs.com/package/bmad-plus/v/0.12.0
772
+ [0.9.2]: https://www.npmjs.com/package/bmad-plus/v/0.9.2
773
+ [0.9.1]: https://www.npmjs.com/package/bmad-plus/v/0.9.1
774
+ [0.9.0]: https://www.npmjs.com/package/bmad-plus/v/0.9.0
775
+ [0.8.0]: https://www.npmjs.com/package/bmad-plus/v/0.8.0
776
+ [0.7.5]: https://www.npmjs.com/package/bmad-plus/v/0.7.5
777
+ [0.7.4]: https://www.npmjs.com/package/bmad-plus/v/0.7.4
778
+ [0.7.3]: https://www.npmjs.com/package/bmad-plus/v/0.7.3
779
+ [0.7.2]: https://www.npmjs.com/package/bmad-plus/v/0.7.2
780
+ [0.7.1]: https://www.npmjs.com/package/bmad-plus/v/0.7.1
781
+ [0.7.0]: https://www.npmjs.com/package/bmad-plus/v/0.7.0
782
+ [0.6.0]: https://www.npmjs.com/package/bmad-plus/v/0.6.0
783
+ [0.5.0]: https://www.npmjs.com/package/bmad-plus/v/0.5.0
784
+ [0.4.4]: https://www.npmjs.com/package/bmad-plus/v/0.4.4
785
+ [0.4.3]: https://www.npmjs.com/package/bmad-plus/v/0.4.3
786
+ [0.4.2]: https://www.npmjs.com/package/bmad-plus/v/0.4.2
787
+ [0.4.1]: https://www.npmjs.com/package/bmad-plus/v/0.4.1
788
+ [0.4.0]: https://www.npmjs.com/package/bmad-plus/v/0.4.0
789
+ [0.3.3]: https://www.npmjs.com/package/bmad-plus/v/0.3.3
790
+ [0.3.2]: https://www.npmjs.com/package/bmad-plus/v/0.3.2
791
+ [0.3.1]: https://www.npmjs.com/package/bmad-plus/v/0.3.1
792
+ [0.3.0]: https://www.npmjs.com/package/bmad-plus/v/0.3.0
793
+ [0.2.0]: https://www.npmjs.com/package/bmad-plus/v/0.2.0
794
+ [0.1.3]: https://www.npmjs.com/package/bmad-plus/v/0.1.3
795
+ [0.1.1]: https://www.npmjs.com/package/bmad-plus/v/0.1.1
796
+ [0.1.0]: https://www.npmjs.com/package/bmad-plus/v/0.1.0
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # BMAD+
2
2
 
3
- [![Version](https://img.shields.io/badge/version-0.17.0-blue)](https://www.npmjs.com/package/bmad-plus)
3
+ [![Version](https://img.shields.io/badge/version-0.17.1-blue)](https://www.npmjs.com/package/bmad-plus)
4
4
 
5
- **Version 0.17.0** · Node.js `>=20.0.0` · MIT
5
+ **Version 0.17.1** · Node.js `>=20.0.0` · MIT
6
6
 
7
7
  Project-local AI development workflows with clear roles, shared context, safe updates and coding-tool adapters
8
8
 
@@ -35,7 +35,7 @@ Run the installer. Select the adapters for the AI tools you use and the packs yo
35
35
  **In your project terminal:**
36
36
 
37
37
  ```sh
38
- npx bmad-plus@0.17.0 install
38
+ npx bmad-plus@0.17.1 install
39
39
  ```
40
40
 
41
41
  The installer creates the agent instructions, shared project spine and selected tool adapters. Optional packs may need additional runtimes or API access.
@@ -171,20 +171,20 @@ Read AGENTS.md and the available project memory. Summarize the last verified sta
171
171
 
172
172
  Expected result: a short, evidence-based restart. Project notes are useful context and still need to be checked against the current work.
173
173
 
174
- ## What’s new in 0.17.0
174
+ ## What’s new in 0.17.1
175
175
 
176
- Reliable acceptance pages and clearer release checks
176
+ Safer installs and cleaner updates
177
177
 
178
- Acceptance pages now prevent silent answer loss and empty exports, recipes build by their own identifier, and project release checks work directly with Node on Windows. Guides add practical prompts for reading results and preserving project context.
178
+ Installing over a different version now stops and points to update, re-installs keep your settings, and updates remove files a version no longer ships while keeping a restorable backup. Some install behaviors changed; review your scripts before rerunning them.
179
179
 
180
- - Pages served locally or opened as files keep their steps hidden until a run starts. Recording, finishing or exporting before that point produces a visible message instead of losing answers or downloading null.json.
181
- - uat build resolves the specification by its id even when the filename differs. The shipped example-uat-spec.json can be built with uat build example-1.0.0.
182
- - The progress bar shows each step’s state, the tester and the finish date. Its segments jump to the corresponding step, and commands in action lines copy on click.
183
- - The skill includes a recipe-presence check and a release gate, plus a complete example with witnesses, a writing step and read-only confirmation. Wire the checks into your own project; the installer does not add lifecycle hooks to user projects.
184
- - A blocked expectation needs a replay or an explicit accept-risk decision naming its owner. Classifying an unobserved check does not establish success, and a passed writing step still needs independent evidence.
185
- - The release gate calls the CLI through Node instead of spawning an npx.cmd shim. A missing CLI or a gate that could not run produces an error, never a passing verdict.
186
- - The skill uses uat.mode consistently. An updated project with no uat block remains advisory, and the installer’s test-environment question is translated into all ten installer languages.
187
- - English, French, Spanish and German guides share the reviewed release notes and seven examples, including Zecher memory handoffs and acceptance-result review. The official public GitHub source is linked from the site; distribution checks exclude maintainer-only adapters.
180
+ - install refuses to overwrite a different installed version. A downgrade is refused; for an upgrade, run bmad-plus update, which keeps backups and restorable receipts. Re-installing the same version only adds missing files.
181
+ - Re-installing keeps your _bmad/config.yaml settings and adds only missing defaults. The manifest and configuration are written atomically.
182
+ - --packs and --tools add to the previous installation instead of replacing it. An unknown pack or tool ID fails before any write and lists the valid IDs.
183
+ - update deletes unchanged files that the new version no longer ships, backs them up in the update receipt and restores them with --restore. Files you edited are kept and reported.
184
+ - A project lock left by a crashed process is taken over automatically when its owner is provably no longer running on this machine; doctor reports other stale locks with the manual remedy.
185
+ - Without a terminal, installs use --lang, then the system locale, then English. --yes with no detected AI tool writes no adapter files. uninstall accepts -d/--directory.
186
+ - The npm package no longer includes maintainer release scripts. OSINT and Shield carry legal and AI-generated-output notices; Shadow is described as governed public-source research.
187
+ - Translated READMEs mirror the public README, which adds a non-affiliation notice and a factual comparison. The website shows the install command up front and supports a dark color scheme.
188
188
 
189
189
  ## Version History
190
190
 
@@ -192,21 +192,25 @@ These dates identify reviewed CHANGELOG notes, not npm publication dates. The we
192
192
 
193
193
  | Version | Release-notes date | Reviewed summary |
194
194
  | --- | --- | --- |
195
+ | 0.17.1 | 2026-09-24 | Installing over a different version now stops and points to update, re-installs keep your settings, and updates remove files a version no longer ships while keeping a restorable backup. Some install behaviors changed; review your scripts before rerunning them. |
195
196
  | 0.17.0 | 2026-09-22 | Acceptance pages now prevent silent answer loss and empty exports, recipes build by their own identifier, and project release checks work directly with Node on Windows. Guides add practical prompts for reading results and preserving project context. |
196
197
  | 0.16.0 | 2026-09-16 | A delivery now produces a step-by-step page a person plays, and their run comes back as evidence the agents read, classify and gate on. This release also carries what 0.15.0 had prepared and never shipped: durable Nexus execution, evidence-ranked memory and scored checks for every pack. |
197
- | 0.14.0 | 2026-09-09 | Dev Studio gains complete instructions and verifiable context loading; release documentation follows the published package. |
198
198
 
199
199
  [Release history and update guide](https://bmad-plus.rochetta.fr/docs/#changelog) · [All published npm versions](https://www.npmjs.com/package/bmad-plus?activeTab=versions)
200
200
 
201
201
  ---
202
202
 
203
- ## 📄 License
203
+ ## License
204
204
 
205
205
  MIT — Based on [BMAD-METHOD](https://github.com/bmad-code-org/BMAD-METHOD) (MIT)
206
206
 
207
- BMAD+ is an independent derivative, not an official BMad Code, LLC release or endorsement.
207
+ BMAD+ is an independent community project derived from BMAD-METHOD (MIT) by BMad Code, LLC. It is not affiliated with, endorsed by or certified by BMad Code, LLC. BMad™ and BMad Method™ are trademarks of BMad Code, LLC; see the [BMad trademark guidelines](https://github.com/bmad-code-org/BMAD-METHOD/blob/main/TRADEMARK.md).
208
208
  Bundled source attributions and terms: [Third-party notices](THIRD-PARTY-LICENSES.md).
209
209
 
210
+ The OSINT pack is governed: researching a named person requires a recorded purpose and legal basis. See the [OSINT legal notice](osint-agent-package/skills/bmad-osint-investigate/osint/references/gdpr-osint.md).
211
+
212
+ Translations: [Français](readme-international/README.fr.md) · [Español](readme-international/README.es.md) · [Deutsch](readme-international/README.de.md)
213
+
210
214
  ### Credits
211
215
 
212
216
  **Creator**
@@ -223,7 +227,3 @@ Bundled source attributions and terms: [Third-party notices](THIRD-PARTY-LICENSE
223
227
  - **OSINT Pipeline** based on [smixs/osint-skill](https://github.com/smixs/osint-skill) (MIT)
224
228
  - **Apify integration** — OSINT helper and inspiration from [Apify agent skills](https://github.com/apify/agent-skills) (upstream declares Apache-2.0; see notices)
225
229
  - **Karpathy Guardrails** — Memory Pack adaptation of [community guidelines by forrestchang](https://github.com/multica-ai/andrej-karpathy-skills), inspired by Andrej Karpathy (MIT declared upstream)
226
-
227
- **Tools & Infrastructure**
228
- - [Evolution API](https://github.com/EvolutionAPI/evolution-api) — WhatsApp notifications for upstream monitoring
229
- - [Gemini API](https://ai.google.dev/) — AI analysis for upstream change classification
package/SECURITY.md CHANGED
@@ -14,7 +14,15 @@ and in the [release history](https://bmad-plus.rochetta.fr/docs/#releases).
14
14
 
15
15
  If you discover a security vulnerability in BMAD+, please report it responsibly:
16
16
 
17
- ### 📧 Contact
17
+ ### 🔒 Preferred: GitHub private vulnerability reporting
18
+
19
+ Use **[Report a vulnerability](https://github.com/lrochetta/BMAD-PLUS/security/advisories/new)**
20
+ (repository *Security* tab → *Report a vulnerability*). The report stays private
21
+ between you and the maintainer, and the fix and advisory are coordinated there.
22
+
23
+ ### 📧 Fallback: email
24
+
25
+ If you cannot use GitHub private reporting:
18
26
 
19
27
  **Email:** [l.rochetta@gmail.com](mailto:l.rochetta@gmail.com)
20
28
 
@@ -1,5 +1,18 @@
1
1
  # 🔍 OSINT Agent Package — BMAD Compatible
2
2
 
3
+ > [!WARNING]
4
+ > **Avis juridique et éthique — à lire avant toute utilisation / Legal & ethics notice**
5
+ >
6
+ > - **Base légale obligatoire (RGPD art. 6).** Toute collecte ou analyse de données sur une personne identifiable est un traitement de données personnelles : il faut une base légale documentée (intérêt légitime mis en balance, obligation légale, mission d'intérêt public…) *avant* de lancer une investigation. La consigner dans [`lawful-basis-record.md`](skills/bmad-osint-investigate/osint/assets/lawful-basis-record.md).
7
+ > - **Données sensibles (RGPD art. 9).** Opinions politiques, religion, santé, orientation sexuelle, données biométriques, etc. sont interdites de traitement sauf exception de l'art. 9(2). Le psychoprofilage peut *inférer* ce type de données : ne pas le faire sans base légale explicite.
8
+ > - **Pas de profilage de particuliers sans base légale.** Aucun ciblage, surveillance ou profilage de personnes privées (ex-conjoint, voisin, salarié, candidat…) par curiosité ou pour harceler. Les personnalités publiques ne sont couvertes que pour leur rôle public.
9
+ > - **Conditions d'utilisation des plateformes.** Le scraping (Apify, LinkedIn, Instagram, Facebook, TikTok…) peut violer les CGU des plateformes et le droit local ; vérifier avant usage.
10
+ > - **Responsabilité de l'utilisateur.** Vous êtes le responsable de traitement : BMAD+ fournit un outil, pas une autorisation. Le résultat est généré par IA, peut être faux et doit être vérifié par un humain avant toute décision.
11
+ >
12
+ > Cadre de référence : [`gdpr-osint.md`](skills/bmad-osint-investigate/osint/references/gdpr-osint.md). La porte de conformité intégrée à l'agent (« Phase −1 — Lawful Basis Gate » du `SKILL.md`, qui refuse toute investigation nominative sans base légale) reste active et ne doit pas être contournée.
13
+ >
14
+ > *EN — You need a documented GDPR Art. 6 lawful basis (and an Art. 9(2) exception for special-category data) before investigating anyone; respect platform ToS; never profile private individuals without a legal basis; you, the user, are the data controller and bear full responsibility.*
15
+
3
16
  Agent d'intelligence OSINT pour les installations BMAD. De un nom ou pseudo à un dossier complet avec psychoprofil, parcours professionnel et grades de confiance.
4
17
 
5
18
  ## Features
@@ -1,5 +1,18 @@
1
1
  # 🔑 Configuration des Clés API
2
2
 
3
+ > [!WARNING]
4
+ > **Avis juridique et éthique — à lire avant toute utilisation / Legal & ethics notice**
5
+ >
6
+ > - **Base légale obligatoire (RGPD art. 6).** Toute collecte ou analyse de données sur une personne identifiable est un traitement de données personnelles : il faut une base légale documentée (intérêt légitime mis en balance, obligation légale, mission d'intérêt public…) *avant* de lancer une investigation. La consigner dans [`lawful-basis-record.md`](skills/bmad-osint-investigate/osint/assets/lawful-basis-record.md).
7
+ > - **Données sensibles (RGPD art. 9).** Opinions politiques, religion, santé, orientation sexuelle, données biométriques, etc. sont interdites de traitement sauf exception de l'art. 9(2). Le psychoprofilage peut *inférer* ce type de données : ne pas le faire sans base légale explicite.
8
+ > - **Pas de profilage de particuliers sans base légale.** Aucun ciblage, surveillance ou profilage de personnes privées (ex-conjoint, voisin, salarié, candidat…) par curiosité ou pour harceler. Les personnalités publiques ne sont couvertes que pour leur rôle public.
9
+ > - **Conditions d'utilisation des plateformes.** Le scraping (Apify, LinkedIn, Instagram, Facebook, TikTok…) peut violer les CGU des plateformes et le droit local ; vérifier avant usage.
10
+ > - **Responsabilité de l'utilisateur.** Vous êtes le responsable de traitement : BMAD+ fournit un outil, pas une autorisation. Le résultat est généré par IA, peut être faux et doit être vérifié par un humain avant toute décision.
11
+ >
12
+ > Cadre de référence : [`gdpr-osint.md`](skills/bmad-osint-investigate/osint/references/gdpr-osint.md). La porte de conformité intégrée à l'agent (« Phase −1 — Lawful Basis Gate » du `SKILL.md`, qui refuse toute investigation nominative sans base légale) reste active et ne doit pas être contournée.
13
+ >
14
+ > *EN — You need a documented GDPR Art. 6 lawful basis (and an Art. 9(2) exception for special-category data) before investigating anyone; respect platform ToS; never profile private individuals without a legal basis; you, the user, are the data controller and bear full responsibility.*
15
+
3
16
  Ce guide explique comment configurer les clés API pour l'agent OSINT.
4
17
  **Tu n'as besoin que d'UNE SEULE clé pour démarrer.** Plus tu en configures, plus l'agent est puissant.
5
18
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-plus",
4
- "version": "0.17.0",
4
+ "version": "0.17.1",
5
5
  "description": "Project-local AI development workflows with clear roles, shared context, safe updates and coding-tool adapters",
6
6
  "homepage": "https://bmad-plus.rochetta.fr",
7
7
  "keywords": [
@@ -25,7 +25,13 @@
25
25
  "bmad-plus": "tools/bmad-plus-npx.js"
26
26
  },
27
27
  "files": [
28
- "tools",
28
+ "tools/bmad-plus-npx.js",
29
+ "tools/cli",
30
+ "tools/build/adapters.config.js",
31
+ "tools/build/generate-adapters.js",
32
+ "tools/build/generate.js",
33
+ "tools/build/module.template.yaml",
34
+ "tools/build/pack-delivery.js",
29
35
  "src/bmad-plus",
30
36
  "osint-agent-package",
31
37
  "readme-international",
@@ -43,14 +49,17 @@
43
49
  "build": "node tools/build/generate.js --out tools/cli/lib/packs.js --module-out src/bmad-plus/module.yaml",
44
50
  "build:check": "node tools/build/generate.js --check",
45
51
  "check:counts": "node tools/build/check-counts.js",
52
+ "check:counts:full": "jest --coverage=false --silent --json --outputFile=coverage/jest-report.json && node tools/build/check-counts.js --jest-report coverage/jest-report.json",
46
53
  "uat:spec": "node src/bmad-plus/skills/bmad-plus-uat/templates/uat-spec-present.mjs --dir recettes",
47
54
  "uat:gate": "node src/bmad-plus/skills/bmad-plus-uat/templates/uat-release-gate.mjs --dir recettes --cli tools/cli/bmad-plus-cli.js",
48
55
  "lint": "eslint tools/ tests/",
49
56
  "format": "prettier --write \"tools/**/*.js\" \"tests/**/*.js\"",
50
57
  "format:check": "prettier --check \"tools/**/*.js\" \"tests/**/*.js\"",
51
58
  "test": "jest --coverage",
59
+ "test:parallel": "jest --coverage=false --testPathIgnorePatterns \"(nexus(-cli|-process)?|memory-outcomes|upstream-candidate|npm-runner)\\.test\\.js$\"",
60
+ "test:serial": "jest --coverage=false --runInBand --testPathPatterns \"(nexus(-cli|-process)?|memory-outcomes|upstream-candidate|npm-runner)\\.test\\.js$\"",
52
61
  "test:install-contract": "node tools/build/check-install-contract.js",
53
- "prepare": "husky || true",
62
+ "prepare": "node -e \"try{require('node:child_process').execSync('husky',{stdio:'inherit'})}catch{console.warn('WARNING: husky did not install the git hooks, so the pre-push release gate is inactive in this checkout. Run npx husky to retry.')}\"",
54
63
  "uninstall:bmad": "node tools/cli/bmad-plus-cli.js uninstall"
55
64
  },
56
65
  "dependencies": {
@@ -66,29 +75,42 @@
66
75
  },
67
76
  "overrides": {
68
77
  "@istanbuljs/load-nyc-config": {
69
- "js-yaml": "4.2.0"
78
+ "js-yaml": "4.3.2"
70
79
  }
71
80
  },
72
81
  "publishConfig": {
73
82
  "access": "public"
74
83
  },
75
84
  "jest": {
85
+ "roots": [
86
+ "<rootDir>/tests",
87
+ "<rootDir>/tools"
88
+ ],
76
89
  "testPathIgnorePatterns": [
77
90
  "/node_modules/",
78
91
  "/website/",
79
92
  "/evals/"
80
93
  ],
81
94
  "collectCoverage": true,
95
+ "collectCoverageFrom": [
96
+ "tools/**/*.js",
97
+ "!tools/build/generated-adapters/**"
98
+ ],
82
99
  "coverageDirectory": "coverage",
83
100
  "moduleNameMapper": {
84
101
  "^@clack/prompts$": "<rootDir>/tests/__mocks__/clack-prompts.js"
85
102
  },
86
103
  "coverageThreshold": {
87
104
  "global": {
88
- "branches": 35,
89
- "functions": 40,
90
- "lines": 40,
91
- "statements": 40
105
+ "branches": 65,
106
+ "functions": 70,
107
+ "lines": 70,
108
+ "statements": 70
109
+ },
110
+ "./tools/cli/commands/install.js": {
111
+ "lines": 65,
112
+ "statements": 65,
113
+ "functions": 45
92
114
  },
93
115
  "./tools/cli/commands/doctor.js": {
94
116
  "lines": 60,