bmad-plus 0.17.0 → 0.18.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.
- package/CHANGELOG.md +108 -30
- package/README.md +23 -23
- package/SECURITY.md +9 -1
- package/osint-agent-package/README.md +13 -0
- package/osint-agent-package/SETUP_KEYS.md +13 -0
- package/package.json +32 -8
- package/readme-international/README.de.md +133 -542
- package/readme-international/README.es.md +135 -561
- package/readme-international/README.fr.md +134 -558
- package/src/bmad-plus/agents/agent-shadow/SKILL.md +6 -0
- package/src/bmad-plus/packs/pack-memory/README.md +1 -1
- package/src/bmad-plus/packs/pack-memory/memory-orchestrator.md +1 -1
- package/src/bmad-plus/packs/pack-memory/shared/memory-protocol.md +1 -1
- package/src/bmad-plus/packs/pack-shield/README.md +2 -0
- package/src/bmad-plus/packs/pack-shield/SKILL.md +2 -0
- package/src/bmad-plus/packs/pack-shield/shared/audit-report-template.md +6 -0
- package/src/bmad-plus/packs/pack-shield/shield-orchestrator.md +4 -0
- package/src/bmad-plus/skills/bmad-plus-uat/SKILL.md +61 -1
- package/src/bmad-plus/skills/bmad-plus-uat/ref/uat-results.schema.json +11 -0
- package/src/bmad-plus/skills/bmad-plus-uat/template/page.html +455 -137
- package/src/bmad-plus/skills/bmad-plus-uat/template/strings.json +230 -20
- package/tools/build/adapters.config.js +1 -1
- package/tools/build/generate-adapters.js +186 -60
- package/tools/build/generate.js +49 -13
- package/tools/cli/bmad-plus-cli.js +3 -6
- package/tools/cli/commands/autoconfig.js +62 -22
- package/tools/cli/commands/install.js +620 -356
- package/tools/cli/commands/memory.js +40 -13
- package/tools/cli/commands/scan.js +94 -30
- package/tools/cli/commands/uat.js +50 -5
- package/tools/cli/commands/uninstall.js +65 -16
- package/tools/cli/commands/update-check.js +13 -4
- package/tools/cli/commands/update-policy.js +14 -5
- package/tools/cli/commands/update.js +96 -21
- package/tools/cli/i18n.js +120 -68
- package/tools/cli/lib/ide-config.js +3 -1
- package/tools/cli/lib/install-manifest.js +32 -7
- package/tools/cli/lib/installation-health.js +33 -1
- package/tools/cli/lib/installed-adapters.js +29 -6
- package/tools/cli/lib/memory-init.js +19 -4
- package/tools/cli/lib/packs.js +17 -28
- package/tools/cli/lib/path-hash.js +5 -1
- package/tools/cli/lib/python-provision.js +51 -12
- package/tools/cli/lib/stack-detect.js +51 -25
- package/tools/cli/lib/uat.js +139 -1
- package/tools/cli/lib/update-check.js +132 -34
- package/tools/cli/lib/update-dispatch.js +2 -2
- package/tools/cli/lib/update-policy.js +57 -19
- package/tools/cli/lib/update-transaction.js +439 -85
- package/tools/build/README.md +0 -78
- package/tools/build/check-counts.js +0 -626
- package/tools/build/check-install-contract.js +0 -648
- package/tools/build/generated-adapters/.codex/AGENTS.md +0 -134
- package/tools/build/generated-adapters/.cursor/rules/bmad-plus.mdc +0 -139
- package/tools/build/generated-adapters/.opencode/AGENTS.md +0 -134
- package/tools/build/generated-adapters/AGENTS.md +0 -132
- package/tools/build/generated-adapters/CLAUDE.md +0 -135
- package/tools/build/generated-adapters/CONVENTIONS.md +0 -134
- package/tools/build/generated-adapters/GEMINI.md +0 -139
- package/tools/build/generated-adapters/README.md +0 -79
- package/tools/maintain/upstream-candidate.js +0 -456
- package/tools/release/publication-content.js +0 -904
- package/tools/release/supply-chain.js +0 -282
package/CHANGELOG.md
CHANGED
|
@@ -5,7 +5,49 @@ All notable changes to BMAD+ will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [0.18.0] - 2026-09-25
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **The acceptance page names what it guarantees, and the build refuses a template that lost one.** `uat build --json` lists sixteen page guarantees (`hidden-before-start`, `verified-local-write`, `honest-save-status`, `save-on-every-change`, `restore-before-capabilities`, `revision-guard`, `other-tab-notice`, `unreadable-draft-kept`, `progress-accessible`, `storage-explained`, `finished-is-not-accepted`, …); a template missing one is not built. A jsdom suite replays every scenario of the FormaPro incident of 2026-09-25 — start, tick, note without blur, immediate reload, storage refused, unreadable draft, amended recipe, two tabs, artifact database precedence, local server — and `tools/qa/uat-page-browser-check.js` walks the essential pass in Chromium, because the original defect lived in the stylesheet.
|
|
13
|
+
- The page offers a run that answered another revision of the recipe instead of pouring it in: identical lines keep their answers, changed lines are asked again, the earlier run stays untouched and exportable, and the new run records `carriedFrom`. Another run can be started while the previous one stays saved; the resume list shows the newest copy of each run first, with its progress.
|
|
14
|
+
- Finishing with unanswered lines is questioned on the page itself and confirmed by a second click, never through a dialog a host may swallow. A change after finishing is kept, dated, and said on screen. A blocked line asks "What stopped you?"; a note already written stays in view whatever the answer became.
|
|
15
|
+
- `uat serve` refuses an older copy of a run (409), any host name but its own (403), and prints the port it actually bound. A tester whose name has no Latin letter signs the run with a stable hash instead of "anonymous".
|
|
16
|
+
- The skill carries the contract: an agent builds the page with the command, never writes it by hand, plays the essential pass in a real browser before handing the page over, tells the tester where the answers live, and says in the delivery which checks ran.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **The acceptance page could say "saved" without a verified write.** A refused write to the browser (quota, private window, blocked storage) was swallowed and the status still read saved. A write now counts only once it reads back — the run and the pointer that finds it — and a failed save shows a persistent warning, questions leaving the page, and keeps the export available. A failed remote copy is reported as such, with the local copy kept.
|
|
21
|
+
- The browser's copy of a run is restored synchronously on reload, before the local-server probe and the artifact database answer or hang; an older remote copy no longer overwrites a newer local one, and a newer remote one is adopted and written back to the browser.
|
|
22
|
+
- A stored run that cannot be read is reported and exportable, never deleted in silence. Two tabs on the same run converge on the latest change, and the page says so.
|
|
23
|
+
- The progress bar exposes the share of lines answered as an accessible `progressbar` — answered, not passed — next to the seen / not seen / blocked counts, and the page explains where answers live and what can make them disappear. Finishing says it is not an acceptance. The diacritics range in run ids is written as escapes so a charset hop cannot corrupt it.
|
|
24
|
+
- `update`, `update --latest` and `update-check` run outside an installed project now say which folder they looked in and how to run them from the project folder (or with `--directory`), instead of a raw `ENOENT` error or an unexplained `invalid-installation` status. `update-check --json` keeps its JSON on stdout and writes the guidance to stderr.
|
|
25
|
+
- The release workflow's npm verification now reports the integrity npm actually served, so a registry availability delay can no longer read as a different archive.
|
|
26
|
+
|
|
27
|
+
## [0.17.1] - 2026-09-24
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
- **`install` no longer overwrites a different installed version.** A downgrade is refused; an upgrade stops and points to `bmad-plus update`, which keeps backups and restorable receipts. Re-installing the same version only adds what is missing. Scripts that re-ran `install` to change versions must call `update` instead.
|
|
31
|
+
- **`--packs` and `--tools` add to the previous installation** instead of replacing it. An unknown pack or tool ID now fails before anything is written, and the error lists the valid IDs.
|
|
32
|
+
- **Unattended installs default to English.** Without a terminal, the communication language comes from `--lang`, then from the system locale, then English. `--yes` with no detected AI tool writes no adapter files.
|
|
33
|
+
- `update` deletes files that a new version no longer ships when you have not changed them; each deletion is backed up in the update receipt and `--restore` brings it back. Files you edited are kept and reported as `modified-orphaned-file`.
|
|
34
|
+
- The npm package no longer ships the maintainers' release and maintenance scripts, only the launcher, the CLI and the build modules it needs at runtime. The archive is smaller; installed projects are unaffected.
|
|
35
|
+
- The OSINT pack opens with a legal and ethics notice (GDPR lawful basis, platform terms, no private profiling), and Shadow's reports start with an AI-generated, not-legal-advice disclaimer. Shadow is described as governed public-source research; its lawful-basis gate is unchanged.
|
|
36
|
+
- The Shield pack and its audit report template carry a shared not-legal-advice notice, an AI-generated banner and a qualified-reviewer sign-off field.
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
- Re-installing keeps your `_bmad/config.yaml`: existing settings win, missing defaults are added, and an unparsable file is left untouched. The manifest and configuration are written atomically, so an interrupted install cannot leave them half-written.
|
|
40
|
+
- A `.bmad/update.lock` left by a crashed process no longer blocks the project: when its owner is provably dead on this machine, the lock is moved aside and taken over. Other stale locks are reported by `doctor`, and the error states the manual remedy.
|
|
41
|
+
- `uninstall` accepts `-d`/`--directory` like the other maintenance commands. Help names the program `bmad-plus`, and a subcommand's `--lang` is no longer swallowed by a global option.
|
|
42
|
+
- The installer shows each pack with its emoji icon.
|
|
43
|
+
- Release automation now waits for npm's publish-time scanning before verifying public archive integrity. Polling is bounded to thirty attempts with thirty-second intervals and a twenty-minute step limit. An unavailable version still blocks the landing, and recovery instructions explicitly forbid uploading the same version again.
|
|
44
|
+
|
|
45
|
+
### Security
|
|
46
|
+
- The development-only `js-yaml` copy used by the coverage tooling is pinned to the patched 4.3.2. The production dependency audit remains clean.
|
|
47
|
+
|
|
48
|
+
### Documentation
|
|
49
|
+
- The French, Spanish and German READMEs mirror the public README section by section. The README states that BMAD+ is not affiliated with BMad Code, LLC, and replaces the BMAD-METHOD comparison with a factual list of what BMAD+ ships.
|
|
50
|
+
- The website shows the install command with a copy control in its hero, supports a dark color scheme, folds navigation on small screens and names the supported tools.
|
|
9
51
|
|
|
10
52
|
## [0.17.0] - 2026-09-22
|
|
11
53
|
|
|
@@ -177,7 +219,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
177
219
|
### Verified
|
|
178
220
|
- `npm test` 333/333 (16 suites); lint 0 errors under eslint 10; both `npx npm@10 ci --dry-run` and `npm ci --dry-run` green; CI + Platform workflows green on GOLDEN master.
|
|
179
221
|
|
|
180
|
-
## [0.12.0]
|
|
222
|
+
## [0.12.0] - 2026-07-02
|
|
181
223
|
|
|
182
224
|
### Added — Load-bearing activation (north-star Pillars 3, 4, 5)
|
|
183
225
|
- **Pillar 4 executable:** `evals/_runner/providers.py` — a provider-neutral model gateway (anthropic / openai / generic-HTTP adapters selected by `BMAD_EVAL_PROVIDER`, default deterministic **mock** so `--self-check` and CI never hit the network). `run_agent(spec, model)` now routes through it; the eval harness genuinely runs (3/3 specs pass).
|
|
@@ -190,7 +232,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
190
232
|
### Verified
|
|
191
233
|
- `npm test` **333 passed / 16 suites**; `build:check` + `generate-adapters --check` no drift; `run.py --self-check` 3/3; edited Python parses.
|
|
192
234
|
|
|
193
|
-
## [0.11.0]
|
|
235
|
+
## [0.11.0] - 2026-07-02
|
|
194
236
|
|
|
195
237
|
### Added — Karpathy loop CLI + multi-CLI adapters (north-star Pillars 3 & 5)
|
|
196
238
|
- **`bmad mem` command (Pillar 3):** `recall <query>` / `write` / `reinforce` expose the memory-journal (append/recall + Elo reward + governance guard) from the CLI, so the learning loop is usable from any driving tool. `tests/unit/memory-journal-cmd.test.js`.
|
|
@@ -203,7 +245,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
203
245
|
### Verified
|
|
204
246
|
- `npm test` **325 passed / 16 suites**; `npm run build:check` no drift; `generate-adapters.js --check` no drift.
|
|
205
247
|
|
|
206
|
-
## [0.10.0]
|
|
248
|
+
## [0.10.0] - 2026-07-02
|
|
207
249
|
|
|
208
250
|
### Added — Platform-spine foundations (north-star Phase 2)
|
|
209
251
|
Built as **new files only** (no existing core file modified); test suite grew from 176/10 to **258 passed / 13 suites**. Cut nothing; multi-tool/multi-model preserved.
|
|
@@ -216,7 +258,7 @@ Built as **new files only** (no existing core file modified); test suite grew fr
|
|
|
216
258
|
|
|
217
259
|
Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remaining integration (provisioning called from install, memory exposed via MCP, generated multi-CLI adapters) lands next as its own tested commit — see `audit/2026-07-01/PHASE-2-STATUS.md`.
|
|
218
260
|
|
|
219
|
-
## [0.9.2]
|
|
261
|
+
## [0.9.2] - 2026-07-01
|
|
220
262
|
|
|
221
263
|
### Security — Phase 1 remediation (exploitable findings)
|
|
222
264
|
- **RCE closed** (`ci_cd.py`): command allowlist now uses exact-token matching (shlex.split) + realpath/commonpath containment instead of prefix/`startswith` — defeats argument injection (`make -f attacker.mk`) and sibling-path bypass; `shell=False` throughout; dead Makefile fallback removed.
|
|
@@ -237,7 +279,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
237
279
|
- Documented residual follow-ups (SSRF crawler-class redirect hops, DNS-rebinding IP pinning, Dockerfile digest pin) are tracked in `audit/2026-07-01/PHASE-1-STATUS.md`.
|
|
238
280
|
- Verified: `npm test` 176/176, `npm run lint` 0 errors, all edited Python parses; SEO report smoke-tested (renders + XSS escaped).
|
|
239
281
|
|
|
240
|
-
## [0.9.1]
|
|
282
|
+
## [0.9.1] - 2026-07-01
|
|
241
283
|
|
|
242
284
|
### Fixed — Credibility (honest status)
|
|
243
285
|
- **Real CI on push/PR** (`.github/workflows/ci.yml`): lint + test + npm audit, all blocking. Previously the only workflow ran at release-tag and swallowed failures with `|| echo`.
|
|
@@ -252,7 +294,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
252
294
|
- Fixed the corrupted version-history table (0.9.0/0.8.0 were duplicated).
|
|
253
295
|
- **Note on 0.9.0 below:** the "64/64 fixed, score A+" and "auth on all endpoints" claims in the 0.9.0 entry were **overstated**. A 2026-07-01 adversarial re-audit (see `audit/2026-07-01/`) found 102 open findings and re-graded the project **C+**. The MCP token *is* checked by middleware on `/sse` and `/messages/`, but the prior "all endpoints" phrasing and the A+ score were not accurate. This release begins the honest remediation.
|
|
254
296
|
|
|
255
|
-
## [0.9.0]
|
|
297
|
+
## [0.9.0] - 2026-06-24
|
|
256
298
|
|
|
257
299
|
### Security
|
|
258
300
|
- Full audit remediation: 64/64 findings fixed, score C- → A+
|
|
@@ -280,7 +322,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
280
322
|
### Tests
|
|
281
323
|
- 143/143 tests passing
|
|
282
324
|
|
|
283
|
-
## [0.8.0]
|
|
325
|
+
## [0.8.0] - 2026-06-24
|
|
284
326
|
|
|
285
327
|
### Added
|
|
286
328
|
- 3 new packs: pack-animated (web animation agent), pack-backup (universal backup agent), pack-seo (full SEO audit — 15 files with agents, refs, templates, playbooks)
|
|
@@ -305,7 +347,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
305
347
|
### Tests
|
|
306
348
|
- 143/143 tests passing ✅
|
|
307
349
|
|
|
308
|
-
## [0.7.5]
|
|
350
|
+
## [0.7.5] - 2026-05-17
|
|
309
351
|
|
|
310
352
|
### 🩺 Quality & Compliance
|
|
311
353
|
|
|
@@ -323,7 +365,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
323
365
|
- 2 decisions (anti-regression protocol, i18n-first CLI)
|
|
324
366
|
- 2 patterns (dual-tier memory, surgical edit protocol)
|
|
325
367
|
|
|
326
|
-
## [0.7.4]
|
|
368
|
+
## [0.7.4] - 2026-05-17
|
|
327
369
|
|
|
328
370
|
### 🧠 Smart Autoconfig
|
|
329
371
|
|
|
@@ -338,7 +380,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
338
380
|
### Fixed
|
|
339
381
|
- `--tools none` installer crash (undefined IDE name)
|
|
340
382
|
|
|
341
|
-
## [0.7.3]
|
|
383
|
+
## [0.7.3] - 2026-05-17
|
|
342
384
|
|
|
343
385
|
### 🎨 Scan UX Improvements
|
|
344
386
|
|
|
@@ -347,11 +389,11 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
347
389
|
- **`--active-days <n>`** — Custom threshold for "active" status (default: 30 days)
|
|
348
390
|
- **`--paused-days <n>`** — Custom threshold for "paused" status (default: 180 days)
|
|
349
391
|
|
|
350
|
-
## [0.7.2] - 2026-
|
|
392
|
+
## [0.7.2] - 2026-05-17
|
|
351
393
|
### Fixed
|
|
352
394
|
- `scan` command: `bmad-plus scan <path>` now accepts a positional path argument
|
|
353
395
|
|
|
354
|
-
## [0.7.1]
|
|
396
|
+
## [0.7.1] - 2026-05-17
|
|
355
397
|
|
|
356
398
|
### 🛠️ CLI Commands & Guardrails Injection
|
|
357
399
|
|
|
@@ -370,7 +412,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
370
412
|
- **Karpathy Guardrails injection** — 4 principles auto-injected into CLAUDE.md/GEMINI.md/AGENTS.md when Memory pack is installed
|
|
371
413
|
- **i18n** — Memory + Dev Studio keys for EN and FR (other languages use fallback)
|
|
372
414
|
|
|
373
|
-
## [0.7.0]
|
|
415
|
+
## [0.7.0] - 2026-05-17
|
|
374
416
|
|
|
375
417
|
### 🧠 Pack Memory — Persistent Brain
|
|
376
418
|
|
|
@@ -390,7 +432,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
390
432
|
- IDE config generation: Zecher agent listed when memory pack selected
|
|
391
433
|
- Install guide: memory-specific examples (Zecher commands)
|
|
392
434
|
|
|
393
|
-
## [0.6.0]
|
|
435
|
+
## [0.6.0] - 2026-05-17
|
|
394
436
|
|
|
395
437
|
### 🏗️ Pack Dev Studio — Full Software Development Lifecycle
|
|
396
438
|
|
|
@@ -413,7 +455,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
413
455
|
- **install.js** — IDE configs now include 6 Torah-named agents when Dev Studio is selected
|
|
414
456
|
- **Version reference** — Updated from BMAD-METHOD v6.2.0 to v6.6.0
|
|
415
457
|
|
|
416
|
-
## [0.5.0]
|
|
458
|
+
## [0.5.0] - 2026-05-17
|
|
417
459
|
|
|
418
460
|
> **Correction (2026-07-15)** — as published, this section announced "38 expert compliance agents"
|
|
419
461
|
> and "85 Reference Files". Both were false on the day they were written, so they are corrected
|
|
@@ -453,7 +495,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
453
495
|
|
|
454
496
|
---
|
|
455
497
|
|
|
456
|
-
## [0.4.4]
|
|
498
|
+
## [0.4.4] - 2026-05-17
|
|
457
499
|
|
|
458
500
|
### 🔧 Encoding Fix + i18n Complete + Tests
|
|
459
501
|
|
|
@@ -469,7 +511,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
469
511
|
|
|
470
512
|
---
|
|
471
513
|
|
|
472
|
-
## [0.4.3]
|
|
514
|
+
## [0.4.3] - 2026-05-17
|
|
473
515
|
|
|
474
516
|
### 🔧 CLI Commands + Security Hardening + UX Enhancements
|
|
475
517
|
|
|
@@ -497,7 +539,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
497
539
|
|
|
498
540
|
---
|
|
499
541
|
|
|
500
|
-
## [0.4.2]
|
|
542
|
+
## [0.4.2] - 2026-03-19
|
|
501
543
|
|
|
502
544
|
### 📦 Public Packs — SEO/Backup/Animated now in npm
|
|
503
545
|
|
|
@@ -508,7 +550,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
508
550
|
|
|
509
551
|
---
|
|
510
552
|
|
|
511
|
-
## [0.4.1]
|
|
553
|
+
## [0.4.1] - 2026-03-19
|
|
512
554
|
|
|
513
555
|
### 🌐 CLI Internationalization + DevOps Hardening
|
|
514
556
|
|
|
@@ -526,7 +568,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
526
568
|
|
|
527
569
|
---
|
|
528
570
|
|
|
529
|
-
## [0.4.0]
|
|
571
|
+
## [0.4.0] - 2026-03-19
|
|
530
572
|
|
|
531
573
|
### 🏢 SEO Engine — Enterprise Extensions (Sprint 4)
|
|
532
574
|
|
|
@@ -542,7 +584,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
542
584
|
|
|
543
585
|
---
|
|
544
586
|
|
|
545
|
-
## [0.3.3]
|
|
587
|
+
## [0.3.3] - 2026-03-19
|
|
546
588
|
|
|
547
589
|
### 🧪 SEO Engine — Quality & Security (Sprint 3)
|
|
548
590
|
|
|
@@ -554,7 +596,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
554
596
|
|
|
555
597
|
---
|
|
556
598
|
|
|
557
|
-
## [0.3.2]
|
|
599
|
+
## [0.3.2] - 2026-03-19
|
|
558
600
|
|
|
559
601
|
### 📊 SEO Engine — Reports, Competitor & Hreflang (Sprint 2)
|
|
560
602
|
|
|
@@ -565,7 +607,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
565
607
|
|
|
566
608
|
---
|
|
567
609
|
|
|
568
|
-
## [0.3.1]
|
|
610
|
+
## [0.3.1] - 2026-03-19
|
|
569
611
|
|
|
570
612
|
### 🔧 SEO Engine Enhancements (Sprint 1)
|
|
571
613
|
|
|
@@ -577,7 +619,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
577
619
|
|
|
578
620
|
---
|
|
579
621
|
|
|
580
|
-
## [0.3.0]
|
|
622
|
+
## [0.3.0] - 2026-03-19
|
|
581
623
|
|
|
582
624
|
### 🚀 SEO Engine v2.0 — Complete Rewrite
|
|
583
625
|
|
|
@@ -614,7 +656,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
614
656
|
|
|
615
657
|
---
|
|
616
658
|
|
|
617
|
-
## [0.2.0]
|
|
659
|
+
## [0.2.0] - 2026-03-18
|
|
618
660
|
|
|
619
661
|
### 🔀 Oveanet Fusion
|
|
620
662
|
|
|
@@ -635,7 +677,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
635
677
|
|
|
636
678
|
---
|
|
637
679
|
|
|
638
|
-
## [0.1.3]
|
|
680
|
+
## [0.1.3] - 2026-03-18
|
|
639
681
|
|
|
640
682
|
### 🔧 Cross-Platform Fix
|
|
641
683
|
|
|
@@ -645,7 +687,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
645
687
|
|
|
646
688
|
---
|
|
647
689
|
|
|
648
|
-
## [0.1.2]
|
|
690
|
+
## [0.1.2] - 2026-03-17
|
|
649
691
|
|
|
650
692
|
### 📝 Credits Update
|
|
651
693
|
|
|
@@ -655,7 +697,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
655
697
|
|
|
656
698
|
---
|
|
657
699
|
|
|
658
|
-
## [0.1.1]
|
|
700
|
+
## [0.1.1] - 2026-03-17
|
|
659
701
|
|
|
660
702
|
### 👤 Author Attribution
|
|
661
703
|
|
|
@@ -665,7 +707,7 @@ Pillar 1 is wired (packs.js generated + `npm run build`/`build:check`). Remainin
|
|
|
665
707
|
|
|
666
708
|
---
|
|
667
709
|
|
|
668
|
-
## [0.1.0]
|
|
710
|
+
## [0.1.0] - 2026-03-17
|
|
669
711
|
|
|
670
712
|
### 🎉 Initial Release — Foundation
|
|
671
713
|
|
|
@@ -733,3 +775,39 @@ First release of BMAD+, an augmented fork of BMAD-METHOD v6.2.0.
|
|
|
733
775
|
---
|
|
734
776
|
|
|
735
777
|
*For earlier history, see the upstream [BMAD-METHOD CHANGELOG](https://github.com/bmad-code-org/BMAD-METHOD/blob/main/CHANGELOG.md).*
|
|
778
|
+
|
|
779
|
+
<!-- Version links point to the npm release page. The public repository is a single snapshot, so per-version compare links are not available. Not published on npm: 0.15.0, 0.11.0, 0.10.0, 0.1.2. -->
|
|
780
|
+
|
|
781
|
+
[0.17.1]: https://www.npmjs.com/package/bmad-plus/v/0.17.1
|
|
782
|
+
[0.17.0]: https://www.npmjs.com/package/bmad-plus/v/0.17.0
|
|
783
|
+
[0.16.0]: https://www.npmjs.com/package/bmad-plus/v/0.16.0
|
|
784
|
+
[0.14.0]: https://www.npmjs.com/package/bmad-plus/v/0.14.0
|
|
785
|
+
[0.13.0]: https://www.npmjs.com/package/bmad-plus/v/0.13.0
|
|
786
|
+
[0.12.2]: https://www.npmjs.com/package/bmad-plus/v/0.12.2
|
|
787
|
+
[0.12.1]: https://www.npmjs.com/package/bmad-plus/v/0.12.1
|
|
788
|
+
[0.12.0]: https://www.npmjs.com/package/bmad-plus/v/0.12.0
|
|
789
|
+
[0.9.2]: https://www.npmjs.com/package/bmad-plus/v/0.9.2
|
|
790
|
+
[0.9.1]: https://www.npmjs.com/package/bmad-plus/v/0.9.1
|
|
791
|
+
[0.9.0]: https://www.npmjs.com/package/bmad-plus/v/0.9.0
|
|
792
|
+
[0.8.0]: https://www.npmjs.com/package/bmad-plus/v/0.8.0
|
|
793
|
+
[0.7.5]: https://www.npmjs.com/package/bmad-plus/v/0.7.5
|
|
794
|
+
[0.7.4]: https://www.npmjs.com/package/bmad-plus/v/0.7.4
|
|
795
|
+
[0.7.3]: https://www.npmjs.com/package/bmad-plus/v/0.7.3
|
|
796
|
+
[0.7.2]: https://www.npmjs.com/package/bmad-plus/v/0.7.2
|
|
797
|
+
[0.7.1]: https://www.npmjs.com/package/bmad-plus/v/0.7.1
|
|
798
|
+
[0.7.0]: https://www.npmjs.com/package/bmad-plus/v/0.7.0
|
|
799
|
+
[0.6.0]: https://www.npmjs.com/package/bmad-plus/v/0.6.0
|
|
800
|
+
[0.5.0]: https://www.npmjs.com/package/bmad-plus/v/0.5.0
|
|
801
|
+
[0.4.4]: https://www.npmjs.com/package/bmad-plus/v/0.4.4
|
|
802
|
+
[0.4.3]: https://www.npmjs.com/package/bmad-plus/v/0.4.3
|
|
803
|
+
[0.4.2]: https://www.npmjs.com/package/bmad-plus/v/0.4.2
|
|
804
|
+
[0.4.1]: https://www.npmjs.com/package/bmad-plus/v/0.4.1
|
|
805
|
+
[0.4.0]: https://www.npmjs.com/package/bmad-plus/v/0.4.0
|
|
806
|
+
[0.3.3]: https://www.npmjs.com/package/bmad-plus/v/0.3.3
|
|
807
|
+
[0.3.2]: https://www.npmjs.com/package/bmad-plus/v/0.3.2
|
|
808
|
+
[0.3.1]: https://www.npmjs.com/package/bmad-plus/v/0.3.1
|
|
809
|
+
[0.3.0]: https://www.npmjs.com/package/bmad-plus/v/0.3.0
|
|
810
|
+
[0.2.0]: https://www.npmjs.com/package/bmad-plus/v/0.2.0
|
|
811
|
+
[0.1.3]: https://www.npmjs.com/package/bmad-plus/v/0.1.3
|
|
812
|
+
[0.1.1]: https://www.npmjs.com/package/bmad-plus/v/0.1.1
|
|
813
|
+
[0.1.0]: https://www.npmjs.com/package/bmad-plus/v/0.1.0
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# BMAD+
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/bmad-plus)
|
|
4
4
|
|
|
5
|
-
**Version 0.
|
|
5
|
+
**Version 0.18.0** · Node.js `>=20.0.0` · MIT
|
|
6
6
|
|
|
7
7
|
Project-local AI development workflows with clear roles, shared context, safe updates and coding-tool adapters
|
|
8
8
|
|
|
@@ -35,7 +35,7 @@ Run the installer. Select the adapters for the AI tools you use and the packs yo
|
|
|
35
35
|
**In your project terminal:**
|
|
36
36
|
|
|
37
37
|
```sh
|
|
38
|
-
npx bmad-plus@0.
|
|
38
|
+
npx bmad-plus@0.18.0 install
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
The installer creates the agent instructions, shared project spine and selected tool adapters. Optional packs may need additional runtimes or API access.
|
|
@@ -136,7 +136,7 @@ Expected result: bounded assignments, explicit dependencies and one integrated r
|
|
|
136
136
|
Use when a version reaches your test environment and someone must check it on screen.
|
|
137
137
|
|
|
138
138
|
```text
|
|
139
|
-
Sentinel, write the acceptance recipe for this delivery on our test environment. One step per gesture, one verifiable fact per line, on-screen labels quoted from the code, and mark the steps that write for real. Build the page, then tell me the link, how long it takes and what I must not skip. Use disposable test data when possible, name the exact folder and files each command changes, and keep automated evidence separate from the person’s answers.
|
|
139
|
+
Sentinel, write the acceptance recipe for this delivery on our test environment. One step per gesture, one verifiable fact per line, on-screen labels quoted from the code, and mark the steps that write for real. Build the page, then tell me the link, how long it takes and what I must not skip. Use disposable test data when possible, name the exact folder and files each command changes, and keep automated evidence separate from the person’s answers. Before handing the page over, build it with uat build, check the guarantees it lists, play the essential pass yourself in a real browser — start, tick, type a remark, reload, everything back — and tell me which checks ran.
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
Expected result: a page a non-technical person can play, and a run the agent reads back to classify every failure before anything is fixed.
|
|
@@ -171,20 +171,20 @@ Read AGENTS.md and the available project memory. Summarize the last verified sta
|
|
|
171
171
|
|
|
172
172
|
Expected result: a short, evidence-based restart. Project notes are useful context and still need to be checked against the current work.
|
|
173
173
|
|
|
174
|
-
## What’s new in 0.
|
|
174
|
+
## What’s new in 0.18.0
|
|
175
175
|
|
|
176
|
-
|
|
176
|
+
Acceptance pages that keep every answer
|
|
177
177
|
|
|
178
|
-
|
|
178
|
+
The acceptance page now verifies every save, restores your answers on reload before anything else, keeps runs from other revisions and other tabs apart, and names sixteen guarantees the build refuses to lose. Nothing changes in how you install or update; rebuild your recipe pages to get the new page.
|
|
179
179
|
|
|
180
|
-
-
|
|
181
|
-
-
|
|
182
|
-
-
|
|
183
|
-
-
|
|
184
|
-
-
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
180
|
+
- A write to the browser counts only once it reads back. A refused save (quota, private window, blocked storage) is named on the page, questions leaving, and the export stays available — the page never says saved on its own word.
|
|
181
|
+
- Your answers come back on reload before the local server or the artifact database answer, and the newer copy always wins: an older remote copy never overwrites what you just ticked.
|
|
182
|
+
- A run that answered another revision of the recipe is offered, not poured in: unchanged lines keep their answers, changed lines are asked again, the earlier run stays untouched and exportable, and the new run records where its answers came from.
|
|
183
|
+
- Two tabs or two devices on the same run converge on the latest change and say so. A saved run that cannot be read is reported and exportable, never deleted.
|
|
184
|
+
- The progress bar exposes the share of lines answered — answered, not passed — with the seen, not seen and blocked counts; the page says where answers live and what can make them disappear.
|
|
185
|
+
- Finishing with unanswered lines is questioned on the page itself and confirmed with a second click; a finished run says it is not an acceptance, and a change made after finishing is dated and shown.
|
|
186
|
+
- uat build lists the sixteen guarantees the page carries and refuses a template that lost one; uat serve refuses an older copy of a run and any host name but its own. A name with no Latin letters signs its run with a stable hash.
|
|
187
|
+
- The acceptance skill tells the agent to build the page with the command, never write it by hand, play the essential pass in a real browser before handing it over, and say which checks ran. The page strings gain twenty-two sentences in ten languages.
|
|
188
188
|
|
|
189
189
|
## Version History
|
|
190
190
|
|
|
@@ -192,21 +192,25 @@ These dates identify reviewed CHANGELOG notes, not npm publication dates. The we
|
|
|
192
192
|
|
|
193
193
|
| Version | Release-notes date | Reviewed summary |
|
|
194
194
|
| --- | --- | --- |
|
|
195
|
+
| 0.18.0 | 2026-09-25 | The acceptance page now verifies every save, restores your answers on reload before anything else, keeps runs from other revisions and other tabs apart, and names sixteen guarantees the build refuses to lose. Nothing changes in how you install or update; rebuild your recipe pages to get the new page. |
|
|
196
|
+
| 0.17.1 | 2026-09-24 | Installing over a different version now stops and points to update, re-installs keep your settings, and updates remove files a version no longer ships while keeping a restorable backup. Some install behaviors changed; review your scripts before rerunning them. |
|
|
195
197
|
| 0.17.0 | 2026-09-22 | Acceptance pages now prevent silent answer loss and empty exports, recipes build by their own identifier, and project release checks work directly with Node on Windows. Guides add practical prompts for reading results and preserving project context. |
|
|
196
|
-
| 0.16.0 | 2026-09-16 | A delivery now produces a step-by-step page a person plays, and their run comes back as evidence the agents read, classify and gate on. This release also carries what 0.15.0 had prepared and never shipped: durable Nexus execution, evidence-ranked memory and scored checks for every pack. |
|
|
197
|
-
| 0.14.0 | 2026-09-09 | Dev Studio gains complete instructions and verifiable context loading; release documentation follows the published package. |
|
|
198
198
|
|
|
199
199
|
[Release history and update guide](https://bmad-plus.rochetta.fr/docs/#changelog) · [All published npm versions](https://www.npmjs.com/package/bmad-plus?activeTab=versions)
|
|
200
200
|
|
|
201
201
|
---
|
|
202
202
|
|
|
203
|
-
##
|
|
203
|
+
## License
|
|
204
204
|
|
|
205
205
|
MIT — Based on [BMAD-METHOD](https://github.com/bmad-code-org/BMAD-METHOD) (MIT)
|
|
206
206
|
|
|
207
|
-
BMAD+ is an independent
|
|
207
|
+
BMAD+ is an independent community project derived from BMAD-METHOD (MIT) by BMad Code, LLC. It is not affiliated with, endorsed by or certified by BMad Code, LLC. BMad™ and BMad Method™ are trademarks of BMad Code, LLC; see the [BMad trademark guidelines](https://github.com/bmad-code-org/BMAD-METHOD/blob/main/TRADEMARK.md).
|
|
208
208
|
Bundled source attributions and terms: [Third-party notices](THIRD-PARTY-LICENSES.md).
|
|
209
209
|
|
|
210
|
+
The OSINT pack is governed: researching a named person requires a recorded purpose and legal basis. See the [OSINT legal notice](osint-agent-package/skills/bmad-osint-investigate/osint/references/gdpr-osint.md).
|
|
211
|
+
|
|
212
|
+
Translations: [Français](readme-international/README.fr.md) · [Español](readme-international/README.es.md) · [Deutsch](readme-international/README.de.md)
|
|
213
|
+
|
|
210
214
|
### Credits
|
|
211
215
|
|
|
212
216
|
**Creator**
|
|
@@ -223,7 +227,3 @@ Bundled source attributions and terms: [Third-party notices](THIRD-PARTY-LICENSE
|
|
|
223
227
|
- **OSINT Pipeline** based on [smixs/osint-skill](https://github.com/smixs/osint-skill) (MIT)
|
|
224
228
|
- **Apify integration** — OSINT helper and inspiration from [Apify agent skills](https://github.com/apify/agent-skills) (upstream declares Apache-2.0; see notices)
|
|
225
229
|
- **Karpathy Guardrails** — Memory Pack adaptation of [community guidelines by forrestchang](https://github.com/multica-ai/andrej-karpathy-skills), inspired by Andrej Karpathy (MIT declared upstream)
|
|
226
|
-
|
|
227
|
-
**Tools & Infrastructure**
|
|
228
|
-
- [Evolution API](https://github.com/EvolutionAPI/evolution-api) — WhatsApp notifications for upstream monitoring
|
|
229
|
-
- [Gemini API](https://ai.google.dev/) — AI analysis for upstream change classification
|
package/SECURITY.md
CHANGED
|
@@ -14,7 +14,15 @@ and in the [release history](https://bmad-plus.rochetta.fr/docs/#releases).
|
|
|
14
14
|
|
|
15
15
|
If you discover a security vulnerability in BMAD+, please report it responsibly:
|
|
16
16
|
|
|
17
|
-
###
|
|
17
|
+
### 🔒 Preferred: GitHub private vulnerability reporting
|
|
18
|
+
|
|
19
|
+
Use **[Report a vulnerability](https://github.com/lrochetta/BMAD-PLUS/security/advisories/new)**
|
|
20
|
+
(repository *Security* tab → *Report a vulnerability*). The report stays private
|
|
21
|
+
between you and the maintainer, and the fix and advisory are coordinated there.
|
|
22
|
+
|
|
23
|
+
### 📧 Fallback: email
|
|
24
|
+
|
|
25
|
+
If you cannot use GitHub private reporting:
|
|
18
26
|
|
|
19
27
|
**Email:** [l.rochetta@gmail.com](mailto:l.rochetta@gmail.com)
|
|
20
28
|
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# 🔍 OSINT Agent Package — BMAD Compatible
|
|
2
2
|
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **Avis juridique et éthique — à lire avant toute utilisation / Legal & ethics notice**
|
|
5
|
+
>
|
|
6
|
+
> - **Base légale obligatoire (RGPD art. 6).** Toute collecte ou analyse de données sur une personne identifiable est un traitement de données personnelles : il faut une base légale documentée (intérêt légitime mis en balance, obligation légale, mission d'intérêt public…) *avant* de lancer une investigation. La consigner dans [`lawful-basis-record.md`](skills/bmad-osint-investigate/osint/assets/lawful-basis-record.md).
|
|
7
|
+
> - **Données sensibles (RGPD art. 9).** Opinions politiques, religion, santé, orientation sexuelle, données biométriques, etc. sont interdites de traitement sauf exception de l'art. 9(2). Le psychoprofilage peut *inférer* ce type de données : ne pas le faire sans base légale explicite.
|
|
8
|
+
> - **Pas de profilage de particuliers sans base légale.** Aucun ciblage, surveillance ou profilage de personnes privées (ex-conjoint, voisin, salarié, candidat…) par curiosité ou pour harceler. Les personnalités publiques ne sont couvertes que pour leur rôle public.
|
|
9
|
+
> - **Conditions d'utilisation des plateformes.** Le scraping (Apify, LinkedIn, Instagram, Facebook, TikTok…) peut violer les CGU des plateformes et le droit local ; vérifier avant usage.
|
|
10
|
+
> - **Responsabilité de l'utilisateur.** Vous êtes le responsable de traitement : BMAD+ fournit un outil, pas une autorisation. Le résultat est généré par IA, peut être faux et doit être vérifié par un humain avant toute décision.
|
|
11
|
+
>
|
|
12
|
+
> Cadre de référence : [`gdpr-osint.md`](skills/bmad-osint-investigate/osint/references/gdpr-osint.md). La porte de conformité intégrée à l'agent (« Phase −1 — Lawful Basis Gate » du `SKILL.md`, qui refuse toute investigation nominative sans base légale) reste active et ne doit pas être contournée.
|
|
13
|
+
>
|
|
14
|
+
> *EN — You need a documented GDPR Art. 6 lawful basis (and an Art. 9(2) exception for special-category data) before investigating anyone; respect platform ToS; never profile private individuals without a legal basis; you, the user, are the data controller and bear full responsibility.*
|
|
15
|
+
|
|
3
16
|
Agent d'intelligence OSINT pour les installations BMAD. De un nom ou pseudo à un dossier complet avec psychoprofil, parcours professionnel et grades de confiance.
|
|
4
17
|
|
|
5
18
|
## Features
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# 🔑 Configuration des Clés API
|
|
2
2
|
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **Avis juridique et éthique — à lire avant toute utilisation / Legal & ethics notice**
|
|
5
|
+
>
|
|
6
|
+
> - **Base légale obligatoire (RGPD art. 6).** Toute collecte ou analyse de données sur une personne identifiable est un traitement de données personnelles : il faut une base légale documentée (intérêt légitime mis en balance, obligation légale, mission d'intérêt public…) *avant* de lancer une investigation. La consigner dans [`lawful-basis-record.md`](skills/bmad-osint-investigate/osint/assets/lawful-basis-record.md).
|
|
7
|
+
> - **Données sensibles (RGPD art. 9).** Opinions politiques, religion, santé, orientation sexuelle, données biométriques, etc. sont interdites de traitement sauf exception de l'art. 9(2). Le psychoprofilage peut *inférer* ce type de données : ne pas le faire sans base légale explicite.
|
|
8
|
+
> - **Pas de profilage de particuliers sans base légale.** Aucun ciblage, surveillance ou profilage de personnes privées (ex-conjoint, voisin, salarié, candidat…) par curiosité ou pour harceler. Les personnalités publiques ne sont couvertes que pour leur rôle public.
|
|
9
|
+
> - **Conditions d'utilisation des plateformes.** Le scraping (Apify, LinkedIn, Instagram, Facebook, TikTok…) peut violer les CGU des plateformes et le droit local ; vérifier avant usage.
|
|
10
|
+
> - **Responsabilité de l'utilisateur.** Vous êtes le responsable de traitement : BMAD+ fournit un outil, pas une autorisation. Le résultat est généré par IA, peut être faux et doit être vérifié par un humain avant toute décision.
|
|
11
|
+
>
|
|
12
|
+
> Cadre de référence : [`gdpr-osint.md`](skills/bmad-osint-investigate/osint/references/gdpr-osint.md). La porte de conformité intégrée à l'agent (« Phase −1 — Lawful Basis Gate » du `SKILL.md`, qui refuse toute investigation nominative sans base légale) reste active et ne doit pas être contournée.
|
|
13
|
+
>
|
|
14
|
+
> *EN — You need a documented GDPR Art. 6 lawful basis (and an Art. 9(2) exception for special-category data) before investigating anyone; respect platform ToS; never profile private individuals without a legal basis; you, the user, are the data controller and bear full responsibility.*
|
|
15
|
+
|
|
3
16
|
Ce guide explique comment configurer les clés API pour l'agent OSINT.
|
|
4
17
|
**Tu n'as besoin que d'UNE SEULE clé pour démarrer.** Plus tu en configures, plus l'agent est puissant.
|
|
5
18
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "bmad-plus",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.18.0",
|
|
5
5
|
"description": "Project-local AI development workflows with clear roles, shared context, safe updates and coding-tool adapters",
|
|
6
6
|
"homepage": "https://bmad-plus.rochetta.fr",
|
|
7
7
|
"keywords": [
|
|
@@ -25,7 +25,13 @@
|
|
|
25
25
|
"bmad-plus": "tools/bmad-plus-npx.js"
|
|
26
26
|
},
|
|
27
27
|
"files": [
|
|
28
|
-
"tools",
|
|
28
|
+
"tools/bmad-plus-npx.js",
|
|
29
|
+
"tools/cli",
|
|
30
|
+
"tools/build/adapters.config.js",
|
|
31
|
+
"tools/build/generate-adapters.js",
|
|
32
|
+
"tools/build/generate.js",
|
|
33
|
+
"tools/build/module.template.yaml",
|
|
34
|
+
"tools/build/pack-delivery.js",
|
|
29
35
|
"src/bmad-plus",
|
|
30
36
|
"osint-agent-package",
|
|
31
37
|
"readme-international",
|
|
@@ -43,14 +49,18 @@
|
|
|
43
49
|
"build": "node tools/build/generate.js --out tools/cli/lib/packs.js --module-out src/bmad-plus/module.yaml",
|
|
44
50
|
"build:check": "node tools/build/generate.js --check",
|
|
45
51
|
"check:counts": "node tools/build/check-counts.js",
|
|
52
|
+
"check:counts:full": "jest --coverage=false --silent --json --outputFile=coverage/jest-report.json && node tools/build/check-counts.js --jest-report coverage/jest-report.json",
|
|
46
53
|
"uat:spec": "node src/bmad-plus/skills/bmad-plus-uat/templates/uat-spec-present.mjs --dir recettes",
|
|
47
54
|
"uat:gate": "node src/bmad-plus/skills/bmad-plus-uat/templates/uat-release-gate.mjs --dir recettes --cli tools/cli/bmad-plus-cli.js",
|
|
55
|
+
"qa:uat-browser": "node tools/qa/uat-page-browser-check.js",
|
|
48
56
|
"lint": "eslint tools/ tests/",
|
|
49
57
|
"format": "prettier --write \"tools/**/*.js\" \"tests/**/*.js\"",
|
|
50
58
|
"format:check": "prettier --check \"tools/**/*.js\" \"tests/**/*.js\"",
|
|
51
59
|
"test": "jest --coverage",
|
|
60
|
+
"test:parallel": "jest --coverage=false --testPathIgnorePatterns \"(nexus(-cli|-process)?|memory-outcomes|upstream-candidate|npm-runner)\\.test\\.js$\"",
|
|
61
|
+
"test:serial": "jest --coverage=false --runInBand --testPathPatterns \"(nexus(-cli|-process)?|memory-outcomes|upstream-candidate|npm-runner)\\.test\\.js$\"",
|
|
52
62
|
"test:install-contract": "node tools/build/check-install-contract.js",
|
|
53
|
-
"prepare": "husky
|
|
63
|
+
"prepare": "node -e \"try{require('node:child_process').execSync('husky',{stdio:'inherit'})}catch{console.warn('WARNING: husky did not install the git hooks, so the pre-push release gate is inactive in this checkout. Run npx husky to retry.')}\"",
|
|
54
64
|
"uninstall:bmad": "node tools/cli/bmad-plus-cli.js uninstall"
|
|
55
65
|
},
|
|
56
66
|
"dependencies": {
|
|
@@ -66,29 +76,42 @@
|
|
|
66
76
|
},
|
|
67
77
|
"overrides": {
|
|
68
78
|
"@istanbuljs/load-nyc-config": {
|
|
69
|
-
"js-yaml": "4.2
|
|
79
|
+
"js-yaml": "4.3.2"
|
|
70
80
|
}
|
|
71
81
|
},
|
|
72
82
|
"publishConfig": {
|
|
73
83
|
"access": "public"
|
|
74
84
|
},
|
|
75
85
|
"jest": {
|
|
86
|
+
"roots": [
|
|
87
|
+
"<rootDir>/tests",
|
|
88
|
+
"<rootDir>/tools"
|
|
89
|
+
],
|
|
76
90
|
"testPathIgnorePatterns": [
|
|
77
91
|
"/node_modules/",
|
|
78
92
|
"/website/",
|
|
79
93
|
"/evals/"
|
|
80
94
|
],
|
|
81
95
|
"collectCoverage": true,
|
|
96
|
+
"collectCoverageFrom": [
|
|
97
|
+
"tools/**/*.js",
|
|
98
|
+
"!tools/build/generated-adapters/**"
|
|
99
|
+
],
|
|
82
100
|
"coverageDirectory": "coverage",
|
|
83
101
|
"moduleNameMapper": {
|
|
84
102
|
"^@clack/prompts$": "<rootDir>/tests/__mocks__/clack-prompts.js"
|
|
85
103
|
},
|
|
86
104
|
"coverageThreshold": {
|
|
87
105
|
"global": {
|
|
88
|
-
"branches":
|
|
89
|
-
"functions":
|
|
90
|
-
"lines":
|
|
91
|
-
"statements":
|
|
106
|
+
"branches": 65,
|
|
107
|
+
"functions": 70,
|
|
108
|
+
"lines": 70,
|
|
109
|
+
"statements": 70
|
|
110
|
+
},
|
|
111
|
+
"./tools/cli/commands/install.js": {
|
|
112
|
+
"lines": 65,
|
|
113
|
+
"statements": 65,
|
|
114
|
+
"functions": 45
|
|
92
115
|
},
|
|
93
116
|
"./tools/cli/commands/doctor.js": {
|
|
94
117
|
"lines": 60,
|
|
@@ -114,6 +137,7 @@
|
|
|
114
137
|
"eslint": "^10.6.0",
|
|
115
138
|
"husky": "^9.0.0",
|
|
116
139
|
"jest": "^30.4.2",
|
|
140
|
+
"jsdom": "^26.1.0",
|
|
117
141
|
"prettier": "^3.4.0"
|
|
118
142
|
}
|
|
119
143
|
}
|