bmad-plus 0.12.1 → 0.13.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 (176) hide show
  1. package/CHANGELOG.md +637 -580
  2. package/README.md +123 -120
  3. package/osint-agent-package/agents/osint-investigator.md +12 -0
  4. package/osint-agent-package/skills/bmad-osint-investigate/osint/SKILL.md +491 -482
  5. package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/dossier-template.md +126 -126
  6. package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/lawful-basis-record.md +48 -48
  7. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/content-extraction.md +100 -100
  8. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/gdpr-osint.md +48 -48
  9. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/platforms.md +130 -130
  10. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/psychoprofile.md +69 -69
  11. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/tools.md +281 -281
  12. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/mcp-client.py +136 -136
  13. package/package.json +106 -91
  14. package/readme-international/README.de.md +625 -594
  15. package/readme-international/README.es.md +642 -611
  16. package/readme-international/README.fr.md +640 -609
  17. package/src/bmad-plus/agents/agent-orchestrator/SKILL.md +2 -0
  18. package/src/bmad-plus/agents/agent-shadow/SKILL.md +18 -0
  19. package/src/bmad-plus/data/role-triggers.yaml +52 -0
  20. package/src/bmad-plus/module.yaml +333 -283
  21. package/src/bmad-plus/packs/pack-animated/animated-website-agent.md +325 -325
  22. package/src/bmad-plus/packs/pack-animated/templates/animated-website-workflow.md +55 -55
  23. package/src/bmad-plus/packs/pack-backup/backup-agent.md +71 -71
  24. package/src/bmad-plus/packs/pack-backup/templates/backup-workflow.md +51 -51
  25. package/src/bmad-plus/packs/pack-dev-studio/README.md +162 -162
  26. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/analyst-agent.md +73 -73
  27. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/document-project.md +61 -61
  28. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/domain-research.md +95 -95
  29. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/market-research.md +95 -95
  30. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/prfaq.md +134 -134
  31. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/product-brief.md +80 -80
  32. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/tech-writer-agent.md +73 -73
  33. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/technical-research.md +95 -95
  34. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/architect-agent.md +73 -73
  35. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-architecture.md +73 -73
  36. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-epics-stories.md +92 -92
  37. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/generate-project-context.md +80 -80
  38. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/implementation-readiness.md +90 -90
  39. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01-init.md +153 -153
  40. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01b-continue.md +173 -173
  41. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-02-context.md +224 -224
  42. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-03-starter.md +329 -329
  43. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-04-decisions.md +318 -318
  44. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-05-patterns.md +359 -359
  45. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-06-structure.md +379 -379
  46. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-07-validation.md +361 -361
  47. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-08-complete.md +81 -81
  48. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/checkpoint-preview.md +67 -67
  49. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-01-gather-context.md +85 -85
  50. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-02-review.md +35 -35
  51. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-03-triage.md +49 -49
  52. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-04-present.md +131 -131
  53. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review.md +89 -89
  54. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/correct-course.md +300 -300
  55. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/create-story.md +428 -428
  56. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-agent.md +73 -73
  57. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story-checklist.md +80 -80
  58. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story.md +484 -484
  59. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/investigate.md +193 -193
  60. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/qa-e2e-tests.md +175 -175
  61. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/quick-dev.md +110 -110
  62. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/retrospective.md +1511 -1511
  63. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-planning.md +298 -298
  64. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-status.md +296 -296
  65. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-prd.md +29 -29
  66. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-ux-design.md +74 -74
  67. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/edit-prd.md +29 -29
  68. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/pm-agent.md +73 -73
  69. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/prd.md +89 -89
  70. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/ux-designer-agent.md +73 -73
  71. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/validate-prd.md +29 -29
  72. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/advanced-elicitation.md +141 -141
  73. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/adversarial-review.md +37 -37
  74. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/bmad-help.md +75 -75
  75. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/brainstorming.md +6 -6
  76. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/customize.md +110 -110
  77. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/distillator.md +176 -176
  78. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/edge-case-hunter.md +67 -67
  79. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-prose.md +86 -86
  80. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-structure.md +179 -179
  81. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/index-docs.md +66 -66
  82. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/party-mode.md +127 -127
  83. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/shard-doc.md +105 -105
  84. package/src/bmad-plus/packs/pack-dev-studio/dev-studio-orchestrator.md +120 -120
  85. package/src/bmad-plus/packs/pack-dev-studio/shared/architecture-decision-template.md +12 -12
  86. package/src/bmad-plus/packs/pack-dev-studio/shared/bwml-spec.md +328 -328
  87. package/src/bmad-plus/packs/pack-dev-studio/shared/module-help.csv +32 -32
  88. package/src/bmad-plus/packs/pack-dev-studio/upstream-sync.yaml +81 -81
  89. package/src/bmad-plus/packs/pack-seo/SKILL.md +171 -171
  90. package/src/bmad-plus/packs/pack-seo/checklist.md +140 -140
  91. package/src/bmad-plus/packs/pack-seo/pagespeed-playbook.md +320 -320
  92. package/src/bmad-plus/packs/pack-seo/ref/audit-schema.json +187 -187
  93. package/src/bmad-plus/packs/pack-seo/ref/cwv-thresholds.md +87 -87
  94. package/src/bmad-plus/packs/pack-seo/ref/eeat-criteria.md +123 -123
  95. package/src/bmad-plus/packs/pack-seo/ref/geo-signals.md +167 -167
  96. package/src/bmad-plus/packs/pack-seo/ref/hreflang-rules.md +153 -153
  97. package/src/bmad-plus/packs/pack-seo/ref/quality-gates.md +133 -133
  98. package/src/bmad-plus/packs/pack-seo/ref/schema-catalog.md +91 -91
  99. package/src/bmad-plus/packs/pack-seo/ref/schema-templates.json +356 -356
  100. package/src/bmad-plus/packs/pack-seo/requirements.txt +17 -0
  101. package/src/bmad-plus/packs/pack-seo/scripts/seo_apis.py +456 -0
  102. package/src/bmad-plus/packs/pack-seo/scripts/seo_crawl.py +359 -0
  103. package/src/bmad-plus/packs/pack-seo/scripts/seo_fetch.py +303 -0
  104. package/src/bmad-plus/packs/pack-seo/scripts/seo_parse.py +255 -0
  105. package/src/bmad-plus/packs/pack-seo/scripts/seo_report.py +409 -0
  106. package/src/bmad-plus/packs/pack-seo/scripts/seo_screenshot.py +202 -0
  107. package/src/bmad-plus/packs/pack-seo/seo-chief.md +294 -294
  108. package/src/bmad-plus/packs/pack-seo/seo-judge.md +241 -241
  109. package/src/bmad-plus/packs/pack-seo/seo-scout.md +171 -171
  110. package/src/bmad-plus/packs/pack-seo/templates/seo-audit-workflow.md +241 -241
  111. package/src/bmad-plus/packs/pack-shield/README.md +6 -6
  112. package/src/bmad-plus/packs/pack-shield/SKILL.md +2 -2
  113. package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/csrd-agent.md +11 -11
  114. package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/section508-agent.md +11 -11
  115. package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/wcag-agent.md +11 -11
  116. package/src/bmad-plus/packs/pack-shield/categories/ai-governance/eu-ai-act-agent.md +11 -11
  117. package/src/bmad-plus/packs/pack-shield/categories/ai-governance/iso42001-agent.md +11 -11
  118. package/src/bmad-plus/packs/pack-shield/categories/ai-governance/nist-ai-rmf-agent.md +11 -11
  119. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/cis-controls-agent.md +11 -11
  120. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/ism-agent.md +11 -11
  121. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/iso27001-agent.md +11 -11
  122. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nis2-agent.md +11 -11
  123. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nist-800-53-agent.md +11 -11
  124. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nist-csf-agent.md +11 -11
  125. package/src/bmad-plus/packs/pack-shield/categories/defense-export/cmmc-agent.md +11 -11
  126. package/src/bmad-plus/packs/pack-shield/categories/defense-export/ear-agent.md +11 -11
  127. package/src/bmad-plus/packs/pack-shield/categories/defense-export/itar-agent.md +11 -11
  128. package/src/bmad-plus/packs/pack-shield/categories/defense-export/tsa-agent.md +11 -11
  129. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/dora-agent.md +11 -11
  130. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/fedramp-agent.md +11 -11
  131. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/hipaa-agent.md +11 -11
  132. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/pci-dss-agent.md +11 -11
  133. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/soc2-agent.md +11 -11
  134. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/swift-csp-agent.md +11 -11
  135. package/src/bmad-plus/packs/pack-shield/shield-orchestrator.md +1 -1
  136. package/src/bmad-plus/skills/bmad-plus-autopilot/SKILL.md +1 -1
  137. package/tools/bmad-plus-npx.js +4 -2
  138. package/tools/build/adapters.config.js +60 -51
  139. package/tools/build/check-counts.js +626 -0
  140. package/tools/build/check-install-contract.js +298 -0
  141. package/tools/build/generate-adapters.js +252 -56
  142. package/tools/build/generate.js +187 -10
  143. package/tools/build/generated-adapters/.codex/AGENTS.md +20 -7
  144. package/tools/build/generated-adapters/.cursor/rules/bmad-plus.mdc +20 -7
  145. package/tools/build/generated-adapters/.opencode/AGENTS.md +20 -7
  146. package/tools/build/generated-adapters/AGENTS.md +20 -7
  147. package/tools/build/generated-adapters/CLAUDE.md +20 -7
  148. package/tools/build/generated-adapters/CONVENTIONS.md +20 -7
  149. package/tools/build/generated-adapters/GEMINI.md +20 -7
  150. package/tools/build/module.template.yaml +82 -0
  151. package/tools/cli/bmad-plus-cli.js +16 -1
  152. package/tools/cli/commands/autoconfig.js +470 -470
  153. package/tools/cli/commands/doctor.js +205 -233
  154. package/tools/cli/commands/install.js +543 -501
  155. package/tools/cli/commands/memory-journal-cmd.js +311 -311
  156. package/tools/cli/commands/memory.js +195 -195
  157. package/tools/cli/commands/scan.js +348 -348
  158. package/tools/cli/commands/uninstall.js +209 -101
  159. package/tools/cli/commands/update-check.js +31 -0
  160. package/tools/cli/commands/update-policy.js +39 -0
  161. package/tools/cli/commands/update.js +123 -134
  162. package/tools/cli/i18n.js +905 -845
  163. package/tools/cli/lib/README-memory-journal.md +125 -125
  164. package/tools/cli/lib/ide-config.js +10 -259
  165. package/tools/cli/lib/install-manifest.js +17 -0
  166. package/tools/cli/lib/installed-adapters.js +89 -0
  167. package/tools/cli/lib/npm-runner.js +177 -0
  168. package/tools/cli/lib/pack-copy.js +62 -66
  169. package/tools/cli/lib/packs.js +437 -3
  170. package/tools/cli/lib/python-provision.js +508 -508
  171. package/tools/cli/lib/stack-detect.js +102 -102
  172. package/tools/cli/lib/update-check.js +153 -0
  173. package/tools/cli/lib/update-dispatch.js +182 -0
  174. package/tools/cli/lib/update-policy.js +90 -0
  175. package/tools/cli/lib/update-transaction.js +334 -0
  176. package/tools/cli/lib/validate.js +50 -50
package/CHANGELOG.md CHANGED
@@ -1,580 +1,637 @@
1
- # Changelog
2
-
3
- All notable changes to BMAD+ will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [Unreleased]
9
-
10
- ## [0.12.1] - 2026-07-12
11
-
12
- ### Added
13
- - **Portfolio brain detection** (`memory-init.js`): brain resolution now honors, in order, the `BMAD_PLUS_BRAIN` env var a `_brain/` directory in the project dir **or any ancestor** (portfolio brain shared by sibling projects under a workspace root) → `~/.bmad-plus/brain` → `~/.claude/memory`. Previously `~/.bmad-plus/brain` always won once it existed, silently splitting memory away from an existing workspace-level brain. `.brain-link` now records a `brain_type` (`portfolio` / `bmad-global` / `claude-memory`). `resolveBrain()` is exported with 4 new unit tests; `pack-memory/shared/memory-protocol.md` documents the portfolio-brain rule.
14
-
15
- ### Fixed
16
- - **Brain detection state machine (`memory-init.js`) five defects (audit MEM-01..05 + JS-08):** the `projects/` index was written into `~/.bmad-plus/brain` unconditionally while identity/global-memory creation was skipped whenever any brain was detected, leaving a permanent identity-less "half brain" (now: idempotent `ensureGlobalBrain()` self-heals on every touch); `.brain-link` is now written on creation too (was: detection branch only — non-idempotent re-runs); brain candidates must be directories and `~/.claude/memory` must be non-empty (was: a stray *file* named `_brain` could be linked as a brain); project indexing now only targets the global brain when it is the linked brain (portfolio installs no longer write orphan entries); path hashing unified in `tools/cli/lib/path-hash.js` shared with `scan.js` (drive-letter casing no longer double-indexes projects); `initMemory` takes an injectable `homeDir` and the test suite runs against a temp home (was: every `npm test` polluted the real user brain — 454 junk entries live-confirmed); the install-time call is try/catch-wrapped so a read-only home warns instead of aborting pre-manifest. 15 unit tests. See `audit/2026-07-10/14-addendum-memory-init.md`.
17
- - **GitHub Actions red on master since v0.10.0:** `package-lock.json` was missing `@emnapi/core`/`@emnapi/runtime` entries required by npm 10 (Node 20 runners) — an npm 10 vs 11 ideal-tree divergence invisible to local (npm 11) validation, including fresh clones. Lock regenerated with `npm@10`; **CI + Platform now green on master for the first time**. New standing rule: locks are regenerated with `npx npm@10 install --package-lock-only` and validated with both npm 10 and npm 11 `ci --dry-run`.
18
- - `platform.yml`: the two adapter drift gates (`generate-adapters.js --check` and `--check --adopt`) joined the spine as blocking checks; the eval self-check job now installs its `pyyaml` dependency (it had none on the runner and failed every push).
19
- - Dependabot: removed the dead `docker` entry for `/monitor` (no Dockerfile there the update job failed every weekly cycle).
20
-
21
- ### Security — supply chain
22
- - `mcp-server/Dockerfile`: base image now **pinned by multi-arch index digest** (`python:3.11.15-slim@sha256:b27df584…`) — closes the PHASE-1 "Dockerfile digest pin" residual and picks up ~18 months of CPython security patches (3.11.9 → 3.11.15).
23
- - GitHub Actions bumped and SHA-pinned across all workflows: `checkout` v7.0.0, `setup-node` v6.4.0, `setup-python` v6.3.0.
24
- - Python pins raised: mcp-server `uvicorn` 0.49.0, `gitpython` 3.1.50, `pyyaml` 6.0.3, `requests>=2.34.2`; seo-audit-360 `requests>=2.34.2`, `beautifulsoup4` 4.15.0, `lxml` 6.1.1; Google extensions `google-auth` 2.55.1, `google-auth-oauthlib` 1.4.0, `google-analytics-data` 0.23.0, `google-api-python-client` 2.198.0. Validated in clean venvs (install + import/parse smoke).
25
-
26
- ### Changed dependency governance
27
- - npm: `eslint` 9 → 10 (flat config; `@eslint/js` now a declared devDependency — it was consumed transitively and broke under eslint 10), `js-yaml` 4 → 5.2.1 (CJS export intact, full suite green), `fs-extra` 11.3.6.
28
- - **Removed `chalk`** — declared but never imported (the CLI uses picocolors); removal beats chasing the ESM-only v5.
29
- - Declined with rationale (dependabot `ignore` rules added): `commander` 15 (ESM-only, requires Node ≥22.12; CLI is CommonJS on Node 20), fastmcp/chromadb/sentence-transformers at ALL levels (deliberate pins — breaking across minors, zero CI coverage; joint upgrade tracked as the mcp-server ML-stack modernization task), `pypdf` majors (5.x removed `PdfMerger`, used by `gamma_report.py`), docker `python` major/minor. Dependabot queue: 26+9 PRs → **0 open**.
30
-
31
- ### Verified
32
- - `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.
33
-
34
- ## [0.12.0] — 2026-07-02
35
-
36
- ### Added — Load-bearing activation (north-star Pillars 3, 4, 5)
37
- - **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).
38
- - **Pillar 3 portable via MCP:** `mcp-server/tools/memory_tools.py` exposes `memory.recall` / `memory.write` / `memory.reinforce` as MCP tools that shell out to the same `bmad mem --json` CLI (single source of truth) MCP-capable CLIs and the CLI can never diverge. Registered additively in `server.py`.
39
- - **Pillar 5 adopt mode:** `tools/build/generate-adapters.js --adopt` can generate the REAL repo-root adapters + AGENTS.md spine from the registry; hand-authored instructions live in `tools/build/adapters.config.js` and are injected so no tool loses content. `.gitattributes` pins LF on the adopted files (avoids the CRLF drift class). Root adoption is opt-in and NOT applied in this release.
40
-
41
- ### Fixed
42
- - Adapter `--check` is now EOL-insensitive; `.gitattributes` pins LF on `tools/build/**` + registry so a Windows clone doesn't false-positive drift. Verified from a **fresh clone**: `npm ci` + `npm test` (333/333) + both drift-checks green.
43
-
44
- ### Verified
45
- - `npm test` **333 passed / 16 suites**; `build:check` + `generate-adapters --check` no drift; `run.py --self-check` 3/3; edited Python parses.
46
-
47
- ## [0.11.0] — 2026-07-02
48
-
49
- ### Added Karpathy loop CLI + multi-CLI adapters (north-star Pillars 3 & 5)
50
- - **`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`.
51
- - **Multi-CLI adapter generator (Pillar 5):** `tools/build/generate-adapters.js` generates the per-CLI wrappers (CLAUDE.md, GEMINI.md, `.codex/AGENTS.md`, `.cursor/rules`, `.opencode/AGENTS.md`, CONVENTIONS.md) from `registry.yaml` — counts/names computed, never typed — with a `--check` drift gate. Generated previews live under `tools/build/generated-adapters/`. `tests/unit/generate-adapters.test.js`.
52
-
53
- ### ChangedCompliance (govern, don't cut)
54
- - **CG-02 — OSINT pack governed:** added a mandatory **Phase −1 Lawful Basis Gate** to the OSINT skill (lawful basis Art. 6, Art. 9 condition for psychoprofiles, purpose, retention, DSAR) + a lawful-basis/ROPA record template + a GDPR-OSINT reference + a governance block in the dossier template. The capability is kept in full; lawful use is now explicit and auditable. See `audit/2026-07-01/CG-RESOLUTION.md`.
55
- - **CG-01 — trademark:** `bmad-plus` name kept by owner decision.
56
-
57
- ### Verified
58
- - `npm test` **325 passed / 16 suites**; `npm run build:check` no drift; `generate-adapters.js --check` no drift.
59
-
60
- ## [0.10.0] — 2026-07-02
61
-
62
- ### Added — Platform-spine foundations (north-star Phase 2)
63
- 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.
64
-
65
- - **Registry-as-SSOT (Pillar 1) ACTIVE:** `registry.yaml` (repo root) is now the single source of truth for all 9 packs. `tools/cli/lib/packs.js` is **generated from it** (`npm run build`), no longer hand-maintained. `tools/build/generate.js` provides the generator + `npm run build:check` drift gate; `tests/unit/generate.test.js` (14 tests) proves the generated `PACKS`/`PACK_ORDER`/`EXPECTED_AGENTS` strictly equal the shipped module. This kills the 5-place pack-registry drift at its root.
66
- - **Python provisioning (Pillar 2):** `tools/cli/lib/python-provision.js` detect python≥3.11, pick uv/pipx/venv, create isolated env, install requirements, verify entry (shell-safe, testable).
67
- - **Karpathy learning layer (Pillar 3):** `tools/cli/lib/memory-journal.js` `journal.ndjson` append/recall, Elo/decayed reward update (eval+acceptance+ci), governance guard (promotions PROPOSED, never auto-applied).
68
- - **Eval harness (Pillar 4 — the moat):** `evals/` schema + Forge/Shield/Sentinel golden specs + fixtures + `run.py --self-check`, provider-neutral model backend seam.
69
- - **CI:** `.github/workflows/platform.yml` registry drift-check + eval self-check, blocking, SHA-pinned.
70
-
71
- 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`.
72
-
73
- ## [0.9.2] — 2026-07-01
74
-
75
- ### SecurityPhase 1 remediation (exploitable findings)
76
- - **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.
77
- - **SSRF hardened** (`seo_fetch.py`): fails **closed** on DNS error, blocks private/loopback/reserved/link-local IPs (incl. IPv4-mapped IPv6), re-validates every redirect hop manually.
78
- - **Stored + DOM XSS closed** (`seo_report.py`, `dashboard.html`): all audited/external values HTML-escaped in the report; dashboard renders via `textContent`/`createElement` + `addEventListener` instead of `innerHTML`/inline `onclick`.
79
- - **MCP server** (`server.py`): constant-time `hmac.compare_digest` for token + dashboard password; app assembled in module-level `create_app()` so `uvicorn server:app` runs with auth intact; dead `verify_mcp_token` removed; rate-limit map eviction.
80
- - **XXE**: `seo_crawl.py` hard-fails without `defusedxml` (no unsafe stdlib fallback).
81
-
82
- ### Supply chain
83
- - `requests>=2.32.4` (CVE-2024-35195) across all requirements files.
84
- - `PyPDF2`→`pypdf==4.3.1` (dep + consumer import in `gamma_report.py`).
85
- - `defusedxml==0.7.1` added; Dockerfile non-root user + tag pin; docker-compose off `:latest`; GitHub Actions pinned to commit SHAs; Dependabot covers pip + docker + github-actions.
86
-
87
- ### Fixed robustness
88
- - Non-destructive install (backs up existing CLAUDE/GEMINI/AGENTS.md); marker-based uninstall; IDE-scoped autoconfig; `doctor` no longer emits false "Missing agent" warnings; guarded manifest `JSON.parse`; Windows-safe project-path hashing; hardened `validateUserName`; lazy RAG model load; async gamma polling; repo-URL validation; `git_ops` path confinement.
89
-
90
- ### Notes
91
- - 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`.
92
- - Verified: `npm test` 176/176, `npm run lint` 0 errors, all edited Python parses; SEO report smoke-tested (renders + XSS escaped).
93
-
94
- ## [0.9.1] — 2026-07-01
95
-
96
- ### Fixed — Credibility (honest status)
97
- - **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`.
98
- - **Test harness repaired**: mock ESM `@clack/prompts` so Jest loads the autoconfig suite `npm test` now genuinely passes (176 tests, 10/10 suites). It did not before.
99
- - **Lint restored**: added flat `eslint.config.js` (ESLint v9); removed legacy `.eslintrc.json` + deprecated `--ext`. `npm run lint` runs with 0 errors.
100
- - **Lockfile resynced** to the correct version with full devDependency tree — `npm ci` works from a clean clone.
101
- - Publish workflow no longer masks `npm publish` failures; npm audit is blocking.
102
- - Removed hardcoded VPS IP from `mcp-server/server.py` docstring.
103
-
104
- ### Documentation — Honesty correction
105
- - Removed the unverifiable **"143 tests / 0 vulnerabilities / Score A+"** badges from README and README-DIST.
106
- - Fixed the corrupted version-history table (0.9.0/0.8.0 were duplicated).
107
- - **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.
108
-
109
- ## [0.9.0] — 2026-06-24
110
-
111
- ### Security
112
- - Full audit remediation: 64/64 findings fixed, score C- → A+
113
- - P0: Command injection eliminated (execSync spawnSync in CLI entry point)
114
- - P0: MCP Server authentication added (token-validated middleware on all endpoints)
115
- - CI/CD hardened: PAT removed, force-push eliminated, npm audit gate blocking
116
- - MCP allowlist hardened, path traversal protection, URL hostname validation
117
- - VPS IP env var, TLS deployment docs, SSRF/XXE protection
118
- - 0 npm audit vulnerabilities
119
-
120
- ### Changed
121
- - Shared PACKS module single source of truth for all 9 packs
122
- - install.js 740→300 lines: extracted memory-init.js + pack-copy.js
123
- - print() logging, time.sleep asyncio.sleep, empty catch blocks filled
124
- - Dynamic version in i18n.js (reads from package.json)
125
-
126
- ### Removed
127
- - Duplicate agents/pack-{seo,animated,backup}/ directories
128
-
129
- ### Documentation
130
- - Maker + Zecher in all config files, CHANGELOG v0.7.2 added
131
- - French README fix, version history synced to all translations
132
- - 7 audit reports in audit/ folder
133
-
134
- ### Tests
135
- - 143/143 tests passing
136
-
137
- ## [0.8.0] — 2026-06-24
138
-
139
- ### Added
140
- - 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)
141
- - `extract_frames.py` script for animated-website (263 lines, ffprobe/ffmpeg)
142
-
143
- ### Security
144
- - P0 remediation: fix command injection, path traversal, token-in-URL, wildcard hosts, error leak (Shield GRC v2.0)
145
- - CI: add npm audit gate with continue-on-error, remove silent-fail pattern
146
-
147
- ### Changed
148
- - README.de.md: full sync (+131 lines) Pack System, Autopilot, Project Structure, Credits
149
- - All Torah-named references removed from Dev Studio, module.yaml, READMEs
150
- - Dev Studio: cleaned references in orchestrator, bwml-spec, upstream-sync
151
- - process-info.md: updated (oveanet-pack not in npm package)
152
- - CI: Windows %TEMP% → tmp/ in .npmignore and CI workflow
153
- - Badge shields: version 0.7.5 0.8.0 across all 5 READMEs
154
-
155
- ### Fixed
156
- - Broken TOC anchor links across all 5 READMEs (#the-56-agents)
157
- - oveanet ↔ .agents mirror directories sync (31 files)
158
-
159
- ### Tests
160
- - 143/143 tests passing
161
-
162
- ## [0.7.5] 2026-05-17
163
-
164
- ### 🩺 Quality & Compliance
165
-
166
- ### Added
167
- - **MIT LICENSE** — Proper license file matching `package.json` declaration
168
- - **PACKS↔module.yaml sync check** — New Check 9 in `npx bmad-plus doctor` that cross-validates install.js PACKS object against module.yaml packs, preventing invisible pack bugs
169
- - **30 new unit tests** Total now 97:
170
- - `scan.js` module validation (markers, skip dirs, options)
171
- - `autoconfig.js` function checks (detectStack, analyzeStructure, calculateHealth, recommendPacks)
172
- - `memory.js` subcommand and health score validation
173
- - PACKS↔module.yaml bidirectional sync (count + key match)
174
- - LICENSE file integrity
175
- - **Global brain consolidation** — Promoted cross-project wisdom:
176
- - 1 lesson (PowerShell UTF-8 corruption)
177
- - 2 decisions (anti-regression protocol, i18n-first CLI)
178
- - 2 patterns (dual-tier memory, surgical edit protocol)
179
-
180
- ## [0.7.4] 2026-05-17
181
-
182
- ### 🧠 Smart Autoconfig
183
-
184
- ### Added
185
- - **`npx bmad-plus autoconfig`** Smart project bootstrap:
186
- - **Existing projects**: analyzes stack, structure, health; auto-selects packs; populates memory
187
- - **New projects**: interactive wizard (type + description); initializes everything
188
- - Auto-preserves existing IDE configs (`--tools none` when configs detected)
189
- - Writes `context.md` with full project analysis for agent continuity
190
- - Shows contextual recommendations ("Talk to Forge to...", "Talk to Sentinel to...")
191
-
192
- ### Fixed
193
- - `--tools none` installer crash (undefined IDE name)
194
-
195
- ## [0.7.3] — 2026-05-17
196
-
197
- ### 🎨 Scan UX Improvements
198
-
199
- ### Added
200
- - **Scan legend** Color-coded status legend displayed before the project table
201
- - **`--active-days <n>`** Custom threshold for "active" status (default: 30 days)
202
- - **`--paused-days <n>`** — Custom threshold for "paused" status (default: 180 days)
203
-
204
- ## [0.7.2] - 2026-06-XX
205
- ### Fixed
206
- - `scan` command: `bmad-plus scan <path>` now accepts a positional path argument
207
-
208
- ## [0.7.1] 2026-05-17
209
-
210
- ### 🛠️ CLI Commands & Guardrails Injection
211
-
212
- ### Added
213
- - **`npx bmad-plus scan [path]`** — Interactive project scanner
214
- - Recursive directory scan with stack auto-detection (Node.js, Rust, Python, Go, PHP, Ruby, Java)
215
- - Framework detection (Next.js, Nuxt, React, Vue, Svelte, Express, Electron, Tauri)
216
- - Status tracking (active/paused/archived based on last modified)
217
- - Interactive validation: index all, select, or skip
218
- - Auto-generates `projects-index.md` in global brain
219
- - **`npx bmad-plus memory status`** Memory health report
220
- - Shows project memory + global brain status
221
- - Entry counts, last modified dates, health score
222
- - Brain link detection
223
- - **`npx bmad-plus memory export`** Export brain as portable Markdown archive
224
- - **Karpathy Guardrails injection** — 4 principles auto-injected into CLAUDE.md/GEMINI.md/AGENTS.md when Memory pack is installed
225
- - **i18n** Memory + Dev Studio keys for EN and FR (other languages use fallback)
226
-
227
- ## [0.7.0] — 2026-05-17
228
-
229
- ### 🧠 Pack Memory — Persistent Brain
230
-
231
- ### Added
232
- - **Pack Memory** — Persistent cross-session memory system with brain detection
233
- - 🧠 **Zecher Agent** (זכר, "remembrance") Memory archivist for consolidation, project scanning, context recall
234
- - 📁 **Project Memory** (`.agents/memory/`) — decisions.md, lessons.md, patterns.md, context.md, sessions/
235
- - 🌐 **Global Brain** (`~/.bmad-plus/brain/`) Cross-project knowledge, identity, project index
236
- - 🔍 **Project Scanner** Scan directories/disks, detect stacks, interactive validation, auto-index
237
- - 🛡️ **Karpathy Guardrails** 4 behavioral principles (Think, Simplify, Surgical, Goal-driven) woven into agents
238
- - 📋 **Memory Protocol** Complete read/write rules for when agents use memory
239
- - 🔗 **Brain Detection** — Detects existing `_brain/`, `~/.claude/memory/`, links instead of overwrites
240
- - 📝 **6 templates** — decisions, lessons, patterns, context, session-handoff, identity.yaml
241
-
242
- ### Changed
243
- - CLI installer: brain detection step (4.5) with merge-safe logic
244
- - IDE config generation: Zecher agent listed when memory pack selected
245
- - Install guide: memory-specific examples (Zecher commands)
246
-
247
- ## [0.6.0] — 2026-05-17
248
-
249
- ### 🏗️ Pack Dev Studio Full Software Development Lifecycle
250
-
251
- ### Added
252
- - **Pack Dev Studio** — 6 specialized agents + 30 workflows covering the complete SDLC
253
- - 📊 **Analysis** (8): Miriam (Business Analyst), Huldah (Tech Writer), Product Brief, PRFAQ, Market/Domain/Technical Research
254
- - 📋 **Planning** (7): Yosef (Product Manager), Rachel (UX Designer), PRD Create/Edit/Validate, UX Design
255
- - 🏗️ **Architecture** (5+9 steps): Bezalel (System Architect), Create Architecture (8-step workflow), Epics & Stories, Readiness Check
256
- - 💻 **Implementation** (12): Oholiab (Senior Engineer), Sprint Planning, Dev Story (TDD cycle), Code Review, Quick Dev, Investigate
257
- - 🔧 **Utilities** (12): Distillator, Party Mode, Adversarial Review, Edge Case Hunter, Editorial Reviews, Advanced Elicitation
258
- - **BWML** (BMAD+ Workflow Markup Language) — Proprietary DSL extending BMAD v6 XML with 12 new primitives:
259
- `<agent>`, `<parallel>`, `<loop>`, `<validate>`, `<guard>`, `<emit>`, `<context>`, `<memory>`, `<escalate>`, `<retry>`, `<fallback>`, `<metric>`
260
- - **Dev Studio Orchestrator** — Intelligent routing across 5 phases with BWML-powered workflow definitions
261
- - **Torah-named Personas**Agents named after Torah figures matching their roles: Miriam, Huldah, Yosef, Rachel, Bezalel, Oholiab
262
- - **Upstream Sync** Tracking config for BMAD-METHOD v6.6.0 updates (commit `0f852a3`)
263
- - **64 files** — 59 .md skills, module-help.csv, BWML spec, orchestrator, README, upstream-sync
264
-
265
- ### Changed
266
- - **module.yaml** — Added dev-studio pack with 5 categories and cohabitation warning for Core pack
267
- - **install.js** — IDE configs now include 6 Torah-named agents when Dev Studio is selected
268
- - **Version reference** Updated from BMAD-METHOD v6.2.0 to v6.6.0
269
-
270
- ## [0.5.0] 2026-05-17
271
-
272
- ### 🛡️ Pack ShieldGRC Compliance (38 agents)
273
-
274
- ### Added
275
- - **Pack Shield** 38 expert compliance agents covering 25+ regulatory frameworks
276
- - 🔐 **Data Privacy** (5): GDPR, CCPA/CPRA, LGPD, DPDPA, ISO 27701
277
- - 🛡️ **Cybersecurity** (6): ISO 27001, NIST CSF 2.0, NIST 800-53, CIS Controls v8, NIS2, ISM
278
- - 🏢 **Industry Compliance** (6): SOC 2, PCI DSS v4.0, HIPAA, SWIFT CSP, DORA, FedRAMP
279
- - 🔒 **Defense & Export** (4): CMMC 2.0, ITAR, EAR, TSA
280
- - 🤖 **AI Governance** (3): EU AI Act, ISO 42001, NIST AI RMF
281
- - **Accessibility & ESG** (3): WCAG, Section 508, CSRD
282
- - 📋 **GDPR & AI Act Workflows** (11): DPIA, Breach Response, LIA, Privacy Notices/Policies, Cookie Compliance, AI Act Classification/Roles/FRIA/Incidents
283
- - **Shield Orchestrator** — Intelligent routing across all 38 agents with cross-framework mapping
284
- - **85 Reference Files** — Deep regulatory knowledge extracted from upstream Claude Skills archives
285
- - **3 Shared Templates** — Gap Analysis, Cross-Framework Mapper, Audit Report
286
- - **Upstream Sync System** — Tracking configuration for Sushegaad GRC skill updates
287
- - **module.yaml** — Full shield pack definition with 7 categories and per-category agent lists
288
- - **CLI Integration** — Shield pack selectable in `npx bmad-plus install` with 3 localized example commands
289
- - **IDE Config** — Shield agent advertised in generated AGENTS.md/GEMINI.md
290
-
291
- ### Changed
292
- - **install_packs** All packs now listed in multiselect (seo, backup, animated were missing)
293
- - **module.yaml** Replaced old `audit` (coming_soon) stub with fully realized `shield` pack
294
-
295
- ### Attribution
296
- - Based on [Claude Skills for GRC](https://github.com/Sushegaad/Claude-Skills-Governance-Risk-and-Compliance) by Hemant Naik — MIT License
297
- - GDPR/EU AI Act workflows inspired by [Lawve.ai](https://lawve.ai) professional skills catalog
298
-
299
- ---
300
-
301
- ## [0.4.4] 2026-05-17
302
-
303
- ### 🔧 Encoding Fix + i18n Complete + Tests
304
-
305
- ### Fixed
306
- - **UTF-8 encoding** — Fixed double-encoding corruption in `i18n.js` caused by PowerShell `Set-Content`
307
- - **Credits URL** Now points to public repo `github.com/lrochetta/BMAD-PLUS`
308
- - **npm re-publish** — v0.4.3 had corrupted Unicode on npm; this release replaces it
309
-
310
- ### Added
311
- - **Complete i18n** — CLI guide strings (commands, examples) now translated in all 10 languages (no more EN fallbacks)
312
- - **Unit tests** — 53+ tests covering i18n, CLI modules, package.json integrity, module.yaml, source files, version consistency
313
- - **`npm test`** — Jest test script added to package.json
314
-
315
- ---
316
-
317
- ## [0.4.3] — 2026-05-17
318
-
319
- ### 🔧 CLI Commands + Security Hardening + UX Enhancements
320
-
321
- ### Added
322
- - **`bmad-plus update`** Update agents & skills while preserving config, IDE configs, and output directories
323
- - **`bmad-plus doctor`** Check installation integrity (version, agents, configs, pack health)
324
- - **Internationalized `uninstall`**Uses i18n system from install manifest language (10 languages)
325
- - **Credits at startup** Author attribution displayed immediately when installer launches
326
- - **Enriched post-install guide** CLI commands section + pack-specific usage examples in selected language
327
- - **i18n strings for update/uninstall/doctor** — EN, FR, ES, DE, PT-BR, RU, ZH, HE, JA, IT
328
- - **CLI guide strings** — `guide_cli_title`, `guide_examples_title`, pack examples for SEO/Backup/Animated/OSINT
329
-
330
- ### Fixed
331
- - **Security** — Added `mcp-server/.env` to `.gitignore`, created `.env.example` template
332
- - **Manifest version** — Now reads from `package.json` dynamically (was hardcoded `0.4.0`)
333
- - **`module.yaml` sync** Added missing SEO, Backup, Animated pack definitions
334
- - **`package.json` cleanup** Removed `oveanet-pack` from `files[]` (already excluded by `.npmignore`)
335
- - **CI/CD reliability** Removed `continue-on-error` from npm publish step
336
- - **Comment accuracy** Updated "9 languages" "10 languages" in install.js header
337
- - **Installer title** Now reads version from `package.json` dynamically
338
-
339
- ### Changed
340
- - **Dependencies** — Updated `@clack/prompts` 1.1.0 1.4.0, `fs-extra` 11.3.4 11.3.5
341
- - **npm scripts** — Added `update:bmad` and `doctor:bmad` scripts
342
-
343
- ---
344
-
345
- ## [0.4.2]2026-03-19
346
-
347
- ### 📦 Public Packs — SEO/Backup/Animated now in npm
348
-
349
- ### Added
350
- - **Public pack agents** — SEO Audit 360, Universal Backup, Animated Website agent files now included in npm package
351
- - Agent files copied from `oveanet-pack/` to `src/bmad-plus/agents/pack-seo/`, `pack-backup/`, `pack-animated/`
352
- - Installer `packDir` system replaces `oveanetAgent` for proper npm distribution
353
-
354
- ---
355
-
356
- ## [0.4.1] — 2026-03-19
357
-
358
- ### 🌐 CLI Internationalization + DevOps Hardening
359
-
360
- ### Added
361
- - **10-language CLI installer** — EN, FR, ES, DE, PT-BR, RU, ZH, HE, JA, IT with language selector at startup
362
- - **CI/CD pipeline** — `publish-distribution.yml` GitHub Action (Golden → Public repo scrubbing)
363
- - **`.npmignore`**Excludes private directories from npm package
364
- - **`/deploy` workflow** — Mandatory pre-deployment checklist
365
- - **Post-install guide** — Enriched with all packs (SEO, Backup, Animated Website)
366
-
367
- ### Fixed
368
- - **Security** — Purged `secrets/github_pat.txt` from git history, fixed `.gitignore` UTF-16 corruption
369
- - **Version badges** — Updated from 0.1.0 0.4.1 across all 5 READMEs
370
- - **Project structure**Updated trees in both Golden and Distribution READMEs
371
-
372
- ---
373
-
374
- ## [0.4.0] — 2026-03-19
375
-
376
- ### 🏢 SEO Engine Enterprise Extensions (Sprint 4)
377
-
378
- ### Added
379
- - **Google Search Console extension** OAuth2 client for organic search data (queries, pages, coverage, sitemaps)
380
- - **Google Analytics 4 extension** GA4 Data API client for organic traffic, landing pages, and engagement metrics
381
- - Both extensions include setup guides, Python clients, and separate requirements
382
-
383
- ### Notes
384
- - Extensions are **optional** and require OAuth2 setup (see `EXTENSION.md` in each directory)
385
- - Core SEO Engine (SKILL.md + 3 agents + Python toolkit) works without extensions
386
- - GSC and GA4 share OAuth2 credentials for simplified auth flow
387
-
388
- ---
389
-
390
- ## [0.3.3]2026-03-19
391
-
392
- ### 🧪 SEO Engine Quality & Security (Sprint 3)
393
-
394
- ### Added
395
- - **Unit tests** — 50 pytest tests covering all Python scripts (fetch, parse, crawl, APIs)
396
- - **Pre-commit hook** — `hooks/seo-check.sh` validates HTML for title, meta, alt, H1 before commit
397
- - **Audit JSON schema** — `ref/audit-schema.json` standardized export format for dashboard/API integration
398
- - **Test fixture** — `tests/fixtures/sample_page.html` with known SEO elements
399
-
400
- ---
401
-
402
- ## [0.3.2] — 2026-03-19
403
-
404
- ### 📊 SEO EngineReports, Competitor & Hreflang (Sprint 2)
405
-
406
- ### Added
407
- - **seo_report.py** — Professional HTML report generator with inline SVG radar chart, color-coded issue cards, quick wins section, and print-friendly CSS
408
- - **Benchmarker role** Added to Chief agent for `/seo competitor` command (side-by-side site comparison with delta scoring)
409
- - **hreflang-rules.md** Complete hreflang audit reference with 7 validation rules, 6 common error patterns, and 12-point checklist
410
-
411
- ---
412
-
413
- ## [0.3.1] — 2026-03-19
414
-
415
- ### 🔧 SEO Engine Enhancements (Sprint 1)
416
-
417
- ### Added
418
- - **SKILL.md orchestrator** — Single entry point routing 15 `/seo` commands to the right agents
419
- - **seo_apis.py** — Google APIs client (PageSpeed Insights, CrUX field data, Rich Results Test)
420
- - **requirements.txt**Python dependencies (requests, beautifulsoup4, lxml)
421
- - **install.sh + install.ps1** — Cross-platform dependency installer with venv support
422
-
423
- ---
424
-
425
- ## [0.3.0]2026-03-19
426
-
427
- ### 🚀 SEO Engine v2.0 Complete Rewrite
428
-
429
- ### Added
430
- - **3 multi-role SEO agents** (replacing single monolithic agent):
431
- - 🔎 **Scout** Technical scanner (Crawler, Inspector, Photographer)
432
- - ⚖️ **Judge** — Content & AI analyst (Content Expert, Schema Master, GEO Analyst)
433
- - 👑 **Chief**Strategist & reporter (Scorer, Strategist, Reporter)
434
- - **4 Python scripts** (new toolkit):
435
- - `seo_fetch.py` — Secure HTTP fetcher with SSRF protection and multi-UA support
436
- - `seo_parse.py`HTML parser for meta, schema, links, images, word count
437
- - `seo_crawl.py`Recursive mini-crawler with sitemap parsing and orphan detection
438
- - `seo_screenshot.py` Playwright viewport screenshots with above-fold analysis
439
- - **6 reference documents**:
440
- - Core Web Vitals 2026 thresholds (LCP subparts, INP, CLS)
441
- - Schema.org v29.4 type catalog with deprecation status
442
- - E-E-A-T scoring grid (100-point evaluation)
443
- - GEO signals for AI search optimization (Google AI Overviews, ChatGPT, Perplexity)
444
- - Quality gates with content thresholds by page type
445
- - 14 ready-to-use JSON-LD schema templates
446
- - **6-phase audit workflow** with PageSpeed perfection loop
447
- - **SEO Health Score (0–100)** with 7 weighted categories
448
- - **Auto-generated code fixes** for common SEO issues
449
- - **13 user commands** (`/seo full`, `/seo quick`, `/seo pagespeed`, etc.)
450
- - **Monitoring system** with historical score comparison
451
-
452
- ### Changed
453
- - SEO Audit 360 pack upgraded from v1.0 to v2.0
454
- - Architecture: single SKILL.md 3 specialized agents with parallel execution
455
-
456
- ### Preserved
457
- - `pagespeed-playbook.md` — Battle-tested oveanet.ch PageSpeed optimization loop
458
- - `checklist.md` — Original PageSpeed perfection checklist
459
-
460
- ---
461
-
462
- ## [0.2.0] — 2026-03-18
463
-
464
- ### 🔀 Oveanet Fusion
465
-
466
- ### Added
467
- - **3 new utility packs** from oveanet-agents:
468
- - 🔍 **SEO Audit 360** — 9-category audit for search engines + AI engines (by Oveanet)
469
- - 🗂️ **Universal Backup** — Timestamped ZIP backup with smart exclusions (by Oveanet)
470
- - 🎬 **Animated Website** Luxury scroll-driven website from video (by Oveanet)
471
- - `oveanet-pack/` directory as source for oveanet agent content
472
- - Oveanet sync documentation in `process-info.md`
473
-
474
- ### Changed
475
- - Installer now shows 7 packs (Core + OSINT + Maker + Audit + SEO + Backup + Animated)
476
- - `package.json` includes `oveanet-pack` in npm distribution
477
-
478
- ### Removed
479
- - `pour etudier/` directory (content migrated to `oveanet-pack/`)
480
-
481
- ---
482
-
483
- ## [0.1.3] — 2026-03-18
484
-
485
- ### 🔧 Cross-Platform Fix
486
-
487
- ### Fixed
488
- - LF line endings for `bin` scripts (fixes `npx` execution on macOS/Linux)
489
- - Added `.gitattributes` to enforce LF on executable scripts
490
-
491
- ---
492
-
493
- ## [0.1.2]2026-03-17
494
-
495
- ### 📝 Credits Update
496
-
497
- ### Changed
498
- - Author credits translated to English in CLI installer and READMEs
499
- - Added LinkedIn link to credits section
500
-
501
- ---
502
-
503
- ## [0.1.1] 2026-03-17
504
-
505
- ### 👤 Author Attribution
506
-
507
- ### Added
508
- - Laurent Rochetta credit in `README.md`, `README-DIST.md`, and CLI success message
509
- - GitHub and LinkedIn links in credits section
510
-
511
- ---
512
-
513
- ## [0.1.0] — 2026-03-17
514
-
515
- ### 🎉 Initial Release Foundation
516
-
517
- First release of BMAD+, an augmented fork of BMAD-METHOD v6.2.0.
518
-
519
- ### Added
520
-
521
- #### Core Module (`src/bmad-plus/`)
522
- - **module.yaml** — Module configuration with execution mode, auto-role activation, parallel execution, and modular pack system
523
- - **module-help.csv** — Contextual help for all 8 registered skills/agents
524
-
525
- #### 5 Multi-Role Agents
526
- - **Atlas (Strategist)** — Fuses Analyst + PM into 2 switchable roles with auto-activation
527
- - **Forge (Architect-Dev)** — Fuses Architect + Dev + Tech Writer into 3 switchable roles
528
- - **Sentinel (Quality)** Fuses QA + UX Designer into 2 switchable roles
529
- - **Nexus (Orchestrator)** Fuses SM + Quick-Flow + new Autopilot Controller + new Parallel Supervisor (4 roles)
530
- - **Shadow (OSINT)** — Converted from legacy XML agent to BMAD+ v6 format (pack: osint)
531
-
532
- #### 3 Custom Skills
533
- - **bmad-plus-autopilot** Full pipeline automation (Discovery → Build → Ship) with configurable checkpoints
534
- - **bmad-plus-parallel** — Multi-agent parallel execution with orchestrator supervision (launch/stop/restart/reallocate/escalate)
535
- - **bmad-plus-sync** — Upstream synchronization via VPS MCP Server
536
-
537
- #### Auto-Activation System
538
- - **role-triggers.yaml** — 3-level intelligent role switching:
539
- - Level 1: Pattern matching (keywords in user requests)
540
- - Level 2: Contextual analysis (domain detection during work)
541
- - Level 3: Reasoning chains (logical discoveries during execution)
542
-
543
- #### Modular Pack System
544
- - **Core pack** (required) — 4 agents, 3 skills, role-triggers
545
- - **OSINT pack** (optional) Shadow agent + OSINT investigation skills
546
- - **Maker pack** (optional) Maker meta-agent for creating new BMAD+ compatible agents (4-phase pipeline: Discovery → Design → Generation → Validation)
547
- - **Audit pack** (coming soon) — Shield agent placeholder
548
- - Multi-select installer menu with per-pack API key requirements
549
-
550
- #### `npx bmad-plus install` CLI
551
- - Interactive installer with pack selection, IDE auto-detection, user config
552
- - Contextual post-install guide adapted to installed packs
553
- - `--packs`, `--yes`, `--tools`, `--directory` flags for non-interactive use
554
- - Uninstall command: `npx bmad-plus uninstall`
555
-
556
- #### Monitoring System (`monitor/`)
557
- - **weekly-check.py** — Weekly upstream monitoring script (cron)
558
- - **ai_analyzer.py** — Gemini API-powered diff analysis (compatible/review/breaking)
559
- - **notifier.py** — WhatsApp notifications via Evolution API + email fallback
560
- - **mcp_bridge.py**Bridge to Audit 360° MCP Server for VPS git/github operations
561
- - **docker-compose.yml** — Evolution API container configuration
562
- - **config.example.yaml** Configuration template
563
-
564
- #### Multi-IDE Support
565
- - **CLAUDE.md** Claude Code configuration
566
- - **GEMINI.md** Gemini CLI configuration
567
- - **AGENTS.md** — Codex CLI / OpenCode configuration
568
-
569
- #### Integration
570
- - Integrated existing **osint-agent-package** (Shadow agent, 55+ Apify actors, 7 APIs)
571
- - Integrated existing **mcp-server** (Audit 360° with 35 tools) via MCP Bridge
572
-
573
- ### Upstream Compatibility
574
- - Based on BMAD-METHOD v6.2.0 (2026-03-15)
575
- - Compatible with core versions 6.0.0 — 7.0.0
576
- - Replaces `bmm` module while keeping core skills
577
-
578
- ---
579
-
580
- *For earlier history, see the upstream [BMAD-METHOD CHANGELOG](https://github.com/bmad-code-org/BMAD-METHOD/blob/main/CHANGELOG.md).*
1
+ # Changelog
2
+
3
+ All notable changes to BMAD+ will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.13.0] - 2026-09-08
11
+
12
+ ### Added
13
+ - Registry-derived installation now delivers the common agent spine and all seven tool adapters from one renderer, with consistent pack facts and persistent execution settings.
14
+ - Published-release discovery with `update-check` (JSON, refresh and offline modes), a 24-hour cache, and explicit project update policies. Notification is the default; automatic updates require an authorized semver range.
15
+ - `update --latest` dispatches an exact validated package through npm, rechecks policy and ownership, refuses downgrades and wrong-version children, and requests instruction reload. All generated tool adapters include one check per session.
16
+ - Managed-file hash inventories cover agents, skills, pack data and module files. Customized files are preserved; automatic updates refuse conflicts or incomplete legacy ownership. Updates are locked, backed up and recoverable with `update --restore <receipt-id> --yes`.
17
+
18
+ ### Security
19
+ - Patch runtime `js-yaml` from 5.2.1 to 5.2.2 for [GHSA-pm4m-ph32-ghv5](https://github.com/advisories/GHSA-pm4m-ph32-ghv5). Production npm audit reports zero vulnerabilities for the validated lockfile.
20
+ - Update and install destinations reject redirected paths; restore validates every backup before changing files and preserves subsequent local edits.
21
+
22
+ ### Fixed
23
+ - Uninstall preserves project memory, settings, modified pack files, custom IDE instructions and nonempty output. Only identifiable BMAD+ files are removed after checking for symlinks/junctions; legacy installs may retain files whose ownership cannot be established.
24
+ - Doctor and uninstall report invalid manifests with failure exit codes. Installation/removal without a terminal requires `--yes`; the npx launcher propagates child launch failures and signals.
25
+ - MCP audit entry points validate identifiers and confine filesystem operations before deletion, cloning or metadata writes. Git URL validation is shared across audit and Git tools.
26
+ - GitHub requests have connection/read timeouts. RAG ingestion uses the server interpreter and working directory without an undrained stderr pipe.
27
+
28
+ ### Quality
29
+ - Distribution security audit explicitly checks production dependencies, matching its production-only install and the CI gate.
30
+ - CI now blocks on pinned Ruff correctness checks and MCP tool, evaluation-backend and memory-bridge tests. SEO DNS/HTTP tests use offline fixtures.
31
+ - JavaScript regression suite expanded to 709 tests in 31 suites, with all coverage thresholds passing. Python correctness-lint findings removed; mutable argument defaults replaced.
32
+ - Source/npm contract verifies 64 installations, 168 generated adapters, complete managed-file hashes and offline update checks. npm execution with Windows path metacharacters is covered by a real offline process test.
33
+ - Backlog projection completed with CLI safety, MCP hardening and Python-quality epics. Dependency modernization retains its existing decision gate.
34
+
35
+ ## [0.12.2] - 2026-07-16
36
+
37
+ ### Addedcapabilities now actually delivered
38
+ - **SEO pack works from npm (was broken-on-arrival for three cycles).** The SEO Python toolkit — `seo_fetch.py`, `seo_crawl.py`, `seo_parse.py`, `seo_apis.py`, `seo_screenshot.py`, `seo_report.py` + `requirements.txt` is now **embarked** in `src/bmad-plus/packs/pack-seo/scripts/`, so it ships in the npm tarball (`files[]="src/bmad-plus"`) and is copied into user projects by pack-copy. `install.js --provision-python` and `registry.yaml` `python_package` point at the in-pack copy; the SKILL.md's `scripts/*.py` and `agent/*.md` load paths now resolve in the shipped, flat packaged layout. Regression-gated by `tests/unit/seo-pack-shipping.test.js` (asserts every SKILL-commanded script/agent ships and the installer path stays in-pack).
39
+ - **SEO agents auto-activate.** `data/role-triggers.yaml` gained a `seo` block (Scout / Chief / Judge) so the three dedicated agents are reachable by keyword, not only by name.
40
+ - **Monitor is rebuildable from committed docs.** New `monitor/requirements.txt` pinning the modern **`google-genai`** SDK (matches `ai_analyzer.py`); `DEPLOY.md` installs `-r requirements.txt` (previously installed the deprecated `google-generativeai`) with an import sanity check. Dependabot pip entries added for `/monitor` and `/src/bmad-plus/packs/pack-seo`.
41
+
42
+ ### Fixed
43
+ - **Hand-typed count drift (blocking `check:counts`):** `README.md` "360 Tests" → **472** (real suite total), `module.yaml` Dev Studio "30 workflows" → **38**, `pack-shield/SKILL.md` "85 regulatory reference files" → **79** (derived count). `check:counts` now green unarmed and armed (`BMAD_PLUS_TEST_COUNT=472`).
44
+ - **OSINT lawful-basis gate reaches every personal-data path (GRC-03, third cycle).** The Phase Router now routes the direct extraction / psychoprofile / contact-enrichment entries through the mandatory Phase −1 Lawful Basis Gate (GDPR Art. 6, plus Art. 9 for psychoprofiling); `osint-investigator.md` and `agent-shadow/SKILL.md` carry an explicit gate rule for the `[LI]/[IG]/[FB]/[PP]/[CE]` menu items. No menu item removed — the gate governs, it does not restrict lawful use. Regression-gated by `tests/unit/osint-lawful-basis-gate.test.js`.
45
+ - `SECURITY.md`: supported version `0.7.x` **`0.12.x`**; runtime dependency count `6` **5** (matches `package.json`).
46
+
47
+ ### Testing
48
+ - **mcp-server security logic is now really tested + gated in CI (QA-02).** The dead `test_server.py` (tautological, asserted on nonexistent `_bmad/bmm/**` paths, ran in no lane) is replaced with 23 tests against a new `mcp-server/security.py` — the password policy, constant-time secret comparison, Basic-Auth parsing, and Bearer-token expiry extracted from `server.py` so they are unit-testable without fastmcp/starlette or runtime env vars. `server.py`'s auth middleware now delegates to these (behavior-identical). A blocking Python pytest lane in `ci.yml` runs them + the SEO toolkit's 69 tests (incl. `TestSSRFProtection`) on every push/PR and, via `workflow_call`, every release.
49
+ - **CLI maintenance commands are no longer untested (QA-03).** New `tests/unit/cli-commands.test.js` (11 tests) drives the real `action()` of `uninstall`, `update`, and `doctor` — previously **zero executed lines** — across not-installed exit, full install, corrupt/again-current manifests, confirm/cancel, and a real update that rewrites the manifest. Per-file `coverageThreshold` entries (60–90% lines) make the gap visible to the gate.
50
+
51
+ ### Security
52
+ - **SEO crawler redirect-SSRF closed (SEC-02).** `seo_crawl.py` now follows redirects manually (`allow_redirects=False`) with a per-hop `is_safe_url` revalidation shared across all three network paths (`fetch`, `fetch_robots_txt`, `parse_sitemap`) via a `_safe_get` helper — a public URL that 302s to an internal/metadata endpoint is refused. `seo_fetch.py` was already fail-closed.
53
+ - `.gitignore`: exclude Graphify graph artifacts (`graphify-out/`, `.graphify/`, `.agents/graph/` safeguard 7, graph indexes are strictly local) and root `.venv/` / `.pytest_cache/`.
54
+
55
+ ### Verified
56
+ - `npm test` **483/483** (21 suites); Python `pytest` **92/92** (mcp-server security 23 + SEO 69); `check:counts` green (unarmed + armed 483); `eslint` 0 errors; `generate.js --check` + `generate-adapters.js --check` no drift; `py_compile` clean; `dependabot.yml` + `ci.yml` valid YAML.
57
+
58
+ ## [0.12.1] - 2026-07-12
59
+
60
+ ### Added
61
+ - **Portfolio brain detection** (`memory-init.js`): brain resolution now honors, in order, the `BMAD_PLUS_BRAIN` env var → a `_brain/` directory in the project dir **or any ancestor** (portfolio brain shared by sibling projects under a workspace root) → `~/.bmad-plus/brain` → `~/.claude/memory`. Previously `~/.bmad-plus/brain` always won once it existed, silently splitting memory away from an existing workspace-level brain. `.brain-link` now records a `brain_type` (`portfolio` / `bmad-global` / `claude-memory`). `resolveBrain()` is exported with 4 new unit tests; `pack-memory/shared/memory-protocol.md` documents the portfolio-brain rule.
62
+
63
+ ### Fixed
64
+ - **Brain detection state machine (`memory-init.js`) — five defects (audit MEM-01..05 + JS-08):** the `projects/` index was written into `~/.bmad-plus/brain` unconditionally while identity/global-memory creation was skipped whenever any brain was detected, leaving a permanent identity-less "half brain" (now: idempotent `ensureGlobalBrain()` self-heals on every touch); `.brain-link` is now written on creation too (was: detection branch only — non-idempotent re-runs); brain candidates must be directories and `~/.claude/memory` must be non-empty (was: a stray *file* named `_brain` could be linked as a brain); project indexing now only targets the global brain when it is the linked brain (portfolio installs no longer write orphan entries); path hashing unified in `tools/cli/lib/path-hash.js` shared with `scan.js` (drive-letter casing no longer double-indexes projects); `initMemory` takes an injectable `homeDir` and the test suite runs against a temp home (was: every `npm test` polluted the real user brain — 454 junk entries live-confirmed); the install-time call is try/catch-wrapped so a read-only home warns instead of aborting pre-manifest. 15 unit tests. See `audit/2026-07-10/14-addendum-memory-init.md`.
65
+ - **GitHub Actions red on master since v0.10.0:** `package-lock.json` was missing `@emnapi/core`/`@emnapi/runtime` entries required by npm 10 (Node 20 runners) an npm 10 vs 11 ideal-tree divergence invisible to local (npm 11) validation, including fresh clones. Lock regenerated with `npm@10`; **CI + Platform now green on master for the first time**. New standing rule: locks are regenerated with `npx npm@10 install --package-lock-only` and validated with both npm 10 and npm 11 `ci --dry-run`.
66
+ - `platform.yml`: the two adapter drift gates (`generate-adapters.js --check` and `--check --adopt`) joined the spine as blocking checks; the eval self-check job now installs its `pyyaml` dependency (it had none on the runner and failed every push).
67
+ - Dependabot: removed the dead `docker` entry for `/monitor` (no Dockerfile there the update job failed every weekly cycle).
68
+
69
+ ### Securitysupply chain
70
+ - `mcp-server/Dockerfile`: base image now **pinned by multi-arch index digest** (`python:3.11.15-slim@sha256:b27df584…`) — closes the PHASE-1 "Dockerfile digest pin" residual and picks up ~18 months of CPython security patches (3.11.9 → 3.11.15).
71
+ - GitHub Actions bumped and SHA-pinned across all workflows: `checkout` v7.0.0, `setup-node` v6.4.0, `setup-python` v6.3.0.
72
+ - Python pins raised: mcp-server `uvicorn` 0.49.0, `gitpython` 3.1.50, `pyyaml` 6.0.3, `requests>=2.34.2`; seo-audit-360 `requests>=2.34.2`, `beautifulsoup4` 4.15.0, `lxml` 6.1.1; Google extensions `google-auth` 2.55.1, `google-auth-oauthlib` 1.4.0, `google-analytics-data` 0.23.0, `google-api-python-client` 2.198.0. Validated in clean venvs (install + import/parse smoke).
73
+
74
+ ### Changed — dependency governance
75
+ - npm: `eslint` 9 → 10 (flat config; `@eslint/js` now a declared devDependency it was consumed transitively and broke under eslint 10), `js-yaml` 4 → 5.2.1 (CJS export intact, full suite green), `fs-extra` 11.3.6.
76
+ - **Removed `chalk`** declared but never imported (the CLI uses picocolors); removal beats chasing the ESM-only v5.
77
+ - Declined with rationale (dependabot `ignore` rules added): `commander` 15 (ESM-only, requires Node ≥22.12; CLI is CommonJS on Node 20), fastmcp/chromadb/sentence-transformers at ALL levels (deliberate pins — breaking across minors, zero CI coverage; joint upgrade tracked as the mcp-server ML-stack modernization task), `pypdf` majors (5.x removed `PdfMerger`, used by `gamma_report.py`), docker `python` major/minor. Dependabot queue: 26+9 PRs → **0 open**.
78
+
79
+ ### Verified
80
+ - `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.
81
+
82
+ ## [0.12.0] — 2026-07-02
83
+
84
+ ### Added — Load-bearing activation (north-star Pillars 3, 4, 5)
85
+ - **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).
86
+ - **Pillar 3 portable via MCP:** `mcp-server/tools/memory_tools.py` exposes `memory.recall` / `memory.write` / `memory.reinforce` as MCP tools that shell out to the same `bmad mem --json` CLI (single source of truth) — MCP-capable CLIs and the CLI can never diverge. Registered additively in `server.py`.
87
+ - **Pillar 5 adopt mode:** `tools/build/generate-adapters.js --adopt` can generate the REAL repo-root adapters + AGENTS.md spine from the registry; hand-authored instructions live in `tools/build/adapters.config.js` and are injected so no tool loses content. `.gitattributes` pins LF on the adopted files (avoids the CRLF drift class). Root adoption is opt-in and NOT applied in this release.
88
+
89
+ ### Fixed
90
+ - Adapter `--check` is now EOL-insensitive; `.gitattributes` pins LF on `tools/build/**` + registry so a Windows clone doesn't false-positive drift. Verified from a **fresh clone**: `npm ci` + `npm test` (333/333) + both drift-checks green.
91
+
92
+ ### Verified
93
+ - `npm test` **333 passed / 16 suites**; `build:check` + `generate-adapters --check` no drift; `run.py --self-check` 3/3; edited Python parses.
94
+
95
+ ## [0.11.0] — 2026-07-02
96
+
97
+ ### Added Karpathy loop CLI + multi-CLI adapters (north-star Pillars 3 & 5)
98
+ - **`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`.
99
+ - **Multi-CLI adapter generator (Pillar 5):** `tools/build/generate-adapters.js` generates the per-CLI wrappers (CLAUDE.md, GEMINI.md, `.codex/AGENTS.md`, `.cursor/rules`, `.opencode/AGENTS.md`, CONVENTIONS.md) from `registry.yaml` counts/names computed, never typed — with a `--check` drift gate. Generated previews live under `tools/build/generated-adapters/`. `tests/unit/generate-adapters.test.js`.
100
+
101
+ ### Changed Compliance (govern, don't cut)
102
+ - **CG-02 OSINT pack governed:** added a mandatory **Phase −1 Lawful Basis Gate** to the OSINT skill (lawful basis Art. 6, Art. 9 condition for psychoprofiles, purpose, retention, DSAR) + a lawful-basis/ROPA record template + a GDPR-OSINT reference + a governance block in the dossier template. The capability is kept in full; lawful use is now explicit and auditable. See `audit/2026-07-01/CG-RESOLUTION.md`.
103
+ - **CG-01 — trademark:** `bmad-plus` name kept by owner decision.
104
+
105
+ ### Verified
106
+ - `npm test` **325 passed / 16 suites**; `npm run build:check` no drift; `generate-adapters.js --check` no drift.
107
+
108
+ ## [0.10.0] — 2026-07-02
109
+
110
+ ### Added — Platform-spine foundations (north-star Phase 2)
111
+ 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.
112
+
113
+ - **Registry-as-SSOT (Pillar 1) — ACTIVE:** `registry.yaml` (repo root) is now the single source of truth for all 9 packs. `tools/cli/lib/packs.js` is **generated from it** (`npm run build`), no longer hand-maintained. `tools/build/generate.js` provides the generator + `npm run build:check` drift gate; `tests/unit/generate.test.js` (14 tests) proves the generated `PACKS`/`PACK_ORDER`/`EXPECTED_AGENTS` strictly equal the shipped module. This kills the 5-place pack-registry drift at its root.
114
+ - **Python provisioning (Pillar 2):** `tools/cli/lib/python-provision.js` detect python≥3.11, pick uv/pipx/venv, create isolated env, install requirements, verify entry (shell-safe, testable).
115
+ - **Karpathy learning layer (Pillar 3):** `tools/cli/lib/memory-journal.js` `journal.ndjson` append/recall, Elo/decayed reward update (eval+acceptance+ci), governance guard (promotions PROPOSED, never auto-applied).
116
+ - **Eval harness (Pillar 4 the moat):** `evals/` schema + Forge/Shield/Sentinel golden specs + fixtures + `run.py --self-check`, provider-neutral model backend seam.
117
+ - **CI:** `.github/workflows/platform.yml` registry drift-check + eval self-check, blocking, SHA-pinned.
118
+
119
+ 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`.
120
+
121
+ ## [0.9.2]2026-07-01
122
+
123
+ ### Security Phase 1 remediation (exploitable findings)
124
+ - **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.
125
+ - **SSRF hardened** (`seo_fetch.py`): fails **closed** on DNS error, blocks private/loopback/reserved/link-local IPs (incl. IPv4-mapped IPv6), re-validates every redirect hop manually.
126
+ - **Stored + DOM XSS closed** (`seo_report.py`, `dashboard.html`): all audited/external values HTML-escaped in the report; dashboard renders via `textContent`/`createElement` + `addEventListener` instead of `innerHTML`/inline `onclick`.
127
+ - **MCP server** (`server.py`): constant-time `hmac.compare_digest` for token + dashboard password; app assembled in module-level `create_app()` so `uvicorn server:app` runs with auth intact; dead `verify_mcp_token` removed; rate-limit map eviction.
128
+ - **XXE**: `seo_crawl.py` hard-fails without `defusedxml` (no unsafe stdlib fallback).
129
+
130
+ ### Supply chain
131
+ - `requests>=2.32.4` (CVE-2024-35195) across all requirements files.
132
+ - `PyPDF2`→`pypdf==4.3.1` (dep + consumer import in `gamma_report.py`).
133
+ - `defusedxml==0.7.1` added; Dockerfile non-root user + tag pin; docker-compose off `:latest`; GitHub Actions pinned to commit SHAs; Dependabot covers pip + docker + github-actions.
134
+
135
+ ### Fixed robustness
136
+ - Non-destructive install (backs up existing CLAUDE/GEMINI/AGENTS.md); marker-based uninstall; IDE-scoped autoconfig; `doctor` no longer emits false "Missing agent" warnings; guarded manifest `JSON.parse`; Windows-safe project-path hashing; hardened `validateUserName`; lazy RAG model load; async gamma polling; repo-URL validation; `git_ops` path confinement.
137
+
138
+ ### Notes
139
+ - 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`.
140
+ - Verified: `npm test` 176/176, `npm run lint` 0 errors, all edited Python parses; SEO report smoke-tested (renders + XSS escaped).
141
+
142
+ ## [0.9.1] — 2026-07-01
143
+
144
+ ### Fixed Credibility (honest status)
145
+ - **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`.
146
+ - **Test harness repaired**: mock ESM `@clack/prompts` so Jest loads the autoconfig suite — `npm test` now genuinely passes (176 tests, 10/10 suites). It did not before.
147
+ - **Lint restored**: added flat `eslint.config.js` (ESLint v9); removed legacy `.eslintrc.json` + deprecated `--ext`. `npm run lint` runs with 0 errors.
148
+ - **Lockfile resynced** to the correct version with full devDependency tree`npm ci` works from a clean clone.
149
+ - Publish workflow no longer masks `npm publish` failures; npm audit is blocking.
150
+ - Removed hardcoded VPS IP from `mcp-server/server.py` docstring.
151
+
152
+ ### Documentation Honesty correction
153
+ - Removed the unverifiable **"143 tests / 0 vulnerabilities / Score A+"** badges from README and README-DIST.
154
+ - Fixed the corrupted version-history table (0.9.0/0.8.0 were duplicated).
155
+ - **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.
156
+
157
+ ## [0.9.0] 2026-06-24
158
+
159
+ ### Security
160
+ - Full audit remediation: 64/64 findings fixed, score C- → A+
161
+ - P0: Command injection eliminated (execSync → spawnSync in CLI entry point)
162
+ - P0: MCP Server authentication added (token-validated middleware on all endpoints)
163
+ - CI/CD hardened: PAT removed, force-push eliminated, npm audit gate blocking
164
+ - MCP allowlist hardened, path traversal protection, URL hostname validation
165
+ - VPS IP → env var, TLS deployment docs, SSRF/XXE protection
166
+ - 0 npm audit vulnerabilities
167
+
168
+ ### Changed
169
+ - Shared PACKS modulesingle source of truth for all 9 packs
170
+ - install.js 740→300 lines: extracted memory-init.js + pack-copy.js
171
+ - print() logging, time.sleep → asyncio.sleep, empty catch blocks filled
172
+ - Dynamic version in i18n.js (reads from package.json)
173
+
174
+ ### Removed
175
+ - Duplicate agents/pack-{seo,animated,backup}/ directories
176
+
177
+ ### Documentation
178
+ - Maker + Zecher in all config files, CHANGELOG v0.7.2 added
179
+ - French README fix, version history synced to all translations
180
+ - 7 audit reports in audit/ folder
181
+
182
+ ### Tests
183
+ - 143/143 tests passing
184
+
185
+ ## [0.8.0]2026-06-24
186
+
187
+ ### Added
188
+ - 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)
189
+ - `extract_frames.py` script for animated-website (263 lines, ffprobe/ffmpeg)
190
+
191
+ ### Security
192
+ - P0 remediation: fix command injection, path traversal, token-in-URL, wildcard hosts, error leak (Shield GRC v2.0)
193
+ - CI: add npm audit gate with continue-on-error, remove silent-fail pattern
194
+
195
+ ### Changed
196
+ - README.de.md: full sync (+131 lines) — Pack System, Autopilot, Project Structure, Credits
197
+ - All Torah-named references removed from Dev Studio, module.yaml, READMEs
198
+ - Dev Studio: cleaned references in orchestrator, bwml-spec, upstream-sync
199
+ - process-info.md: updated (oveanet-pack not in npm package)
200
+ - CI: Windows %TEMP% tmp/ in .npmignore and CI workflow
201
+ - Badge shields: version 0.7.5 0.8.0 across all 5 READMEs
202
+
203
+ ### Fixed
204
+ - Broken TOC anchor links across all 5 READMEs (#the-56-agents)
205
+ - oveanet ↔ .agents mirror directories sync (31 files)
206
+
207
+ ### Tests
208
+ - 143/143 tests passing ✅
209
+
210
+ ## [0.7.5] 2026-05-17
211
+
212
+ ### 🩺 Quality & Compliance
213
+
214
+ ### Added
215
+ - **MIT LICENSE** Proper license file matching `package.json` declaration
216
+ - **PACKS↔module.yaml sync check** New Check 9 in `npx bmad-plus doctor` that cross-validates install.js PACKS object against module.yaml packs, preventing invisible pack bugs
217
+ - **30 new unit tests** Total now 97:
218
+ - `scan.js` module validation (markers, skip dirs, options)
219
+ - `autoconfig.js` function checks (detectStack, analyzeStructure, calculateHealth, recommendPacks)
220
+ - `memory.js` subcommand and health score validation
221
+ - PACKS↔module.yaml bidirectional sync (count + key match)
222
+ - LICENSE file integrity
223
+ - **Global brain consolidation**Promoted cross-project wisdom:
224
+ - 1 lesson (PowerShell UTF-8 corruption)
225
+ - 2 decisions (anti-regression protocol, i18n-first CLI)
226
+ - 2 patterns (dual-tier memory, surgical edit protocol)
227
+
228
+ ## [0.7.4] — 2026-05-17
229
+
230
+ ### 🧠 Smart Autoconfig
231
+
232
+ ### Added
233
+ - **`npx bmad-plus autoconfig`**Smart project bootstrap:
234
+ - **Existing projects**: analyzes stack, structure, health; auto-selects packs; populates memory
235
+ - **New projects**: interactive wizard (type + description); initializes everything
236
+ - Auto-preserves existing IDE configs (`--tools none` when configs detected)
237
+ - Writes `context.md` with full project analysis for agent continuity
238
+ - Shows contextual recommendations ("Talk to Forge to...", "Talk to Sentinel to...")
239
+
240
+ ### Fixed
241
+ - `--tools none` installer crash (undefined IDE name)
242
+
243
+ ## [0.7.3] 2026-05-17
244
+
245
+ ### 🎨 Scan UX Improvements
246
+
247
+ ### Added
248
+ - **Scan legend** — Color-coded status legend displayed before the project table
249
+ - **`--active-days <n>`** Custom threshold for "active" status (default: 30 days)
250
+ - **`--paused-days <n>`** — Custom threshold for "paused" status (default: 180 days)
251
+
252
+ ## [0.7.2] - 2026-06-XX
253
+ ### Fixed
254
+ - `scan` command: `bmad-plus scan <path>` now accepts a positional path argument
255
+
256
+ ## [0.7.1] 2026-05-17
257
+
258
+ ### 🛠️ CLI Commands & Guardrails Injection
259
+
260
+ ### Added
261
+ - **`npx bmad-plus scan [path]`** Interactive project scanner
262
+ - Recursive directory scan with stack auto-detection (Node.js, Rust, Python, Go, PHP, Ruby, Java)
263
+ - Framework detection (Next.js, Nuxt, React, Vue, Svelte, Express, Electron, Tauri)
264
+ - Status tracking (active/paused/archived based on last modified)
265
+ - Interactive validation: index all, select, or skip
266
+ - Auto-generates `projects-index.md` in global brain
267
+ - **`npx bmad-plus memory status`** Memory health report
268
+ - Shows project memory + global brain status
269
+ - Entry counts, last modified dates, health score
270
+ - Brain link detection
271
+ - **`npx bmad-plus memory export`** — Export brain as portable Markdown archive
272
+ - **Karpathy Guardrails injection**4 principles auto-injected into CLAUDE.md/GEMINI.md/AGENTS.md when Memory pack is installed
273
+ - **i18n** — Memory + Dev Studio keys for EN and FR (other languages use fallback)
274
+
275
+ ## [0.7.0]2026-05-17
276
+
277
+ ### 🧠 Pack Memory Persistent Brain
278
+
279
+ ### Added
280
+ - **Pack Memory** Persistent cross-session memory system with brain detection
281
+ - 🧠 **Zecher Agent** (זכר, "remembrance") — Memory archivist for consolidation, project scanning, context recall
282
+ - 📁 **Project Memory** (`.agents/memory/`) decisions.md, lessons.md, patterns.md, context.md, sessions/
283
+ - 🌐 **Global Brain** (`~/.bmad-plus/brain/`) Cross-project knowledge, identity, project index
284
+ - 🔍 **Project Scanner** — Scan directories/disks, detect stacks, interactive validation, auto-index
285
+ - 🛡️ **Karpathy Guardrails** — 4 behavioral principles (Think, Simplify, Surgical, Goal-driven) woven into agents
286
+ - 📋 **Memory Protocol** — Complete read/write rules for when agents use memory
287
+ - 🔗 **Brain Detection** — Detects existing `_brain/`, `~/.claude/memory/`, links instead of overwrites
288
+ - 📝 **6 templates** — decisions, lessons, patterns, context, session-handoff, identity.yaml
289
+
290
+ ### Changed
291
+ - CLI installer: brain detection step (4.5) with merge-safe logic
292
+ - IDE config generation: Zecher agent listed when memory pack selected
293
+ - Install guide: memory-specific examples (Zecher commands)
294
+
295
+ ## [0.6.0] — 2026-05-17
296
+
297
+ ### 🏗️ Pack Dev Studio Full Software Development Lifecycle
298
+
299
+ ### Added
300
+ - **Pack Dev Studio** — 6 specialized agents + 30 workflows covering the complete SDLC
301
+ - 📊 **Analysis** (8): Miriam (Business Analyst), Huldah (Tech Writer), Product Brief, PRFAQ, Market/Domain/Technical Research
302
+ - 📋 **Planning** (7): Yosef (Product Manager), Rachel (UX Designer), PRD Create/Edit/Validate, UX Design
303
+ - 🏗️ **Architecture** (5+9 steps): Bezalel (System Architect), Create Architecture (8-step workflow), Epics & Stories, Readiness Check
304
+ - 💻 **Implementation** (12): Oholiab (Senior Engineer), Sprint Planning, Dev Story (TDD cycle), Code Review, Quick Dev, Investigate
305
+ - 🔧 **Utilities** (12): Distillator, Party Mode, Adversarial Review, Edge Case Hunter, Editorial Reviews, Advanced Elicitation
306
+ - **BWML** (BMAD+ Workflow Markup Language) Proprietary DSL extending BMAD v6 XML with 12 new primitives:
307
+ `<agent>`, `<parallel>`, `<loop>`, `<validate>`, `<guard>`, `<emit>`, `<context>`, `<memory>`, `<escalate>`, `<retry>`, `<fallback>`, `<metric>`
308
+ - **Dev Studio Orchestrator** — Intelligent routing across 5 phases with BWML-powered workflow definitions
309
+ - **Torah-named Personas** — Agents named after Torah figures matching their roles: Miriam, Huldah, Yosef, Rachel, Bezalel, Oholiab
310
+ - **Upstream Sync** — Tracking config for BMAD-METHOD v6.6.0 updates (commit `0f852a3`)
311
+ - **64 files** — 59 .md skills, module-help.csv, BWML spec, orchestrator, README, upstream-sync
312
+
313
+ ### Changed
314
+ - **module.yaml** — Added dev-studio pack with 5 categories and cohabitation warning for Core pack
315
+ - **install.js** — IDE configs now include 6 Torah-named agents when Dev Studio is selected
316
+ - **Version reference** — Updated from BMAD-METHOD v6.2.0 to v6.6.0
317
+
318
+ ## [0.5.0] — 2026-05-17
319
+
320
+ > **Correction (2026-07-15)** — as published, this section announced "38 expert compliance agents"
321
+ > and "85 Reference Files". Both were false on the day they were written, so they are corrected
322
+ > below rather than preserved. What v0.5.0 shipped has not changed: **27 compliance agents across
323
+ > 6 categories, plus 11 GDPR & AI Act workflows**. 38 was those two different things summed into
324
+ > one dimensionthe per-category breakdown below (5+6+6+4+3+3 agents, then 11 workflows) always
325
+ > added up to 27+11 and contradicted its own headline. The pack has 79 reference files and always
326
+ > has (79 added at once, none ever removed). Verified three ways: `registry.yaml`, the files on
327
+ > disk, and `git ls-files`. Now enforced by `tools/build/check-counts.js`.
328
+
329
+ ### 🛡️ Pack Shield — GRC Compliance (27 agents + 11 workflows)
330
+
331
+ ### Added
332
+ - **Pack Shield** — 27 compliance agents across 6 categories, plus 11 GDPR & AI Act workflows, covering 25+ regulatory frameworks
333
+ - 🔐 **Data Privacy** (5): GDPR, CCPA/CPRA, LGPD, DPDPA, ISO 27701
334
+ - 🛡️ **Cybersecurity** (6): ISO 27001, NIST CSF 2.0, NIST 800-53, CIS Controls v8, NIS2, ISM
335
+ - 🏢 **Industry Compliance** (6): SOC 2, PCI DSS v4.0, HIPAA, SWIFT CSP, DORA, FedRAMP
336
+ - 🔒 **Defense & Export** (4): CMMC 2.0, ITAR, EAR, TSA
337
+ - 🤖 **AI Governance** (3): EU AI Act, ISO 42001, NIST AI RMF
338
+ - ♿ **Accessibility & ESG** (3): WCAG, Section 508, CSRD
339
+ - 📋 **GDPR & AI Act Workflows** (11): DPIA, Breach Response, LIA, Privacy Notices/Policies, Cookie Compliance, AI Act Classification/Roles/FRIA/Incidents
340
+ - **Shield Orchestrator** — Intelligent routing across all 27 agents and 11 workflows with cross-framework mapping
341
+ - **79 Reference Files** — Deep regulatory knowledge extracted from upstream Claude Skills archives
342
+ - **3 Shared Templates** — Gap Analysis, Cross-Framework Mapper, Audit Report
343
+ - **Upstream Sync System** — Tracking configuration for Sushegaad GRC skill updates
344
+ - **module.yaml** — Full shield pack definition with 7 category blocks — the 6 agent categories plus a `workflows` block — each carrying an `agents:` list
345
+ - **CLI Integration** Shield pack selectable in `npx bmad-plus install` with 3 localized example commands
346
+ - **IDE Config** — Shield agent advertised in generated AGENTS.md/GEMINI.md
347
+
348
+ ### Changed
349
+ - **install_packs** — All packs now listed in multiselect (seo, backup, animated were missing)
350
+ - **module.yaml** — Replaced old `audit` (coming_soon) stub with fully realized `shield` pack
351
+
352
+ ### Attribution
353
+ - Based on [Claude Skills for GRC](https://github.com/Sushegaad/Claude-Skills-Governance-Risk-and-Compliance) by Hemant Naik — MIT License
354
+ - GDPR/EU AI Act workflows inspired by [Lawve.ai](https://lawve.ai) professional skills catalog
355
+
356
+ ---
357
+
358
+ ## [0.4.4] 2026-05-17
359
+
360
+ ### 🔧 Encoding Fix + i18n Complete + Tests
361
+
362
+ ### Fixed
363
+ - **UTF-8 encoding** Fixed double-encoding corruption in `i18n.js` caused by PowerShell `Set-Content`
364
+ - **Credits URL** — Now points to public repo `github.com/lrochetta/BMAD-PLUS`
365
+ - **npm re-publish** — v0.4.3 had corrupted Unicode on npm; this release replaces it
366
+
367
+ ### Added
368
+ - **Complete i18n** — CLI guide strings (commands, examples) now translated in all 10 languages (no more EN fallbacks)
369
+ - **Unit tests** — 53+ tests covering i18n, CLI modules, package.json integrity, module.yaml, source files, version consistency
370
+ - **`npm test`**Jest test script added to package.json
371
+
372
+ ---
373
+
374
+ ## [0.4.3] — 2026-05-17
375
+
376
+ ### 🔧 CLI Commands + Security Hardening + UX Enhancements
377
+
378
+ ### Added
379
+ - **`bmad-plus update`**Update agents & skills while preserving config, IDE configs, and output directories
380
+ - **`bmad-plus doctor`**Check installation integrity (version, agents, configs, pack health)
381
+ - **Internationalized `uninstall`** Uses i18n system from install manifest language (10 languages)
382
+ - **Credits at startup** — Author attribution displayed immediately when installer launches
383
+ - **Enriched post-install guide** — CLI commands section + pack-specific usage examples in selected language
384
+ - **i18n strings for update/uninstall/doctor** EN, FR, ES, DE, PT-BR, RU, ZH, HE, JA, IT
385
+ - **CLI guide strings** `guide_cli_title`, `guide_examples_title`, pack examples for SEO/Backup/Animated/OSINT
386
+
387
+ ### Fixed
388
+ - **Security** — Added `mcp-server/.env` to `.gitignore`, created `.env.example` template
389
+ - **Manifest version** — Now reads from `package.json` dynamically (was hardcoded `0.4.0`)
390
+ - **`module.yaml` sync** Added missing SEO, Backup, Animated pack definitions
391
+ - **`package.json` cleanup** — Removed `oveanet-pack` from `files[]` (already excluded by `.npmignore`)
392
+ - **CI/CD reliability**Removed `continue-on-error` from npm publish step
393
+ - **Comment accuracy** — Updated "9 languages" → "10 languages" in install.js header
394
+ - **Installer title** — Now reads version from `package.json` dynamically
395
+
396
+ ### Changed
397
+ - **Dependencies** — Updated `@clack/prompts` 1.1.0 1.4.0, `fs-extra` 11.3.4 → 11.3.5
398
+ - **npm scripts** — Added `update:bmad` and `doctor:bmad` scripts
399
+
400
+ ---
401
+
402
+ ## [0.4.2] — 2026-03-19
403
+
404
+ ### 📦 Public PacksSEO/Backup/Animated now in npm
405
+
406
+ ### Added
407
+ - **Public pack agents** — SEO Audit 360, Universal Backup, Animated Website agent files now included in npm package
408
+ - Agent files copied from `oveanet-pack/` to `src/bmad-plus/agents/pack-seo/`, `pack-backup/`, `pack-animated/`
409
+ - Installer `packDir` system replaces `oveanetAgent` for proper npm distribution
410
+
411
+ ---
412
+
413
+ ## [0.4.1] — 2026-03-19
414
+
415
+ ### 🌐 CLI Internationalization + DevOps Hardening
416
+
417
+ ### Added
418
+ - **10-language CLI installer** — EN, FR, ES, DE, PT-BR, RU, ZH, HE, JA, IT with language selector at startup
419
+ - **CI/CD pipeline** — `publish-distribution.yml` GitHub Action (Golden Public repo scrubbing)
420
+ - **`.npmignore`**Excludes private directories from npm package
421
+ - **`/deploy` workflow** — Mandatory pre-deployment checklist
422
+ - **Post-install guide** — Enriched with all packs (SEO, Backup, Animated Website)
423
+
424
+ ### Fixed
425
+ - **Security**Purged `secrets/github_pat.txt` from git history, fixed `.gitignore` UTF-16 corruption
426
+ - **Version badges** — Updated from 0.1.0 → 0.4.1 across all 5 READMEs
427
+ - **Project structure** Updated trees in both Golden and Distribution READMEs
428
+
429
+ ---
430
+
431
+ ## [0.4.0]2026-03-19
432
+
433
+ ### 🏢 SEO Engine Enterprise Extensions (Sprint 4)
434
+
435
+ ### Added
436
+ - **Google Search Console extension** OAuth2 client for organic search data (queries, pages, coverage, sitemaps)
437
+ - **Google Analytics 4 extension** GA4 Data API client for organic traffic, landing pages, and engagement metrics
438
+ - Both extensions include setup guides, Python clients, and separate requirements
439
+
440
+ ### Notes
441
+ - Extensions are **optional** and require OAuth2 setup (see `EXTENSION.md` in each directory)
442
+ - Core SEO Engine (SKILL.md + 3 agents + Python toolkit) works without extensions
443
+ - GSC and GA4 share OAuth2 credentials for simplified auth flow
444
+
445
+ ---
446
+
447
+ ## [0.3.3] 2026-03-19
448
+
449
+ ### 🧪 SEO Engine Quality & Security (Sprint 3)
450
+
451
+ ### Added
452
+ - **Unit tests** — 50 pytest tests covering all Python scripts (fetch, parse, crawl, APIs)
453
+ - **Pre-commit hook** `hooks/seo-check.sh` validates HTML for title, meta, alt, H1 before commit
454
+ - **Audit JSON schema** — `ref/audit-schema.json` standardized export format for dashboard/API integration
455
+ - **Test fixture** — `tests/fixtures/sample_page.html` with known SEO elements
456
+
457
+ ---
458
+
459
+ ## [0.3.2] — 2026-03-19
460
+
461
+ ### 📊 SEO Engine — Reports, Competitor & Hreflang (Sprint 2)
462
+
463
+ ### Added
464
+ - **seo_report.py** Professional HTML report generator with inline SVG radar chart, color-coded issue cards, quick wins section, and print-friendly CSS
465
+ - **Benchmarker role** — Added to Chief agent for `/seo competitor` command (side-by-side site comparison with delta scoring)
466
+ - **hreflang-rules.md** — Complete hreflang audit reference with 7 validation rules, 6 common error patterns, and 12-point checklist
467
+
468
+ ---
469
+
470
+ ## [0.3.1]2026-03-19
471
+
472
+ ### 🔧 SEO Engine Enhancements (Sprint 1)
473
+
474
+ ### Added
475
+ - **SKILL.md orchestrator** Single entry point routing 15 `/seo` commands to the right agents
476
+ - **seo_apis.py** Google APIs client (PageSpeed Insights, CrUX field data, Rich Results Test)
477
+ - **requirements.txt** — Python dependencies (requests, beautifulsoup4, lxml)
478
+ - **install.sh + install.ps1** — Cross-platform dependency installer with venv support
479
+
480
+ ---
481
+
482
+ ## [0.3.0] — 2026-03-19
483
+
484
+ ### 🚀 SEO Engine v2.0 — Complete Rewrite
485
+
486
+ ### Added
487
+ - **3 multi-role SEO agents** (replacing single monolithic agent):
488
+ - 🔎 **Scout** Technical scanner (Crawler, Inspector, Photographer)
489
+ - ⚖️ **Judge** Content & AI analyst (Content Expert, Schema Master, GEO Analyst)
490
+ - 👑 **Chief** — Strategist & reporter (Scorer, Strategist, Reporter)
491
+ - **4 Python scripts** (new toolkit):
492
+ - `seo_fetch.py` — Secure HTTP fetcher with SSRF protection and multi-UA support
493
+ - `seo_parse.py`HTML parser for meta, schema, links, images, word count
494
+ - `seo_crawl.py` — Recursive mini-crawler with sitemap parsing and orphan detection
495
+ - `seo_screenshot.py` Playwright viewport screenshots with above-fold analysis
496
+ - **6 reference documents**:
497
+ - Core Web Vitals 2026 thresholds (LCP subparts, INP, CLS)
498
+ - Schema.org v29.4 type catalog with deprecation status
499
+ - E-E-A-T scoring grid (100-point evaluation)
500
+ - GEO signals for AI search optimization (Google AI Overviews, ChatGPT, Perplexity)
501
+ - Quality gates with content thresholds by page type
502
+ - 14 ready-to-use JSON-LD schema templates
503
+ - **6-phase audit workflow** with PageSpeed perfection loop
504
+ - **SEO Health Score (0–100)** with 7 weighted categories
505
+ - **Auto-generated code fixes** for common SEO issues
506
+ - **13 user commands** (`/seo full`, `/seo quick`, `/seo pagespeed`, etc.)
507
+ - **Monitoring system** with historical score comparison
508
+
509
+ ### Changed
510
+ - SEO Audit 360 pack upgraded from v1.0 to v2.0
511
+ - Architecture: single SKILL.md → 3 specialized agents with parallel execution
512
+
513
+ ### Preserved
514
+ - `pagespeed-playbook.md` — Battle-tested oveanet.ch PageSpeed optimization loop
515
+ - `checklist.md` Original PageSpeed perfection checklist
516
+
517
+ ---
518
+
519
+ ## [0.2.0] — 2026-03-18
520
+
521
+ ### 🔀 Oveanet Fusion
522
+
523
+ ### Added
524
+ - **3 new utility packs** from oveanet-agents:
525
+ - 🔍 **SEO Audit 360** — 9-category audit for search engines + AI engines (by Oveanet)
526
+ - 🗂️ **Universal Backup** — Timestamped ZIP backup with smart exclusions (by Oveanet)
527
+ - 🎬 **Animated Website** — Luxury scroll-driven website from video (by Oveanet)
528
+ - `oveanet-pack/` directory as source for oveanet agent content
529
+ - Oveanet sync documentation in `process-info.md`
530
+
531
+ ### Changed
532
+ - Installer now shows 7 packs (Core + OSINT + Maker + Audit + SEO + Backup + Animated)
533
+ - `package.json` includes `oveanet-pack` in npm distribution
534
+
535
+ ### Removed
536
+ - `pour etudier/` directory (content migrated to `oveanet-pack/`)
537
+
538
+ ---
539
+
540
+ ## [0.1.3] 2026-03-18
541
+
542
+ ### 🔧 Cross-Platform Fix
543
+
544
+ ### Fixed
545
+ - LF line endings for `bin` scripts (fixes `npx` execution on macOS/Linux)
546
+ - Added `.gitattributes` to enforce LF on executable scripts
547
+
548
+ ---
549
+
550
+ ## [0.1.2] — 2026-03-17
551
+
552
+ ### 📝 Credits Update
553
+
554
+ ### Changed
555
+ - Author credits translated to English in CLI installer and READMEs
556
+ - Added LinkedIn link to credits section
557
+
558
+ ---
559
+
560
+ ## [0.1.1]2026-03-17
561
+
562
+ ### 👤 Author Attribution
563
+
564
+ ### Added
565
+ - Laurent Rochetta credit in `README.md`, `README-DIST.md`, and CLI success message
566
+ - GitHub and LinkedIn links in credits section
567
+
568
+ ---
569
+
570
+ ## [0.1.0] 2026-03-17
571
+
572
+ ### 🎉 Initial Release — Foundation
573
+
574
+ First release of BMAD+, an augmented fork of BMAD-METHOD v6.2.0.
575
+
576
+ ### Added
577
+
578
+ #### Core Module (`src/bmad-plus/`)
579
+ - **module.yaml** — Module configuration with execution mode, auto-role activation, parallel execution, and modular pack system
580
+ - **module-help.csv** Contextual help for all 8 registered skills/agents
581
+
582
+ #### 5 Multi-Role Agents
583
+ - **Atlas (Strategist)** — Fuses Analyst + PM into 2 switchable roles with auto-activation
584
+ - **Forge (Architect-Dev)** — Fuses Architect + Dev + Tech Writer into 3 switchable roles
585
+ - **Sentinel (Quality)** — Fuses QA + UX Designer into 2 switchable roles
586
+ - **Nexus (Orchestrator)** — Fuses SM + Quick-Flow + new Autopilot Controller + new Parallel Supervisor (4 roles)
587
+ - **Shadow (OSINT)** — Converted from legacy XML agent to BMAD+ v6 format (pack: osint)
588
+
589
+ #### 3 Custom Skills
590
+ - **bmad-plus-autopilot** — Full pipeline automation (Discovery → Build → Ship) with configurable checkpoints
591
+ - **bmad-plus-parallel** — Multi-agent parallel execution with orchestrator supervision (launch/stop/restart/reallocate/escalate)
592
+ - **bmad-plus-sync** — Upstream synchronization via VPS MCP Server
593
+
594
+ #### Auto-Activation System
595
+ - **role-triggers.yaml** — 3-level intelligent role switching:
596
+ - Level 1: Pattern matching (keywords in user requests)
597
+ - Level 2: Contextual analysis (domain detection during work)
598
+ - Level 3: Reasoning chains (logical discoveries during execution)
599
+
600
+ #### Modular Pack System
601
+ - **Core pack** (required) — 4 agents, 3 skills, role-triggers
602
+ - **OSINT pack** (optional) — Shadow agent + OSINT investigation skills
603
+ - **Maker pack** (optional) — Maker meta-agent for creating new BMAD+ compatible agents (4-phase pipeline: Discovery → Design → Generation → Validation)
604
+ - **Audit pack** (coming soon) — Shield agent placeholder
605
+ - Multi-select installer menu with per-pack API key requirements
606
+
607
+ #### `npx bmad-plus install` CLI
608
+ - Interactive installer with pack selection, IDE auto-detection, user config
609
+ - Contextual post-install guide adapted to installed packs
610
+ - `--packs`, `--yes`, `--tools`, `--directory` flags for non-interactive use
611
+ - Uninstall command: `npx bmad-plus uninstall`
612
+
613
+ #### Monitoring System (`monitor/`)
614
+ - **weekly-check.py** — Weekly upstream monitoring script (cron)
615
+ - **ai_analyzer.py** — Gemini API-powered diff analysis (compatible/review/breaking)
616
+ - **notifier.py** — WhatsApp notifications via Evolution API + email fallback
617
+ - **mcp_bridge.py** — Bridge to Audit 360° MCP Server for VPS git/github operations
618
+ - **docker-compose.yml** — Evolution API container configuration
619
+ - **config.example.yaml** — Configuration template
620
+
621
+ #### Multi-IDE Support
622
+ - **CLAUDE.md** — Claude Code configuration
623
+ - **GEMINI.md** — Gemini CLI configuration
624
+ - **AGENTS.md** — Codex CLI / OpenCode configuration
625
+
626
+ #### Integration
627
+ - Integrated existing **osint-agent-package** (Shadow agent, 55+ Apify actors, 7 APIs)
628
+ - Integrated existing **mcp-server** (Audit 360° with 35 tools) via MCP Bridge
629
+
630
+ ### Upstream Compatibility
631
+ - Based on BMAD-METHOD v6.2.0 (2026-03-15)
632
+ - Compatible with core versions 6.0.0 — 7.0.0
633
+ - Replaces `bmm` module while keeping core skills
634
+
635
+ ---
636
+
637
+ *For earlier history, see the upstream [BMAD-METHOD CHANGELOG](https://github.com/bmad-code-org/BMAD-METHOD/blob/main/CHANGELOG.md).*