bmad-plus 0.9.2 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +65 -0
- package/README.md +582 -577
- package/osint-agent-package/skills/bmad-osint-investigate/osint/SKILL.md +30 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/dossier-template.md +10 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/lawful-basis-record.md +48 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/gdpr-osint.md +48 -0
- package/package.json +7 -5
- package/readme-international/README.de.md +9 -4
- package/readme-international/README.es.md +9 -4
- package/readme-international/README.fr.md +9 -4
- package/src/bmad-plus/packs/pack-memory/shared/memory-protocol.md +14 -0
- package/tools/build/README.md +78 -0
- package/tools/build/adapters.config.js +117 -0
- package/tools/build/generate-adapters.js +485 -0
- package/tools/build/generate.js +284 -0
- package/tools/build/generated-adapters/.codex/AGENTS.md +121 -0
- package/tools/build/generated-adapters/.cursor/rules/bmad-plus.mdc +126 -0
- package/tools/build/generated-adapters/.opencode/AGENTS.md +121 -0
- package/tools/build/generated-adapters/AGENTS.md +119 -0
- package/tools/build/generated-adapters/CLAUDE.md +122 -0
- package/tools/build/generated-adapters/CONVENTIONS.md +121 -0
- package/tools/build/generated-adapters/GEMINI.md +126 -0
- package/tools/build/generated-adapters/README.md +79 -0
- package/tools/cli/bmad-plus-cli.js +11 -0
- package/tools/cli/commands/autoconfig.js +1 -3
- package/tools/cli/commands/install.js +54 -2
- package/tools/cli/commands/memory-journal-cmd.js +311 -0
- package/tools/cli/commands/scan.js +2 -18
- package/tools/cli/lib/README-memory-journal.md +125 -0
- package/tools/cli/lib/memory-init.js +204 -113
- package/tools/cli/lib/memory-journal.js +0 -0
- package/tools/cli/lib/packs.js +209 -122
- package/tools/cli/lib/path-hash.js +39 -0
- package/tools/cli/lib/python-provision.js +508 -0
|
@@ -17,6 +17,36 @@ description: >
|
|
|
17
17
|
Systematic intelligence gathering on individuals. From a name or handle to a scored
|
|
18
18
|
dossier with psychoprofile, career map, and entry points.
|
|
19
19
|
|
|
20
|
+
## Phase −1 — Lawful Basis Gate (MANDATORY, runs before anything else)
|
|
21
|
+
|
|
22
|
+
> Profiling a **named natural person** — especially building a psychoprofile — is
|
|
23
|
+
> processing of personal data (and, for inferred personality/health/political traits,
|
|
24
|
+
> **special-category data**) under the GDPR and analogous laws. This gate is not
|
|
25
|
+
> optional. Governed by the Shield (GRC) pack. **Do NOT start Phase 0** on a named
|
|
26
|
+
> person until it passes.
|
|
27
|
+
|
|
28
|
+
Before any investigation of a named/identifiable person, establish and record:
|
|
29
|
+
|
|
30
|
+
1. **Lawful basis (GDPR Art. 6)** — which applies? (consent, contract, legal
|
|
31
|
+
obligation, vital interests, public task, or **legitimate interest** with a
|
|
32
|
+
documented balancing test). For psychoprofiling / special-category inferences,
|
|
33
|
+
also an **Art. 9** condition (explicit consent, or another Art. 9(2) exemption).
|
|
34
|
+
2. **Purpose** — the specific, explicit, legitimate purpose (purpose limitation).
|
|
35
|
+
Reject open-ended "find everything" with no purpose.
|
|
36
|
+
3. **Data-subject rights & retention** — who is the controller, retention period,
|
|
37
|
+
and how a DSAR / erasure request will be honored.
|
|
38
|
+
|
|
39
|
+
**Record it** using `assets/lawful-basis-record.md` and put the completed header at
|
|
40
|
+
the top of the dossier (see `assets/dossier-template.md` governance block).
|
|
41
|
+
|
|
42
|
+
**If the operator cannot state a lawful basis and purpose → DECLINE** the named-person
|
|
43
|
+
profiling. Offer the non-personal alternatives instead (company/product/market
|
|
44
|
+
research, or investigation of a public entity), which do not require this gate.
|
|
45
|
+
|
|
46
|
+
This gate does not restrict lawful, authorized use (due diligence with a basis,
|
|
47
|
+
security research, investigations you are mandated to run) — it makes that basis
|
|
48
|
+
explicit and auditable. See `references/gdpr-osint.md`.
|
|
49
|
+
|
|
20
50
|
## Phase Router
|
|
21
51
|
|
|
22
52
|
Determine entry point from context:
|
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
**⚖️ governance / lawful basis** *(Phase −1 gate — required before this dossier exists)*
|
|
7
|
+
- controller: {controller_name}
|
|
8
|
+
- lawful basis (Art. 6): {basis} {legitimate_interest_balancing_ref_if_LI}
|
|
9
|
+
- special-category condition (Art. 9, if psychoprofile): {art9_condition_or_NA}
|
|
10
|
+
- purpose: {specific_purpose}
|
|
11
|
+
- retention: {retention_period} · DSAR/erasure contact: {dsar_contact}
|
|
12
|
+
- recorded: {date} · see `assets/lawful-basis-record.md`
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
6
16
|
**контакты и соцсети**
|
|
7
17
|
- telegram: {handle} {status}
|
|
8
18
|
- linkedin: {url} {status}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Lawful Basis Record — OSINT investigation (GDPR Phase −1 gate)
|
|
2
|
+
|
|
3
|
+
Complete this BEFORE profiling a named natural person. It doubles as the ROPA
|
|
4
|
+
(Record of Processing Activities) entry for this investigation. Governed by Shield (GRC).
|
|
5
|
+
|
|
6
|
+
## 1. Parties
|
|
7
|
+
- **Controller:** {who decides why/how — org or person}
|
|
8
|
+
- **Operator / analyst:** {who runs the investigation}
|
|
9
|
+
- **Data subject:** {named person} — category: {public figure | employee | counterparty | other}
|
|
10
|
+
|
|
11
|
+
## 2. Purpose (purpose limitation — GDPR Art. 5(1)(b))
|
|
12
|
+
- **Specific purpose:** {e.g. pre-contract due diligence on a supplier director; NOT "find everything"}
|
|
13
|
+
- **Why OSINT is necessary & proportionate for this purpose:** {justification}
|
|
14
|
+
|
|
15
|
+
## 3. Lawful basis — GDPR Art. 6(1)
|
|
16
|
+
Select ONE and justify:
|
|
17
|
+
- [ ] (a) Consent — attach/reference the consent record
|
|
18
|
+
- [ ] (b) Contract — necessary for a contract with the data subject
|
|
19
|
+
- [ ] (c) Legal obligation — cite the obligation
|
|
20
|
+
- [ ] (d) Vital interests
|
|
21
|
+
- [ ] (e) Public task
|
|
22
|
+
- [ ] (f) **Legitimate interest** — complete the 3-part balancing test below
|
|
23
|
+
|
|
24
|
+
**Legitimate Interest Assessment (if (f)):**
|
|
25
|
+
- Purpose test (is there a legitimate interest?): {…}
|
|
26
|
+
- Necessity test (is OSINT necessary, or is there a less intrusive way?): {…}
|
|
27
|
+
- Balancing test (do the person's rights/freedoms override?): {…}
|
|
28
|
+
|
|
29
|
+
## 4. Special-category data — GDPR Art. 9 (REQUIRED if building a psychoprofile)
|
|
30
|
+
Inferring personality (MBTI/Big Five), health, political opinions, religion, sexual
|
|
31
|
+
orientation, etc. is special-category processing. Select an Art. 9(2) condition:
|
|
32
|
+
- [ ] (a) Explicit consent
|
|
33
|
+
- [ ] (e) Data manifestly made public by the data subject (document how)
|
|
34
|
+
- [ ] (f) Legal claims
|
|
35
|
+
- [ ] other: {cite}
|
|
36
|
+
- **If none applies → do NOT build the psychoprofile.** Keep the factual dossier only.
|
|
37
|
+
|
|
38
|
+
## 5. Data-subject rights & retention
|
|
39
|
+
- **Retention period:** {e.g. 90 days after purpose fulfilled, then delete}
|
|
40
|
+
- **DSAR / erasure contact:** {email/process to honor access, rectification, erasure, objection}
|
|
41
|
+
- **Transparency:** how/whether the data subject is or will be informed (Art. 14), or the exemption relied on.
|
|
42
|
+
|
|
43
|
+
## 6. Sign-off
|
|
44
|
+
- Basis confirmed by: {name} · date: {date}
|
|
45
|
+
- Shield review (if enterprise/high-risk): {ref or N/A}
|
|
46
|
+
|
|
47
|
+
> If sections 2–4 cannot be completed, the Phase −1 gate FAILS: decline the
|
|
48
|
+
> named-person profiling and use the non-personal research paths instead.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# GDPR & OSINT — governance for the investigate skill
|
|
2
|
+
|
|
3
|
+
This pack performs OSINT on named individuals, including psychoprofiling. That is
|
|
4
|
+
personal-data processing (GDPR + analogous laws such as UK GDPR, LGPD, CCPA/CPRA).
|
|
5
|
+
BMAD+ **keeps** this capability and **governs** it — the Phase −1 lawful-basis gate
|
|
6
|
+
in `SKILL.md` makes lawful use explicit and auditable rather than removing the pack.
|
|
7
|
+
(Decision: keep + govern, 2026-07-02.)
|
|
8
|
+
|
|
9
|
+
## Why this matters
|
|
10
|
+
- Profiling and evaluating personal aspects is regulated (GDPR Art. 4(4), Art. 22, Recital 71).
|
|
11
|
+
- Inferring personality, health, political/religious views, or sexual orientation is
|
|
12
|
+
**special-category** processing (Art. 9) — a higher bar than ordinary personal data.
|
|
13
|
+
- "Publicly available" ≠ "no rules apply." Scraping public profiles is still processing;
|
|
14
|
+
you still need a lawful basis and must respect purpose limitation and data-subject rights.
|
|
15
|
+
|
|
16
|
+
## The gate, in one line
|
|
17
|
+
No lawful basis + specific purpose recorded (`assets/lawful-basis-record.md`) → no
|
|
18
|
+
named-person profiling. Non-personal research (company/product/market, public entities)
|
|
19
|
+
is unaffected.
|
|
20
|
+
|
|
21
|
+
## Legitimate interest (the common basis)
|
|
22
|
+
When relying on Art. 6(1)(f), complete the 3-part LIA in the record:
|
|
23
|
+
1. **Purpose** — a real, specific legitimate interest (due diligence, fraud/security, journalism).
|
|
24
|
+
2. **Necessity** — OSINT is necessary and proportionate; no less-intrusive route.
|
|
25
|
+
3. **Balancing** — the person's rights/freedoms do not override; consider their reasonable
|
|
26
|
+
expectations, the sensitivity of the data, and any special-category inference (which
|
|
27
|
+
usually tips the balance and requires an Art. 9 condition instead).
|
|
28
|
+
|
|
29
|
+
## Special-category / psychoprofile
|
|
30
|
+
Only build the psychoprofile (MBTI/Big Five, etc.) with a valid **Art. 9(2)** condition
|
|
31
|
+
(typically explicit consent, or data manifestly made public by the subject). Otherwise
|
|
32
|
+
keep the factual dossier and skip the personality inference.
|
|
33
|
+
|
|
34
|
+
## Data-subject rights & retention
|
|
35
|
+
- Define a **retention period**; delete when the purpose is met.
|
|
36
|
+
- Provide a **DSAR/erasure** path (access, rectification, erasure, objection).
|
|
37
|
+
- Consider **transparency** (Art. 14) or a documented exemption.
|
|
38
|
+
|
|
39
|
+
## Prohibited / out of scope
|
|
40
|
+
- No profiling without a recorded basis + purpose.
|
|
41
|
+
- No use for unlawful discrimination, harassment, stalking, or unauthorized surveillance.
|
|
42
|
+
- No special-category inference without an Art. 9 condition.
|
|
43
|
+
|
|
44
|
+
## Related BMAD+ assets
|
|
45
|
+
- `SKILL.md` → Phase −1 gate.
|
|
46
|
+
- `assets/lawful-basis-record.md` → gate record + ROPA entry.
|
|
47
|
+
- Shield (GRC) pack → `gdpr-agent`, `legitimate-interest`, `dpia-sentinel`, `privacy-notice-gen`
|
|
48
|
+
for DPIA, LIA, ROPA, and privacy-notice generation at scale.
|
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.12.1",
|
|
5
5
|
"description": "BMAD+ — Augmented AI-Driven Development Framework with multi-role agents, autopilot, and parallel execution",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"bmad",
|
|
@@ -34,6 +34,8 @@
|
|
|
34
34
|
"install:bmad": "node tools/cli/bmad-plus-cli.js install",
|
|
35
35
|
"update:bmad": "node tools/cli/bmad-plus-cli.js update",
|
|
36
36
|
"doctor:bmad": "node tools/cli/bmad-plus-cli.js doctor",
|
|
37
|
+
"build": "node tools/build/generate.js --out tools/cli/lib/packs.js",
|
|
38
|
+
"build:check": "node tools/build/generate.js --check",
|
|
37
39
|
"lint": "eslint tools/ tests/",
|
|
38
40
|
"format": "prettier --write \"tools/**/*.js\" \"tests/**/*.js\"",
|
|
39
41
|
"format:check": "prettier --check \"tools/**/*.js\" \"tests/**/*.js\"",
|
|
@@ -43,10 +45,9 @@
|
|
|
43
45
|
},
|
|
44
46
|
"dependencies": {
|
|
45
47
|
"@clack/prompts": "^1.4.0",
|
|
46
|
-
"chalk": "^4.1.2",
|
|
47
48
|
"commander": "^14.0.0",
|
|
48
|
-
"fs-extra": "^11.3.
|
|
49
|
-
"js-yaml": "^
|
|
49
|
+
"fs-extra": "^11.3.6",
|
|
50
|
+
"js-yaml": "^5.2.1",
|
|
50
51
|
"picocolors": "^1.1.1"
|
|
51
52
|
},
|
|
52
53
|
"engines": {
|
|
@@ -81,7 +82,8 @@
|
|
|
81
82
|
"testEnvironment": "node"
|
|
82
83
|
},
|
|
83
84
|
"devDependencies": {
|
|
84
|
-
"eslint": "^
|
|
85
|
+
"@eslint/js": "^10.0.1",
|
|
86
|
+
"eslint": "^10.6.0",
|
|
85
87
|
"husky": "^9.0.0",
|
|
86
88
|
"jest": "^30.4.2",
|
|
87
89
|
"prettier": "^3.4.0"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 🚀 BMAD+ — Erweitertes Multi-Agent KI-Framework
|
|
2
2
|
|
|
3
|
-
[](../CHANGELOG.md)
|
|
4
4
|
[](https://github.com/bmad-code-org/BMAD-METHOD)
|
|
5
5
|
[](../LICENSE)
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<a href="../README.md">English</a> | <a href="README.fr.md">Français</a> | <a href="README.es.md">Español</a> | 🌐 <b>Deutsch</b>
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
|
-
> **56+ Multirole-Agenten · 9 modulare Packs · Autopilot-Modus · Parallele Ausführung ·
|
|
11
|
+
> **56+ Multirole-Agenten · 9 modulare Packs · Autopilot-Modus · Parallele Ausführung · 333 Tests**
|
|
12
12
|
> Intelligenter Fork von [BMAD-METHOD](https://github.com/bmad-code-org/BMAD-METHOD) — Selbstaktivierende Agenten mit 3-Stufen-Kontexterkennung, GRC-Compliance (Shield), vollständige SDLC-Pipeline (Dev Studio), OSINT-Intelligence, SEO-Audit, persistentes Cross-Session-Gedächtnis und 10-Sprachen CLI-Installer.
|
|
13
13
|
|
|
14
14
|
---
|
|
@@ -556,8 +556,13 @@ BMAD+/
|
|
|
556
556
|
| **0.4.4** | 2026-05-17 | 🔧 UTF-8-Kodierungsfix, vollständige i18n 10 Sprachen, 62 Unit-Tests |
|
|
557
557
|
| **0.5.0** | 2026-05-17 | 🛡️ **Pack Shield** — 38 GRC-Compliance-Agenten, 7 Kategorien, 25+ Frameworks (DSGVO, ISO 27001, SOC 2, EU AI Act...) |
|
|
558
558
|
| **0.6.0** | 2026-05-17 | 🏗️ **Pack Dev Studio** — 6 SDLC-Agenten (Miriam, Yosef, Bezalel...) + 30 SDLC-Workflows, BWML DSL |
|
|
559
|
-
| **0.
|
|
560
|
-
| **0.
|
|
559
|
+
| **0.8.0** | 2026-06-24 | 🚀 **Erweitert** — 3 neue Packs (animated, backup, seo), Sicherheits-Remediation, i18n-Sync |
|
|
560
|
+
| **0.9.0** | 2026-06-24 | 🔒 **Sicher** — Audit-Remediation-Zyklus, npm audit sauber, gemeinsames Pack-Registry (`lib/packs.js`) |
|
|
561
|
+
| **0.9.1** | 2026-07-01 | ✅ **Glaubwürdigkeit** — echte CI bei Push/PR, Jest-ESM-Harness repariert, ESLint-Flat-Config, falsche Badges entfernt |
|
|
562
|
+
| **0.9.2** | 2026-07-01 | 🔐 **Sicherheit** — RCE (ci_cd-Allowlist), SSRF, Stored/DOM-XSS, XXE, Python-CVE-Bumps (~30 Findings) |
|
|
563
|
+
| **0.10.0** | 2026-07-02 | 🧭 **Plattform-Rückgrat** — SSOT `registry.yaml` (generiertes `packs.js` + CI-Drift-Gate), Python-Provisioning, Eval- + Memory-Fundament |
|
|
564
|
+
| **0.11.0** | 2026-07-02 | 🧠 **Karpathy-Schleife** — `bmad mem` recall/write/reinforce, Multi-CLI-Adapter-Generator, OSINT-Rechtsgrundlagen-Gate (CG-02) |
|
|
565
|
+
| **0.12.0** | 2026-07-02 | 🏛️ **Load-bearing** — Root-Adapter aus dem Registry adoptiert, Memory über MCP, provider-neutrales Eval-Gateway; 333 Tests |
|
|
561
566
|
|
|
562
567
|
Siehe [CHANGELOG.md](../CHANGELOG.md) für vollständige Details.
|
|
563
568
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 🚀 BMAD+ — Framework Multi-Agente IA Aumentado
|
|
2
2
|
|
|
3
|
-
[](../CHANGELOG.md)
|
|
4
4
|
[](https://github.com/bmad-code-org/BMAD-METHOD)
|
|
5
5
|
[](../LICENSE)
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<a href="../README.md">English</a> | <a href="README.fr.md">Français</a> | 🌐 <b>Español</b> | <a href="README.de.md">Deutsch</a>
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
|
-
> **56+ agentes multirrol · 9 packs modulares · Modo Autopilot · Ejecución paralela ·
|
|
11
|
+
> **56+ agentes multirrol · 9 packs modulares · Modo Autopilot · Ejecución paralela · 333 tests**
|
|
12
12
|
> Fork inteligente de [BMAD-METHOD](https://github.com/bmad-code-org/BMAD-METHOD) — Agentes auto-activables con detección contextual en 3 niveles, cumplimiento GRC (Shield), pipeline SDLC completo (Dev Studio), inteligencia OSINT, auditoría SEO, memoria persistente cross-session e instalador CLI en 10 idiomas.
|
|
13
13
|
|
|
14
14
|
---
|
|
@@ -571,8 +571,13 @@ BMAD+/
|
|
|
571
571
|
| **0.4.4** | 2026-05-17 | 🔧 Corrección codificación UTF-8, i18n completa 10 idiomas, 62 tests unitarios |
|
|
572
572
|
| **0.5.0** | 2026-05-17 | 🛡️ **Pack Shield** — 38 agentes de cumplimiento GRC, 7 categorías, 25+ frameworks (GDPR, ISO 27001, SOC 2, EU AI Act...) |
|
|
573
573
|
| **0.6.0** | 2026-05-17 | 🏗️ **Pack Dev Studio** — 6 agentes SDLC (Miriam, Yosef, Bezalel...) + 30 flujos de trabajo SDLC, BWML DSL |
|
|
574
|
-
| **0.
|
|
575
|
-
| **0.
|
|
574
|
+
| **0.8.0** | 2026-06-24 | 🚀 **Aumentado** — 3 nuevos packs (animated, backup, seo), pase de remediación de seguridad, sync i18n |
|
|
575
|
+
| **0.9.0** | 2026-06-24 | 🔒 **Seguro** — ciclo de remediación de auditoría, npm audit limpio, registro de packs compartido (`lib/packs.js`) |
|
|
576
|
+
| **0.9.1** | 2026-07-01 | ✅ **Credibilidad** — CI real en push/PR, arnés Jest ESM reparado, config ESLint flat, badges falsos retirados |
|
|
577
|
+
| **0.9.2** | 2026-07-01 | 🔐 **Seguridad** — RCE (allowlist ci_cd), SSRF, XSS almacenado/DOM, XXE, bumps CVE Python (~30 hallazgos) |
|
|
578
|
+
| **0.10.0** | 2026-07-02 | 🧭 **Columna vertebral de plataforma** — SSOT `registry.yaml` (`packs.js` generado + gate anti-drift en CI), provisioning Python, fundaciones eval + memoria |
|
|
579
|
+
| **0.11.0** | 2026-07-02 | 🧠 **Bucle Karpathy** — `bmad mem` recall/write/reinforce, generador de adapters multi-CLI, gate de base legal OSINT (CG-02) |
|
|
580
|
+
| **0.12.0** | 2026-07-02 | 🏛️ **Load-bearing** — adapters raíz adoptados desde el registry, memoria vía MCP, gateway eval multi-proveedor; 333 tests |
|
|
576
581
|
|
|
577
582
|
Más descripciones a fondo en el archivo: [CHANGELOG.md](../CHANGELOG.md).
|
|
578
583
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 🚀 BMAD+ — Framework Multi-Agent IA Augmenté
|
|
2
2
|
|
|
3
|
-
[](../CHANGELOG.md)
|
|
4
4
|
[](https://github.com/bmad-code-org/BMAD-METHOD)
|
|
5
5
|
[](../LICENSE)
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<a href="../README.md">English</a> | 🌐 <b>Français</b> | <a href="README.es.md">Español</a> | <a href="README.de.md">Deutsch</a>
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
|
-
> **56+ agents multi-rôles · 9 packs modulaires · Mode Autopilot · Exécution parallèle ·
|
|
11
|
+
> **56+ agents multi-rôles · 9 packs modulaires · Mode Autopilot · Exécution parallèle · 333 tests**
|
|
12
12
|
> Fork intelligent de [BMAD-METHOD](https://github.com/bmad-code-org/BMAD-METHOD) — Agents auto-activables avec détection contextuelle 3 niveaux, conformité GRC (Shield), pipeline SDLC complet (Dev Studio), intelligence OSINT, audit SEO, mémoire persistante cross-session, et installeur CLI 10 langues.
|
|
13
13
|
|
|
14
14
|
---
|
|
@@ -571,8 +571,13 @@ BMAD+/
|
|
|
571
571
|
| **0.4.4** | 2026-05-17 | 🔧 Correction encodage UTF-8, i18n complète 10 langues, 62 tests unitaires |
|
|
572
572
|
| **0.5.0** | 2026-05-17 | 🛡️ **Pack Shield** — 38 agents de conformité GRC, 7 catégories, 25+ frameworks (RGPD, ISO 27001, SOC 2, EU AI Act...) |
|
|
573
573
|
| **0.6.0** | 2026-05-17 | 🏗️ **Pack Dev Studio** — 6 agents SDLC (Miriam, Yosef, Bezalel...) + 30 workflows SDLC, BWML DSL |
|
|
574
|
-
| **0.
|
|
575
|
-
| **0.
|
|
574
|
+
| **0.8.0** | 2026-06-24 | 🚀 **Augmenté** — 3 nouveaux packs (animated, backup, seo), passe de remédiation sécurité, sync i18n |
|
|
575
|
+
| **0.9.0** | 2026-06-24 | 🔒 **Sécurisé** — cycle de remédiation d'audit, npm audit propre, registre de packs partagé (`lib/packs.js`) |
|
|
576
|
+
| **0.9.1** | 2026-07-01 | ✅ **Crédibilité** — vraie CI sur push/PR, harnais Jest ESM réparé, config ESLint flat, faux badges retirés |
|
|
577
|
+
| **0.9.2** | 2026-07-01 | 🔐 **Sécurité** — RCE (allowlist ci_cd), SSRF, XSS stocké/DOM, XXE, bumps CVE Python (~30 findings) |
|
|
578
|
+
| **0.10.0** | 2026-07-02 | 🧭 **Épine dorsale plateforme** — SSOT `registry.yaml` (`packs.js` généré + gate anti-drift CI), provisioning Python, fondations eval + mémoire |
|
|
579
|
+
| **0.11.0** | 2026-07-02 | 🧠 **Boucle Karpathy** — `bmad mem` recall/write/reinforce, générateur d'adapters multi-CLI, gate base légale OSINT (CG-02) |
|
|
580
|
+
| **0.12.0** | 2026-07-02 | 🏛️ **Load-bearing** — adapters racine adoptés depuis le registry, mémoire via MCP, gateway eval multi-provider ; 333 tests |
|
|
576
581
|
|
|
577
582
|
Voir [CHANGELOG.md](../CHANGELOG.md) pour le détail complet.
|
|
578
583
|
|
|
@@ -29,6 +29,20 @@
|
|
|
29
29
|
└── <hash>.yaml ← Per-project metadata
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
+
### Portfolio Brain (workspace-level, takes precedence)
|
|
33
|
+
|
|
34
|
+
If a `_brain/` directory exists in the project directory or any ancestor (e.g. `D:\workspace\_brain\` above `D:\workspace\clients\my-project\`), install links the project to it instead of `~/.bmad-plus/brain`. The `BMAD_PLUS_BRAIN` env var overrides all auto-detection.
|
|
35
|
+
|
|
36
|
+
The kind of brain that was linked is recorded in `.brain-link`:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{ "linked_brain": "D:\\workspace\\_brain", "brain_type": "portfolio", "linked_at": "…" }
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`brain_type` values: `portfolio` (workspace `_brain/` or env var) · `bmad-global` (`~/.bmad-plus/brain`) · `claude-memory` (`~/.claude/memory`).
|
|
43
|
+
|
|
44
|
+
**Rule for agents**: a portfolio brain has its **own** conventions and layout — read its entry point (`README.md` / `AGENTS.md` / `HOT.md`) first and follow them. Do NOT assume the BMAD+ global layout above; in particular do not create `identity.yaml` or `projects/` inside a portfolio brain uninvited.
|
|
45
|
+
|
|
32
46
|
---
|
|
33
47
|
|
|
34
48
|
## Protocol: Session Start (READ)
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# BMAD+ Build — Registry Generator (Pillar 1)
|
|
2
|
+
|
|
3
|
+
`registry.yaml` at the repo root is the **single source of truth** for the
|
|
4
|
+
9 packs, their agents, skills, data files, install layout, runtimes, and
|
|
5
|
+
compliance tags. Until now this data was hand-replicated in 5 places
|
|
6
|
+
(`tools/cli/lib/packs.js`, `src/bmad-plus/module.yaml`, `install.js`,
|
|
7
|
+
`ide-config.js`, `i18n.js`) — and they drifted.
|
|
8
|
+
|
|
9
|
+
`tools/build/generate.js` reads `registry.yaml` and generates the pack data
|
|
10
|
+
consumed by the CLI. The migration proof (`tests/unit/generate.test.js`)
|
|
11
|
+
asserts the generated `PACKS` / `PACK_ORDER` / `EXPECTED_AGENTS` are
|
|
12
|
+
**deep-strict-equal** to the hand-written `tools/cli/lib/packs.js`, so the
|
|
13
|
+
registry provably captures current reality before anything is replaced.
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Print the generated packs module source (drop-in packs.js replacement)
|
|
19
|
+
node tools/build/generate.js
|
|
20
|
+
|
|
21
|
+
# Print PACKS / PACK_ORDER / EXPECTED_AGENTS as JSON
|
|
22
|
+
node tools/build/generate.js --json
|
|
23
|
+
|
|
24
|
+
# Write the generated module to a file
|
|
25
|
+
node tools/build/generate.js --out tools/cli/lib/packs.generated.js
|
|
26
|
+
|
|
27
|
+
# CI drift gate: exit 1 if registry.yaml no longer reproduces packs.js
|
|
28
|
+
# (also asserts product.version == package.json version)
|
|
29
|
+
node tools/build/generate.js --check
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Registry contract (fields the generator consumes)
|
|
33
|
+
|
|
34
|
+
Per pack under `packs:` in `registry.yaml`:
|
|
35
|
+
|
|
36
|
+
| Field | Maps to | Notes |
|
|
37
|
+
| --- | --- | --- |
|
|
38
|
+
| `order` | `PACK_ORDER` position | integer, unique |
|
|
39
|
+
| `cli.name` / `cli.icon` / `cli.desc` | `PACKS[id].name/icon/desc` | exact CLI strings (icon = glyph letter) |
|
|
40
|
+
| `agents` | `PACKS[id].agents` | agent ids the installer copies |
|
|
41
|
+
| `skills` | `PACKS[id].skills` | defaults to `[]` |
|
|
42
|
+
| `data` | `PACKS[id].data` | **key presence is significant** — only core & maker declare it |
|
|
43
|
+
| `external_package` | `PACKS[id].externalPackage` | osint only |
|
|
44
|
+
| `pack_dir` / `pack_src_dir` | `PACKS[id].packDir/packSrcDir` | `pack_src_dir` defaults to `packs` |
|
|
45
|
+
| `required` | `PACKS[id].required` | emitted **only when `true`** (packs.js omits it otherwise) |
|
|
46
|
+
| `install_layout` | `EXPECTED_AGENTS[id]` | `loose` → agents as directories, `packDir: null`; `packaged` → `packDir` + `doctor.pack_agents` |
|
|
47
|
+
| `doctor.pack_agents` | `EXPECTED_AGENTS[id].packAgents` | agent **filenames** inside `pack_dir` (packaged only) |
|
|
48
|
+
|
|
49
|
+
Everything else in `registry.yaml` (`display_name`, `icon_emoji`, `summary`,
|
|
50
|
+
`runtime`, `categories`, `workflows`, `governance`, `compliance_tags`,
|
|
51
|
+
`targets`, `runtimes`, `memory`, `eval`) is north-star metadata consumed by
|
|
52
|
+
future generators (module.yaml, README count tables, per-CLI adapters,
|
|
53
|
+
role-triggers) — declared once here so counts are derived, never typed.
|
|
54
|
+
|
|
55
|
+
## Editing workflow
|
|
56
|
+
|
|
57
|
+
1. Edit `registry.yaml` (never the generated data).
|
|
58
|
+
2. Run `node tools/build/generate.js --check`.
|
|
59
|
+
3. While `packs.js` is still hand-written (migration phase), sync it via
|
|
60
|
+
`node tools/build/generate.js --out tools/cli/lib/packs.js` or apply the
|
|
61
|
+
equivalent hand edit — `--check` and `tests/unit/generate.test.js`
|
|
62
|
+
(`npx jest tests/unit/generate.test.js`) both fail on any divergence.
|
|
63
|
+
|
|
64
|
+
## Migration end-state (for the orchestrator)
|
|
65
|
+
|
|
66
|
+
Once integration is approved, `tools/cli/lib/packs.js` becomes either:
|
|
67
|
+
|
|
68
|
+
- a checked-in generated file (`generate.js --out tools/cli/lib/packs.js`,
|
|
69
|
+
with `--check` as a CI/pre-commit gate), or
|
|
70
|
+
- a thin runtime re-export:
|
|
71
|
+
|
|
72
|
+
```js
|
|
73
|
+
const { loadRegistry, buildAll } = require('../../build/generate');
|
|
74
|
+
module.exports = buildAll(loadRegistry());
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Both keep the exact `{ PACKS, PACK_ORDER, EXPECTED_AGENTS }` shape every CLI
|
|
78
|
+
command already imports, so no call site changes.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BMAD+ Build — hand-authored project instructions (Pillar 5 adoption).
|
|
3
|
+
*
|
|
4
|
+
* When the root adapters (CLAUDE.md / GEMINI.md / AGENTS.md / .cursor / .codex /
|
|
5
|
+
* .opencode / CONVENTIONS.md) were adopted as GENERATED files, every substantive
|
|
6
|
+
* hand-written instruction they contained was folded into THIS file — the UNION
|
|
7
|
+
* of all three pre-adoption root files, nothing dropped:
|
|
8
|
+
*
|
|
9
|
+
* - Agents roster (personas + Hebrew names + pack qualifiers) — from all three
|
|
10
|
+
* - Skills paths (installed `.agents/` layout AND repo `src/bmad-plus/` layout)
|
|
11
|
+
* - Project Structure — from GEMINI/AGENTS
|
|
12
|
+
* - Communication (user name + language policy) — from CLAUDE
|
|
13
|
+
* - Commit Rules (no AI co-author) — from GEMINI
|
|
14
|
+
* - Repository Maintenance Rule (README i18n sync) — from GEMINI/AGENTS
|
|
15
|
+
* - Memory Protocol (Karpathy Guardrails G1–G4 + files) — from CLAUDE
|
|
16
|
+
*
|
|
17
|
+
* These sections are injected VERBATIM into the generated spine (AGENTS.md) and
|
|
18
|
+
* into every generated adapter, so every tool keeps the full instructions even
|
|
19
|
+
* when it only auto-loads its own file.
|
|
20
|
+
*
|
|
21
|
+
* EDIT THIS FILE (never the generated root files), then regenerate:
|
|
22
|
+
* node tools/build/generate-adapters.js --adopt
|
|
23
|
+
*
|
|
24
|
+
* Numbers policy: NO counts are hand-typed here (they drift — see audit DOC-06).
|
|
25
|
+
* All counts live in the generated "Registry facts" section, derived from
|
|
26
|
+
* registry.yaml. That is why the Shield line below carries no agent count.
|
|
27
|
+
*
|
|
28
|
+
* Author: Laurent Rochetta
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
'use strict';
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Markdown lines (LF-joined by the generator). Headings are `##` level so the
|
|
35
|
+
* block nests directly under each generated file's H1.
|
|
36
|
+
*/
|
|
37
|
+
const PROJECT_INSTRUCTIONS = [
|
|
38
|
+
'## Agents',
|
|
39
|
+
'',
|
|
40
|
+
'To activate an agent, say its name or persona:',
|
|
41
|
+
'',
|
|
42
|
+
'- **Atlas** (Strategist) — Business analysis + Product management',
|
|
43
|
+
'- **Forge** (Architect-Dev) — Architecture + Development + Documentation',
|
|
44
|
+
'- **Sentinel** (Quality) — QA + UX review',
|
|
45
|
+
'- **Nexus** (Orchestrator) — Sprint management + Autopilot + Parallel execution',
|
|
46
|
+
'- **Shadow** (OSINT) — Investigation + Scraping + Psychoprofiling (if OSINT pack installed)',
|
|
47
|
+
'- **Maker** (Agent Creator) — Design, build, validate, and package new BMAD+ agents',
|
|
48
|
+
'- **Shield** (GRC) — Compliance agents for GDPR, ISO 27001, SOC 2, HIPAA, EU AI Act, DORA, NIS2 and more (derived counts: see Registry facts below)',
|
|
49
|
+
'- **Miriam** (מרים) — Business Analyst — Strategic analysis, research, product briefs (Dev Studio)',
|
|
50
|
+
'- **Huldah** (חולדה) — Technical Writer — Documentation, diagrams, editorial review (Dev Studio)',
|
|
51
|
+
'- **Yosef** (יוסף) — Product Manager — PRD, requirements, feature prioritization (Dev Studio)',
|
|
52
|
+
'- **Rachel** (רחל) — UX Designer — User experience, wireframes, empathy mapping (Dev Studio)',
|
|
53
|
+
'- **Bezalel** (בצלאל) — System Architect — Architecture, ADRs, epics & stories (Dev Studio)',
|
|
54
|
+
'- **Oholiab** (אהליאב) — Senior Engineer — TDD, sprint, code review, implementation (Dev Studio)',
|
|
55
|
+
'- **Zecher** (זכר, Memory Guardian) — Memory Archivist — Persistent cross-session memory, consolidation, project scanning, context recall, session handoffs',
|
|
56
|
+
'',
|
|
57
|
+
'## Skills',
|
|
58
|
+
'',
|
|
59
|
+
'- Installed projects load skills from `.agents/skills/`; in this repository the sources live in `src/bmad-plus/skills/` and `src/bmad-plus/agents/`.',
|
|
60
|
+
'- Each agent has a SKILL.md with capabilities, activation protocol, and role-switching rules.',
|
|
61
|
+
'- Auto-activation triggers: `.agents/data/role-triggers.yaml` (source: `src/bmad-plus/data/role-triggers.yaml`).',
|
|
62
|
+
'',
|
|
63
|
+
'## Project Structure',
|
|
64
|
+
'',
|
|
65
|
+
'- `src/bmad-plus/` — Custom module (agents, skills, data)',
|
|
66
|
+
'- `monitor/` — Upstream monitoring system (VPS)',
|
|
67
|
+
'- `mcp-server/` — Audit 360° MCP Server',
|
|
68
|
+
'- `osint-agent-package/` — OSINT package',
|
|
69
|
+
'- `upstream/` — BMAD-METHOD reference clone',
|
|
70
|
+
'',
|
|
71
|
+
'## Communication',
|
|
72
|
+
'',
|
|
73
|
+
'- User name: laurent',
|
|
74
|
+
'- Default language: Français for user-facing content, English for code and technical docs.',
|
|
75
|
+
'',
|
|
76
|
+
'## Commit Rules',
|
|
77
|
+
'',
|
|
78
|
+
'- NEVER add "Co-Authored-By: Claude" or any AI co-author attribution.',
|
|
79
|
+
'- The sole author is Laurent Rochetta.',
|
|
80
|
+
'',
|
|
81
|
+
'## Repository Maintenance Rule',
|
|
82
|
+
'',
|
|
83
|
+
'When updating the main README.md (English), you MUST synchronously update all translations in the readme-international/ directory (fr, es, de).',
|
|
84
|
+
'',
|
|
85
|
+
'## Memory Protocol (Karpathy Guardrails)',
|
|
86
|
+
'',
|
|
87
|
+
'Agents MUST follow these behavioral principles:',
|
|
88
|
+
'',
|
|
89
|
+
'### G1 — Think Before Coding',
|
|
90
|
+
'',
|
|
91
|
+
'- State assumptions explicitly. If uncertain, ask.',
|
|
92
|
+
'- Check `.agents/memory/decisions.md` for prior decisions before re-deciding.',
|
|
93
|
+
'',
|
|
94
|
+
'### G2 — Simplicity First',
|
|
95
|
+
'',
|
|
96
|
+
'- Minimum code that solves the problem. Nothing speculative.',
|
|
97
|
+
'- Check `.agents/memory/patterns.md` for existing solutions.',
|
|
98
|
+
'',
|
|
99
|
+
'### G3 — Surgical Changes',
|
|
100
|
+
'',
|
|
101
|
+
'- Touch only what you must. Match existing style.',
|
|
102
|
+
'- Log surprises in `.agents/memory/lessons.md`.',
|
|
103
|
+
'',
|
|
104
|
+
'### G4 — Goal-Driven Execution',
|
|
105
|
+
'',
|
|
106
|
+
'- Define success criteria before implementing.',
|
|
107
|
+
'- Log non-obvious decisions in `.agents/memory/decisions.md`.',
|
|
108
|
+
'',
|
|
109
|
+
'### Memory Files',
|
|
110
|
+
'',
|
|
111
|
+
'- `.agents/memory/decisions.md` — Read at session start, write when making decisions',
|
|
112
|
+
'- `.agents/memory/lessons.md` — Write when something unexpected happens',
|
|
113
|
+
'- `.agents/memory/patterns.md` — Write when a reusable pattern is validated',
|
|
114
|
+
'- `.agents/memory/context.md` — Update at session end with project state',
|
|
115
|
+
];
|
|
116
|
+
|
|
117
|
+
module.exports = { PROJECT_INSTRUCTIONS };
|