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.
- package/.claude/settings.json +29 -29
- package/.claude/settings.local.json +10 -0
- package/.claude-plugin/marketplace.json +10 -7
- package/.claude-plugin/plugin.json +59 -37
- package/.gitignore +20 -0
- package/.mcp.json +8 -0
- package/LICENSE +21 -0
- package/README.md +77 -40
- package/agents/architecture-designer.md +211 -0
- package/agents/arquitecto.md +16 -1
- package/agents/asesor-datos.md +15 -1
- package/agents/critico.md +37 -1
- package/agents/desarrollador-backend.md +3 -1
- package/agents/desarrollador-frontend.md +11 -16
- package/agents/disenador-api.md +13 -1
- package/agents/documentador.md +3 -1
- package/agents/investigador.md +3 -1
- package/agents/operaciones.md +3 -1
- package/agents/product-designer.md +268 -0
- package/agents/revisor.md +25 -1
- package/agents/seguridad.md +5 -1
- package/agents/tester.md +3 -1
- package/claude-hooks/agent-memory.js +288 -0
- package/claude-hooks/pre-tool-guard.js +61 -9
- package/cli/index.js +1 -2
- package/commands/sdd.adr.md +196 -0
- package/commands/sdd.analizar.md +23 -2
- package/commands/sdd.ayuda.md +13 -0
- package/commands/sdd.compliance.md +521 -0
- package/commands/sdd.configurar.md +34 -1
- package/commands/sdd.constitucion.md +198 -23
- package/commands/sdd.construir.md +210 -0
- package/commands/sdd.crear-mcp.md +2 -0
- package/commands/sdd.defect-report.md +134 -0
- package/commands/sdd.descubrir.md +19 -0
- package/commands/sdd.dise/303/261ar.md +188 -0
- package/commands/sdd.estado.md +120 -3
- package/commands/sdd.exportar.md +344 -0
- package/commands/sdd.implementar.md +272 -52
- package/commands/sdd.interpretar.md +239 -0
- package/commands/sdd.md +93 -4
- package/commands/sdd.optimizar-memoria.md +47 -0
- package/commands/sdd.optimizar.md +164 -0
- package/commands/sdd.planificar.md +64 -0
- package/commands/sdd.retro.md +74 -0
- package/commands/sdd.verificar.md +81 -0
- package/configuracion-ejemplo/.claude/CLAUDE.md +106 -0
- package/configuracion-ejemplo/sdd.config.yaml +10 -0
- package/craft/accessibility-baseline.md +216 -0
- package/craft/anti-ai-slop.md +158 -0
- package/craft/color.md +160 -0
- package/craft/typography.md +121 -0
- package/design-systems/bold-brutalist/DESIGN.md +239 -0
- package/design-systems/editorial-minimal/DESIGN.md +205 -0
- package/design-systems/neutral-modern/DESIGN.md +227 -0
- package/design-systems/vibrant-consumer/DESIGN.md +257 -0
- package/design-systems/warm-editorial/DESIGN.md +221 -0
- package/docs/AGENTES.md +4 -1
- package/docs/CASO-COMPLETO.md +206 -0
- package/docs/EJEMPLOS.md +61 -185
- package/docs/FABRICA.md +163 -115
- package/docs/INICIO-RAPIDO.md +27 -79
- package/docs/MEMORIA-Y-OBSERVABILIDAD.md +239 -0
- package/docs/MODELOS.md +3 -0
- package/docs/QUE-PASA-SI-FALLA.md +404 -0
- package/docs/README.md +43 -0
- package/docs/RELACION-CON-CLAUDE-CODE.md +38 -0
- package/docs/SEGURIDAD-PARA-NOTECNICOS.md +280 -0
- package/package.json +15 -10
- package/plantillas/job-story-mejorar-prompt.md +107 -0
- package/presets/enterprise.yaml +6 -0
- package/presets/lean.yaml +4 -0
- package/presets/startup.yaml +6 -0
- package/skills/adr-indexer/SKILL.md +181 -0
- package/skills/cache-audit/SKILL.md +163 -0
- package/skills/critica-diseno/SKILL.md +193 -0
- package/skills/descubrir-idea/SKILL.md +133 -0
- package/skills/effort-router/SKILL.md +128 -0
- package/skills/elegir-direccion/SKILL.md +184 -0
- package/skills/github-connect/IMPLEMENTATION-CHECKLIST.md +297 -0
- package/skills/github-connect/INDEX.md +223 -0
- package/skills/github-connect/INTEGRATION.md +361 -0
- package/skills/github-connect/QUICK-START.md +168 -0
- package/skills/github-connect/README.md +414 -0
- package/skills/github-connect/RESUMEN_IMPLEMENTACION.txt +374 -0
- package/skills/github-connect/SKILL.md +343 -0
- package/skills/github-connect/STRUCTURE.txt +252 -0
- package/skills/github-connect/example-config.yaml +41 -0
- package/skills/github-connect/github-connect.sh +419 -0
- package/skills/interpretar-idea/SKILL.md +254 -0
- package/skills/mejorar-prompt/SKILL.md +237 -0
- package/skills/memory-compactor/SKILL.md +68 -0
- package/skills/modo-guiado/SKILL.md +12 -2
- package/skills/mutation-detector/SKILL.md +134 -0
- package/skills/observabilidad-consumo/SKILL.md +164 -0
- package/skills/token-budget/SKILL.md +177 -0
- package/skills/vercel-deploy/00-START-HERE.txt +364 -0
- package/skills/vercel-deploy/CHECKLIST.md +205 -0
- package/skills/vercel-deploy/EXEC-SUMMARY.txt +322 -0
- package/skills/vercel-deploy/FLOW.txt +334 -0
- package/skills/vercel-deploy/INDEX.md +276 -0
- package/skills/vercel-deploy/INTEGRATION.md +328 -0
- package/skills/vercel-deploy/MANIFEST.md +310 -0
- package/skills/vercel-deploy/README.md +65 -0
- package/skills/vercel-deploy/SKILL.md +356 -0
- package/skills/vercel-deploy/deploy.sh +298 -0
- package/skills/vercel-deploy/estado.json.example +205 -0
- package/skills/vercel-deploy/skill.yaml +323 -0
- package/skills/vercel-deploy/vercel-deploy.sh +216 -0
- package/skills/wireframe-mvp/SKILL.md +157 -0
- package/docs/EJEMPLO-PRACTICA.md +0 -383
- package/mcp-figma/README.md +0 -158
- package/mcp-figma/package.json +0 -7
- package/mcp-figma/src/component-generator.js +0 -162
- package/mcp-figma/src/design-system-analyzer.js +0 -247
- package/mcp-figma/src/figma-client.js +0 -75
- package/mcp-figma/src/index.js +0 -114
- package/mcp-figma/src/mcp.js +0 -97
- package/mcp-figma/src/style-mapper.js +0 -85
- /package/skills/{compresion-tokens.md → compresion-tokens/SKILL.md} +0 -0
- /package/skills/{constitucion-constraint.md → constitucion-constraint/SKILL.md} +0 -0
- /package/skills/{deteccion-stack.md → deteccion-stack/SKILL.md} +0 -0
- /package/skills/{enrutador-agentes.md → enrutador-agentes/SKILL.md} +0 -0
- /package/skills/{gestion-estado.md → gestion-estado/SKILL.md} +0 -0
- /package/skills/{indexador.md → indexador/SKILL.md} +0 -0
- /package/skills/{validacion-spec.md → validacion-spec/SKILL.md} +0 -0
- /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
|
|
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.
|