sdd-es 2.0.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/.claude/settings.json +29 -29
  2. package/.claude/settings.local.json +10 -0
  3. package/.claude-plugin/marketplace.json +10 -7
  4. package/.claude-plugin/plugin.json +59 -37
  5. package/.gitignore +20 -0
  6. package/.mcp.json +8 -0
  7. package/LICENSE +21 -0
  8. package/README.md +77 -40
  9. package/agents/architecture-designer.md +211 -0
  10. package/agents/arquitecto.md +16 -1
  11. package/agents/asesor-datos.md +15 -1
  12. package/agents/critico.md +37 -1
  13. package/agents/desarrollador-backend.md +3 -1
  14. package/agents/desarrollador-frontend.md +11 -16
  15. package/agents/disenador-api.md +13 -1
  16. package/agents/documentador.md +3 -1
  17. package/agents/investigador.md +3 -1
  18. package/agents/operaciones.md +3 -1
  19. package/agents/product-designer.md +268 -0
  20. package/agents/revisor.md +25 -1
  21. package/agents/seguridad.md +5 -1
  22. package/agents/tester.md +3 -1
  23. package/claude-hooks/agent-memory.js +288 -0
  24. package/claude-hooks/pre-tool-guard.js +61 -9
  25. package/cli/index.js +1 -2
  26. package/commands/sdd.adr.md +196 -0
  27. package/commands/sdd.analizar.md +23 -2
  28. package/commands/sdd.ayuda.md +13 -0
  29. package/commands/sdd.compliance.md +521 -0
  30. package/commands/sdd.configurar.md +34 -1
  31. package/commands/sdd.constitucion.md +198 -23
  32. package/commands/sdd.construir.md +210 -0
  33. package/commands/sdd.crear-mcp.md +2 -0
  34. package/commands/sdd.defect-report.md +134 -0
  35. package/commands/sdd.descubrir.md +19 -0
  36. package/commands/sdd.dise/303/261ar.md +188 -0
  37. package/commands/sdd.estado.md +120 -3
  38. package/commands/sdd.exportar.md +344 -0
  39. package/commands/sdd.implementar.md +272 -52
  40. package/commands/sdd.interpretar.md +239 -0
  41. package/commands/sdd.md +93 -4
  42. package/commands/sdd.optimizar-memoria.md +47 -0
  43. package/commands/sdd.optimizar.md +164 -0
  44. package/commands/sdd.planificar.md +64 -0
  45. package/commands/sdd.retro.md +74 -0
  46. package/commands/sdd.verificar.md +81 -0
  47. package/configuracion-ejemplo/.claude/CLAUDE.md +106 -0
  48. package/configuracion-ejemplo/sdd.config.yaml +10 -0
  49. package/craft/accessibility-baseline.md +216 -0
  50. package/craft/anti-ai-slop.md +158 -0
  51. package/craft/color.md +160 -0
  52. package/craft/typography.md +121 -0
  53. package/design-systems/bold-brutalist/DESIGN.md +239 -0
  54. package/design-systems/editorial-minimal/DESIGN.md +205 -0
  55. package/design-systems/neutral-modern/DESIGN.md +227 -0
  56. package/design-systems/vibrant-consumer/DESIGN.md +257 -0
  57. package/design-systems/warm-editorial/DESIGN.md +221 -0
  58. package/docs/AGENTES.md +4 -1
  59. package/docs/CASO-COMPLETO.md +206 -0
  60. package/docs/EJEMPLOS.md +61 -185
  61. package/docs/FABRICA.md +163 -115
  62. package/docs/INICIO-RAPIDO.md +27 -79
  63. package/docs/MEMORIA-Y-OBSERVABILIDAD.md +239 -0
  64. package/docs/MODELOS.md +3 -0
  65. package/docs/QUE-PASA-SI-FALLA.md +404 -0
  66. package/docs/README.md +43 -0
  67. package/docs/RELACION-CON-CLAUDE-CODE.md +38 -0
  68. package/docs/SEGURIDAD-PARA-NOTECNICOS.md +280 -0
  69. package/package.json +15 -10
  70. package/plantillas/job-story-mejorar-prompt.md +107 -0
  71. package/presets/enterprise.yaml +6 -0
  72. package/presets/lean.yaml +4 -0
  73. package/presets/startup.yaml +6 -0
  74. package/skills/adr-indexer/SKILL.md +181 -0
  75. package/skills/cache-audit/SKILL.md +163 -0
  76. package/skills/critica-diseno/SKILL.md +193 -0
  77. package/skills/descubrir-idea/SKILL.md +133 -0
  78. package/skills/effort-router/SKILL.md +128 -0
  79. package/skills/elegir-direccion/SKILL.md +184 -0
  80. package/skills/github-connect/IMPLEMENTATION-CHECKLIST.md +297 -0
  81. package/skills/github-connect/INDEX.md +223 -0
  82. package/skills/github-connect/INTEGRATION.md +361 -0
  83. package/skills/github-connect/QUICK-START.md +168 -0
  84. package/skills/github-connect/README.md +414 -0
  85. package/skills/github-connect/RESUMEN_IMPLEMENTACION.txt +374 -0
  86. package/skills/github-connect/SKILL.md +343 -0
  87. package/skills/github-connect/STRUCTURE.txt +252 -0
  88. package/skills/github-connect/example-config.yaml +41 -0
  89. package/skills/github-connect/github-connect.sh +419 -0
  90. package/skills/interpretar-idea/SKILL.md +254 -0
  91. package/skills/mejorar-prompt/SKILL.md +237 -0
  92. package/skills/memory-compactor/SKILL.md +68 -0
  93. package/skills/modo-guiado/SKILL.md +12 -2
  94. package/skills/mutation-detector/SKILL.md +134 -0
  95. package/skills/observabilidad-consumo/SKILL.md +164 -0
  96. package/skills/token-budget/SKILL.md +177 -0
  97. package/skills/vercel-deploy/00-START-HERE.txt +364 -0
  98. package/skills/vercel-deploy/CHECKLIST.md +205 -0
  99. package/skills/vercel-deploy/EXEC-SUMMARY.txt +322 -0
  100. package/skills/vercel-deploy/FLOW.txt +334 -0
  101. package/skills/vercel-deploy/INDEX.md +276 -0
  102. package/skills/vercel-deploy/INTEGRATION.md +328 -0
  103. package/skills/vercel-deploy/MANIFEST.md +310 -0
  104. package/skills/vercel-deploy/README.md +65 -0
  105. package/skills/vercel-deploy/SKILL.md +356 -0
  106. package/skills/vercel-deploy/deploy.sh +298 -0
  107. package/skills/vercel-deploy/estado.json.example +205 -0
  108. package/skills/vercel-deploy/skill.yaml +323 -0
  109. package/skills/vercel-deploy/vercel-deploy.sh +216 -0
  110. package/skills/wireframe-mvp/SKILL.md +157 -0
  111. package/docs/EJEMPLO-PRACTICA.md +0 -383
  112. package/mcp-figma/README.md +0 -158
  113. package/mcp-figma/package.json +0 -7
  114. package/mcp-figma/src/component-generator.js +0 -162
  115. package/mcp-figma/src/design-system-analyzer.js +0 -247
  116. package/mcp-figma/src/figma-client.js +0 -75
  117. package/mcp-figma/src/index.js +0 -114
  118. package/mcp-figma/src/mcp.js +0 -97
  119. package/mcp-figma/src/style-mapper.js +0 -85
  120. /package/skills/{compresion-tokens.md → compresion-tokens/SKILL.md} +0 -0
  121. /package/skills/{constitucion-constraint.md → constitucion-constraint/SKILL.md} +0 -0
  122. /package/skills/{deteccion-stack.md → deteccion-stack/SKILL.md} +0 -0
  123. /package/skills/{enrutador-agentes.md → enrutador-agentes/SKILL.md} +0 -0
  124. /package/skills/{gestion-estado.md → gestion-estado/SKILL.md} +0 -0
  125. /package/skills/{indexador.md → indexador/SKILL.md} +0 -0
  126. /package/skills/{validacion-spec.md → validacion-spec/SKILL.md} +0 -0
  127. /package/skills/{verificador-implementacion.md → verificador-implementacion/SKILL.md} +0 -0
@@ -14,6 +14,8 @@
14
14
  */
15
15
 
16
16
  import { createInterface } from "node:readline";
17
+ import { existsSync, mkdirSync, appendFileSync } from "node:fs";
18
+ import { join } from "node:path";
17
19
 
18
20
  const rl = createInterface({ input: process.stdin, terminal: false });
19
21
  let raw = "";
@@ -116,14 +118,36 @@ function main(raw) {
116
118
  const cmd = String(toolInput?.command ?? "").trim();
117
119
  if (!cmd) process.exit(0);
118
120
 
121
+ // ── 0. NUEVO: Verificar permisos por agente ─────────────────────────────
122
+ const agentName = process.env.CLAUDE_AGENT_NAME;
123
+ if (agentName) {
124
+ // Agentes read-only que NO pueden usar Write/Edit
125
+ const readOnlyAgents = [
126
+ 'arquitecto', 'asesor-datos', 'critico', 'seguridad',
127
+ 'investigador', 'revisor', 'disenador-api'
128
+ ];
129
+
130
+ // Si es agente read-only e intenta usar Write/Edit, bloquea
131
+ if (readOnlyAgents.includes(agentName) &&
132
+ (toolName === 'Write' || toolName === 'Edit')) {
133
+ process.stderr.write(
134
+ `FORGE detuvo esta acción: el agente "${agentName}" solo puede leer, no modificar archivos.\n` +
135
+ `Si necesitas que este agente escriba código, cambia su rol en la configuración.\n`
136
+ );
137
+ process.exit(2);
138
+ }
139
+
140
+ // Auditoría de intentos de tool por agente (log a .sdd/observabilidad/)
141
+ logAgentToolAttempt(agentName, toolName, cmd);
142
+ }
143
+
119
144
  // ── 1. Verificar prohibidos ─────────────────────────────────────────────
120
145
  for (const re of PROHIBIDOS) {
121
146
  if (re.test(cmd)) {
122
147
  process.stderr.write(
123
- `🚫 BLOQUEADO por guardia de seguridad SDD-ES\n` +
124
- ` Comando: ${cmd.slice(0, 120)}\n` +
125
- ` Razón: coincide con patrón prohibido (${re.source.slice(0, 60)})\n` +
126
- ` Esta operación nunca debe ejecutarse automáticamente.\n`
148
+ `FORGE evitó esta acción porque podría borrar o dañar archivos importantes de forma irreversible.\n` +
149
+ `Si estás completamente seguro de lo que haces, ejecuta el comando manualmente en tu terminal.\n` +
150
+ `Comando bloqueado: ${cmd.slice(0, 120)}\n`
127
151
  );
128
152
  process.exit(2);
129
153
  }
@@ -133,9 +157,9 @@ function main(raw) {
133
157
  for (const re of SECRET_PATTERNS) {
134
158
  if (re.test(cmd)) {
135
159
  process.stderr.write(
136
- `🚫 BLOQUEADO secret hardcodeado detectado en el comando\n` +
137
- ` Patrón: ${re.source.slice(0, 60)}\n` +
138
- ` Usa variables de entorno o un secret manager.\n`
160
+ `FORGE detectó que este comando incluye una contraseña o clave secreta escrita directamente.\n` +
161
+ `Para proteger tu seguridad, usa variables de entorno en lugar de escribir credenciales en el código.\n` +
162
+ `Ejemplo: usa process.env.MI_CLAVE en vez de escribir el valor directamente.\n`
139
163
  );
140
164
  process.exit(2);
141
165
  }
@@ -146,8 +170,8 @@ function main(raw) {
146
170
  if (re.test(cmd)) {
147
171
  // Escribir a stderr — Claude Code lo muestra como contexto antes de pedir permiso
148
172
  process.stderr.write(
149
- `⚠️ Operación sensible detectada: ${msg}\n` +
150
- ` Comando: ${cmd.slice(0, 120)}\n`
173
+ `Atención: esto va a realizar una acción que no se puede deshacer fácilmente (${msg}).\n` +
174
+ `Revisa el comando antes de confirmar: ${cmd.slice(0, 120)}\n`
151
175
  );
152
176
  // Exit 0 — dejamos que el flujo normal de permisos de Claude Code actúe
153
177
  process.exit(0);
@@ -157,3 +181,31 @@ function main(raw) {
157
181
  // Todo bien
158
182
  process.exit(0);
159
183
  }
184
+
185
+ /**
186
+ * Registra intentos de tool por agente para auditoría
187
+ */
188
+ function logAgentToolAttempt(agentName, toolName, cmd) {
189
+ try {
190
+ // Intenta grabar en .sdd/observabilidad/ en formato JSONL (append-only)
191
+ const auditDir = '.sdd/observabilidad';
192
+ const auditFile = join(auditDir, 'agent-tool-audit.jsonl');
193
+
194
+ // Crea dir si no existe
195
+ if (!existsSync(auditDir)) {
196
+ mkdirSync(auditDir, { recursive: true });
197
+ }
198
+
199
+ const record = {
200
+ timestamp: new Date().toISOString(),
201
+ agent: agentName,
202
+ tool: toolName,
203
+ cmd_preview: cmd.slice(0, 120),
204
+ pid: process.pid
205
+ };
206
+
207
+ appendFileSync(auditFile, JSON.stringify(record) + '\n', 'utf8');
208
+ } catch {
209
+ // Silenciosamente ignorar fallos de auditoría (no bloquear ejecución)
210
+ }
211
+ }
package/cli/index.js CHANGED
@@ -26,7 +26,6 @@ import { join, dirname } from "node:path";
26
26
  import { fileURLToPath } from "node:url";
27
27
  import { homedir } from "node:os";
28
28
  import { execSync } from "node:child_process";
29
-
30
29
  // ─── Paths ────────────────────────────────────────────────────────────────────
31
30
 
32
31
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -355,7 +354,7 @@ function cmdDoctor() {
355
354
 
356
355
  function uso() {
357
356
  console.log(`
358
- SDD-ES — CLI de instalación (v${pluginVersion()})
357
+ SDD-ES — CLI (v${pluginVersion()})
359
358
 
360
359
  Uso:
361
360
  npx sdd-es init [--global] Instala el plugin (proyecto o global)
@@ -0,0 +1,196 @@
1
+ ---
2
+ description: Indexar, listar y gestionar decisiones arquitectónicas (ADRs)
3
+ allowed-tools: Read, Write, Bash
4
+ ---
5
+
6
+ # /sdd.adr
7
+
8
+ Gestiona Architecture Decision Records (ADRs) — registro de decisiones arquitectónicas.
9
+
10
+ ## Modos
11
+
12
+ ### `/sdd.adr list`
13
+
14
+ Lista todas las decisiones registradas.
15
+
16
+ ```
17
+ ID | DECISION | CONTEXT | STATUS
18
+ ───┼───────────────────────────┼────────────────────┼──────────
19
+ 1 | Use PostgreSQL | ACID needed | accepted
20
+ 2 | Cache with Redis | Performance | accepted
21
+ 3 | JWT for auth | Stateless API | accepted
22
+ 4 | Validate user input | Security | accepted
23
+ 5 | HTTPS only | Compliance | accepted
24
+ ```
25
+
26
+ **Opciones:**
27
+ ```
28
+ /sdd.adr list --status=accepted # Solo aceptadas
29
+ /sdd.adr list --status=rejected # Solo rechazadas
30
+ /sdd.adr list --status=deprecated # Obsoletas
31
+ ```
32
+
33
+ ---
34
+
35
+ ### `/sdd.adr new`
36
+
37
+ Captura una nueva decisión de forma interactiva.
38
+
39
+ ```
40
+ Pregunta 1: ¿Cuál es la decisión?
41
+ > Use DynamoDB para analytics
42
+
43
+ Pregunta 2: ¿Por qué? (contexto)
44
+ > Scale infinitamente, baja latencia de queries
45
+
46
+ Pregunta 3: ¿Qué alternativas consideraste?
47
+ > PostgreSQL partitioning, BigQuery, Redshift
48
+
49
+ Pregunta 4: ¿Status? (accepted/rejected/deprecated/superseded)
50
+ > accepted
51
+
52
+ ✅ ADR guardado en .sdd/arquitectura/ADRs.jsonl
53
+ ```
54
+
55
+ ---
56
+
57
+ ### `/sdd.adr search "patrón"`
58
+
59
+ Busca ADRs por palabra clave.
60
+
61
+ ```
62
+ /sdd.adr search "database"
63
+
64
+ RESULTADO:
65
+ ID | DECISION | CONTEXT
66
+ ───┼───────────────────────┼────────────────
67
+ 1 | Use PostgreSQL | ACID needed
68
+ 2 | Use Redis cache | Performance
69
+
70
+ /sdd.adr search "security"
71
+
72
+ RESULTADO:
73
+ ID | DECISION | CONTEXT
74
+ ───┼───────────────────────────┼──────────────────
75
+ 3 | Validate user input | Prevent injection
76
+ 4 | HTTPS only | Compliance
77
+ ```
78
+
79
+ ---
80
+
81
+ ### `/sdd.adr edit [ID]`
82
+
83
+ Editar una decisión existente.
84
+
85
+ ```
86
+ /sdd.adr edit 1
87
+
88
+ ADR #1: Use PostgreSQL
89
+ Context: ACID needed
90
+ Alternatives: MongoDB, Firebase
91
+ Status: accepted
92
+
93
+ ¿Modificar? (y/n) > y
94
+ Nuevo status: deprecated
95
+
96
+ ✅ ADR #1 actualizado
97
+ ```
98
+
99
+ ---
100
+
101
+ ## Ficheros
102
+
103
+ **Ledger:** `.sdd/arquitectura/ADRs.jsonl` (append-only)
104
+
105
+ Cada línea es un ADR en JSON:
106
+ ```json
107
+ {
108
+ "ts": "2026-06-14T10:30:00Z",
109
+ "decision": "Use PostgreSQL",
110
+ "context": "ACID transactions required",
111
+ "alternatives": ["MongoDB", "Firebase"],
112
+ "status": "accepted",
113
+ "archivo": "src/database.ts",
114
+ "linea": 42,
115
+ "agente": "arquitecto"
116
+ }
117
+ ```
118
+
119
+ ---
120
+
121
+ ## Uso en Auditoría
122
+
123
+ **Para auditor externo:**
124
+
125
+ ```bash
126
+ /sdd.adr list --status=accepted
127
+ → Todas las decisiones aceptadas documentadas
128
+
129
+ /sdd.adr search "security"
130
+ → Todas las decisiones de seguridad con contexto
131
+
132
+ /sdd.adr search "compliance"
133
+ → Todas las decisiones de compliance (GDPR, PCI-DSS, etc.)
134
+ ```
135
+
136
+ **Resultado:** Auditor confía porque ve trazabilidad completa.
137
+
138
+ ---
139
+
140
+ ## Batch Scan
141
+
142
+ Para proyectos existentes, scan automático:
143
+
144
+ ```bash
145
+ node utils/adr-parser.js . src/**/*.ts --update-ledger
146
+ → Encuentra todos los ADRs en codebase
147
+ → Añade al ledger si no existen
148
+ ```
149
+
150
+ ---
151
+
152
+ ## Ejemplo Real
153
+
154
+ ### Código con ADR Incrustado
155
+
156
+ ```typescript
157
+ // ADR: {"decision": "Use TypeScript", "context": "Type safety, IDE support", "status": "accepted"}
158
+ import * as express from "express";
159
+
160
+ // ADR: {"decision": "Use dependency injection", "context": "Testability", "status": "accepted"}
161
+ class Database {
162
+ constructor(private config: Config) {}
163
+ }
164
+
165
+ // ADR: {"decision": "Validate all inputs with Zod", "context": "Security", "status": "accepted"}
166
+ const userSchema = z.object({
167
+ email: z.string().email(),
168
+ password: z.string().min(8)
169
+ });
170
+ ```
171
+
172
+ ### Ejecutar Scan
173
+
174
+ ```bash
175
+ /sdd.adr new (o node utils/adr-parser.js . src/**/*.ts)
176
+
177
+ ✅ 3 ADRs encontrados y registrados
178
+ ```
179
+
180
+ ### Verificar
181
+
182
+ ```bash
183
+ /sdd.adr list
184
+ → Ver todas las decisiones documentadas
185
+ ```
186
+
187
+ ---
188
+
189
+ ## Notas
190
+
191
+ - **Automático:** Hook captura ADRs al escribir código
192
+ - **Manual:** `/sdd.adr new` para decisiones no en código
193
+ - **Buscable:** `/sdd.adr search` por palabra clave
194
+ - **Auditables:** Cada ADR tiene timestamp, autor, contexto
195
+ - **Seguro:** JSON validado, error silencioso si inválido
196
+
@@ -28,9 +28,20 @@ cat .sdd/dominio/glosario.md 2>/dev/null
28
28
  ls .sdd/arquitectura/ 2>/dev/null
29
29
  ```
30
30
 
31
- ## PASO 1.5 — Despacho PTC de dimensiones
31
+ ## PASO 1.5 — Model routing para dimensiones
32
32
 
33
- Las 7 dimensiones de auditoría son **independientes entre sí** — cada una lee los mismos artefactos sin modificarlos. Esto las hace candidatas ideales para PTC (skill `orquestacion-ptc`).
33
+ Aplica el mismo routing de modelos que `/sdd.implementar` al despachar las dimensiones de análisis:
34
+
35
+ ```
36
+ Grupo OPUS → análisis de constitución, seguridad y arquitectura (D1, D5, D7)
37
+ Grupo SONNET → análisis de spec, plan, tareas y glosario (D2, D3, D4, D6)
38
+ ```
39
+
40
+ Cuando PTC está disponible, el routing se aplica a cada subagente en el bloque paralelo.
41
+
42
+ ## PASO 1.6 — Despacho PTC de dimensiones
43
+
44
+ Las 7 dimensiones de auditoría son **independientes entre sí** — cada una lee los mismos artefactos sin modificarlos. Esto las hace candidatas ideales para PTC (skill `orquestacion-ptc`). El modelo de cada subagente sigue el routing del PASO 1.5.
34
45
 
35
46
  **Si hay ≥3 agentes disponibles para ejecutar el análisis en paralelo:**
36
47
 
@@ -237,5 +248,15 @@ Empieza con:
237
248
  /sdd.[comando del primer bloqueante]
238
249
  ```
239
250
 
251
+ ## Output styles
252
+
253
+ Si el argumento contiene `pm`, `arq` o `dev`, adapta el reporte del PASO 3:
254
+
255
+ **Modo `pm`:** Solo veredicto, número de bloqueantes y recomendación de acción. Sin dimensiones técnicas ni matrices.
256
+
257
+ **Modo `arq`:** Enfatiza las dimensiones 1 (Constitución↔Plan) y 5 (Tareas internas). Incluye la matriz de cobertura CAs→Tareas y el grafo de dependencias.
258
+
259
+ **Modo `dev`:** El reporte completo del PASO 3 con todas las dimensiones, matrices y distribución de agentes (comportamiento actual).
260
+
240
261
  ---
241
262
  **HOOK:** `.sdd/hooks/despues_analizar.sh`
@@ -61,12 +61,23 @@ Muestra esta guía formateada:
61
61
  /sdd.release --preview Ver qué entraría sin modificar nada
62
62
 
63
63
  🏭 FÁBRICA (idea → producto instalable)
64
+ /sdd.interpretar [idea] Interpretar idea en bruto y generar IR (Interpreted Requirement)
65
+ /sdd.diseñar Elegir dirección visual y generar ProductDesign
66
+ /sdd.construir Pipeline completo automático: diseño + código + deploy
67
+ /sdd.exportar Empaquetar el proyecto actual como bundle descargable
64
68
  /sdd.crear-app [idea] Generar app web o CLI desde una descripción en lenguaje natural
65
69
  /sdd.crear-mcp [descripción] Generar servidor MCP empaquetado (.mcpb) desde una descripción
66
70
 
71
+ 🏛️ CALIDAD Y COMPLIANCE
72
+ /sdd.compliance Reporte de cumplimiento regulatorio (GDPR, SOC2, ISO 27001, HIPAA)
73
+ /sdd.adr Registrar decisión de arquitectura (Architecture Decision Record)
74
+ /sdd.defect-report Reporte de defectos y tasa de bugs del proyecto
75
+
67
76
  ⚙️ UTILIDADES
68
77
  /sdd.mapear Indexar estructura, símbolos y dependencias del proyecto
69
78
  /sdd.comprimir Comprimir archivos de memoria para ahorrar tokens
79
+ /sdd.optimizar Optimizar artefactos SDD para reducir uso de contexto
80
+ /sdd.optimizar-memoria Compactar la memoria del agente activo
70
81
 
71
82
  ═══════════════════════════════════════════════════════════════════════
72
83
  🔄 FLUJOS RECOMENDADOS
@@ -110,6 +121,8 @@ FLUJO CALIDAD MÁXIMA (features grandes, producto enterprise)
110
121
 
111
122
  DISEÑO Y ARQUITECTURA
112
123
  arquitecto Decisiones técnicas, diseño de alto nivel
124
+ product-designer Diseño de producto: pantallas, user flow, MVP
125
+ architecture-designer Stack técnico: frontend, backend, BD, deploy
113
126
  disenador-api Contratos: OpenAPI, GraphQL, gRPC, eventos
114
127
  asesor-datos Esquemas, queries, índices, migraciones
115
128