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.
- package/.claude/settings.json +51 -0
- package/.claude-plugin/marketplace.json +31 -0
- package/.claude-plugin/plugin.json +97 -0
- package/README.md +332 -0
- package/agents/arquitecto.md +148 -0
- package/agents/asesor-datos.md +163 -0
- package/agents/critico.md +142 -0
- package/agents/desarrollador-backend.md +242 -0
- package/agents/desarrollador-frontend.md +120 -0
- package/agents/disenador-api.md +108 -0
- package/agents/documentador.md +177 -0
- package/agents/investigador.md +174 -0
- package/agents/operaciones.md +105 -0
- package/agents/revisor.md +153 -0
- package/agents/seguridad.md +216 -0
- package/agents/tester.md +286 -0
- package/claude-hooks/post-write-conventions.js +412 -0
- package/claude-hooks/pre-tool-guard.js +159 -0
- package/cli/index.js +401 -0
- package/commands/sdd.aclarar.md +200 -0
- package/commands/sdd.analizar.md +241 -0
- package/commands/sdd.ayuda.md +227 -0
- package/commands/sdd.canary.md +60 -0
- package/commands/sdd.checklist.md +174 -0
- package/commands/sdd.comprimir.md +166 -0
- package/commands/sdd.configurar.md +195 -0
- package/commands/sdd.constitucion.md +343 -0
- package/commands/sdd.crear-app.md +168 -0
- package/commands/sdd.crear-mcp.md +174 -0
- package/commands/sdd.descubrir.md +269 -0
- package/commands/sdd.desplegar.md +155 -0
- package/commands/sdd.especificar.md +302 -0
- package/commands/sdd.estado.md +124 -0
- package/commands/sdd.glosario.md +108 -0
- package/commands/sdd.implementar.md +377 -0
- package/commands/sdd.importar.md +91 -0
- package/commands/sdd.mapear.md +120 -0
- package/commands/sdd.md +119 -0
- package/commands/sdd.planificar.md +372 -0
- package/commands/sdd.qa.md +108 -0
- package/commands/sdd.release.md +253 -0
- package/commands/sdd.retro.md +82 -0
- package/commands/sdd.snapshot.md +122 -0
- package/commands/sdd.tareas.md +300 -0
- package/commands/sdd.verificar.md +239 -0
- package/configuracion-ejemplo/hooks-ejemplo/antes_cada_tarea.sh +18 -0
- package/configuracion-ejemplo/hooks-ejemplo/antes_implementar.sh +45 -0
- package/configuracion-ejemplo/hooks-ejemplo/despues_especificar.sh +14 -0
- package/configuracion-ejemplo/hooks-ejemplo/despues_implementar.sh +36 -0
- package/configuracion-ejemplo/hooks-ejemplo/despues_planificar.sh +19 -0
- package/configuracion-ejemplo/hooks-ejemplo/guardia-seguridad.sh +367 -0
- package/configuracion-ejemplo/sdd.config.yaml +310 -0
- package/docs/AGENTES.md +74 -0
- package/docs/COMPRESION.md +155 -0
- package/docs/EJEMPLO-PRACTICA.md +383 -0
- package/docs/EJEMPLOS.md +212 -0
- package/docs/FABRICA.md +185 -0
- package/docs/FILOSOFIA.md +61 -0
- package/docs/FLUJO.md +149 -0
- package/docs/INICIO-RAPIDO.md +116 -0
- package/docs/MAPAS.md +113 -0
- package/docs/MODELOS.md +103 -0
- package/docs/PERSONALIZACION.md +152 -0
- package/instalar.ps1 +39 -0
- package/instalar.sh +22 -0
- package/mcp-figma/README.md +158 -0
- package/mcp-figma/package.json +7 -0
- package/mcp-figma/src/component-generator.js +162 -0
- package/mcp-figma/src/design-system-analyzer.js +247 -0
- package/mcp-figma/src/figma-client.js +75 -0
- package/mcp-figma/src/index.js +114 -0
- package/mcp-figma/src/mcp.js +97 -0
- package/mcp-figma/src/style-mapper.js +85 -0
- package/package.json +50 -0
- package/plantillas/analisis.md +57 -0
- package/plantillas/checklist-especificacion.md +66 -0
- package/plantillas/constitucion.md +104 -0
- package/plantillas/decision-arquitectura.md +39 -0
- package/plantillas/dependencias-mapa.md +89 -0
- package/plantillas/especificacion.md +108 -0
- package/plantillas/estructura-mapa.md +40 -0
- package/plantillas/glosario.md +22 -0
- package/plantillas/index-especificaciones.md +15 -0
- package/plantillas/mcp-server.md +147 -0
- package/plantillas/plan.md +152 -0
- package/plantillas/simbolos-mapa.md +57 -0
- package/plantillas/snapshot.md +54 -0
- package/plantillas/tareas.md +72 -0
- package/presets/enterprise.yaml +69 -0
- package/presets/lean.yaml +63 -0
- package/presets/startup.yaml +67 -0
- package/skills/compresion-tokens.md +264 -0
- package/skills/constitucion-constraint.md +78 -0
- package/skills/deteccion-stack.md +175 -0
- package/skills/enrutador-agentes.md +69 -0
- package/skills/gestion-estado.md +114 -0
- package/skills/indexador.md +199 -0
- package/skills/modo-guiado/SKILL.md +78 -0
- package/skills/orquestacion-ptc/SKILL.md +96 -0
- package/skills/validacion-spec.md +52 -0
- package/skills/verificador-implementacion.md +71 -0
package/docs/EJEMPLOS.md
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# Ejemplos Completos de Uso
|
|
2
|
+
|
|
3
|
+
## Ejemplo 1: Proyecto nuevo en blanco
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
# 1. Instalar plugin
|
|
7
|
+
cd mi-proyecto
|
|
8
|
+
bash sdd-es/instalar.sh
|
|
9
|
+
|
|
10
|
+
# 2. Inicializar
|
|
11
|
+
claude
|
|
12
|
+
> /sdd.constitucion
|
|
13
|
+
|
|
14
|
+
# Claude detecta package.json con React+Express+PostgreSQL
|
|
15
|
+
# Hace 4-5 preguntas: propósito, audiencia, no-negociables, restricciones
|
|
16
|
+
# Genera .sdd/memoria/constitucion.md v1.0.0
|
|
17
|
+
|
|
18
|
+
> /sdd.configurar
|
|
19
|
+
# Revisas agentes y modelos. Confirmas defaults o ajustas.
|
|
20
|
+
|
|
21
|
+
> /sdd.especificar Quiero agregar autenticación con magic links por email
|
|
22
|
+
# Claude crea .sdd/especificaciones/2026-06-08-auth-magic-links/spec.md
|
|
23
|
+
# Marca 3 puntos con [NECESITA_ACLARACION]
|
|
24
|
+
|
|
25
|
+
> /sdd.aclarar
|
|
26
|
+
# Claude hace preguntas agrupadas:
|
|
27
|
+
# 1. ¿Magic link expira en cuántos minutos? a)5 b)15 c)60
|
|
28
|
+
# 2. ¿Un solo uso o múltiples? a)único b)múltiples
|
|
29
|
+
# 3. ¿Qué pasa si el usuario solicita 5 links seguidos? a)rate limit b)reemplazar último
|
|
30
|
+
# Respondes: 1.b, 2.a, 3.a
|
|
31
|
+
# Spec actualizada
|
|
32
|
+
|
|
33
|
+
> /sdd.checklist
|
|
34
|
+
# Resultado: APROBADA (cobertura 95%)
|
|
35
|
+
|
|
36
|
+
> /sdd.planificar
|
|
37
|
+
# arquitecto: define estructura (auth/, magic-link.service.ts, ...)
|
|
38
|
+
# disenador-api: 2 endpoints: POST /auth/magic-link, GET /auth/verify
|
|
39
|
+
# asesor-datos: tabla magic_links con TTL via cron
|
|
40
|
+
# critico: identifica 3 riesgos (race conditions, email bounce, rate limit bypass)
|
|
41
|
+
# seguridad: recomienda hashear el token antes de guardarlo
|
|
42
|
+
# Plan generado
|
|
43
|
+
|
|
44
|
+
> /sdd.planificar aprobar
|
|
45
|
+
# ✅ Plan aprobado
|
|
46
|
+
|
|
47
|
+
> /sdd.tareas
|
|
48
|
+
# 12 tareas generadas, distribuidas en 6 agentes
|
|
49
|
+
|
|
50
|
+
> /sdd.analizar
|
|
51
|
+
# Verifica que todos los CAs estén cubiertos
|
|
52
|
+
# Resultado: APROBADO
|
|
53
|
+
|
|
54
|
+
> /sdd.implementar
|
|
55
|
+
# Ejecuta T001 (arquitecto, tipos)
|
|
56
|
+
# T002 (asesor-datos, migración)
|
|
57
|
+
# T003 (desarrollador-backend, service)
|
|
58
|
+
# ... 12 tareas con verificación entre cada una
|
|
59
|
+
# Tests pasan
|
|
60
|
+
# Revisor da APROBADO
|
|
61
|
+
|
|
62
|
+
> /sdd.verificar
|
|
63
|
+
# Cruza código contra los 8 CAs
|
|
64
|
+
# Resultado: APROBADA (100%)
|
|
65
|
+
|
|
66
|
+
> /sdd.snapshot
|
|
67
|
+
# Actualiza .sdd/SNAPSHOT.md con la nueva funcionalidad
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Ejemplo 2: Cambio micro
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
> /sdd.especificar Corregir typo en el texto del botón de login
|
|
74
|
+
# Detecta MICRO automáticamente
|
|
75
|
+
# Genera spec mínima + plan mínimo + 1 tarea
|
|
76
|
+
# Pregunta: "¿Ejecutar ahora?" → sí
|
|
77
|
+
# Cambia el texto, marca como completado
|
|
78
|
+
# Total: 30 segundos
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Ejemplo 3: Feature grande con calidad máxima
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
> /sdd.especificar Migrar de REST a GraphQL manteniendo el endpoint REST en deprecación
|
|
85
|
+
|
|
86
|
+
> /sdd.aclarar
|
|
87
|
+
# 12 puntos de aclaración (gran cambio)
|
|
88
|
+
|
|
89
|
+
> /sdd.checklist
|
|
90
|
+
# Necesita revisión: faltan métricas de éxito medibles
|
|
91
|
+
|
|
92
|
+
> /sdd.aclarar
|
|
93
|
+
# Resuelve los puntos faltantes
|
|
94
|
+
|
|
95
|
+
> /sdd.checklist
|
|
96
|
+
# APROBADA
|
|
97
|
+
|
|
98
|
+
> /sdd.planificar
|
|
99
|
+
# Todos los agentes participan
|
|
100
|
+
# Plan tiene 17 secciones, 25 archivos, 6 ADRs generados
|
|
101
|
+
|
|
102
|
+
> /sdd.planificar revisar
|
|
103
|
+
# Discutes 3 ajustes con el arquitecto
|
|
104
|
+
|
|
105
|
+
> /sdd.planificar aprobar
|
|
106
|
+
|
|
107
|
+
> /sdd.tareas
|
|
108
|
+
# 47 tareas generadas
|
|
109
|
+
|
|
110
|
+
> /sdd.analizar
|
|
111
|
+
# OBSERVACIONES: 2 riesgos sin mitigación
|
|
112
|
+
|
|
113
|
+
# Editar manualmente tareas.md para añadir mitigaciones, o:
|
|
114
|
+
> /sdd.tareas regenerar
|
|
115
|
+
|
|
116
|
+
> /sdd.analizar
|
|
117
|
+
# APROBADO
|
|
118
|
+
|
|
119
|
+
> /sdd.implementar
|
|
120
|
+
# 4 horas de implementación. Tareas en orden por fase.
|
|
121
|
+
|
|
122
|
+
> /sdd.verificar
|
|
123
|
+
> /sdd.snapshot
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Ejemplo 4: Importar spec de Jira/Notion
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
> /sdd.importar https://mi-org.notion.site/Feature-XYZ
|
|
130
|
+
# Claude fetchea, extrae lo que puede
|
|
131
|
+
# Genera spec con secciones rellenadas
|
|
132
|
+
# Marca 5 puntos con [NECESITA_ACLARACION]
|
|
133
|
+
# Sección 99 documenta qué se importó y qué se perdió
|
|
134
|
+
|
|
135
|
+
> /sdd.aclarar
|
|
136
|
+
# Resuelves los puntos pendientes
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Ejemplo 5: Personalización con hook de Git
|
|
140
|
+
|
|
141
|
+
`.sdd/hooks/antes_especificar.sh`:
|
|
142
|
+
```bash
|
|
143
|
+
#!/bin/bash
|
|
144
|
+
# Verifica que estés en main antes de empezar una spec nueva
|
|
145
|
+
RAMA=$(git branch --show-current)
|
|
146
|
+
if [ "$RAMA" != "main" ]; then
|
|
147
|
+
echo "⚠️ No estás en main (estás en $RAMA)"
|
|
148
|
+
echo "¿Continuar de todos modos? (s/N)"
|
|
149
|
+
read RESP
|
|
150
|
+
[ "$RESP" != "s" ] && exit 1
|
|
151
|
+
fi
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
`.sdd/hooks/despues_implementar.sh`:
|
|
155
|
+
```bash
|
|
156
|
+
#!/bin/bash
|
|
157
|
+
# Lint + commit + push automático
|
|
158
|
+
SPEC_ID=$(grep -o '"especificacion_activa": "[^"]*"' .sdd/estado.json | cut -d'"' -f4)
|
|
159
|
+
|
|
160
|
+
# Lint
|
|
161
|
+
npm run lint --fix
|
|
162
|
+
|
|
163
|
+
# Commit
|
|
164
|
+
git add -A
|
|
165
|
+
git commit -m "feat: implementa ${SPEC_ID}
|
|
166
|
+
|
|
167
|
+
Spec: .sdd/especificaciones/${SPEC_ID}/spec.md
|
|
168
|
+
Plan: .sdd/especificaciones/${SPEC_ID}/plan.md
|
|
169
|
+
|
|
170
|
+
Generado con SDD-ES v2.0.0"
|
|
171
|
+
|
|
172
|
+
# Push opcional
|
|
173
|
+
read -p "¿Push a remoto? (s/N) " PUSH
|
|
174
|
+
[ "$PUSH" == "s" ] && git push origin HEAD
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Ejemplo 6: Solo frontend
|
|
178
|
+
|
|
179
|
+
`.sdd/sdd.config.yaml`:
|
|
180
|
+
```yaml
|
|
181
|
+
agentes:
|
|
182
|
+
arquitecto:
|
|
183
|
+
activo: true
|
|
184
|
+
modelo: opus
|
|
185
|
+
desarrollador-frontend:
|
|
186
|
+
activo: true
|
|
187
|
+
modelo: sonnet
|
|
188
|
+
tester:
|
|
189
|
+
activo: true
|
|
190
|
+
modelo: sonnet
|
|
191
|
+
revisor:
|
|
192
|
+
activo: true
|
|
193
|
+
modelo: opus
|
|
194
|
+
|
|
195
|
+
# Desactivar lo que no aplica
|
|
196
|
+
disenador-api:
|
|
197
|
+
activo: false
|
|
198
|
+
desarrollador-backend:
|
|
199
|
+
activo: false
|
|
200
|
+
asesor-datos:
|
|
201
|
+
activo: false
|
|
202
|
+
operaciones:
|
|
203
|
+
activo: false
|
|
204
|
+
critico:
|
|
205
|
+
activo: false
|
|
206
|
+
seguridad:
|
|
207
|
+
activo: false
|
|
208
|
+
documentador:
|
|
209
|
+
activo: false
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
El plugin solo invoca a los activos, ahorrando tokens y tiempo.
|
package/docs/FABRICA.md
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# La Fábrica: de la idea al despliegue sin saber programar
|
|
2
|
+
|
|
3
|
+
Este documento es un recorrido completo para alguien que tiene una idea pero nunca ha escrito código. SDD-ES actúa como fábrica: tú describes, confirmas, y el sistema construye y publica.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Antes de empezar
|
|
8
|
+
|
|
9
|
+
Solo necesitas:
|
|
10
|
+
- **Claude Code** instalado ([claude.ai/code](https://claude.ai/code))
|
|
11
|
+
- **Node.js 18+** instalado ([nodejs.org](https://nodejs.org))
|
|
12
|
+
- Una **cuenta en Vercel** (gratis) si quieres publicar en internet
|
|
13
|
+
|
|
14
|
+
Para instalar SDD-ES, abre una terminal y escribe:
|
|
15
|
+
```
|
|
16
|
+
npx sdd-es init
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Eso es todo. SDD-ES se instala solo.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Escenario: "Quiero una app para anotar mis ideas diarias"
|
|
24
|
+
|
|
25
|
+
Usaremos este ejemplo de principio a fin. Tú solo escribes lo que está en **negrita**; el resto lo hace Claude.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
### Paso 1 — Cuéntale tu idea
|
|
30
|
+
|
|
31
|
+
Abre Claude Code y escribe:
|
|
32
|
+
|
|
33
|
+
> **quiero crear una app para anotar mis ideas diarias**
|
|
34
|
+
|
|
35
|
+
Claude pregunta tres cosas simples para entender bien:
|
|
36
|
+
|
|
37
|
+
> ¿Quién va a usar la app, solo tú o varias personas?
|
|
38
|
+
|
|
39
|
+
**Solo yo.**
|
|
40
|
+
|
|
41
|
+
> ¿Quieres que las notas se guarden para siempre o solo durante la sesión?
|
|
42
|
+
|
|
43
|
+
**Para siempre.**
|
|
44
|
+
|
|
45
|
+
> ¿Quieres acceder desde el móvil también, o solo desde tu computadora?
|
|
46
|
+
|
|
47
|
+
**Desde cualquier lado.**
|
|
48
|
+
|
|
49
|
+
Claude elige automáticamente el mejor stack para esto (una web app con base de datos) y te lo explica sin tecnicismos:
|
|
50
|
+
|
|
51
|
+
> "Perfecto. Voy a construirte una web pequeña que guarda tus notas. Funciona en el navegador y las guarda para siempre. ¿Arrancamos? (responde *sí*)"
|
|
52
|
+
|
|
53
|
+
**sí**
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
### Paso 2 — Claude construye la app
|
|
58
|
+
|
|
59
|
+
Claude trabaja solo. Ves mensajes como:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
🔧 Creando la estructura de la app...
|
|
63
|
+
🔧 Implementando: guardar nota nueva... ✅
|
|
64
|
+
🔧 Implementando: ver todas las notas... ✅
|
|
65
|
+
🔧 Implementando: borrar una nota... ✅
|
|
66
|
+
🔧 Probando que todo funciona... ✅ 3/3 pruebas pasadas
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Cuando termina:
|
|
70
|
+
|
|
71
|
+
> "¡Tu app está lista! Tiene 3 funciones que probé y funcionan. Para publicarla en internet, solo dime 'despliégala' y lo hago yo."
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### Paso 3 — Publicar en internet
|
|
76
|
+
|
|
77
|
+
**despliégala**
|
|
78
|
+
|
|
79
|
+
Claude hace una verificación antes de publicar (para no subir nada roto):
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
✅ Pruebas: pasadas
|
|
83
|
+
✅ Sin errores de código
|
|
84
|
+
✅ Sin información privada expuesta
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Luego pregunta una vez más para confirmar:
|
|
88
|
+
|
|
89
|
+
> "Voy a publicar tu app en Vercel (gratis). Escribe *desplegar* para confirmar."
|
|
90
|
+
|
|
91
|
+
**desplegar**
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
🚀 Publicando...
|
|
95
|
+
✅ App publicada en: https://tu-app.vercel.app
|
|
96
|
+
✅ Comprobando que funciona... responde en 312ms — todo bien.
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
### Paso 4 — Tu app está en internet
|
|
102
|
+
|
|
103
|
+
Abre `https://tu-app.vercel.app` en cualquier navegador, incluso desde el móvil. Funciona.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
### Añadir cosas después
|
|
108
|
+
|
|
109
|
+
En cualquier momento puedes decirle a Claude qué quieres añadir:
|
|
110
|
+
|
|
111
|
+
> **quiero que también pueda buscar entre mis notas**
|
|
112
|
+
|
|
113
|
+
Claude toma esa frase, la convierte en especificación, la implementa, la prueba y la publica — siguiendo el mismo ciclo.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Escenario alternativo: "Quiero crear una herramienta para Claude"
|
|
118
|
+
|
|
119
|
+
Si quieres que Claude pueda hacer algo nuevo (consultar una API, acceder a tus archivos, buscar en tu base de datos), usa `/sdd.crear-mcp`:
|
|
120
|
+
|
|
121
|
+
> **quiero una herramienta que consulte el precio del dólar en tiempo real**
|
|
122
|
+
|
|
123
|
+
Claude pregunta:
|
|
124
|
+
> "¿De qué fuente quieres sacar el precio? ¿Tienes alguna API favorita, o buscamos una gratuita?"
|
|
125
|
+
|
|
126
|
+
**busca una gratuita**
|
|
127
|
+
|
|
128
|
+
Claude encuentra una API pública, implementa la herramienta, la empaqueta y te da la instrucción de instalación:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
claude mcp add precio-dolar -- node "/ruta/mcp-precio-dolar/src/index.js"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Después de eso, puedes decirle a Claude: *"¿A cuánto está el dólar?"* y lo sabrá en tiempo real.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## El ciclo completo
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
Tu idea en palabras
|
|
142
|
+
│
|
|
143
|
+
▼
|
|
144
|
+
/sdd.crear-app o /sdd.crear-mcp
|
|
145
|
+
(Claude elige el stack, construye, prueba)
|
|
146
|
+
│
|
|
147
|
+
▼
|
|
148
|
+
/sdd.desplegar
|
|
149
|
+
(gate de calidad → tu confirmación → publicación → health check)
|
|
150
|
+
│
|
|
151
|
+
▼
|
|
152
|
+
🌐 App en internet / 🔌 Tool instalada en Claude
|
|
153
|
+
│
|
|
154
|
+
▼
|
|
155
|
+
/sdd.especificar [qué quieres añadir]
|
|
156
|
+
(el ciclo se repite para cada mejora)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Cada flecha tiene un control: no se publica sin pruebas verdes, no se publica sin tu confirmación. Eso es lo que convierte esta herramienta en una fábrica con estándares de ingeniería altos, no solo un generador de código.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Si algo sale mal
|
|
164
|
+
|
|
165
|
+
Claude nunca te deja con una app rota publicada. Si algo falla:
|
|
166
|
+
|
|
167
|
+
- **Durante la construcción**: Claude te lo dice y lo corrige antes de seguir.
|
|
168
|
+
- **Durante el despliegue**: si la app no responde después de publicarse, Claude te avisa y revierte.
|
|
169
|
+
- **En cualquier momento**: escribe `/sdd.estado` para ver en qué punto estás.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Comandos de esta fábrica
|
|
174
|
+
|
|
175
|
+
| Lo que quieres hacer | Lo que escribes |
|
|
176
|
+
|----------------------|-----------------|
|
|
177
|
+
| Crear una app desde cero | `/sdd.crear-app [describe tu idea]` |
|
|
178
|
+
| Crear una herramienta para Claude | `/sdd.crear-mcp [describe qué hace]` |
|
|
179
|
+
| Publicar en internet | `/sdd.desplegar` |
|
|
180
|
+
| Comprobar que sigue funcionando | `/sdd.canary` |
|
|
181
|
+
| Añadir una función nueva | `/sdd.especificar [qué quieres añadir]` |
|
|
182
|
+
| Ver el estado de tu proyecto | `/sdd.estado` |
|
|
183
|
+
| Pedir ayuda | `/sdd.ayuda` |
|
|
184
|
+
|
|
185
|
+
No necesitas memorizar estos comandos. Puedes escribir directamente lo que quieres hacer en español y Claude te enrutará al correcto.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Filosofía de SDD-ES
|
|
2
|
+
|
|
3
|
+
## ¿Qué es SDD?
|
|
4
|
+
|
|
5
|
+
**Spec-Driven Development** (Desarrollo Guiado por Especificaciones) es una metodología donde:
|
|
6
|
+
|
|
7
|
+
1. **La especificación es la fuente de verdad**, no el código.
|
|
8
|
+
2. El código es un **artefacto derivado** de la spec, no al revés.
|
|
9
|
+
3. Cada cambio empieza definiendo *qué* y *por qué* antes de *cómo*.
|
|
10
|
+
|
|
11
|
+
## ¿Por qué SDD funciona con IA?
|
|
12
|
+
|
|
13
|
+
Los modelos de IA son muy creativos — demasiado para nuestro gusto cuando programan. SDD canaliza esa creatividad imponiendo restricciones estructuradas:
|
|
14
|
+
|
|
15
|
+
- La spec define el espacio de soluciones aceptables
|
|
16
|
+
- La constitución limita las decisiones técnicas
|
|
17
|
+
- Las tareas atómicas reducen la deriva en cada paso
|
|
18
|
+
- Los criterios de verificación atrapan errores antes de que se acumulen
|
|
19
|
+
|
|
20
|
+
**Resultado**: implementación predecible, auditable, sin "magia" en el medio.
|
|
21
|
+
|
|
22
|
+
## Inspiración
|
|
23
|
+
|
|
24
|
+
SDD-ES integra ideas de:
|
|
25
|
+
|
|
26
|
+
- **[github/spec-kit](https://github.com/github/spec-kit)**: constitution, sync impact reports, hooks de extensión, versionado semántico, checklist como tests de los requisitos.
|
|
27
|
+
- **[LiorCohen/sdd](https://github.com/LiorCohen/sdd)**: agentes especializados por rol con modelo asignado, comandos en lenguaje natural, estructura específica con INDEX/SNAPSHOT/glossary, verificación cruzada.
|
|
28
|
+
- **OpenSpec**, **SpecWeave**, **disciplined-agentic-engineering**: schemas custom, BDD, mecanismos de auditoría.
|
|
29
|
+
|
|
30
|
+
## Diferencias de SDD-ES
|
|
31
|
+
|
|
32
|
+
1. **100% español**: comandos, plantillas, agentes, documentación
|
|
33
|
+
2. **Agnóstico al stack**: TypeScript, Python, Rust, Go, Java, C#, Ruby, PHP, etc.
|
|
34
|
+
3. **Sin acoplamiento a Git/GitHub/GitLab**: tú integras tu VCS desde hooks personalizados
|
|
35
|
+
4. **Configurable**: cualquier agente se activa/desactiva, cualquier modelo se reasigna
|
|
36
|
+
5. **Recomendaciones de modelos**: cada agente trae una recomendación justificada
|
|
37
|
+
6. **Personalización exhaustiva**: todo es Markdown plano editable
|
|
38
|
+
|
|
39
|
+
## Cuándo usar SDD-ES
|
|
40
|
+
|
|
41
|
+
✅ **Usar cuando:**
|
|
42
|
+
- Tienes una idea de feature pero no sabes cómo descomponerla
|
|
43
|
+
- El proyecto requiere trazabilidad de decisiones
|
|
44
|
+
- Trabajas en equipo y necesitas alineación
|
|
45
|
+
- Quieres que la IA implemente con rigor (no improvisando)
|
|
46
|
+
- El cambio toca múltiples archivos o capas
|
|
47
|
+
|
|
48
|
+
❌ **No usar (overhead innecesario):**
|
|
49
|
+
- Arreglar un typo
|
|
50
|
+
- Cambiar un literal de string
|
|
51
|
+
- Ajustes de CSS visual sin lógica
|
|
52
|
+
|
|
53
|
+
> Para esos casos hay flujo "micro" — la IA detecta automáticamente que es trivial y simplifica el proceso.
|
|
54
|
+
|
|
55
|
+
## Los 5 principios de SDD-ES
|
|
56
|
+
|
|
57
|
+
1. **Spec antes que código** — siempre
|
|
58
|
+
2. **Constitución es ley** — el plan no puede contradecirla sin justificación documentada
|
|
59
|
+
3. **Cada decisión es trazable** — del CA a la línea de código que lo implementa
|
|
60
|
+
4. **Agentes especializados** — un experto por dominio supera a un generalista
|
|
61
|
+
5. **Verificación independiente** — la IA que verifica no es la misma que implementa
|
package/docs/FLUJO.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Flujo Completo de SDD-ES
|
|
2
|
+
|
|
3
|
+
## Diagrama del flujo
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
┌──────────────────────┐
|
|
7
|
+
│ /sdd.constitucion │ ← Solo la primera vez
|
|
8
|
+
│ (principios del │
|
|
9
|
+
│ proyecto) │
|
|
10
|
+
└──────────┬───────────┘
|
|
11
|
+
│
|
|
12
|
+
┌──────────▼───────────┐
|
|
13
|
+
│ /sdd.configurar │ ← Opcional: ajustar agentes/modelos
|
|
14
|
+
└──────────┬───────────┘
|
|
15
|
+
│
|
|
16
|
+
┌──────────────▼───────────┐
|
|
17
|
+
│ /sdd.especificar │
|
|
18
|
+
│ (qué + por qué) │
|
|
19
|
+
└──────────────┬───────────┘
|
|
20
|
+
│
|
|
21
|
+
┌───────┴───────┐
|
|
22
|
+
│ ¿micro? │
|
|
23
|
+
└───┬───────┬───┘
|
|
24
|
+
sí ─────┘ └────── no
|
|
25
|
+
│ │
|
|
26
|
+
│ ┌────────▼────────┐
|
|
27
|
+
│ │ /sdd.aclarar │ ← Resolver [NECESITA_ACLARACION]
|
|
28
|
+
│ └────────┬────────┘
|
|
29
|
+
│ │
|
|
30
|
+
│ ┌────────▼────────┐
|
|
31
|
+
│ │ /sdd.checklist │ ← Validar calidad
|
|
32
|
+
│ └────────┬────────┘
|
|
33
|
+
│ │
|
|
34
|
+
│ ┌────────▼────────┐
|
|
35
|
+
│ │ /sdd.planificar │ ← Plan técnico
|
|
36
|
+
│ └────────┬────────┘
|
|
37
|
+
│ │
|
|
38
|
+
│ ┌────────▼─────────┐
|
|
39
|
+
│ │ /sdd.planificar │ ← Aprobar plan
|
|
40
|
+
│ │ aprobar │
|
|
41
|
+
│ └────────┬─────────┘
|
|
42
|
+
│ │
|
|
43
|
+
│ ┌────────▼────────┐
|
|
44
|
+
│ │ /sdd.tareas │ ← Desglose atómico
|
|
45
|
+
│ └────────┬────────┘
|
|
46
|
+
│ │
|
|
47
|
+
│ ┌────────▼────────┐
|
|
48
|
+
│ │ /sdd.analizar │ ← Auditoría cruzada
|
|
49
|
+
│ └────────┬────────┘
|
|
50
|
+
│ │
|
|
51
|
+
└──────────────┼──────► (las micro vuelven aquí)
|
|
52
|
+
│
|
|
53
|
+
┌───────────▼──────────┐
|
|
54
|
+
│ /sdd.implementar │ ← Ejecutar con agentes
|
|
55
|
+
└───────────┬──────────┘
|
|
56
|
+
│
|
|
57
|
+
┌───────────▼──────────┐
|
|
58
|
+
│ /sdd.verificar │ ← Verificación final
|
|
59
|
+
└───────────┬──────────┘
|
|
60
|
+
│
|
|
61
|
+
┌───────────▼──────────┐
|
|
62
|
+
│ /sdd.snapshot │ ← Actualizar estado producto
|
|
63
|
+
└───────────┬──────────┘
|
|
64
|
+
│
|
|
65
|
+
▼
|
|
66
|
+
✅ COMPLETADO
|
|
67
|
+
│
|
|
68
|
+
└─── /sdd.especificar [siguiente]
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Flujos según tamaño del cambio
|
|
72
|
+
|
|
73
|
+
### Micro (≤3 archivos, <10 líneas)
|
|
74
|
+
```
|
|
75
|
+
/sdd.especificar [descripción]
|
|
76
|
+
→ Detecta micro → genera spec+plan+tareas automáticamente → implementa
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Pequeño (1 feature simple)
|
|
80
|
+
```
|
|
81
|
+
/sdd.especificar [descripción]
|
|
82
|
+
/sdd.planificar
|
|
83
|
+
/sdd.planificar aprobar
|
|
84
|
+
/sdd.tareas
|
|
85
|
+
/sdd.implementar
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Mediano (múltiples componentes)
|
|
89
|
+
```
|
|
90
|
+
/sdd.especificar [descripción]
|
|
91
|
+
/sdd.aclarar
|
|
92
|
+
/sdd.planificar
|
|
93
|
+
/sdd.planificar aprobar
|
|
94
|
+
/sdd.tareas
|
|
95
|
+
/sdd.implementar
|
|
96
|
+
/sdd.verificar
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Grande (sistema nuevo, calidad máxima)
|
|
100
|
+
```
|
|
101
|
+
/sdd.constitucion (actualizar si hay nuevos principios)
|
|
102
|
+
/sdd.especificar [descripción]
|
|
103
|
+
/sdd.aclarar
|
|
104
|
+
/sdd.checklist
|
|
105
|
+
/sdd.planificar
|
|
106
|
+
/sdd.planificar aprobar
|
|
107
|
+
/sdd.tareas
|
|
108
|
+
/sdd.analizar ← clave para grandes
|
|
109
|
+
/sdd.implementar
|
|
110
|
+
/sdd.verificar
|
|
111
|
+
/sdd.snapshot
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Reanudación entre sesiones
|
|
115
|
+
|
|
116
|
+
Si cierras Claude Code y vuelves después:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
/sdd.estado ← muestra dashboard
|
|
120
|
+
/sdd.implementar continuar ← retoma desde la última tarea
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
El estado se guarda en `.sdd/estado.json` y `.sdd/especificaciones/{ID}/.estado-tareas.json`.
|
|
124
|
+
|
|
125
|
+
## El sprint completo: de la idea al despliegue
|
|
126
|
+
|
|
127
|
+
SDD-ES implementa un sprint estructurado de extremo a extremo. Cada fase alimenta a la siguiente y nada pasa sin verificación. Mapeo de las fases a los comandos:
|
|
128
|
+
|
|
129
|
+
| Fase del sprint | Qué ocurre | Comandos SDD-ES |
|
|
130
|
+
|-----------------|-----------|-----------------|
|
|
131
|
+
| **Pensar** | Encuadrar el problema, sacar contexto de una idea vaga | `/sdd.constitucion`, `/sdd.descubrir` |
|
|
132
|
+
| **Planear** | Capturar requisitos, diseñar, auditar el plan | `/sdd.especificar`, `/sdd.aclarar`, `/sdd.planificar`, `/sdd.analizar` |
|
|
133
|
+
| **Construir** | Implementar con agentes especializados | `/sdd.implementar` |
|
|
134
|
+
| **Revisar** | Revisión independiente de calidad y cumplimiento | `/sdd.verificar` (+ agente `revisor`) |
|
|
135
|
+
| **Probar** | QA en navegador real, no solo unitarios | `/sdd.qa` |
|
|
136
|
+
| **Publicar** | Despliegue verificado + monitoreo | `/sdd.desplegar`, `/sdd.canary` |
|
|
137
|
+
| **Reflexionar** | Capturar aprendizajes, actualizar el estado del producto | `/sdd.retro`, `/sdd.snapshot` |
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
Pensar → Planear → Construir → Revisar → Probar → Publicar → Reflexionar
|
|
141
|
+
│ │
|
|
142
|
+
└──────────────── /sdd.especificar [siguiente feature] ◄────────┘
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
La diferencia con "pídele a la IA que lo haga" es que **cada flecha tiene un control**: no se construye sin spec, no se publica sin tests verdes y QA, no se cierra sin verificación independiente. Esa es la garantía de estándar de ingeniería alto.
|
|
146
|
+
|
|
147
|
+
### Flujo "fábrica" para no-programadores (perfil guiado)
|
|
148
|
+
|
|
149
|
+
En perfil `guiado`, el usuario no ve los comandos. Describe lo que quiere, confirma con "sí", y el sistema recorre el sprint completo explicando cada paso en lenguaje natural y publicando al final. Ver [FABRICA.md](FABRICA.md).
|