sdd-es 2.0.0 → 2.5.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 (95) hide show
  1. package/.claude/settings.json +21 -45
  2. package/LICENSE +21 -0
  3. package/README.md +51 -21
  4. package/agents/architecture-designer.md +174 -0
  5. package/agents/arquitecto.md +16 -1
  6. package/agents/asesor-datos.md +15 -1
  7. package/agents/critico.md +37 -1
  8. package/agents/desarrollador-backend.md +3 -1
  9. package/agents/desarrollador-frontend.md +3 -1
  10. package/agents/disenador-api.md +13 -1
  11. package/agents/documentador.md +3 -1
  12. package/agents/investigador.md +3 -1
  13. package/agents/operaciones.md +3 -1
  14. package/agents/product-designer.md +232 -0
  15. package/agents/revisor.md +25 -1
  16. package/agents/seguridad.md +5 -1
  17. package/agents/tester.md +3 -1
  18. package/claude-hooks/agent-memory.js +154 -0
  19. package/cli/index.js +1 -2
  20. package/commands/sdd.analizar.md +23 -2
  21. package/commands/sdd.compliance.md +516 -0
  22. package/commands/sdd.configurar.md +33 -0
  23. package/commands/sdd.constitucion.md +198 -23
  24. package/commands/sdd.construir.md +210 -0
  25. package/commands/sdd.dise/303/261ar.md +188 -0
  26. package/commands/sdd.estado.md +68 -1
  27. package/commands/sdd.exportar.md +344 -0
  28. package/commands/sdd.implementar.md +203 -23
  29. package/commands/sdd.interpretar.md +239 -0
  30. package/commands/sdd.md +70 -1
  31. package/commands/sdd.optimizar.md +164 -0
  32. package/commands/sdd.planificar.md +64 -0
  33. package/commands/sdd.verificar.md +10 -0
  34. package/craft/accessibility-baseline.md +216 -0
  35. package/craft/anti-ai-slop.md +158 -0
  36. package/craft/color.md +160 -0
  37. package/craft/typography.md +121 -0
  38. package/design-systems/bold-brutalist/DESIGN.md +239 -0
  39. package/design-systems/editorial-minimal/DESIGN.md +205 -0
  40. package/design-systems/neutral-modern/DESIGN.md +227 -0
  41. package/design-systems/vibrant-consumer/DESIGN.md +257 -0
  42. package/design-systems/warm-editorial/DESIGN.md +221 -0
  43. package/docs/AGENTES.md +4 -1
  44. package/docs/FABRICA.md +164 -115
  45. package/docs/MEMORIA-Y-OBSERVABILIDAD.md +237 -0
  46. package/docs/MODELOS.md +3 -0
  47. package/docs/QUE-PASA-SI-FALLA.md +404 -0
  48. package/docs/SEGURIDAD-PARA-NOTECNICOS.md +280 -0
  49. package/package.json +5 -3
  50. package/skills/cache-audit/SKILL.md +163 -0
  51. package/skills/critica-diseno/SKILL.md +193 -0
  52. package/skills/descubrir-idea/SKILL.md +133 -0
  53. package/skills/effort-router/SKILL.md +128 -0
  54. package/skills/elegir-direccion/SKILL.md +184 -0
  55. package/skills/github-connect/IMPLEMENTATION-CHECKLIST.md +297 -0
  56. package/skills/github-connect/INDEX.md +223 -0
  57. package/skills/github-connect/INTEGRATION.md +361 -0
  58. package/skills/github-connect/QUICK-START.md +168 -0
  59. package/skills/github-connect/README.md +414 -0
  60. package/skills/github-connect/RESUMEN_IMPLEMENTACION.txt +374 -0
  61. package/skills/github-connect/SKILL.md +343 -0
  62. package/skills/github-connect/STRUCTURE.txt +252 -0
  63. package/skills/github-connect/example-config.yaml +41 -0
  64. package/skills/github-connect/github-connect.sh +419 -0
  65. package/skills/interpretar-idea/SKILL.md +254 -0
  66. package/skills/memory-compactor/SKILL.md +114 -0
  67. package/skills/modo-guiado/SKILL.md +12 -2
  68. package/skills/observabilidad-consumo/SKILL.md +164 -0
  69. package/skills/token-budget/SKILL.md +154 -0
  70. package/skills/vercel-deploy/00-START-HERE.txt +364 -0
  71. package/skills/vercel-deploy/CHECKLIST.md +205 -0
  72. package/skills/vercel-deploy/EXEC-SUMMARY.txt +322 -0
  73. package/skills/vercel-deploy/FLOW.txt +334 -0
  74. package/skills/vercel-deploy/INDEX.md +276 -0
  75. package/skills/vercel-deploy/INTEGRATION.md +328 -0
  76. package/skills/vercel-deploy/MANIFEST.md +310 -0
  77. package/skills/vercel-deploy/README.md +65 -0
  78. package/skills/vercel-deploy/SKILL.md +356 -0
  79. package/skills/vercel-deploy/deploy.sh +298 -0
  80. package/skills/vercel-deploy/estado.json.example +205 -0
  81. package/skills/vercel-deploy/skill.yaml +323 -0
  82. package/skills/vercel-deploy/vercel-deploy.sh +216 -0
  83. package/skills/wireframe-mvp/SKILL.md +157 -0
  84. package/.claude-plugin/marketplace.json +0 -31
  85. package/.claude-plugin/plugin.json +0 -97
  86. package/docs/EJEMPLO-PRACTICA.md +0 -383
  87. package/docs/EJEMPLOS.md +0 -212
  88. /package/skills/{compresion-tokens.md → compresion-tokens/SKILL.md} +0 -0
  89. /package/skills/{constitucion-constraint.md → constitucion-constraint/SKILL.md} +0 -0
  90. /package/skills/{deteccion-stack.md → deteccion-stack/SKILL.md} +0 -0
  91. /package/skills/{enrutador-agentes.md → enrutador-agentes/SKILL.md} +0 -0
  92. /package/skills/{gestion-estado.md → gestion-estado/SKILL.md} +0 -0
  93. /package/skills/{indexador.md → indexador/SKILL.md} +0 -0
  94. /package/skills/{validacion-spec.md → validacion-spec/SKILL.md} +0 -0
  95. /package/skills/{verificador-implementacion.md → verificador-implementacion/SKILL.md} +0 -0
@@ -0,0 +1,133 @@
1
+ ---
2
+ description: Discovery form de 5 preguntas para entender la idea del usuario antes de interpretar. Genera contexto estructurado que alimenta el Interpreter.
3
+ model: claude-opus-4-8
4
+ allowed-tools: Write
5
+ ---
6
+
7
+ # Skill: Descubrir Idea
8
+
9
+ ## Propósito
10
+
11
+ Antes de generar ningún IR, necesitamos entender el contexto de la idea. Esta skill hace **5 preguntas clave** en lenguaje natural — sin jerga técnica — y guarda las respuestas en `.sdd/descubrimiento.md`.
12
+
13
+ El objetivo no es un interrogatorio. Es una conversación breve (2–3 minutos) que permite al Interpreter generar un IR con confidence ≥ 0.8 en lugar de ≤ 0.6.
14
+
15
+ ---
16
+
17
+ ## Flujo
18
+
19
+ ### Paso 1: Presentación
20
+
21
+ Antes de las preguntas, muestra esto:
22
+
23
+ ```
24
+ Antes de entender tu idea en detalle, tengo 5 preguntas rápidas.
25
+ No hay respuestas correctas — contesta lo que se te ocurra.
26
+ ```
27
+
28
+ ### Paso 2: Las 5 preguntas (una a la vez)
29
+
30
+ Haz cada pregunta de forma conversacional. Espera la respuesta antes de hacer la siguiente.
31
+
32
+ **Pregunta 1 — Superficie**
33
+ ```
34
+ ¿Dónde va a vivir esto?
35
+ Por ejemplo: en un navegador web, en el celular, como programa de escritorio, o es algo más técnico (una API, una herramienta de línea de comandos)?
36
+ ```
37
+ Acepta respuestas vagas: "web", "móvil", "app", "no sé" — todas son válidas.
38
+
39
+ **Pregunta 2 — Audiencia**
40
+ ```
41
+ ¿Quién lo va a usar?
42
+ Puede ser tú mismo, tus clientes, tu equipo, o el público en general.
43
+ ```
44
+ No pidas detalles. Cualquier respuesta sirve.
45
+
46
+ **Pregunta 3 — Tono**
47
+ ```
48
+ ¿Qué sensación quieres que tenga?
49
+ Por ejemplo: profesional y sobrio, moderno y tecnológico, cálido y amigable, simple y directo...
50
+ ```
51
+ Si el usuario no sabe, anota "no definido".
52
+
53
+ **Pregunta 4 — Restricciones**
54
+ ```
55
+ ¿Hay algo importante que debamos tener en cuenta?
56
+ Por ejemplo: presupuesto ajustado, necesita estar listo pronto, solo un desarrollador, no quieres depender de servicios de pago...
57
+ ```
58
+ Si no hay restricciones, registra "ninguna mencionada".
59
+
60
+ **Pregunta 5 — Inspiración**
61
+ ```
62
+ ¿Hay algún producto o app que te guste y que se parezca a lo que quieres hacer?
63
+ No tiene que ser exactamente igual — solo para entender el estilo o la dirección.
64
+ ```
65
+ Si el usuario no tiene referencia, anota "sin referencia".
66
+
67
+ ### Paso 3: Guardar contexto
68
+
69
+ Después de las 5 respuestas, guarda en `.sdd/descubrimiento.md`:
70
+
71
+ ```markdown
72
+ # Contexto de Descubrimiento
73
+
74
+ **Fecha**: [fecha actual]
75
+ **Idea original**: [texto que dio el usuario antes de la skill]
76
+
77
+ ## Respuestas
78
+
79
+ **Superficie**: [respuesta 1]
80
+ **Audiencia**: [respuesta 2]
81
+ **Tono**: [respuesta 3]
82
+ **Restricciones**: [respuesta 4]
83
+ **Inspiración**: [respuesta 5]
84
+
85
+ ## Notas del sistema
86
+
87
+ [Cualquier observación relevante: contradicciones, pistas, contexto adicional]
88
+ ```
89
+
90
+ ### Paso 4: Confirmar y pasar al Interpreter
91
+
92
+ Muestra un resumen de una línea:
93
+ ```
94
+ Entendido. Voy a interpretar tu idea teniendo esto en cuenta.
95
+ ```
96
+
97
+ No pidas confirmación — pasa directo al Interpreter.
98
+
99
+ ---
100
+
101
+ ## Reglas
102
+
103
+ - **Una pregunta a la vez** — nunca hagas 2 preguntas en el mismo mensaje
104
+ - **Sin jerga técnica** — nunca uses "frontend", "backend", "API REST", "deployment", etc.
105
+ - **Sin juzgar** — cualquier respuesta es válida, incluso "no sé"
106
+ - **Máximo 5 preguntas** — nunca hagas preguntas de seguimiento
107
+ - **Tono conversacional** — no formal, no robótico
108
+
109
+ ---
110
+
111
+ ## Ejemplos de respuestas aceptables
112
+
113
+ **Pregunta 1 - Superficie:**
114
+ - ✅ "web" → `web`
115
+ - ✅ "en el celular" → `mobile`
116
+ - ✅ "no sé, lo que sea más fácil" → `web` (default)
117
+ - ✅ "quiero que se use desde el navegador" → `web`
118
+
119
+ **Pregunta 2 - Audiencia:**
120
+ - ✅ "mis clientes" → `clientes del negocio`
121
+ - ✅ "yo solo" → `uso personal`
122
+ - ✅ "cualquier persona" → `público general`
123
+
124
+ **Pregunta 3 - Tono:**
125
+ - ✅ "profesional" → `profesional`
126
+ - ✅ "no sé, que se vea bien" → `moderno y limpio`
127
+ - ✅ "como Airbnb" → `cálido, accesible`
128
+
129
+ ---
130
+
131
+ ## Output esperado
132
+
133
+ `.sdd/descubrimiento.md` con las 5 respuestas estructuradas, listo para que `interpretar-idea` lo lea como contexto adicional.
@@ -0,0 +1,128 @@
1
+ ---
2
+ description: Dado el nombre de la fase SDD actual, recomienda effort (low/medium/high/max) y modelo (Haiku/Sonnet/Opus) para cada agente. Evita pagar Opus cuando Sonnet o Haiku son suficientes — ahorro típico del 60-75% en fases mecánicas.
3
+ model: claude-haiku-4-5-20251001
4
+ allowed-tools: Read
5
+ ---
6
+
7
+ # Skill: Effort Router
8
+
9
+ ## Propósito
10
+
11
+ Los agentes de FORGE usan modelos fijos declarados en su frontmatter. Pero no toda fase requiere el mismo nivel de razonamiento. Esta skill lee la fase actual del proyecto y produce una tabla de configuración recomendada: qué modelo usar en cada agente y con qué nivel de `effort`, para evitar gastar Opus donde Haiku es suficiente.
12
+
13
+ **Ahorro estimado por fase:**
14
+ - Fases mecánicas (tests, docs, deploy): 75-80% vs. Opus en todo
15
+ - Fases de verificación: 50-60%
16
+ - Fases de decisión (spec, plan, análisis): 0% — estas SÍ necesitan Opus
17
+
18
+ ---
19
+
20
+ ## Lo que lees primero
21
+
22
+ ```bash
23
+ # Fase actual y spec activa
24
+ cat .sdd/estado.json 2>/dev/null | head -20 || echo "SIN_ESTADO"
25
+ ```
26
+
27
+ ---
28
+
29
+ ## Tabla de routing por fase
30
+
31
+ ### GRUPO A — Siempre Opus (decisiones críticas, no degradar)
32
+
33
+ | Fase SDD | Agente principal | Effort | Modelo | Razón |
34
+ |---|---|---|---|---|
35
+ | `especificacion` | arquitecto | high | claude-opus-4-8 | Define restricciones del sistema entero |
36
+ | `planificacion` | arquitecto, critico | high | claude-opus-4-8 | Decisiones de arquitectura irreversibles |
37
+ | `analisis` (7 dimensiones) | critico, seguridad | high | claude-opus-4-8 | Auditoría de riesgos — falsos negativos son costosos |
38
+ | `aclaracion` (cuando hay `[MARCADOR]`) | arquitecto | high | claude-opus-4-8 | Ambigüedades de spec → decisiones de arquitectura |
39
+
40
+ ### GRUPO B — Sonnet suficiente (trabajo técnico estándar)
41
+
42
+ | Fase SDD | Agente principal | Effort | Modelo | Razón |
43
+ |---|---|---|---|---|
44
+ | `checklist` | (sin agente dedicado) | medium | claude-sonnet-4-6 | Verificación mecánica contra criterios conocidos |
45
+ | `tareas` | (sin agente dedicado) | medium | claude-sonnet-4-6 | Descomposición mecánica de plan → tareas |
46
+ | `implementacion` (backend/API) | desarrollador-backend, disenador-api | medium | claude-sonnet-4-6 | Implementación con spec clara |
47
+ | `implementacion` (frontend) | desarrollador-frontend | medium | claude-sonnet-4-6 | Implementación con spec clara |
48
+ | `verificacion` | verificador-implementacion | medium | claude-sonnet-4-6 | Cruzar CAs — bien definido |
49
+ | `qa` | tester | medium | claude-sonnet-4-6 | Orquestar Playwright — mecánico pero con estado |
50
+ | `snapshot` | (sin agente dedicado) | low | claude-sonnet-4-6 | Serializar estado actual |
51
+
52
+ ### GRUPO C — Haiku suficiente (operaciones mecánicas puras)
53
+
54
+ | Fase SDD | Agente principal | Effort | Modelo | Razón |
55
+ |---|---|---|---|---|
56
+ | `aclaracion` (sin marcadores) | (sin agente dedicado) | low | claude-haiku-4-5-20251001 | Solo formatear preguntas conocidas |
57
+ | `implementacion` (tests) | tester | low | claude-haiku-4-5-20251001 | Tests unitarios con spec y código claros |
58
+ | `implementacion` (docs) | documentador | low | claude-haiku-4-5-20251001 | Documentar código ya escrito |
59
+ | `deploy` | operaciones | low | claude-haiku-4-5-20251001 | Ejecutar scripts CI/CD predefinidos |
60
+ | `canary` | operaciones | low | claude-haiku-4-5-20251001 | Igual que deploy |
61
+ | `release` | (sin agente dedicado) | low | claude-haiku-4-5-20251001 | Actualizar versiones y CHANGELOG |
62
+ | `retro` | (sin agente dedicado) | low | claude-haiku-4-5-20251001 | Formato de retrospectiva estructurado |
63
+
64
+ ---
65
+
66
+ ## Output que produces
67
+
68
+ Dado el JSON de `.sdd/estado.json`, imprime el bloque de configuración recomendada:
69
+
70
+ ```
71
+ ╔══════════════════════════════════════════════════════════════╗
72
+ ║ 🎯 EFFORT ROUTER — Configuración recomendada ║
73
+ ╠══════════════════════════════════════════════════════════════╣
74
+ ║ Fase detectada: {FASE} ║
75
+ ╠══════════════════════════════════════════════════════════════╣
76
+ ║ AGENTE | MODELO | EFFORT | GRUPO ║
77
+ ║ ─────────────────────┼─────────────────┼──────────┼─────── ║
78
+ ║ {agente} | {modelo} | {effort} | {A/B/C}║
79
+ ╠══════════════════════════════════════════════════════════════╣
80
+ ║ 💰 AHORRO ESTIMADO vs. Opus-en-todo ║
81
+ ║ ║
82
+ ║ Agentes en Grupo B: {N} × ~60% ahorro por token ║
83
+ ║ Agentes en Grupo C: {N} × ~80% ahorro por token ║
84
+ ║ Ahorro total estimado de la fase: ~{%}% ║
85
+ ╠══════════════════════════════════════════════════════════════╣
86
+ ║ ⚠️ ATENCIÓN ║
87
+ ║ ║
88
+ ║ Estos son defaults para la fase "{FASE}". ║
89
+ ║ Si la tarea actual tiene ambigüedad estructural → ║
90
+ ║ sube a Opus para el agente afectado. ║
91
+ ╚══════════════════════════════════════════════════════════════╝
92
+ ```
93
+
94
+ ### Cálculo del ahorro estimado
95
+
96
+ Precios de referencia (por millón de tokens):
97
+ - Opus 4.8: $5 input / $25 output
98
+ - Sonnet 4.6: $3 input / $15 output ← 40% más barato en input, 40% en output
99
+ - Haiku 4.5: $1 input / $5 output ← 80% más barato en input, 80% en output
100
+
101
+ Para la fase actual, suma los agentes activos y calcula el delta respecto a "todos Opus".
102
+
103
+ **Ejemplo — fase `implementacion`:**
104
+ ```
105
+ Grupo A (Opus): 0 agentes
106
+ Grupo B (Sonnet): 3 agentes (backend, frontend, disenador-api) → ~40% ahorro c/u
107
+ Grupo C (Haiku): 2 agentes (tester, documentador) → ~80% ahorro c/u
108
+
109
+ Ahorro total estimado: ((3×0.40) + (2×0.80)) / 5 = ~56%
110
+ ```
111
+
112
+ ---
113
+
114
+ ## Cómo aplicar las recomendaciones
115
+
116
+ Las recomendaciones son de sesión (no tocan los archivos `.md` de los agentes). Para aplicar en la sesión actual:
117
+
118
+ 1. Cuando Claude Code invoca un agente vía `/sdd.implementar`, puedes prefixar la invocación con el modelo sugerido si el runtime lo permite.
119
+ 2. Para cambios permanentes en el frontmatter del agente, edita `{PLUGIN_DIR}/agents/{nombre}.md` y cambia la línea `model:` del frontmatter.
120
+ 3. Para registrar que usaste el router en esta sesión, añadir al ledger: `/sdd.estado consumo`.
121
+
122
+ ---
123
+
124
+ ## Notas
125
+
126
+ - Esta skill se invoca automáticamente desde `/sdd.optimizar` como PASO 2 cuando hay alertas de fan-out.
127
+ - Para proyectos con presupuesto de tokens restringido, usa junto con `token-budget` para ver el impacto económico real.
128
+ - La regla de oro: **si el agente toma una decisión que no se puede deshacer → Opus. Si ejecuta una decisión ya tomada → Sonnet o Haiku.**
@@ -0,0 +1,184 @@
1
+ ---
2
+ description: Direction picker inspirado en open-design. Selecciona 3 de las 5 direcciones visuales disponibles según el tipo de producto y audiencia del IR, y el usuario elige una antes de generar cualquier diseño.
3
+ model: claude-sonnet-4-6
4
+ allowed-tools: Read, Write
5
+ ---
6
+
7
+ # Skill: Elegir Dirección Visual
8
+
9
+ ## Propósito
10
+
11
+ Antes de diseñar pantallas, el usuario elige **una dirección visual** que guiará todo el diseño del proyecto. Esta elección activa el DESIGN.md correspondiente y define paleta, tipografía, y estilo de componentes.
12
+
13
+ ---
14
+
15
+ ## Contexto que leer primero
16
+
17
+ ```bash
18
+ cat .sdd/ir.json 2>/dev/null | node -e "
19
+ const ir = JSON.parse(require('fs').readFileSync('/dev/stdin','utf8'));
20
+ console.log('type:', ir.product?.type);
21
+ console.log('users:', ir.product?.target_users);
22
+ console.log('name:', ir.product?.name);
23
+ "
24
+ ```
25
+
26
+ ---
27
+
28
+ ## Las 5 direcciones disponibles
29
+
30
+ | Slug | Nombre | Ideal para |
31
+ |------|--------|-----------|
32
+ | `neutral-modern` | Neutral Moderno | SaaS B2B, dashboards, herramientas, apps de productividad |
33
+ | `warm-editorial` | Editorial Cálido | Blogs, marketplaces de nicho, apps culturales, contenido |
34
+ | `bold-brutalist` | Bold Brutalist | Herramientas dev, portfolios, startups técnicas, CLI wrappers |
35
+ | `editorial-minimal` | Editorial Minimal | Firmas profesionales, consultoras, galerías, portfolios premium |
36
+ | `vibrant-consumer` | Vibrant Consumer | Apps B2C, educación, fitness, entretenimiento, onboarding |
37
+
38
+ ---
39
+
40
+ ## Lógica de selección — cuáles 3 mostrar
41
+
42
+ Basado en `product.type` y `target_users` del IR:
43
+
44
+ | Tipo | Audiencia | Mostrar (orden de recomendación) |
45
+ |------|-----------|----------------------------------|
46
+ | `saas` | B2B / profesionales | Neutral Modern, Bold Brutalist, Editorial Minimal |
47
+ | `saas` | B2C / consumidores | Neutral Modern, Vibrant Consumer, Warm Editorial |
48
+ | `web` | General | Neutral Modern, Vibrant Consumer, Warm Editorial |
49
+ | `mobile` | Consumidores | Vibrant Consumer, Neutral Modern, Warm Editorial |
50
+ | `mobile` | Profesionales | Neutral Modern, Bold Brutalist, Vibrant Consumer |
51
+ | `api` / `cli` | Desarrolladores | Bold Brutalist, Neutral Modern, Editorial Minimal |
52
+ | `landing` / marketing | Cualquiera | Bold Brutalist, Vibrant Consumer, Neutral Modern |
53
+ | Contenido / editorial | Lectores | Warm Editorial, Editorial Minimal, Neutral Modern |
54
+ | Portfolio / agencia | Clientes premium | Editorial Minimal, Bold Brutalist, Warm Editorial |
55
+
56
+ Si no hay IR o el tipo no está claro → mostrar: **Neutral Modern, Vibrant Consumer, Bold Brutalist**.
57
+
58
+ ---
59
+
60
+ ## Flujo
61
+
62
+ ### Paso 1: Determinar las 3 opciones a mostrar
63
+
64
+ Analiza el IR y selecciona las 3 direcciones más adecuadas según la tabla de arriba. Ordénalas de más a menos recomendada.
65
+
66
+ ### Paso 2: Mostrar las 3 opciones al usuario
67
+
68
+ Presenta las 3 opciones con descripción visual, paleta de colores y tipografía:
69
+
70
+ ```
71
+ Elige la dirección visual para [product.name]:
72
+
73
+ ┌─────────────────────────────────────────────────────────┐
74
+ │ 1. [NOMBRE DE LA DIRECCIÓN 1] │
75
+ │ [Descripción de 2 líneas: qué sensación transmite │
76
+ │ y para qué tipo de producto es ideal] │
77
+ │ │
78
+ │ Paleta: [color bg] [color text] [color accent] │
79
+ │ Fuente: [nombre de la fuente principal] │
80
+ │ Estilo: [3–4 palabras del estilo visual] │
81
+ ├─────────────────────────────────────────────────────────┤
82
+ │ 2. [NOMBRE DE LA DIRECCIÓN 2] │
83
+ │ [Descripción] │
84
+ │ │
85
+ │ Paleta: [...] │
86
+ │ Fuente: [...] │
87
+ │ Estilo: [...] │
88
+ ├─────────────────────────────────────────────────────────┤
89
+ │ 3. [NOMBRE DE LA DIRECCIÓN 3] │
90
+ │ [Descripción] │
91
+ │ │
92
+ │ Paleta: [...] │
93
+ │ Fuente: [...] │
94
+ │ Estilo: [...] │
95
+ └─────────────────────────────────────────────────────────┘
96
+
97
+ Escribe 1, 2 o 3 (o descríbeme qué buscas):
98
+ ```
99
+
100
+ **Datos de cada dirección para el display:**
101
+
102
+ | Dirección | Paleta (bg / text / accent) | Fuente | Estilo |
103
+ |-----------|---------------------------|--------|--------|
104
+ | Neutral Modern | ⬜ #FAFAFA / ⬛ #111111 / 🔵 #2563EB | Inter | Limpio, funcional, espacioso |
105
+ | Warm Editorial | 🟫 #FAF8F4 / 🟤 #2C2416 / 🔴 #C0392B | Playfair Display | Editorial, cálido, tipográfico |
106
+ | Bold Brutalist | ⬛ #0A0A0A / ⬜ #F5F5F5 / 🟡 #F0E040 | Space Grotesk 900 | Impactante, UPPERCASE, offset shadow |
107
+ | Editorial Minimal | ⬜ #FFFFFF / ⬛ #0A0A0A / ⬛ #0A0A0A | Cormorant Garamond | Silencioso, espacio vacío, austero |
108
+ | Vibrant Consumer | 💜 #F8F7FF / 🟣 #1A1535 / 🟣 #6C3FF5 | Nunito 900 | Energético, redondeado, colorido |
109
+
110
+ ### Paso 3: Procesar la elección
111
+
112
+ El usuario escribe `1`, `2`, `3`, o una descripción libre.
113
+
114
+ **Mapeo de respuestas libres:**
115
+ - "neutral" / "limpio" / "moderno" / "profesional" → `neutral-modern`
116
+ - "cálido" / "editorial" / "revista" / "warm" → `warm-editorial`
117
+ - "bold" / "brutal" / "oscuro" / "impactante" / "técnico" → `bold-brutalist`
118
+ - "minimal" / "minimalista" / "austero" / "elegante" / "premium" → `editorial-minimal`
119
+ - "colorido" / "vibrant" / "energía" / "dinámico" / "consumidor" → `vibrant-consumer`
120
+
121
+ Si el usuario describe algo ambiguo, elige la más cercana y explica por qué:
122
+ ```
123
+ Entendido. Usaré [Dirección] — [razón en 1 frase].
124
+ Si prefieres otra, escribe el número o descríbela.
125
+ ```
126
+
127
+ ### Paso 4: Activar el DESIGN.md
128
+
129
+ Lee el DESIGN.md de la dirección elegida:
130
+
131
+ ```bash
132
+ DIRECTION="[slug elegido]"
133
+ cat "{PLUGIN_DIR}/design-systems/$DIRECTION/DESIGN.md"
134
+ ```
135
+
136
+ Guarda la elección en `.sdd/estado.json`:
137
+
138
+ ```bash
139
+ node -e "
140
+ const fs = require('fs');
141
+ const p = '.sdd/estado.json';
142
+ const estado = fs.existsSync(p) ? JSON.parse(fs.readFileSync(p, 'utf8')) : {};
143
+ estado.design_direction = '$DIRECTION';
144
+ estado.design_system_path = '{PLUGIN_DIR}/design-systems/$DIRECTION/DESIGN.md';
145
+ estado.ultima_actualizacion = new Date().toISOString();
146
+ fs.mkdirSync('.sdd', { recursive: true });
147
+ fs.writeFileSync(p, JSON.stringify(estado, null, 2));
148
+ "
149
+ ```
150
+
151
+ ### Paso 5: Confirmar
152
+
153
+ ```
154
+ ✅ Dirección elegida: [Nombre de la dirección]
155
+
156
+ El diseño de [product.name] usará:
157
+ • Paleta: [colores principales del DESIGN.md]
158
+ • Tipografía: [fuentes del DESIGN.md]
159
+ • Estilo: [descriptor de 1 línea]
160
+
161
+ Continuando con el diseño de pantallas...
162
+ ```
163
+
164
+ No pedir confirmación adicional — pasar directo al agente `product-designer`.
165
+
166
+ ---
167
+
168
+ ## Salida guardada
169
+
170
+ ```
171
+ .sdd/estado.json → campos "design_direction" + "design_system_path"
172
+ ```
173
+
174
+ El DESIGN.md activo se referencia en `product-design.json` bajo `design_system_ref`.
175
+
176
+ ---
177
+
178
+ ## Notas
179
+
180
+ - Esta skill nunca genera código HTML ni diseño — solo selecciona la dirección
181
+ - El DESIGN.md activo es la guía para **todo** lo que viene después (wireframe, UI, crítica)
182
+ - Si el usuario quiere cambiar de dirección: `/sdd.diseñar cambiar-direccion`
183
+ - Las 5 direcciones disponibles son: Neutral Modern, Warm Editorial, Bold Brutalist, Editorial Minimal, Vibrant Consumer
184
+ - Siempre se muestran exactamente 3 opciones — las más adecuadas para el IR — no las 5