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
@@ -0,0 +1,221 @@
1
+ # DESIGN SYSTEM: Warm Editorial
2
+
3
+ > **Dirección**: Cálido, editorial, humano. Inspirado en revistas de calidad. Serif para display, sans-serif para cuerpo. Tonos tierra.
4
+
5
+ ---
6
+
7
+ ## 1. Visual Theme & Atmosphere
8
+
9
+ Como una revista bien editada. Contenido primero, estructura visible. Tipografía como elemento de diseño.
10
+ Cálido sin ser informal. Elegante sin ser frío.
11
+
12
+ **Palabras clave**: editorial · cálido · legible · humano · curado · artesanal
13
+
14
+ ---
15
+
16
+ ## 2. Color Palette & Roles
17
+
18
+ ```css
19
+ /* Fondos */
20
+ --bg-base: #FAF8F4; /* pergamino cálido */
21
+ --bg-surface: #FFFFFF;
22
+ --bg-subtle: #F2EDE6; /* secciones alternadas */
23
+ --bg-emphasis: #E8DDD2; /* hover */
24
+
25
+ /* Texto */
26
+ --text-primary: #1A1410; /* casi negro cálido */
27
+ --text-secondary:#6B5D52; /* marrón medio */
28
+ --text-muted: #A89585; /* gris cálido */
29
+ --text-inverse: #FAF8F4;
30
+
31
+ /* Acento */
32
+ --accent: #C0392B; /* rojo editorial */
33
+ --accent-hover: #A93226;
34
+ --accent-subtle: #FDECEA;
35
+
36
+ /* Secundario */
37
+ --accent2: #8B6914; /* dorado oscuro para detalles */
38
+
39
+ /* Estado */
40
+ --success: #27AE60;
41
+ --warning: #E67E22;
42
+ --error: #C0392B;
43
+ --info: #2980B9;
44
+
45
+ /* Bordes */
46
+ --border: #DDD0C4;
47
+ --border-strong: #B8A99A;
48
+ ```
49
+
50
+ ---
51
+
52
+ ## 3. Typography Rules
53
+
54
+ ```css
55
+ /* Fuentes — la clave del sistema */
56
+ --font-display: 'Playfair Display', 'Georgia', serif; /* headings */
57
+ --font-body: 'Source Serif 4', 'Georgia', serif; /* body (serif también) */
58
+ --font-ui: 'Inter', system-ui, sans-serif; /* labels, nav, botones */
59
+ --font-mono: 'JetBrains Mono', monospace;
60
+
61
+ /* Escala */
62
+ --text-xs: 12px / 1.4; /* labels UI */
63
+ --text-sm: 14px / 1.5;
64
+ --text-base: 17px / 1.7; /* cuerpo más generoso */
65
+ --text-lg: 20px / 1.6;
66
+ --text-xl: 24px / 1.4;
67
+ --text-2xl: 30px / 1.3;
68
+ --text-3xl: 38px / 1.15;
69
+ --text-4xl: 48px / 1.05;
70
+
71
+ /* Pesos display */
72
+ --display-normal: 400;
73
+ --display-italic: 400 italic; /* uso frecuente de itálica en editorial */
74
+ --display-bold: 700;
75
+ ```
76
+
77
+ **Reglas específicas**:
78
+ - H1: Playfair Display, 38–48px, weight 700, tracking -0.01em
79
+ - H2: Playfair Display, 30px, weight 400 (elegante sin negrita)
80
+ - Subtítulo / pullquote: Playfair Display italic, 20–24px
81
+ - Body: Source Serif 4, 17px, line-height 1.7 (más espacio para lectura)
82
+ - UI (botones, nav, labels): Inter, 13–14px
83
+
84
+ ---
85
+
86
+ ## 4. Component Stylings
87
+
88
+ ### Botones
89
+ ```css
90
+ /* Primario — sin bordes redondeados, más recto */
91
+ .btn-primary {
92
+ background: var(--accent);
93
+ color: white;
94
+ padding: 12px 28px;
95
+ border-radius: 2px; /* casi cuadrado, editorial */
96
+ font-family: var(--font-ui);
97
+ font-weight: 500;
98
+ font-size: 13px;
99
+ letter-spacing: 0.06em;
100
+ text-transform: uppercase;
101
+ }
102
+
103
+ /* Outline editorial */
104
+ .btn-outline {
105
+ background: transparent;
106
+ border: 1.5px solid var(--text-primary);
107
+ color: var(--text-primary);
108
+ padding: 12px 28px;
109
+ border-radius: 2px;
110
+ font-family: var(--font-ui);
111
+ font-size: 13px;
112
+ letter-spacing: 0.06em;
113
+ text-transform: uppercase;
114
+ }
115
+ ```
116
+
117
+ ### Cards
118
+ ```css
119
+ .card {
120
+ background: var(--bg-surface);
121
+ border: 1px solid var(--border);
122
+ border-radius: 0; /* cuadrado, editorial */
123
+ padding: 28px 32px;
124
+ }
125
+
126
+ /* Card con acento en borde izquierdo — solo para featured */
127
+ .card-featured {
128
+ border-left: 3px solid var(--accent);
129
+ padding-left: 28px;
130
+ }
131
+ ```
132
+
133
+ ### Divisores
134
+ ```css
135
+ .divider {
136
+ border: none;
137
+ border-top: 1px solid var(--border);
138
+ margin: 32px 0;
139
+ }
140
+
141
+ /* Ornamental — para secciones principales */
142
+ .divider-ornamental::before {
143
+ content: '✦';
144
+ display: block;
145
+ text-align: center;
146
+ color: var(--accent2);
147
+ margin-bottom: 8px;
148
+ }
149
+ ```
150
+
151
+ ### Pullquotes
152
+ ```css
153
+ .pullquote {
154
+ font-family: var(--font-display);
155
+ font-style: italic;
156
+ font-size: 22px;
157
+ line-height: 1.4;
158
+ color: var(--text-secondary);
159
+ border-left: 3px solid var(--accent);
160
+ padding-left: 20px;
161
+ margin: 32px 0;
162
+ }
163
+ ```
164
+
165
+ ---
166
+
167
+ ## 5. Layout Principles
168
+
169
+ - **Grid**: 12 columnas, gutter 24px, max-width 1100px (más angosto = más editorial)
170
+ - **Columnas de contenido**: max 65–70 caracteres por línea (aprox 680px a 17px)
171
+ - **Sidebar editorial**: a la derecha, 30% del ancho
172
+ - **Espaciado**: múltiplos de 8px, generoso (secciones con 80–96px entre ellas)
173
+ - **Drop cap**: primera letra grande en artículos principales
174
+
175
+ ---
176
+
177
+ ## 6. Depth & Elevation
178
+
179
+ ```css
180
+ /* Casi sin sombras — la jerarquía viene de la tipografía y los bordes */
181
+ --shadow-sm: 0 1px 4px rgba(26,20,16,0.08);
182
+ --shadow-md: 0 4px 16px rgba(26,20,16,0.10);
183
+ ```
184
+
185
+ Sin sombras de colores. Sin elevation artificial. El peso visual viene del tamaño y grosor tipográfico.
186
+
187
+ ---
188
+
189
+ ## 7. Do's and Don'ts
190
+
191
+ **✅ Hacer:**
192
+ - Mezclar tamaños tipográficos con contraste fuerte (48px headline + 17px body)
193
+ - Usar itálica del display font para énfasis y citas
194
+ - Espaciado generoso entre párrafos (margin-bottom: 24px en body)
195
+ - Líneas divisoras delgadas entre secciones
196
+ - Fechas, categorías y bylines en Inter 12px uppercase
197
+
198
+ **❌ No hacer:**
199
+ - Fondos de colores brillantes o saturados
200
+ - Bordes muy redondeados (max 4px en botones, 0 en cards)
201
+ - Gradientes (ninguno)
202
+ - Iconos tipo emoji o ilustraciones de dibujos animados
203
+ - Demasiados elementos en una pantalla (editorial es curado)
204
+ - Tablas sin estilo cuidadoso de bordes
205
+ - Imágenes sin ratio definido (usar aspect-ratio: 16/9 o 3/2)
206
+
207
+ ---
208
+
209
+ ## 8. Responsive Behavior
210
+
211
+ ```
212
+ Desktop (≥1024px): layout de revista 2–3 col, tipografía grande
213
+ Tablet (640–1023px): 1–2 col, tipografía reducida un nivel
214
+ Mobile (<640px): 1 col, heading 28px max, mayor padding lateral (20px)
215
+ ```
216
+
217
+ ---
218
+
219
+ ## 9. Agent Prompt Guide
220
+
221
+ > Usa el sistema Warm Editorial: fondos pergamino (#FAF8F4), tipografía Playfair Display para headings (serif, con itálica), Source Serif 4 para cuerpo, Inter para UI. Acento rojo oscuro (#C0392B) solo en acciones. Tonos tierra (#6B5D52, #A89585). Bordes casi cuadrados (border-radius 2px en botones, 0 en cards). Sin gradientes. Sin bordes redondeados grandes. Espaciado generoso. El diseño se siente como una revista de calidad: curado, elegante, tipográficamente rico.
package/docs/AGENTES.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Guía de Agentes Especializados
2
2
 
3
- SDD-ES incluye 11 agentes con roles bien definidos. Esta guía explica cuándo se activa cada uno.
3
+ SDD-ES incluye 14 agentes con roles bien definidos. Esta guía explica cuándo se activa cada uno.
4
4
 
5
5
  ## Tabla rápida
6
6
 
@@ -17,6 +17,9 @@ SDD-ES incluye 11 agentes con roles bien definidos. Esta guía explica cuándo s
17
17
  | critico | opus | `/sdd.planificar`, `/sdd.analizar` | Riesgos y puntos ciegos |
18
18
  | seguridad | opus | Cambios sensibles automáticamente | Auditoría de vulnerabilidades |
19
19
  | documentador | sonnet | Bajo demanda (desactivado por defecto) | Docs útiles (no obvias) |
20
+ | investigador | sonnet | Bajo demanda | Investigación técnica, benchmarks, comparativas |
21
+ | product-designer | opus | `/sdd.diseñar` (fase de producto) | Pantallas P0/P1/P2, user flow, mvp_scope |
22
+ | architecture-designer | sonnet | `/sdd.diseñar` (fase de stack) | Stack más simple viable, decisión técnica en lenguaje llano |
20
23
 
21
24
  ## Cuándo activar/desactivar agentes
22
25
 
@@ -0,0 +1,206 @@
1
+ # Caso completo: app de lista de tareas desde cero
2
+
3
+ Este documento muestra un recorrido real de FORGE para un proyecto pequeño.
4
+ Cada bloque muestra qué escribe el usuario y qué hace FORGE en respuesta.
5
+
6
+ El caso usa el flujo FORGE (idea → deploy) con perfil `guiado` para un usuario no-técnico.
7
+
8
+ ---
9
+
10
+ ## Fase 1 — Descubrir la idea
11
+
12
+ **Usuario:**
13
+ ```
14
+ /sdd "quiero una app de lista de tareas para mí solo"
15
+ ```
16
+
17
+ **FORGE** (hub `/sdd`):
18
+ 1. Lee `.sdd/estado.json` — no existe, proyecto sin inicializar.
19
+ 2. Detecta intención FORGE ("quiero una app").
20
+ 3. Llama a `/sdd.interpretar` con el texto de la idea.
21
+
22
+ ---
23
+
24
+ ## Fase 2 — Interpretar (`/sdd.interpretar`)
25
+
26
+ **FORGE** ejecuta internamente:
27
+ 1. Activa el agente `investigador` para leer el contexto del directorio actual.
28
+ 2. Hace 3 preguntas mínimas al usuario (sí/no o una palabra):
29
+ - ¿Web en el navegador o app de escritorio? → `web`
30
+ - ¿Con cuenta de usuario o sin login? → `sin login`
31
+ - ¿Solo tú o quieres compartir listas? → `solo yo`
32
+ 3. Genera `.sdd/ir.json`:
33
+
34
+ ```json
35
+ {
36
+ "id": "ir-todo-app-001",
37
+ "product": {
38
+ "name": "Mi Lista de Tareas",
39
+ "type": "web",
40
+ "target_users": "usuario único sin cuenta",
41
+ "value_proposition": "Lista de tareas personal, sin registro, datos en el navegador"
42
+ },
43
+ "features": {
44
+ "core": ["agregar tarea", "marcar como hecha", "eliminar tarea"],
45
+ "nice_to_have": ["filtrar por estado", "persistencia en localStorage"]
46
+ },
47
+ "constraints": {
48
+ "tech_preference": null,
49
+ "budget": "bajo",
50
+ "team_size": "1"
51
+ }
52
+ }
53
+ ```
54
+
55
+ **Usuario ve:**
56
+ ```
57
+ Entendido. Tu app es una lista de tareas personal para el navegador, sin login.
58
+
59
+ Características principales:
60
+ ✓ Agregar tarea
61
+ ✓ Marcar como hecha
62
+ ✓ Eliminar tarea
63
+ ✓ Persistencia en localStorage (los datos quedan aunque cierres el navegador)
64
+
65
+ ¿Arrancamos con el diseño? (responde sí)
66
+ ```
67
+
68
+ ---
69
+
70
+ ## Fase 3 — Diseñar (`/sdd.diseñar`)
71
+
72
+ **Usuario:** `sí`
73
+
74
+ **FORGE** orquesta internamente:
75
+ 1. Agente `product-designer` lee `ir.json` y genera `product-design.json`:
76
+ - Pantallas P0: lista de tareas + input de nueva tarea
77
+ - User flow: usuario abre → ve lista → agrega → marca → cierra
78
+ - MVPscope: solo las 3 features core, sin filtros en V1
79
+ 2. Agente `architecture-designer` lee `ir.json` y propone stack:
80
+ - Frontend: HTML + CSS vanilla + JS puro (sin frameworks — proyecto de 1 persona, bajo presupuesto)
81
+ - Backend: ninguno (datos en localStorage)
82
+ - Deploy: GitHub Pages o Vercel (gratis)
83
+ 3. Skill `critica-diseno` revisa y aprueba: no hay over-engineering.
84
+
85
+ **Usuario ve:**
86
+ ```
87
+ Diseño listo:
88
+
89
+ Stack: HTML/CSS/JS vanilla — sin framework, sin backend, datos en tu navegador.
90
+ Deploy: Vercel gratis.
91
+
92
+ Una pantalla: input + lista de tareas. Simple y directo.
93
+
94
+ ¿Construimos el código? (responde sí)
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Fase 4 — Especificar y Planificar
100
+
101
+ **Usuario:** `sí`
102
+
103
+ **FORGE** ejecuta `/sdd.especificar` automáticamente desde el IR + ProductDesign:
104
+ 1. Genera `.sdd/especificaciones/2026-06-14-todo-app/spec.md` con criterios de aceptación:
105
+ - CA-001: Al cargar la página, se muestran las tareas guardadas en localStorage
106
+ - CA-002: El usuario puede agregar una tarea escribiendo en el input y presionando Enter
107
+ - CA-003: Al hacer click en una tarea se marca como completada (tachada)
108
+ - CA-004: El botón "×" elimina una tarea permanentemente
109
+ - CA-005: Los cambios persisten tras recargar la página
110
+
111
+ Luego ejecuta `/sdd.planificar`:
112
+ 1. Plan técnico: 1 archivo `index.html`, 1 `style.css`, 1 `app.js`
113
+ 2. Agente `critico` revisa — sin riesgos identificados para este alcance
114
+ 3. Presenta plan al usuario para aprobación.
115
+
116
+ **Usuario ve:**
117
+ ```
118
+ Plan aprobado. 3 archivos: index.html, style.css, app.js.
119
+ Estimado: 15 minutos de implementación.
120
+
121
+ ¿Implementamos? (responde sí)
122
+ ```
123
+
124
+ ---
125
+
126
+ ## Fase 5 — Implementar (`/sdd.implementar`)
127
+
128
+ **Usuario:** `sí`
129
+
130
+ **FORGE** ejecuta `/sdd.tareas` y luego `/sdd.implementar`:
131
+ 1. Genera tareas atómicas:
132
+ - T001: Crear `index.html` con estructura base (input + ul#tasks)
133
+ - T002: Crear `style.css` con estilos minimalistas
134
+ - T003: Crear `app.js` con lógica CRUD + localStorage
135
+ - T004: Conectar los tres archivos y verificar criterios de aceptación
136
+
137
+ 2. Agente `desarrollador-frontend` ejecuta cada tarea en secuencia.
138
+ 3. Al terminar T004, agente `tester` genera y corre tests básicos (sin navegador — valida lógica pura de `app.js`).
139
+ 4. Agente `revisor` verifica que cada CA del spec esté cubierto.
140
+
141
+ **Usuario ve:**
142
+ ```
143
+ Implementación completa.
144
+
145
+ ✓ T001 index.html
146
+ ✓ T002 style.css
147
+ ✓ T003 app.js
148
+ ✓ T004 integración verificada
149
+
150
+ Tests: 5/5 pasando
151
+ Spec: CA-001 ✓ CA-002 ✓ CA-003 ✓ CA-004 ✓ CA-005 ✓
152
+
153
+ ¿Desplegamos? (responde sí)
154
+ ```
155
+
156
+ ---
157
+
158
+ ## Fase 6 — Verificar y Desplegar
159
+
160
+ **Usuario:** `sí`
161
+
162
+ **FORGE** ejecuta `/sdd.verificar` y luego `/sdd.desplegar`:
163
+
164
+ 1. `/sdd.verificar` hace la verificación final:
165
+ - Lee `spec.md` y el código generado
166
+ - Confirma que cada criterio de aceptación tiene cobertura en el código
167
+ - Gate pasa: 0 violaciones de constitución (no hay constitución configurada en este proyecto)
168
+
169
+ 2. `/sdd.desplegar` con gate duro:
170
+ - Tests verdes ✓
171
+ - Spec verificada ✓
172
+ - Sin secretos en el código ✓
173
+ - Pide confirmación explícita: **el usuario escribe "desplegar"**
174
+
175
+ 3. Agente `operaciones` ejecuta:
176
+ ```bash
177
+ npx vercel --prod
178
+ ```
179
+ 4. Health check post-deploy: GET a la URL devuelta por Vercel, verifica HTTP 200.
180
+ 5. Registra URL en `.sdd/estado.json`.
181
+
182
+ **Usuario ve:**
183
+ ```
184
+ ✓ Desplegado en: https://mi-lista-tareas-abc123.vercel.app
185
+
186
+ Health check: OK (142ms)
187
+
188
+ Tu app está en línea. Puedes compartir ese enlace o abrirlo en cualquier navegador.
189
+ ```
190
+
191
+ ---
192
+
193
+ ## Resumen del flujo
194
+
195
+ | Fase | Comando FORGE | Qué produce |
196
+ |------|--------------|-------------|
197
+ | Interpretar idea | `/sdd.interpretar` | `.sdd/ir.json` |
198
+ | Diseñar producto | `/sdd.diseñar` | `product-design.json`, stack definido |
199
+ | Especificar | `/sdd.especificar` | `spec.md` con 5 criterios de aceptación |
200
+ | Planificar | `/sdd.planificar` | `plan.md`, tareas aprobadas |
201
+ | Implementar | `/sdd.implementar` | `index.html`, `style.css`, `app.js` |
202
+ | Verificar | `/sdd.verificar` | Confirmación de CAs cubiertos |
203
+ | Desplegar | `/sdd.desplegar` | URL pública + health check |
204
+
205
+ Interacciones del usuario: 5 respuestas (`sí` / `sí` / `sí` / `sí` / `desplegar`).
206
+ Todo lo técnico lo maneja FORGE.