sistema-multiagente-sdlc 1.4.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +57 -1
- package/README.md +238 -108
- package/migrations/1.5.0/README.md +3 -0
- package/migrations/1.5.0/up.mjs +14 -0
- package/migrations/1.6.0/README.md +7 -0
- package/migrations/1.6.0/up.mjs +14 -0
- package/package.json +20 -6
- package/phase-contract.yaml +194 -0
- package/profiles/full-harness.yaml +30 -0
- package/schemas/phase-evidence.schema.json +73 -0
- package/schemas/skill-eval.schema.json +73 -0
- package/scripts/validate-mustache-references-exist.mjs +1 -0
- package/src/cli.js +37 -1
- package/src/eval-runner.js +272 -0
- package/src/harness.js +557 -0
- package/src/migrations.js +5 -1
- package/src/render.js +77 -4
- package/src/runtime.js +9 -2
- package/templates/.claude/skills/contexto-proyecto/SKILL.md +9 -4
- package/templates/.claude/skills/enrich-us/SKILL.md +12 -8
- package/templates/.github/AGENTS.md +4 -0
- package/templates/.github/agents/README.md +7 -1
- package/templates/.github/agents/ownership-matrix.md +5 -0
- package/templates/.github/agents/product-owner-agent.agent.md +25 -0
- package/templates/.github/agents/project-manager-agent.agent.md +25 -0
- package/templates/.github/agents/qa-test-architect-agent.agent.md +25 -0
- package/templates/.github/agents/tech-writer-agent.agent.md +25 -0
- package/templates/.github/agents/ux-designer-agent.agent.md +25 -0
- package/templates/.github/copilot-instructions-greenfield.md +4 -0
- package/templates/.github/copilot-instructions-legacy.md +11 -5
- package/templates/.github/copilot-instructions.md +26 -1
- package/templates/.github/skills/contexto-proyecto/SKILL.md +9 -4
- package/templates/.github/skills/enrich-us/SKILL.md +12 -8
- package/templates/.github/skills/party-mode/SKILL.md +31 -0
- package/templates/AGENTS.md +2 -0
- package/templates/CLAUDE.md +7 -3
- package/templates/docs/agents/catalogo-comandos-proyecto.md +3 -3
- package/templates/docs/agents/external-tools-matrix.md +83 -16
- package/templates/docs/guides/memoria-persistente-multiagente.md +14 -8
- package/templates/docs/guides/tool-hierarchy-and-profiles.md +141 -0
- package/templates/indice-operativo.md +1 -0
- package/templates/manifest.yaml +18 -0
- package/templates/phases/F0-bootstrap/README.md +12 -0
- package/templates/phases/F0-bootstrap/evidence.template.yaml +14 -0
- package/templates/phases/F0-bootstrap/inputs.template.md +6 -0
- package/templates/phases/F0-bootstrap/outputs.template.md +6 -0
- package/templates/phases/F1-requirements-analysis/README.md +12 -0
- package/templates/phases/F1-requirements-analysis/evidence.template.yaml +14 -0
- package/templates/phases/F1-requirements-analysis/inputs.template.md +6 -0
- package/templates/phases/F1-requirements-analysis/outputs.template.md +6 -0
- package/templates/phases/F10-security/README.md +12 -0
- package/templates/phases/F10-security/evidence.template.yaml +14 -0
- package/templates/phases/F10-security/inputs.template.md +6 -0
- package/templates/phases/F10-security/outputs.template.md +6 -0
- package/templates/phases/F11-commit/README.md +12 -0
- package/templates/phases/F11-commit/evidence.template.yaml +14 -0
- package/templates/phases/F11-commit/inputs.template.md +6 -0
- package/templates/phases/F11-commit/outputs.template.md +6 -0
- package/templates/phases/F12-pr/README.md +12 -0
- package/templates/phases/F12-pr/evidence.template.yaml +14 -0
- package/templates/phases/F12-pr/inputs.template.md +6 -0
- package/templates/phases/F12-pr/outputs.template.md +6 -0
- package/templates/phases/F13-human-gate/README.md +12 -0
- package/templates/phases/F13-human-gate/evidence.template.yaml +14 -0
- package/templates/phases/F13-human-gate/inputs.template.md +6 -0
- package/templates/phases/F13-human-gate/outputs.template.md +6 -0
- package/templates/phases/F14-merge/README.md +12 -0
- package/templates/phases/F14-merge/evidence.template.yaml +14 -0
- package/templates/phases/F14-merge/inputs.template.md +6 -0
- package/templates/phases/F14-merge/outputs.template.md +6 -0
- package/templates/phases/F15-post-merge/README.md +12 -0
- package/templates/phases/F15-post-merge/evidence.template.yaml +14 -0
- package/templates/phases/F15-post-merge/inputs.template.md +6 -0
- package/templates/phases/F15-post-merge/outputs.template.md +6 -0
- package/templates/phases/F16-archive/README.md +12 -0
- package/templates/phases/F16-archive/evidence.template.yaml +14 -0
- package/templates/phases/F16-archive/inputs.template.md +6 -0
- package/templates/phases/F16-archive/outputs.template.md +6 -0
- package/templates/phases/F17-living-docs/README.md +12 -0
- package/templates/phases/F17-living-docs/evidence.template.yaml +14 -0
- package/templates/phases/F17-living-docs/inputs.template.md +6 -0
- package/templates/phases/F17-living-docs/outputs.template.md +6 -0
- package/templates/phases/F2-human-draft-review/README.md +12 -0
- package/templates/phases/F2-human-draft-review/evidence.template.yaml +14 -0
- package/templates/phases/F2-human-draft-review/inputs.template.md +6 -0
- package/templates/phases/F2-human-draft-review/outputs.template.md +6 -0
- package/templates/phases/F3-local-issue-validation/README.md +12 -0
- package/templates/phases/F3-local-issue-validation/evidence.template.yaml +14 -0
- package/templates/phases/F3-local-issue-validation/inputs.template.md +6 -0
- package/templates/phases/F3-local-issue-validation/outputs.template.md +6 -0
- package/templates/phases/F3_5-branch/README.md +12 -0
- package/templates/phases/F3_5-branch/evidence.template.yaml +14 -0
- package/templates/phases/F3_5-branch/inputs.template.md +6 -0
- package/templates/phases/F3_5-branch/outputs.template.md +6 -0
- package/templates/phases/F4-readiness/README.md +12 -0
- package/templates/phases/F4-readiness/evidence.template.yaml +14 -0
- package/templates/phases/F4-readiness/inputs.template.md +6 -0
- package/templates/phases/F4-readiness/outputs.template.md +6 -0
- package/templates/phases/F5-sdd-planning/README.md +12 -0
- package/templates/phases/F5-sdd-planning/evidence.template.yaml +14 -0
- package/templates/phases/F5-sdd-planning/inputs.template.md +6 -0
- package/templates/phases/F5-sdd-planning/outputs.template.md +6 -0
- package/templates/phases/F6-handoff/README.md +12 -0
- package/templates/phases/F6-handoff/evidence.template.yaml +14 -0
- package/templates/phases/F6-handoff/inputs.template.md +6 -0
- package/templates/phases/F6-handoff/outputs.template.md +6 -0
- package/templates/phases/F7-orchestration/README.md +12 -0
- package/templates/phases/F7-orchestration/evidence.template.yaml +14 -0
- package/templates/phases/F7-orchestration/inputs.template.md +6 -0
- package/templates/phases/F7-orchestration/outputs.template.md +6 -0
- package/templates/phases/F8-implementation/README.md +12 -0
- package/templates/phases/F8-implementation/evidence.template.yaml +14 -0
- package/templates/phases/F8-implementation/inputs.template.md +6 -0
- package/templates/phases/F8-implementation/outputs.template.md +6 -0
- package/templates/phases/F9-qa/README.md +12 -0
- package/templates/phases/F9-qa/evidence.template.yaml +14 -0
- package/templates/phases/F9-qa/inputs.template.md +6 -0
- package/templates/phases/F9-qa/outputs.template.md +6 -0
- package/templates/scripts/agent-skills.manifest.json +4 -1
- package/templates/scripts/bootstrap-agent-skills.ps1 +65 -1
- package/templates/scripts/validate-local-gate.mjs +41 -0
- package/templates/scripts/validate-local-gate.ps1 +195 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,62 @@
|
|
|
4
4
|
|
|
5
5
|
_No hay cambios pendientes._
|
|
6
6
|
|
|
7
|
+
## [1.7.0] — 2026-05-29
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- ADR `0006-engine-harness-verdict-eval.md`: extensiones para Governance Engineering (P2–P4 del plan).
|
|
12
|
+
- `sdlc verdict`: veredicto único READY/NOT-READY con validators en orden fail-fast, clasificación BLOCKING/WARNING, exit 0/2. Opcional `--write --slice --phase` para artefacto en evidence/.
|
|
13
|
+
- `sdlc status`: snapshot go/no-go agregado (governance-check + tools-doctor + phase-gate). Flags `--markdown --write` (genera `status.md`) y `--exit-code` para CI hard-block.
|
|
14
|
+
- `sdlc phase-gate --exit-code`: flag que hace el chequeo bloqueante (exit 2 cuando "blocked"), con scoping correcto; sin el flag mantiene comportamiento informativo (exit 0) para compatibilidad P0.
|
|
15
|
+
- `src/eval-runner.js`: eval-runner determinístico para el loop de skills vivas (ADR-025 P4).
|
|
16
|
+
- `sdlc skill-eval --skill <nombre>`: evalúa golden tasks de `.github/skills/<skill>/evals/*.yaml`; emite score y detalles por task.
|
|
17
|
+
- `sdlc skill-propose --skill <nombre> --change <change> --intent "..."`: genera propuesta de edición de skill solo bajo `openspec/changes/<change>/`; nunca muta `.github/skills/` directamente.
|
|
18
|
+
- `schemas/skill-eval.schema.json`: schema JSON Schema draft-07 para sets de golden tasks.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- `src/harness.js`: `commandPhaseGate` acepta `--exit-code` opt-in (retrocompatible).
|
|
23
|
+
- `src/cli.js`: despacha los nuevos comandos `verdict`, `status`, `skill-eval`, `skill-propose`; help string actualizado.
|
|
24
|
+
|
|
25
|
+
## [1.6.0] — 2026-05-26
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
|
|
29
|
+
- ADR `0005-tool-hierarchy-and-operational-profiles.md`: jerarquía de retrieval y perfiles `LEAN` / `ANALYSIS` / `ORCHESTRATION`.
|
|
30
|
+
- Guía `docs/guides/tool-hierarchy-and-profiles.md` y template instalable equivalente.
|
|
31
|
+
- Migración `1.6.0` con marcador `.sdlc/migrations/1.6.0-applied.txt`.
|
|
32
|
+
- Script template `scripts/validate-local-gate.ps1` para reproducir el control plane antes de push/PR.
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- `SDLC_SHARED_RULES` ahora incluye reglas 7-9 para jerarquía de retrieval, perfiles operativos y gate local pre-push/pre-PR.
|
|
37
|
+
- Skills `contexto-proyecto`, `enrich-us` y `party-mode` aplican selección de perfil y límites de herramienta.
|
|
38
|
+
- External tools matrix documenta perfil elegible y cuándo no usar cada herramienta.
|
|
39
|
+
- Workflows de GitHub Actions optan a Node 24 para evitar warnings de acciones JavaScript sobre Node 20.
|
|
40
|
+
|
|
41
|
+
## [1.5.0] — 2026-05-24
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
|
|
45
|
+
- Harness ejecutable F0-F17 con `phase-contract.yaml`, `schemas/phase-evidence.schema.json` y `templates/phases/F0...F17`.
|
|
46
|
+
- Comandos CLI nuevos: `sdlc phase-gate`, `sdlc governance-check`, `sdlc tools-doctor` y `sdlc pr-body-check`.
|
|
47
|
+
- Bloque `SDLC_SHARED_RULES` con hash para paridad entre `AGENTS.md`, `CLAUDE.md`, `.github/AGENTS.md` y `.github/copilot-instructions.md`.
|
|
48
|
+
- Roles upstream: `product-owner-agent`, `project-manager-agent`, `qa-test-architect-agent`, `tech-writer-agent` y `ux-designer-agent`.
|
|
49
|
+
- Skill `party-mode` anclada a F1/F2/F5 y separación entre QA temprana y `qa-security-review` para F9/F10.
|
|
50
|
+
- Perfil `full-harness` para reportar OpenSpec, Graphify, CodeGraph, Obsidian, Headroom, Caveman, autoskills, Vercel skills, party-mode y pnpm.
|
|
51
|
+
- Migración `1.5.0` con marcador `.sdlc/migrations/1.5.0-applied.txt`.
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
|
|
55
|
+
- Migración del desarrollo y workflows del framework a `pnpm@11.3.0`.
|
|
56
|
+
- `resume` y `continua` incorporan lectura del contrato de fase y reportan bloqueos por evidencia faltante.
|
|
57
|
+
- `buildManagedFiles` genera mirrors cross-IDE desde `.github/skills/` para evitar drift entre Claude Code, Codex, Copilot y Windsurf.
|
|
58
|
+
|
|
59
|
+
### Tests
|
|
60
|
+
|
|
61
|
+
- Regresión extendida con smoke tests de `phase-gate`, `governance-check` y `tools-doctor`.
|
|
62
|
+
|
|
7
63
|
## [1.4.0] — 2026-05-24
|
|
8
64
|
|
|
9
65
|
### Added
|
|
@@ -101,7 +157,7 @@ _No hay cambios pendientes._
|
|
|
101
157
|
### Phase 7 — Validators
|
|
102
158
|
|
|
103
159
|
- Agrega 9 validators nuevos: placeholder scripts, politica de herramientas externas, precedencia de gobierno, consistencia de skills, schema de personas, links docs, OpenSpec, Mustache y `models.yaml`.
|
|
104
|
-
- `
|
|
160
|
+
- `pnpm run validate` ahora ejecuta 14 validators en cadena.
|
|
105
161
|
|
|
106
162
|
### Phase 8 — Doctor
|
|
107
163
|
|
package/README.md
CHANGED
|
@@ -1,55 +1,56 @@
|
|
|
1
1
|
# SistemaMultiagente_SDLC
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Framework SDLC asistido por IA con governance enterprise, SDD y enfoque brownfield-first.
|
|
4
4
|
|
|
5
5
|
> BMAD orquesta; SistemaMultiagente_SDLC orquesta y verifica.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Por qué
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Este proyecto instala un SDLC multi-agente gobernado en repos greenfield o legacy. Combina personas de agente reutilizables, flujos OpenSpec/SDD, phase gates, migraciones, validadores, rollback y memoria persistente opcional.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
El modelo operativo es SDD waterfall por slice y ágil por release: cada slice tiene gates explícitos de requisitos, readiness, diseño, implementación, verificación y archivo, mientras los releases permanecen iterativos.
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Inicio rápido
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Flujo con paquete publicado (>=1.2.1):
|
|
16
16
|
|
|
17
17
|
```powershell
|
|
18
18
|
# Desde la raíz del repo destino (cwd = repo).
|
|
19
19
|
# --target es opcional desde v1.2.1: si se omite, se usa el directorio actual.
|
|
20
|
-
npx sistema-multiagente-sdlc init --mode greenfield --project-name "
|
|
20
|
+
npx sistema-multiagente-sdlc init --mode greenfield --project-name "Mi Proyecto"
|
|
21
21
|
|
|
22
22
|
# Smoke previo sin escribir nada:
|
|
23
|
-
npx sistema-multiagente-sdlc init --mode greenfield --project-name "
|
|
23
|
+
npx sistema-multiagente-sdlc init --mode greenfield --project-name "Mi Proyecto" --dry-run --json
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
Para v1.2.0 (compatibilidad), el comando equivalente requería `--target` explícito:
|
|
27
27
|
|
|
28
28
|
```powershell
|
|
29
|
-
npx sistema-multiagente-sdlc@1.2.0 init --target . --mode greenfield --project-name "
|
|
29
|
+
npx sistema-multiagente-sdlc@1.2.0 init --target . --mode greenfield --project-name "Mi Proyecto"
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
Flujo de desarrollo local:
|
|
33
33
|
|
|
34
34
|
```powershell
|
|
35
35
|
git clone https://github.com/JuanCastrejon/SistemaMultiagente_SDLC.git
|
|
36
36
|
cd SistemaMultiagente_SDLC
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
corepack prepare pnpm@11.3.0 --activate
|
|
38
|
+
pnpm install --frozen-lockfile
|
|
39
|
+
pnpm run validate
|
|
40
|
+
pnpm test
|
|
41
|
+
node ./bin/sdlc.js install --target ../mi-proyecto --mode greenfield --project-name "Mi Proyecto"
|
|
41
42
|
```
|
|
42
43
|
|
|
43
44
|
Legacy/brownfield:
|
|
44
45
|
|
|
45
46
|
```powershell
|
|
46
|
-
node ./bin/sdlc.js install --target ../legacy
|
|
47
|
-
node ./bin/sdlc.js doctor --target ../legacy
|
|
47
|
+
node ./bin/sdlc.js install --target ../proyecto-legacy --mode legacy --project-name "Proyecto Legacy"
|
|
48
|
+
node ./bin/sdlc.js doctor --target ../proyecto-legacy --json
|
|
48
49
|
```
|
|
49
50
|
|
|
50
51
|
## Runtime Multiagente
|
|
51
52
|
|
|
52
|
-
Desde `1.4.0`, `sdlc` incluye comandos ejecutables para continuidad cross-IDE. El runtime primario es Node; los wrappers PowerShell solo existen para
|
|
53
|
+
Desde `1.4.0`, `sdlc` incluye comandos ejecutables para continuidad cross-IDE. El runtime primario es Node; los wrappers PowerShell solo existen para ergonomía Windows.
|
|
53
54
|
|
|
54
55
|
```powershell
|
|
55
56
|
sdlc session-start --target . --json
|
|
@@ -64,141 +65,270 @@ sdlc hooks install --target . --post-merge-checkpoint --json
|
|
|
64
65
|
Reglas base:
|
|
65
66
|
|
|
66
67
|
- `session-start` crea `.sdlc/session.json` con healthcheck de Headroom, CodeGraph, Graphify, caveman, vault y slice actual.
|
|
67
|
-
- `resume` es solo lectura y recompone contexto en orden repo
|
|
68
|
+
- `resume` es solo lectura y recompone contexto en orden repo → CodeGraph → Graphify → vault.
|
|
68
69
|
- `save` escribe checkpoints locales en el vault; no promueve GitHub Issues, OpenSpec ni PRs sin gate humano.
|
|
69
70
|
- `hooks install --post-merge-checkpoint` instala un hook local `post-merge` que ejecuta `sdlc save --event post-merge`.
|
|
70
|
-
- `memory-sync --mode nightly --apply` importa chats y exporta Graphify al vault; no crea checkpoints
|
|
71
|
+
- `memory-sync --mode nightly --apply` importa chats y exporta Graphify al vault; no crea checkpoints automáticos.
|
|
71
72
|
|
|
72
|
-
##
|
|
73
|
+
## Harness Ejecutable F0-F17
|
|
73
74
|
|
|
74
|
-
|
|
75
|
+
Desde `1.5.0`, el flujo F0-F17 tiene contrato ejecutable y evidencia por fase.
|
|
76
|
+
|
|
77
|
+
```powershell
|
|
78
|
+
sdlc phase-gate --target . --phase F5 --slice <slice> --json
|
|
79
|
+
sdlc governance-check --target . --json
|
|
80
|
+
sdlc tools-doctor --target . --profile full --json
|
|
81
|
+
sdlc pr-body-check --repo . --pr <number> --json
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Reglas base:
|
|
85
|
+
|
|
86
|
+
- `phase-contract.yaml` declara owner, participantes, entradas, salidas, gate humano y siguiente fase.
|
|
87
|
+
- `.github/agent-state/evidence/<slice>/<phase>.yaml` registra evidencia trazable cuando la fase lo exige.
|
|
88
|
+
- `governance-check` compara el bloque `SDLC_SHARED_RULES` entre IDEs y valida mirrors de skills.
|
|
89
|
+
- `tools-doctor --profile full` reporta el stack de harness completo: OpenSpec, Graphify, CodeGraph, Obsidian, Headroom, Caveman, autoskills, Vercel skills, party-mode y pnpm.
|
|
90
|
+
|
|
91
|
+
## Modos
|
|
92
|
+
|
|
93
|
+
| Modo | Cuándo usar | Qué agrega |
|
|
75
94
|
| --- | --- | --- |
|
|
76
|
-
| `greenfield` |
|
|
77
|
-
| `legacy` |
|
|
95
|
+
| `greenfield` | repo nuevo o inicio limpio de producto | plantillas SDD greenfield y governance |
|
|
96
|
+
| `legacy` | repo existente, migración o modernización brownfield | plantillas de research obligatorio y gates de descubrimiento legacy |
|
|
78
97
|
|
|
79
|
-
##
|
|
98
|
+
## Agentes
|
|
80
99
|
|
|
81
|
-
|
|
|
100
|
+
| Plano | Personas |
|
|
82
101
|
| --- | --- |
|
|
83
102
|
| Control | `planificador-opus`, `orquestador-opus` |
|
|
84
|
-
|
|
|
85
|
-
|
|
|
103
|
+
| Producto/coordinación | `product-owner-agent`, `project-manager-agent` |
|
|
104
|
+
| Definición | `analista-requisitos`, `arquitecto-modular-clean`, `qa-test-architect-agent` |
|
|
105
|
+
| Especialista | `api-nestjs`, `web-admin`, `mobile-sync`, `ux-designer-agent`, `tech-writer-agent` |
|
|
86
106
|
| Gate | `qa-security-review` |
|
|
87
107
|
|
|
88
|
-
##
|
|
108
|
+
## Flujo de Fases
|
|
89
109
|
|
|
90
110
|
```mermaid
|
|
91
111
|
flowchart LR
|
|
92
|
-
F0["F0 Bootstrap"] --> F1["F1
|
|
93
|
-
F1 --> F2["F2
|
|
94
|
-
F2 --> F3["F3
|
|
95
|
-
F3 --> F35["F3.5
|
|
96
|
-
F35 --> F4["F4
|
|
97
|
-
F4 --> F5["F5 SDD
|
|
98
|
-
F5 --> F6["F6
|
|
99
|
-
F6 --> F7["F7
|
|
100
|
-
F7 --> F8["F8
|
|
112
|
+
F0["F0 Bootstrap"] --> F1["F1 Requisitos"]
|
|
113
|
+
F1 --> F2["F2 Revisión humana borrador"]
|
|
114
|
+
F2 --> F3["F3 Issue local"]
|
|
115
|
+
F3 --> F35["F3.5 Rama"]
|
|
116
|
+
F35 --> F4["F4 Handoff readiness"]
|
|
117
|
+
F4 --> F5["F5 Planificación SDD"]
|
|
118
|
+
F5 --> F6["F6 Handoff planificador"]
|
|
119
|
+
F6 --> F7["F7 Orquestación"]
|
|
120
|
+
F7 --> F8["F8 Implementación"]
|
|
101
121
|
F8 --> F9["F9 QA"]
|
|
102
|
-
F9 --> F10["F10
|
|
122
|
+
F9 --> F10["F10 Seguridad"]
|
|
103
123
|
F10 --> F11["F11 Commit"]
|
|
104
124
|
F11 --> F12["F12 PR"]
|
|
105
|
-
F12 --> F13["F13
|
|
125
|
+
F12 --> F13["F13 Gate humano"]
|
|
106
126
|
F13 --> F14["F14 Merge"]
|
|
107
|
-
F14 --> F15["F15
|
|
108
|
-
F15 --> F16["F16
|
|
109
|
-
F16 --> F17["F17 Docs +
|
|
127
|
+
F14 --> F15["F15 Verificación"]
|
|
128
|
+
F15 --> F16["F16 Archivo"]
|
|
129
|
+
F16 --> F17["F17 Docs + trazabilidad"]
|
|
110
130
|
```
|
|
111
131
|
|
|
112
|
-
##
|
|
132
|
+
## Validadores
|
|
113
133
|
|
|
114
|
-
`
|
|
134
|
+
`pnpm run validate` ejecuta los validadores del framework:
|
|
115
135
|
|
|
116
|
-
- config
|
|
117
|
-
-
|
|
118
|
-
-
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
- governance
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
- OpenSpec
|
|
128
|
-
-
|
|
129
|
-
-
|
|
136
|
+
- schema de config
|
|
137
|
+
- sin rutas personales
|
|
138
|
+
- sanitización de plantillas
|
|
139
|
+
- sin contenido gestionado inline
|
|
140
|
+
- integridad del manifiesto
|
|
141
|
+
- sin scripts placeholder
|
|
142
|
+
- política de herramientas externas
|
|
143
|
+
- precedencia de governance
|
|
144
|
+
- consistencia del manifiesto de skills
|
|
145
|
+
- schema de persona de agente
|
|
146
|
+
- existencia de links en docs
|
|
147
|
+
- consistencia de OpenSpec
|
|
148
|
+
- existencia de referencias Mustache
|
|
149
|
+
- schema de modelos
|
|
130
150
|
|
|
131
|
-
##
|
|
151
|
+
## Herramientas Externas — Guía de Instalación para el Agente
|
|
132
152
|
|
|
133
|
-
|
|
153
|
+
Las herramientas externas son opt-in. El framework funciona sin ellas; al activarlas reducen reconstrucción de contexto, mejoran trazabilidad y ahorran tokens de forma significativa. Esta sección está dirigida al **agente que trabaja en el repo consumidor** para que pueda guiar al desarrollador correctamente.
|
|
134
154
|
|
|
135
|
-
|
|
155
|
+
Ver detalles completos en `templates/docs/agents/external-tools-matrix.md`.
|
|
156
|
+
|
|
157
|
+
| Herramienta | Requerida | Propósito |
|
|
136
158
|
| --- | --- | --- |
|
|
137
|
-
| OpenSpec |
|
|
138
|
-
|
|
|
139
|
-
|
|
|
140
|
-
|
|
|
141
|
-
|
|
|
159
|
+
| OpenSpec | sí | SDD: specs, changes y archivo |
|
|
160
|
+
| gh CLI | sí para GitHub | issues, PRs y releases |
|
|
161
|
+
| headroom | no | proxy de contexto + ahorro de tokens en llamadas Anthropic |
|
|
162
|
+
| Graphify | no | grafo semántico de docs para exploración cross-módulo |
|
|
163
|
+
| CodeGraph | no | grafo estructural AST para navegación de código |
|
|
164
|
+
| Obsidian | no | vault local para checkpoints y continuidad multi-sesión |
|
|
165
|
+
| caveman | no | compresión de tokens en comunicación operativa |
|
|
166
|
+
| autoskills | no | discovery de skills externas curadas |
|
|
167
|
+
| vercel-labs/agent-skills | no | skills UI/deploy opcionales |
|
|
168
|
+
|
|
169
|
+
### headroom (proxy de contexto)
|
|
170
|
+
|
|
171
|
+
headroom actúa como proxy entre el agente y la API de Anthropic. Comprime payloads, aplica presupuestos de contexto y reduce costos en sesiones largas.
|
|
172
|
+
|
|
173
|
+
**Instalación:**
|
|
174
|
+
|
|
175
|
+
```powershell
|
|
176
|
+
npm install -g headroom
|
|
177
|
+
# o con npx sin instalar globalmente
|
|
178
|
+
npx headroom proxy --no-telemetry
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Configuración en Claude Code** (`~/.claude/settings.json`):
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"env": {
|
|
186
|
+
"ANTHROPIC_BASE_URL": "http://127.0.0.1:8787"
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**Arranque del proxy** (script incluido en `templates/scripts/`):
|
|
192
|
+
|
|
193
|
+
```powershell
|
|
194
|
+
pwsh -NonInteractive -File scripts/headroom-start.ps1
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Autoarranque en Windows** (una sola vez por máquina — acción del usuario, no automatizable por el agente):
|
|
198
|
+
|
|
199
|
+
```powershell
|
|
200
|
+
pwsh -ExecutionPolicy Bypass -File scripts/register-headroom-task.ps1
|
|
201
|
+
Get-ScheduledTask -TaskName "<ProjectSlug>-Headroom-Autostart"
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Sin esta tarea registrada, Codex y VS Code/Copilot no arrancan headroom automáticamente; Claude Code sí (via hook SessionStart en `~/.claude/settings.json`).
|
|
205
|
+
|
|
206
|
+
**Regla crítica:** si el proxy falla tras los reintentos, **no limpiar `ANTHROPIC_BASE_URL`**. Eso causaría que el agente llame directamente a Anthropic sin que el usuario lo sepa. El script registra el fallo en `%APPDATA%\headroom\health-last-fail.txt` y termina con `exit 1` para que el error sea visible.
|
|
207
|
+
|
|
208
|
+
### Graphify (grafo semántico de documentación)
|
|
209
|
+
|
|
210
|
+
Graphify indexa `docs/`, `openspec/`, `.github/agents/`, `.github/skills/` y raíz como knowledge graph semántico. **No indexa código de producto** (`apps/`, `packages/`).
|
|
142
211
|
|
|
143
|
-
|
|
212
|
+
```powershell
|
|
213
|
+
pip install --user graphifyy
|
|
214
|
+
graphify update . # re-extracción AST local, sin costo LLM
|
|
215
|
+
graphify query "<tema>" # búsqueda semántica
|
|
216
|
+
graphify path "<A>" "<B>" # relaciones entre nodos
|
|
217
|
+
graphify explain "<nodo>" # descripción expandida
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Cuándo usar: onboarding al proyecto, análisis de arquitectura cross-módulo, research de prior art en paso 4.5 de `enrich-us`. **No usar en loops normales de implementación.**
|
|
221
|
+
|
|
222
|
+
### CodeGraph (grafo estructural de código)
|
|
223
|
+
|
|
224
|
+
CodeGraph construye un índice AST de todo el código de producto. Responde preguntas estructurales sub-milisegundo sin grep.
|
|
225
|
+
|
|
226
|
+
```powershell
|
|
227
|
+
codegraph init -i # construir índice
|
|
228
|
+
codegraph status # verificar salud
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Cuándo usar: "¿dónde está definida X?", "¿qué llama a Y?", "¿qué rompería si cambio Z?", firma de un símbolo, navegación cross-module en `apps/` y `packages/`. **No usar para docs ni semántica.**
|
|
232
|
+
|
|
233
|
+
### Regla de ahorro de tokens: CodeGraph vs Graphify vs Grep
|
|
234
|
+
|
|
235
|
+
Esta regla es crítica. Violarla duplica contexto y eleva costos 3x–8x en sesiones largas.
|
|
236
|
+
|
|
237
|
+
| Pregunta | Herramienta correcta |
|
|
238
|
+
|---|---|
|
|
239
|
+
| Estructura de código (callers, callees, impacto, firma) | CodeGraph — siempre primero, sin fallback a grep |
|
|
240
|
+
| Semántica cross-doc (docs, ADRs, specs, guides, agents) | Graphify si el grafo existe, sino docs raw |
|
|
241
|
+
| Texto literal (strings de log, comentarios, contenido sin estructura) | Grep — solo si no aplican los anteriores |
|
|
242
|
+
|
|
243
|
+
**Nunca ejecutar CodeGraph y Graphify para la misma consulta.** Son capas distintas con distinto scope.
|
|
244
|
+
|
|
245
|
+
### caveman (compresión de tokens en conversación)
|
|
246
|
+
|
|
247
|
+
caveman comprime solo los tokens de **output** del agente, no el razonamiento ni los payloads MCP. Útil para coordinación operativa entre agentes.
|
|
248
|
+
|
|
249
|
+
```text
|
|
250
|
+
/caveman lite → modo conversacional comprimido (sin artículos, fragmentos OK)
|
|
251
|
+
/caveman full → máxima compresión (solo para coordinación interna)
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Regla: caveman **solo en conversación operativa**. Off en documentación, commits, PRs y artefactos finales. Las decisiones durables van a OpenSpec, docs o `.github/agent-state/`.
|
|
255
|
+
|
|
256
|
+
**party-mode** solo en fases F2 (Análisis), F3 (Diseño) y F4 (Validación). El costo multiagente (3x–8x tokens) solo se justifica en decisiones de diseño con trade-offs reales.
|
|
257
|
+
|
|
258
|
+
### Skills multi-entorno (bootstrap)
|
|
259
|
+
|
|
260
|
+
Después de instalar el framework, sincronizar las skills a todos los agentes:
|
|
261
|
+
|
|
262
|
+
```powershell
|
|
263
|
+
pwsh -ExecutionPolicy Bypass -File scripts/bootstrap-agent-skills.ps1
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Esto copia las skills gobernadas desde `.github/skills/` a `.claude/skills/`, `.agents/skills/` y `.windsurf/skills/`. Si el manifiesto tiene entradas `crossMirrorSkills`, también copia skills entre carpetas de agente (por ejemplo, caveman ecosystem a Claude Code).
|
|
267
|
+
|
|
268
|
+
Verificar con:
|
|
269
|
+
|
|
270
|
+
```powershell
|
|
271
|
+
pwsh -ExecutionPolicy Bypass -File scripts/bootstrap-agent-skills.ps1 -Json
|
|
272
|
+
sdlc tools-doctor --target . --profile full --json
|
|
273
|
+
```
|
|
144
274
|
|
|
145
|
-
## BMAD
|
|
275
|
+
## Comparativa BMAD
|
|
146
276
|
|
|
147
|
-
|
|
277
|
+
Comparativa lado a lado de los dos frameworks. La intención no es competir sino aclarar dónde se solapan y dónde cada uno se especializa. Datos de BMAD tomados de su README oficial v6 (`bmad-code-org/BMAD-METHOD`, npm `bmad-method`).
|
|
148
278
|
|
|
149
|
-
|
|
|
279
|
+
| Característica | BMAD-METHOD v6 | SistemaMultiagente_SDLC v1.5.0 |
|
|
150
280
|
| --- | --- | --- |
|
|
151
|
-
|
|
|
152
|
-
| Runtime requisitos | Node ≥20.12, Python ≥3.10, `uv` | Node ≥
|
|
153
|
-
|
|
|
154
|
-
| Scope principal |
|
|
155
|
-
|
|
|
281
|
+
| Licencia | MIT | MIT |
|
|
282
|
+
| Runtime requisitos | Node ≥20.12, Python ≥3.10, `uv` | Node ≥22.13, PowerShell (pwsh/powershell), Git |
|
|
283
|
+
| Comando de instalación | `npx bmad-method install` (interactivo) o `--yes --modules --tools` (CI) | `npx sistema-multiagente-sdlc init` (cwd default desde v1.2.1) |
|
|
284
|
+
| Scope principal | Desarrollo ágil asistido por IA | SDLC asistido por IA con governance enterprise y SDD |
|
|
285
|
+
| Flujos de trabajo | 34+ flujos ágiles (BMM core) | SDD waterfall por slice + ágil por release (fases F0-F17) |
|
|
156
286
|
| Scale-adaptive | sí, automático (bug → enterprise) | scale hint activo desde v1.3.0 |
|
|
157
|
-
| Agentes/personas | 12+ personas (PM,
|
|
158
|
-
|
|
|
159
|
-
|
|
|
160
|
-
|
|
|
161
|
-
|
|
|
162
|
-
|
|
|
163
|
-
|
|
|
164
|
-
| Brownfield-first | no | sí (legacy
|
|
165
|
-
|
|
|
166
|
-
| OpenSpec / SDD |
|
|
167
|
-
| Readiness L1/L2/L3 + matriz NFR |
|
|
168
|
-
|
|
|
169
|
-
|
|
|
170
|
-
|
|
|
171
|
-
| Provenance (SLSA) | n/d explícito | sí, SLSA v1 +
|
|
172
|
-
|
|
|
173
|
-
|
|
|
174
|
-
|
|
175
|
-
Lectura corta: BMAD lidera en
|
|
287
|
+
| Agentes/personas | 12+ personas (PM, Arquitecto, Dev, UX, …) | 8 personas activas + roadmap extensible |
|
|
288
|
+
| Modo party / colaboración | sí (múltiples personas en sesión) | roundtable opt-in planificado v1.3.0 |
|
|
289
|
+
| CLI de ayuda / coach de siguiente paso | skill `bmad-help` | `sdlc doctor` (verificaciones de estado); `sdlc next` planificado v1.3.0 |
|
|
290
|
+
| Módulos / ecosistema | BMM (core) + BMB (builder) + TEA (test architect) + BMGD (game dev) + CIS (creative) | basado en modos (`greenfield` / `legacy`) + packs extensibles planificados v2.0.0 |
|
|
291
|
+
| Arquitectura de skills | sí (V6 + Sub-Agent inclusion + Cross-Platform Agent Team) | mirroring de skills a `.claude/`, `.agents/`, `.windsurf/` (`bootstrap-agent-skills.ps1`) con soporte `crossMirrorSkills` |
|
|
292
|
+
| Constructor de agentes/flujos personalizados | BMad Builder v1 | personas `.agent.md` + validadores (`validate-agent-persona-schema`) |
|
|
293
|
+
| Automatización del loop de desarrollo | en roadmap V6 | `phase-graph.yaml` + rework label-driven + lock TTL |
|
|
294
|
+
| Brownfield-first | no | sí (modo legacy con research obligatorio antes de proposal) |
|
|
295
|
+
| Validadores de governance | no es core | 14 validadores (config, personal-paths, template-sanitization, manifest-integrity, governance-precedence, …) |
|
|
296
|
+
| OpenSpec / SDD | no es core | integrado (capacidades canónicas en `openspec/specs/`) |
|
|
297
|
+
| Readiness L1/L2/L3 + matriz NFR | no es core | integrado (spec `business-production-readiness`) |
|
|
298
|
+
| Sistema de migración + rollback | no es core | backup automático + `sdlc upgrade --to-version` + `sdlc rollback --to <id>` |
|
|
299
|
+
| Lock multi-agente | no es core | TTL `platform-context.json` lock |
|
|
300
|
+
| Sanitización de paths/plantillas | no es core | `validate:no-personal-paths` + `validate:template-sanitization` |
|
|
301
|
+
| Provenance (SLSA) | n/d explícito | sí, SLSA v1 + firmas vía OIDC GitHub (workflow `publish.yml`) |
|
|
302
|
+
| Comunidad | Discord abierto, YouTube, X | GitHub Issues + Discussions (Discord no necesario) |
|
|
303
|
+
| Marca registrada | BMad / BMAD-METHOD trademarks of BMad Code, LLC | sin restricción explícita más allá de MIT |
|
|
304
|
+
|
|
305
|
+
Lectura corta: BMAD lidera en amplitud ágil y comunidad (12+ personas, 34+ flujos, 5 módulos, Discord activo, Skills Architecture V6). SistemaMultiagente_SDLC lidera en governance + brownfield + SDD + validadores (14) + sistema de migración + readiness L1/L2/L3 + sanitización. Ambos pueden coexistir: BMAD orquesta; SistemaMultiagente_SDLC orquesta **y verifica**.
|
|
176
306
|
|
|
177
307
|
## Roadmap
|
|
178
308
|
|
|
179
309
|
v1.3.0:
|
|
180
310
|
|
|
181
|
-
- bash
|
|
311
|
+
- paridad bash para scripts críticos
|
|
182
312
|
- `sdlc next`
|
|
183
|
-
-
|
|
184
|
-
-
|
|
313
|
+
- scale adaptativo: bug, feature, epic, platform
|
|
314
|
+
- extensiones de calibración
|
|
185
315
|
- roundtable opt-in
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
- bump `actions/checkout@v5` + `actions/setup-node@v5` con `node-version: 24`; deadline GitHub: Node 20 deprecated jun 2026,
|
|
316
|
+
- sitio de documentación
|
|
317
|
+
- matriz de instalación de regresión: agregar `macos-latest` (cobertura triple ubuntu + windows + macos)
|
|
318
|
+
- bump `actions/checkout@v5` + `actions/setup-node@v5` con `node-version: 24`; deadline GitHub: Node 20 deprecated jun 2026, removido sep 2026
|
|
189
319
|
|
|
190
320
|
v2.0.0:
|
|
191
321
|
|
|
192
|
-
-
|
|
193
|
-
-
|
|
194
|
-
- marketplace
|
|
195
|
-
-
|
|
196
|
-
-
|
|
322
|
+
- packs extensibles
|
|
323
|
+
- API de plugins
|
|
324
|
+
- registro marketplace
|
|
325
|
+
- internacionalización en inglés
|
|
326
|
+
- ayuda contextual interactiva
|
|
197
327
|
|
|
198
|
-
##
|
|
328
|
+
## Contribución
|
|
199
329
|
|
|
200
|
-
|
|
330
|
+
Leer `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md` y `SECURITY.md`.
|
|
201
331
|
|
|
202
|
-
##
|
|
332
|
+
## Licencia
|
|
203
333
|
|
|
204
334
|
MIT.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function up(files = {}) {
|
|
2
|
+
const extra = {
|
|
3
|
+
".sdlc/migrations/1.5.0-applied.txt": "Migration 1.5.0 applied by SistemaMultiagente_SDLC.\ngenerated-by-sdlc\n"
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
const configPath = ".sdlc/config.json";
|
|
7
|
+
if (typeof files[configPath] === "string") {
|
|
8
|
+
const config = JSON.parse(files[configPath]);
|
|
9
|
+
config.frameworkVersion = "1.5.0";
|
|
10
|
+
extra[configPath] = `${JSON.stringify(config, null, 2)}\n`;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return extra;
|
|
14
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Migration 1.6.0
|
|
2
|
+
|
|
3
|
+
Actualiza el contrato instalado a la doctrina de jerarquia de retrieval y perfiles operativos.
|
|
4
|
+
|
|
5
|
+
- Recalcula `frameworkVersion` a `1.6.0`.
|
|
6
|
+
- Registra marcador local `.sdlc/migrations/1.6.0-applied.txt`.
|
|
7
|
+
- Los archivos gobernados se regeneran desde templates durante `sdlc upgrade`; no publica npm ni toca configs locales.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function up(files = {}) {
|
|
2
|
+
const extra = {
|
|
3
|
+
".sdlc/migrations/1.6.0-applied.txt": "Migration 1.6.0 applied by SistemaMultiagente_SDLC.\ngenerated-by-sdlc\n"
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
const configPath = ".sdlc/config.json";
|
|
7
|
+
if (typeof files[configPath] === "string") {
|
|
8
|
+
const config = JSON.parse(files[configPath]);
|
|
9
|
+
config.frameworkVersion = "1.6.0";
|
|
10
|
+
extra[configPath] = `${JSON.stringify(config, null, 2)}\n`;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return extra;
|
|
14
|
+
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sistema-multiagente-sdlc",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Framework reusable para instalar un SDLC multiagente gobernado en repos greenfield o legacy.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"sdlc": "
|
|
7
|
+
"sdlc": "bin/sdlc.js"
|
|
8
8
|
},
|
|
9
9
|
"publishConfig": {
|
|
10
10
|
"access": "public"
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"schemas/",
|
|
16
16
|
"templates/",
|
|
17
17
|
"profiles/",
|
|
18
|
+
"phase-contract.yaml",
|
|
18
19
|
"migrations/",
|
|
19
20
|
"scripts/",
|
|
20
21
|
"README.md",
|
|
@@ -32,13 +33,16 @@
|
|
|
32
33
|
"brownfield",
|
|
33
34
|
"sdd"
|
|
34
35
|
],
|
|
35
|
-
"repository":
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "git+https://github.com/JuanCastrejon/SistemaMultiagente_SDLC.git"
|
|
39
|
+
},
|
|
36
40
|
"bugs": "https://github.com/JuanCastrejon/SistemaMultiagente_SDLC/issues",
|
|
37
41
|
"homepage": "https://github.com/JuanCastrejon/SistemaMultiagente_SDLC#readme",
|
|
38
42
|
"scripts": {
|
|
39
43
|
"sdlc": "node ./bin/sdlc.js",
|
|
40
44
|
"test": "node ./tests/run-regression.mjs",
|
|
41
|
-
"validate": "
|
|
45
|
+
"validate": "corepack pnpm run validate:config-schema && corepack pnpm run validate:no-personal-paths && corepack pnpm run validate:template-sanitization && corepack pnpm run validate:no-inline-managed-content && corepack pnpm run validate:manifest-integrity && corepack pnpm run validate:no-placeholder-scripts && corepack pnpm run validate:external-tools-policy && corepack pnpm run validate:governance-precedence && corepack pnpm run validate:skill-manifest-consistency && corepack pnpm run validate:agent-persona-schema && corepack pnpm run validate:docs-links-exist && corepack pnpm run validate:openspec-consistency && corepack pnpm run validate:mustache-references-exist && corepack pnpm run validate:models-schema",
|
|
42
46
|
"validate:config-schema": "node ./scripts/validate-config-schema.mjs",
|
|
43
47
|
"validate:no-personal-paths": "node ./scripts/validate-no-personal-paths.mjs",
|
|
44
48
|
"validate:template-sanitization": "node ./scripts/validate-template-sanitization.mjs",
|
|
@@ -55,9 +59,19 @@
|
|
|
55
59
|
"validate:models-schema": "node ./scripts/validate-models-schema.mjs"
|
|
56
60
|
},
|
|
57
61
|
"engines": {
|
|
58
|
-
"node": ">=
|
|
62
|
+
"node": ">=22.13"
|
|
63
|
+
},
|
|
64
|
+
"packageManager": "pnpm@11.3.0",
|
|
65
|
+
"pnpm": {
|
|
66
|
+
"minimumReleaseAge": 1440,
|
|
67
|
+
"minimumReleaseAgeStrict": true,
|
|
68
|
+
"minimumReleaseAgeIgnoreMissingTime": false,
|
|
69
|
+
"trustPolicy": "no-downgrade",
|
|
70
|
+
"blockExoticSubdeps": true,
|
|
71
|
+
"nodeLinker": "isolated"
|
|
59
72
|
},
|
|
60
73
|
"dependencies": {
|
|
61
|
-
"ajv": "^8.20.0"
|
|
74
|
+
"ajv": "^8.20.0",
|
|
75
|
+
"yaml": "^2.9.0"
|
|
62
76
|
}
|
|
63
77
|
}
|