sdd-es 2.0.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 (101) hide show
  1. package/.claude/settings.json +51 -0
  2. package/.claude-plugin/marketplace.json +31 -0
  3. package/.claude-plugin/plugin.json +97 -0
  4. package/README.md +332 -0
  5. package/agents/arquitecto.md +148 -0
  6. package/agents/asesor-datos.md +163 -0
  7. package/agents/critico.md +142 -0
  8. package/agents/desarrollador-backend.md +242 -0
  9. package/agents/desarrollador-frontend.md +120 -0
  10. package/agents/disenador-api.md +108 -0
  11. package/agents/documentador.md +177 -0
  12. package/agents/investigador.md +174 -0
  13. package/agents/operaciones.md +105 -0
  14. package/agents/revisor.md +153 -0
  15. package/agents/seguridad.md +216 -0
  16. package/agents/tester.md +286 -0
  17. package/claude-hooks/post-write-conventions.js +412 -0
  18. package/claude-hooks/pre-tool-guard.js +159 -0
  19. package/cli/index.js +401 -0
  20. package/commands/sdd.aclarar.md +200 -0
  21. package/commands/sdd.analizar.md +241 -0
  22. package/commands/sdd.ayuda.md +227 -0
  23. package/commands/sdd.canary.md +60 -0
  24. package/commands/sdd.checklist.md +174 -0
  25. package/commands/sdd.comprimir.md +166 -0
  26. package/commands/sdd.configurar.md +195 -0
  27. package/commands/sdd.constitucion.md +343 -0
  28. package/commands/sdd.crear-app.md +168 -0
  29. package/commands/sdd.crear-mcp.md +174 -0
  30. package/commands/sdd.descubrir.md +269 -0
  31. package/commands/sdd.desplegar.md +155 -0
  32. package/commands/sdd.especificar.md +302 -0
  33. package/commands/sdd.estado.md +124 -0
  34. package/commands/sdd.glosario.md +108 -0
  35. package/commands/sdd.implementar.md +377 -0
  36. package/commands/sdd.importar.md +91 -0
  37. package/commands/sdd.mapear.md +120 -0
  38. package/commands/sdd.md +119 -0
  39. package/commands/sdd.planificar.md +372 -0
  40. package/commands/sdd.qa.md +108 -0
  41. package/commands/sdd.release.md +253 -0
  42. package/commands/sdd.retro.md +82 -0
  43. package/commands/sdd.snapshot.md +122 -0
  44. package/commands/sdd.tareas.md +300 -0
  45. package/commands/sdd.verificar.md +239 -0
  46. package/configuracion-ejemplo/hooks-ejemplo/antes_cada_tarea.sh +18 -0
  47. package/configuracion-ejemplo/hooks-ejemplo/antes_implementar.sh +45 -0
  48. package/configuracion-ejemplo/hooks-ejemplo/despues_especificar.sh +14 -0
  49. package/configuracion-ejemplo/hooks-ejemplo/despues_implementar.sh +36 -0
  50. package/configuracion-ejemplo/hooks-ejemplo/despues_planificar.sh +19 -0
  51. package/configuracion-ejemplo/hooks-ejemplo/guardia-seguridad.sh +367 -0
  52. package/configuracion-ejemplo/sdd.config.yaml +310 -0
  53. package/docs/AGENTES.md +74 -0
  54. package/docs/COMPRESION.md +155 -0
  55. package/docs/EJEMPLO-PRACTICA.md +383 -0
  56. package/docs/EJEMPLOS.md +212 -0
  57. package/docs/FABRICA.md +185 -0
  58. package/docs/FILOSOFIA.md +61 -0
  59. package/docs/FLUJO.md +149 -0
  60. package/docs/INICIO-RAPIDO.md +116 -0
  61. package/docs/MAPAS.md +113 -0
  62. package/docs/MODELOS.md +103 -0
  63. package/docs/PERSONALIZACION.md +152 -0
  64. package/instalar.ps1 +39 -0
  65. package/instalar.sh +22 -0
  66. package/mcp-figma/README.md +158 -0
  67. package/mcp-figma/package.json +7 -0
  68. package/mcp-figma/src/component-generator.js +162 -0
  69. package/mcp-figma/src/design-system-analyzer.js +247 -0
  70. package/mcp-figma/src/figma-client.js +75 -0
  71. package/mcp-figma/src/index.js +114 -0
  72. package/mcp-figma/src/mcp.js +97 -0
  73. package/mcp-figma/src/style-mapper.js +85 -0
  74. package/package.json +50 -0
  75. package/plantillas/analisis.md +57 -0
  76. package/plantillas/checklist-especificacion.md +66 -0
  77. package/plantillas/constitucion.md +104 -0
  78. package/plantillas/decision-arquitectura.md +39 -0
  79. package/plantillas/dependencias-mapa.md +89 -0
  80. package/plantillas/especificacion.md +108 -0
  81. package/plantillas/estructura-mapa.md +40 -0
  82. package/plantillas/glosario.md +22 -0
  83. package/plantillas/index-especificaciones.md +15 -0
  84. package/plantillas/mcp-server.md +147 -0
  85. package/plantillas/plan.md +152 -0
  86. package/plantillas/simbolos-mapa.md +57 -0
  87. package/plantillas/snapshot.md +54 -0
  88. package/plantillas/tareas.md +72 -0
  89. package/presets/enterprise.yaml +69 -0
  90. package/presets/lean.yaml +63 -0
  91. package/presets/startup.yaml +67 -0
  92. package/skills/compresion-tokens.md +264 -0
  93. package/skills/constitucion-constraint.md +78 -0
  94. package/skills/deteccion-stack.md +175 -0
  95. package/skills/enrutador-agentes.md +69 -0
  96. package/skills/gestion-estado.md +114 -0
  97. package/skills/indexador.md +199 -0
  98. package/skills/modo-guiado/SKILL.md +78 -0
  99. package/skills/orquestacion-ptc/SKILL.md +96 -0
  100. package/skills/validacion-spec.md +52 -0
  101. package/skills/verificador-implementacion.md +71 -0
@@ -0,0 +1,116 @@
1
+ # Inicio Rápido — SDD-ES
2
+
3
+ SDD-ES es un plugin para Claude Code que añade un flujo estructurado para convertir ideas en código verificado. En lugar de pedirle a Claude "implementa X", defines primero qué quieres y por qué, y el sistema coordina agentes especializados para construirlo con trazabilidad completa.
4
+
5
+ ---
6
+
7
+ ## Instalación
8
+
9
+ Requiere **Node.js >= 18**. El instalador funciona igual en Windows, macOS y Linux.
10
+
11
+ ```bash
12
+ # 1. Ve a tu proyecto
13
+ cd mi-proyecto
14
+
15
+ # 2. Instala (camino recomendado, multiplataforma)
16
+ npx sdd-es init
17
+ ```
18
+
19
+ **Windows (PowerShell)** — atajo equivalente:
20
+
21
+ ```powershell
22
+ .\instalar.ps1
23
+ ```
24
+
25
+ **macOS / Linux / Git Bash** — atajo equivalente:
26
+
27
+ ```bash
28
+ bash /ruta/a/sdd-es/instalar.sh
29
+ ```
30
+
31
+ El instalador crea la carpeta `.sdd/` en tu proyecto y copia los comandos, agentes, skills y hooks de seguridad al `.claude/` local. Comprueba que todo quedó bien con:
32
+
33
+ ```bash
34
+ npx sdd-es doctor
35
+ ```
36
+
37
+ ---
38
+
39
+ ## Primera vez en un proyecto
40
+
41
+ Abre Claude Code en tu proyecto y ejecuta:
42
+
43
+ ```
44
+ /sdd.constitucion
45
+ ```
46
+
47
+ Claude te hace preguntas sobre tu proyecto (stack, principios, estándares de calidad) y genera `.sdd/memoria/constitucion.md` — la ley del proyecto que todos los agentes respetan.
48
+
49
+ Solo se hace una vez por proyecto.
50
+
51
+ ---
52
+
53
+ ## Flujo diario
54
+
55
+ ```
56
+ /sdd.especificar [descripción de lo que quieres]
57
+ ```
58
+
59
+ Desde ahí el sistema te guía paso a paso. No necesitas memorizar el resto de comandos — `/sdd` solo te pregunta qué quieres y enruta automáticamente.
60
+
61
+ ---
62
+
63
+ ## Los 4 comandos que más usarás
64
+
65
+ | Comando | Para qué |
66
+ |---|---|
67
+ | `/sdd` | Punto de entrada — di lo que quieres en lenguaje natural |
68
+ | `/sdd.especificar [idea]` | Convertir una idea en spec con criterios de aceptación |
69
+ | `/sdd.implementar` | Ejecutar las tareas con los agentes especializados |
70
+ | `/sdd.estado` | Ver dashboard del proyecto |
71
+
72
+ ---
73
+
74
+ ## ¿Eres nuevo en programación?
75
+
76
+ SDD-ES tiene un **perfil guiado** para personas con poca o ninguna experiencia. Durante `/sdd.constitucion` puedes elegirlo (o el sistema lo detecta automáticamente por la forma en que hablas).
77
+
78
+ En perfil guiado:
79
+ - No ves comandos ni tecnicismos — solo preguntas en lenguaje normal
80
+ - El sistema elige el stack por ti
81
+ - Confirmas con "sí" entre cada paso
82
+ - Al final, Claude publica tu app en internet
83
+
84
+ **Atajo directo para no-programadores:**
85
+
86
+ ```
87
+ /sdd.crear-app [describe tu idea]
88
+ ```
89
+
90
+ Ver el recorrido completo en [FABRICA.md](FABRICA.md).
91
+
92
+ ---
93
+
94
+ ## Crear una herramienta para Claude
95
+
96
+ Si quieres que Claude pueda hacer algo nuevo (consultar una API, acceder a tus archivos, etc.):
97
+
98
+ ```
99
+ /sdd.crear-mcp [describe qué hace la herramienta]
100
+ ```
101
+
102
+ Genera un servidor MCP funcional empaquetado como `.mcpb` instalable con una línea.
103
+
104
+ ---
105
+
106
+ ## Si algo sale mal o quieres retomar
107
+
108
+ ```
109
+ /sdd.estado # ¿dónde estoy?
110
+ /sdd.implementar continuar # retomar desde la última tarea
111
+ /sdd.ayuda # lista completa de comandos
112
+ ```
113
+
114
+ ---
115
+
116
+ ## Ejemplo completo → ver [EJEMPLO-PRACTICA.md](EJEMPLO-PRACTICA.md)
package/docs/MAPAS.md ADDED
@@ -0,0 +1,113 @@
1
+ # Mapas del Proyecto — Ahorrar 50-65k tokens por sesión
2
+
3
+ ## El problema
4
+
5
+ Una sesión típica de SDD-ES (`constitucion → especificar → planificar → implementar → verificar`):
6
+
7
+ - Claude necesita entender la estructura del proyecto
8
+ - Corre `find . -type f` → 50-100 archivos
9
+ - Lee cada archivo para entender qué hace → ~50k tokens
10
+ - Esto se repite cada sesión
11
+
12
+ ## La solución: Mapas estáticos
13
+
14
+ En lugar de que Claude lea archivos, consulta 3 archivos Markdown pequeños:
15
+
16
+ 1. **estructura.md** — árbol + 1 línea por archivo
17
+ 2. **simbolos.md** — funciones, clases, tipos exportados
18
+ 3. **dependencias.md** — quién depende de quién
19
+
20
+ Total: ~10k tokens. Ahorro: 80-85%.
21
+
22
+ ## Cómo usarlo
23
+
24
+ ```bash
25
+ # Primera vez: genera todos los mapas
26
+ /sdd.mapear
27
+
28
+ # Después: detecta cambios, actualiza automáticamente
29
+ /sdd.mapear
30
+
31
+ # Forzar regeneración completa (casi nunca)
32
+ /sdd.mapear regenerar
33
+
34
+ # Verificar estado sin actualizar
35
+ /sdd.mapear validar
36
+ ```
37
+
38
+ ## Dónde van
39
+
40
+ ```
41
+ .sdd/mapa/
42
+ ├── estructura.md (~5KB)
43
+ ├── simbolos.md (~8KB)
44
+ ├── dependencias.md (~3KB)
45
+ ├── .estado-mapeo (timestamp)
46
+ └── .checksums (md5 de archivos)
47
+ ```
48
+
49
+ ## Cómo Claude los usa
50
+
51
+ Durante `/sdd.planificar`:
52
+ 1. Busca si existen mapas
53
+ 2. Los lee (rápido, 10k tokens)
54
+ 3. Entiende la estructura sin leer código
55
+ 4. Si necesita más detalle: entonces corre `/Read archivo.ts`
56
+
57
+ Result: típicamente **no necesita leer nada** — el mapa le alcanza.
58
+
59
+ ## Actualización automática
60
+
61
+ - **Hook `despues_implementar`** actualiza mapas después de que ejecutas una tarea
62
+ - **Validación perezosa** — al inicio de comandos SDD, verifica si hay archivos nuevos y actualiza silenciosamente
63
+ - **Backup** — `.estructura.md.backup`, etc.
64
+
65
+ ## Manual vs Auto-descripción
66
+
67
+ Cada archivo en `estructura.md` tiene una descripción:
68
+
69
+ ```markdown
70
+ src/
71
+ ├── auth/
72
+ │ ├── login.service.ts — Servicio: autenticación local+JWT
73
+ │ │ ^ puedes editar esto manualmente
74
+ ```
75
+
76
+ Si editas la descripción, la próxima ejecución de `/sdd.mapear` respeta tus cambios.
77
+
78
+ ## Lenguajes soportados
79
+
80
+ Detección automática: TypeScript, JavaScript, Python, Rust, Go, Java, C#, Ruby, PHP.
81
+
82
+ Otros lenguajes: edita manualmente el mapa o ejecuta desde proyecto raíz con esos lenguajes presentes.
83
+
84
+ ## Ignorar directorios
85
+
86
+ Edita `.sdd/.mapeoignore`:
87
+
88
+ ```
89
+ node_modules/
90
+ dist/
91
+ .git/
92
+ vendor/
93
+ __pycache__/
94
+ ```
95
+
96
+ Próxima ejecución los salta.
97
+
98
+ ## Limitaciones honestas
99
+
100
+ - ❌ Imports dinámicos (`require(variable)`) no se detectan
101
+ - ⚠️ Proyectos >5000 archivos: capa un máximo de 2000 (avisa al usuario)
102
+ - ❌ No sigue tipos a través de funciones (solo detecta firmas)
103
+
104
+ Son trade-offs aceptables para una solución sin dependencias.
105
+
106
+ ## ROI
107
+
108
+ Si una sesión típica carga 200k tokens:
109
+ - Sin mapas: ~200k
110
+ - Con mapas: ~140k (30% ahorro)
111
+ - Multiplicado por 20 sesiones/mes: **1.2M tokens ahorrados/mes**
112
+
113
+ En pesos: ~USD 5 de ahorro al mes por usuario (con Claude Pro).
@@ -0,0 +1,103 @@
1
+ # Guía de Modelos por Agente
2
+
3
+ ## Tabla maestra de recomendaciones
4
+
5
+ | Agente | Recomendado | Aceptable | Evitar | Razón principal |
6
+ |--------|-------------|-----------|--------|-----------------|
7
+ | arquitecto | **opus** | sonnet (proyectos pequeños) | haiku | Decisiones difíciles de revertir |
8
+ | disenador-api | **sonnet** | opus (APIs complejas) | haiku | Diseño estructurado pero acotado |
9
+ | asesor-datos | **opus** | sonnet (BD simple) | haiku | Errores de BD son costosos |
10
+ | desarrollador-backend | **sonnet** | opus (lógica compleja), haiku (CRUD simple) | — | Codificación general |
11
+ | desarrollador-frontend | **sonnet** | opus (UI compleja), haiku (componentes simples) | — | Codificación general |
12
+ | operaciones | **sonnet** | haiku (scripts simples), opus (infra crítica) | — | Configuración |
13
+ | tester | **sonnet** | haiku (tests simples) | opus (overkill) | Generación con patrones |
14
+ | revisor | **opus** | sonnet | haiku | Revisión profunda atrapa más bugs |
15
+ | critico | **opus** | sonnet | haiku | Requiere razonamiento abstracto |
16
+ | seguridad | **opus** | — | sonnet, haiku | Auditoría debe ser exhaustiva |
17
+ | documentador | **sonnet** | haiku | opus (overkill) | Generación estructurada |
18
+
19
+ ## Filosofía
20
+
21
+ **Usa el modelo más pequeño que resuelva el problema bien.** Subir de tier solo si el agente falla repetidamente.
22
+
23
+ ### ¿Cuándo subir a opus?
24
+
25
+ - El agente da respuestas inconsistentes
26
+ - La tarea requiere considerar múltiples restricciones simultáneamente
27
+ - El costo de un error es alto (BD, seguridad, arquitectura)
28
+ - El razonamiento requiere abstracción profunda
29
+
30
+ ### ¿Cuándo bajar a haiku?
31
+
32
+ - La tarea es muy estructurada (rellenar plantilla)
33
+ - El agente funciona bien con sonnet y quieres ahorrar
34
+ - Tareas en lote (muchas similares)
35
+
36
+ ## Combinaciones efectivas
37
+
38
+ ### Combinación "alta calidad"
39
+ ```yaml
40
+ # Diseño con opus, implementación con sonnet, calidad con opus
41
+ arquitecto: opus
42
+ disenador-api: sonnet
43
+ asesor-datos: opus
44
+ desarrollador-backend: sonnet
45
+ desarrollador-frontend: sonnet
46
+ operaciones: sonnet
47
+ tester: sonnet
48
+ revisor: opus
49
+ critico: opus
50
+ seguridad: opus
51
+ ```
52
+
53
+ ### Combinación "rápida y económica" (para MVPs)
54
+ ```yaml
55
+ arquitecto: sonnet
56
+ disenador-api: sonnet
57
+ asesor-datos: sonnet
58
+ desarrollador-backend: sonnet
59
+ desarrollador-frontend: sonnet
60
+ operaciones: haiku
61
+ tester: haiku
62
+ revisor: sonnet
63
+ critico: sonnet
64
+ seguridad: sonnet
65
+ ```
66
+
67
+ ### Combinación "máxima calidad" (enterprise)
68
+ ```yaml
69
+ # Todo opus en agentes de decisión, sonnet en implementación rápida
70
+ arquitecto: opus
71
+ disenador-api: opus
72
+ asesor-datos: opus
73
+ desarrollador-backend: sonnet
74
+ desarrollador-frontend: sonnet
75
+ operaciones: opus # infra crítica
76
+ tester: sonnet
77
+ revisor: opus
78
+ critico: opus
79
+ seguridad: opus
80
+ documentador: sonnet
81
+ ```
82
+
83
+ ## Cambiar modelos
84
+
85
+ ```
86
+ /sdd.configurar modelos
87
+ ```
88
+
89
+ O edita `.sdd/sdd.config.yaml`:
90
+
91
+ ```yaml
92
+ agentes:
93
+ arquitecto:
94
+ modelo: opus # cambiar aquí
95
+ ```
96
+
97
+ Los cambios aplican a la próxima invocación.
98
+
99
+ ## Notas
100
+
101
+ - Esta guía se basa en la familia Claude (opus/sonnet/haiku) al momento de escribir esto.
102
+ - Si Anthropic publica un nuevo modelo, actualiza esta tabla en tu proyecto.
103
+ - Otros proveedores: si usas Claude Code con otros modelos, ajusta las recomendaciones.
@@ -0,0 +1,152 @@
1
+ # Guía Exhaustiva de Personalización
2
+
3
+ SDD-ES está diseñado para ser **completamente personalizable**. Cada archivo es Markdown plano que puedes editar.
4
+
5
+ ## Niveles de personalización
6
+
7
+ ### Nivel 1: Configuración (`.sdd/sdd.config.yaml`)
8
+
9
+ Cambios sin tocar lógica del plugin.
10
+
11
+ - Activar/desactivar agentes
12
+ - Cambiar modelos por agente
13
+ - Cambiar rutas de archivos
14
+ - Ajustar umbrales de calidad
15
+ - Modificar comportamientos (numeración de specs, ruta rápida, etc.)
16
+ - Definir protecciones (archivos no tocar, comandos prohibidos)
17
+
18
+ ### Nivel 2: Plantillas (`plantillas/*.md`)
19
+
20
+ Cambios en el formato de los artefactos generados.
21
+
22
+ - Modificar secciones de la spec
23
+ - Cambiar el formato del plan
24
+ - Personalizar el ADR
25
+ - Añadir/quitar secciones del snapshot
26
+
27
+ Las plantillas se leen al generar cada artefacto. Cambia un campo aquí y todos los artefactos futuros lo respetarán.
28
+
29
+ ### Nivel 3: Comandos (`commands/sdd.*.md`)
30
+
31
+ Cambios en el comportamiento del flujo.
32
+
33
+ - Modificar el orden de pasos en un comando
34
+ - Cambiar las preguntas que se hacen
35
+ - Ajustar criterios de detección automática
36
+ - Personalizar mensajes y outputs
37
+
38
+ ### Nivel 4: Agentes (`agents/*.md`)
39
+
40
+ Cambios en la personalidad y reglas de los expertos.
41
+
42
+ - Añadir restricciones específicas del proyecto
43
+ - Cambiar el formato de salida
44
+ - Definir conocimiento de dominio
45
+ - Ajustar criterios de aceptación de su trabajo
46
+
47
+ ### Nivel 5: Hooks (`.sdd/hooks/*.sh`)
48
+
49
+ Integración con tus sistemas externos.
50
+
51
+ - Git/GitLab/GitHub workflows
52
+ - Notificaciones (Slack, Teams, Discord)
53
+ - Triggers de CI/CD
54
+ - Linters/formatters automáticos
55
+ - Backups
56
+ - Sync con sistemas de tickets (Jira, Linear, etc.)
57
+
58
+ ## Casos de personalización comunes
59
+
60
+ ### Caso 1: Agregar una sección obligatoria a las specs
61
+
62
+ Edita `plantillas/especificacion.md` y añade tu sección. Luego edita `commands/sdd.especificar.md` para mencionarla en el PASO 4.
63
+
64
+ Opcional: edita `commands/sdd.checklist.md` para añadir un check sobre esa sección.
65
+
66
+ ### Caso 2: Cambiar el formato de los ADRs
67
+
68
+ Edita `plantillas/decision-arquitectura.md`.
69
+
70
+ ### Caso 3: Integrar con tu workflow de Git (sin que SDD lo haga directamente)
71
+
72
+ Crea `.sdd/hooks/despues_especificar.sh`:
73
+ ```bash
74
+ #!/bin/bash
75
+ # Crear branch automáticamente al crear una spec
76
+ SPEC_ID="$1"
77
+ git checkout -b "spec/${SPEC_ID}"
78
+ echo "✅ Branch creada: spec/${SPEC_ID}"
79
+ ```
80
+
81
+ Y `.sdd/hooks/despues_implementar.sh`:
82
+ ```bash
83
+ #!/bin/bash
84
+ # Hacer commit y abrir PR
85
+ SPEC_ID=$(grep -o '"especificacion_activa": "[^"]*"' .sdd/estado.json | cut -d'"' -f4)
86
+ git add -A
87
+ git commit -m "feat(${SPEC_ID}): implementación completada"
88
+ gh pr create --title "${SPEC_ID}" --body "$(cat .sdd/especificaciones/${SPEC_ID}/spec.md | head -20)"
89
+ ```
90
+
91
+ ### Caso 4: Notificar al equipo cuando se aprueba un plan
92
+
93
+ Crea `.sdd/hooks/despues_planificar.sh`:
94
+ ```bash
95
+ #!/bin/bash
96
+ SPEC_ID=$(grep -o '"especificacion_activa": "[^"]*"' .sdd/estado.json | cut -d'"' -f4)
97
+ TITULO=$(grep "^titulo:" ".sdd/especificaciones/${SPEC_ID}/spec.md" | cut -d'"' -f2)
98
+
99
+ curl -X POST https://hooks.slack.com/services/XXX/YYY/ZZZ \
100
+ -H 'Content-type: application/json' \
101
+ --data "{\"text\":\"📋 Plan aprobado: ${TITULO}\"}"
102
+ ```
103
+
104
+ ### Caso 5: Añadir un agente nuevo (ej: "mobile-developer")
105
+
106
+ 1. Crea `agents/desarrollador-mobile.md` con el frontmatter y el rol
107
+ 2. Añádelo a `.claude-plugin/plugin.json` en `agents:`
108
+ 3. Añade entrada en `.sdd/sdd.config.yaml`:
109
+ ```yaml
110
+ agentes:
111
+ desarrollador-mobile:
112
+ activo: true
113
+ modelo: sonnet
114
+ descripcion: "Desarrollo de apps móviles."
115
+ ```
116
+ 4. Edita `skills/enrutador-agentes.md` para incluir reglas de cuándo invocarlo
117
+ 5. (Opcional) Edita `commands/sdd.tareas.md` para asignarle tareas específicas
118
+
119
+ ### Caso 6: Soportar otro idioma además de español
120
+
121
+ Aunque SDD-ES está en español, puedes:
122
+ - Duplicar los archivos `commands/sdd.*.md` con sufijo `.en.md` y traducirlos
123
+ - Mantener variables como `.sdd/idioma` y leer condicionalmente
124
+ - Más simple: forkea el repo y traduce todo
125
+
126
+ ### Caso 7: Bloquear ciertos archivos
127
+
128
+ En `.sdd/sdd.config.yaml`:
129
+ ```yaml
130
+ protecciones:
131
+ no_tocar_archivos:
132
+ - ".env*"
133
+ - "src/legacy/**" ← añade tus rutas
134
+ - "vendor/**"
135
+ - "secrets/**"
136
+ ```
137
+
138
+ ### Caso 8: Numeración secuencial en lugar de fecha
139
+
140
+ En `.sdd/sdd.config.yaml`:
141
+ ```yaml
142
+ comportamiento:
143
+ numeracion_especificaciones: "secuencial" # 001-, 002-, ...
144
+ # o "ambos": 2026-06-08-001-feature-x
145
+ ```
146
+
147
+ ## Filosofía de personalización
148
+
149
+ - **Empieza simple**: usa los defaults, personaliza solo cuando los necesites
150
+ - **Documenta tus cambios**: si cambias una plantilla, deja un comentario explicando por qué
151
+ - **No olvides el equipo**: si trabajas en equipo, commitea las personalizaciones
152
+ - **Versiona la constitución**: cuando cambias principios, sube versión MAYOR/MENOR/PARCHE
package/instalar.ps1 ADDED
@@ -0,0 +1,39 @@
1
+ # SDD-ES — Atajo de instalación para Windows (PowerShell).
2
+ #
3
+ # Delega en el CLI Node multiplataforma (cli\index.js), que es la fuente
4
+ # de verdad única de la lógica de instalación. Si no hay Node, avisa.
5
+ #
6
+ # Uso:
7
+ # .\instalar.ps1 Instala en el proyecto actual
8
+ # .\instalar.ps1 -Global Instala para todos tus proyectos ($HOME\.claude)
9
+ #
10
+ # El camino canónico recomendado es: npx sdd-es init [--global]
11
+ #
12
+ # Si PowerShell bloquea el script por la política de ejecución, corre:
13
+ # powershell -ExecutionPolicy Bypass -File .\instalar.ps1
14
+
15
+ param(
16
+ [switch]$Global
17
+ )
18
+
19
+ $ErrorActionPreference = "Stop"
20
+ $PluginDir = $PSScriptRoot
21
+
22
+ # Verificar Node
23
+ $node = Get-Command node -ErrorAction SilentlyContinue
24
+ if ($null -eq $node) {
25
+ Write-Host "✗ Node.js no está instalado." -ForegroundColor Red
26
+ Write-Host " SDD-ES necesita Node >=18 para instalarse."
27
+ Write-Host " Instala Node desde https://nodejs.org y reintenta."
28
+ exit 1
29
+ }
30
+
31
+ # Construir argumentos para el CLI
32
+ $cliArgs = @("init")
33
+ if ($Global) {
34
+ $cliArgs += "--global"
35
+ }
36
+
37
+ # Delegar al CLI Node (misma lógica que instalar.sh y npx sdd-es)
38
+ & node (Join-Path $PluginDir "cli\index.js") @cliArgs
39
+ exit $LASTEXITCODE
package/instalar.sh ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env bash
2
+ # SDD-ES — Atajo de instalación para Unix (macOS / Linux / Git Bash).
3
+ #
4
+ # Delega en el CLI Node multiplataforma (cli/index.js), que es la fuente
5
+ # de verdad única de la lógica de instalación. Si no hay Node, avisa.
6
+ #
7
+ # Uso: bash instalar.sh [--global]
8
+ # El camino canónico recomendado es: npx sdd-es init [--global]
9
+
10
+ set -e
11
+
12
+ PLUGIN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
13
+
14
+ if ! command -v node &> /dev/null; then
15
+ echo "✗ Node.js no está instalado." >&2
16
+ echo " SDD-ES necesita Node >=18 para instalarse." >&2
17
+ echo " Instala Node desde https://nodejs.org y reintenta." >&2
18
+ exit 1
19
+ fi
20
+
21
+ # Pasa todos los argumentos (p. ej. --global) al subcomando init del CLI
22
+ exec node "${PLUGIN_DIR}/cli/index.js" init "$@"
@@ -0,0 +1,158 @@
1
+ # sdd-figma-mcp
2
+
3
+ MCP server local para integración de Figma con proyectos que usan SDD-ES. Lo usa el agente `desarrollador-frontend` para analizar el sistema de diseño del proyecto, traer componentes de Figma y generar código adaptado — sin romper lo que ya existe.
4
+
5
+ ## Qué hace
6
+
7
+ | Herramienta | Qué resuelve |
8
+ |---|---|
9
+ | `analizar_sistema_diseño` | Lee tokens, colores, tipografía y componentes del proyecto local |
10
+ | `evaluar_ui_existente` | Score 0-100 + problemas + sugerencias de mejora |
11
+ | `conectar_figma` | Verifica PAT y metadata del archivo |
12
+ | `listar_componentes` | Lista componentes publicados en el archivo Figma |
13
+ | `traer_componente` | Detalle completo de un nodo: estructura, fills, texto, dimensiones |
14
+ | `mapear_estilos` | Cruza colores/tipografía de Figma con tokens del proyecto |
15
+ | `generar_componente` | Código React/Vue adaptado al sistema de diseño local |
16
+ | `sugerir_mejoras` | Lista priorizada de mejoras al design system |
17
+
18
+ ## Instalación
19
+
20
+ ### 1. Sin dependencias — listo para ejecutar
21
+
22
+ No hay `npm install`. El servidor usa exclusivamente módulos built-in de Node.js (`readline`, `fs`, `path`) y `fetch` nativo (disponible desde Node 18). El `package.json` es solo un descriptor — no instala nada.
23
+
24
+ ### 2. Obtener el Personal Access Token de Figma
25
+
26
+ 1. Abre Figma → Menú de usuario (esquina superior derecha) → **Settings**
27
+ 2. Pestaña **Security** → **Personal access tokens** → **Generate new token**
28
+ 3. Dale un nombre (ej. `sdd-figma-mcp`) y copia el token
29
+
30
+ ### 3. Definir FIGMA_PAT como variable de entorno del sistema
31
+
32
+ El MCP lee el token desde `process.env.FIGMA_PAT` — **no está hardcodeado en ningún archivo de configuración** para evitar que quede en el repositorio.
33
+
34
+ Claude Code hereda las variables de entorno de la sesión donde se lanza, así que basta con definirla una vez en el sistema:
35
+
36
+ **Windows (PowerShell, permanente para el usuario):**
37
+ ```powershell
38
+ [System.Environment]::SetEnvironmentVariable("FIGMA_PAT", "tu-token-aqui", "User")
39
+ # Cierra y vuelve a abrir la terminal para que tome efecto
40
+ ```
41
+
42
+ **Windows (solo sesión actual):**
43
+ ```powershell
44
+ $env:FIGMA_PAT = "tu-token-aqui"
45
+ ```
46
+
47
+ **macOS / Linux (permanente):**
48
+ ```bash
49
+ echo 'export FIGMA_PAT="tu-token-aqui"' >> ~/.zshrc # o ~/.bashrc
50
+ source ~/.zshrc
51
+ ```
52
+
53
+ > Si el proyecto tiene un `.env` que Claude Code carga automáticamente, también puedes agregar `FIGMA_PAT=tu-token` ahí — el proceso Node lo hereda igual.
54
+
55
+ ### 4. Registrar el MCP en Claude Code
56
+
57
+ Agrega esto a tu `.claude/settings.json` (o `~/.claude/settings.json` para uso global):
58
+
59
+ ```json
60
+ {
61
+ "mcpServers": {
62
+ "sdd-figma": {
63
+ "command": "node",
64
+ "args": ["/ruta/absoluta/al/sdd-lite/mcp-figma/src/index.js"]
65
+ }
66
+ }
67
+ }
68
+ ```
69
+
70
+ No hay campo `env` — el servidor hereda `FIGMA_PAT` directamente del entorno del sistema (paso 3). Así el token nunca queda registrado en ningún archivo de configuración del repositorio.
71
+
72
+ > Reemplaza `/ruta/absoluta/al/sdd-lite` con la ruta real donde instalaste SDD-ES.
73
+ > En Windows usa barras invertidas dobles: `"c:\\\\Users\\\\usuario\\\\sdd-lite\\\\mcp-figma\\\\src\\\\index.js"`
74
+
75
+ ### 5. Verificar
76
+
77
+ Reinicia Claude Code y ejecuta en cualquier proyecto frontend:
78
+
79
+ ```
80
+ analizar_sistema_diseño({ project_root: "." })
81
+ ```
82
+
83
+ Deberías ver el perfil del sistema de diseño del proyecto.
84
+
85
+ ## Cómo encontrar el file_key de Figma
86
+
87
+ La URL de Figma tiene este formato:
88
+
89
+ ```
90
+ https://www.figma.com/file/ABCDEF123456/nombre-del-archivo?node-id=0:1
91
+ ^^^^^^^^^^^^
92
+ este es el file_key
93
+ ```
94
+
95
+ ## Cómo encontrar el node_id
96
+
97
+ 1. Selecciona el frame o componente en Figma
98
+ 2. La URL cambia a: `?node-id=123:456`
99
+ 3. Ese valor (`123:456` o en formato `123-456`) es el `node_id`
100
+
101
+ ## Flujo típico de uso
102
+
103
+ ```
104
+ # 1. Analiza lo que ya tiene el proyecto
105
+ analizar_sistema_diseño({ project_root: "/mi/proyecto" })
106
+
107
+ # 2. Conecta con el archivo de Figma
108
+ conectar_figma({ file_key: "ABCDEF123456" })
109
+
110
+ # 3. Lista los componentes disponibles
111
+ listar_componentes({ file_key: "ABCDEF123456", filter: "Button" })
112
+
113
+ # 4. Trae el componente que quieres implementar
114
+ traer_componente({ file_key: "ABCDEF123456", node_id: "123:456" })
115
+
116
+ # 5. Verifica que los estilos tienen equivalente en el proyecto
117
+ mapear_estilos({ file_key: "ABCDEF123456", node_id: "123:456", project_root: "/mi/proyecto" })
118
+
119
+ # 6. Genera el código adaptado
120
+ generar_componente({ file_key: "ABCDEF123456", node_id: "123:456", project_root: "/mi/proyecto" })
121
+ ```
122
+
123
+ ## Stacks soportados
124
+
125
+ | Framework | CSS | Estado |
126
+ |---|---|---|
127
+ | React / Next.js | Tailwind CSS | ✅ Completo |
128
+ | React / Next.js | CSS Modules | ✅ Completo |
129
+ | Vue 3 | Tailwind / Scoped CSS | ✅ Completo |
130
+ | React / Next.js | styled-components | ⚠️ Parcial (genera CSS Module) |
131
+ | Angular | Cualquiera | ⚠️ Genera React, ajusta manualmente |
132
+ | Svelte | Cualquiera | 🔜 En roadmap |
133
+
134
+ ## Variables de entorno
135
+
136
+ | Variable | Requerida | Descripción |
137
+ |---|---|---|
138
+ | `FIGMA_PAT` | Sí | Personal Access Token de Figma |
139
+
140
+ ## Estructura del proyecto
141
+
142
+ ```
143
+ mcp-figma/
144
+ ├── src/
145
+ │ ├── index.js ← Servidor MCP + definición de tools
146
+ │ ├── mcp.js ← Protocolo JSON-RPC 2.0 sobre stdio (sin deps)
147
+ │ ├── figma-client.js ← Cliente HTTP de la API de Figma
148
+ │ ├── design-system-analyzer.js ← Análisis del sistema de diseño local
149
+ │ ├── style-mapper.js ← Mapeo de estilos Figma ↔ tokens locales
150
+ │ └── component-generator.js ← Generación de código por framework
151
+ └── package.json ← Cero dependencias — solo descriptor
152
+ ```
153
+
154
+ ## Limitaciones conocidas
155
+
156
+ - La detección de tokens en Tailwind usa análisis estático de texto (no ejecuta el módulo), por lo que configs muy dinámicas pueden no detectarse completamente
157
+ - La generación de componentes es un punto de partida — siempre revisa accesibilidad, props faltantes y manejo de estado
158
+ - La API de Figma Variables (tokens del sistema de diseño de Figma) requiere plan Professional o superior