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
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Convierte una intención del usuario en una especificación estructurada con criterios de aceptación testeables en formato Dado/Cuando/Entonces. Sin detalles de implementación — solo qué y por qué.
|
|
3
|
+
allowed-tools: Read, Write, Bash
|
|
4
|
+
handoffs:
|
|
5
|
+
- etiqueta: "Aclarar ambigüedades"
|
|
6
|
+
comando: sdd.aclarar
|
|
7
|
+
prompt: "Resuelve las marcas [NECESITA_ACLARACION] de la spec activa."
|
|
8
|
+
- etiqueta: "Validar calidad de la spec"
|
|
9
|
+
comando: sdd.checklist
|
|
10
|
+
prompt: "Aplica el checklist de calidad a la spec activa."
|
|
11
|
+
- etiqueta: "Pasar al plan técnico"
|
|
12
|
+
comando: sdd.planificar
|
|
13
|
+
prompt: "Genera el plan técnico desde la spec activa."
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# /sdd.especificar — Crear Especificación
|
|
17
|
+
|
|
18
|
+
Eres el **Analista de Requisitos**. Capturas QUÉ se quiere construir y POR QUÉ, sin entrar en CÓMO. La spec debe poder leerse por un stakeholder no-técnico.
|
|
19
|
+
|
|
20
|
+
## VERIFICACIONES PRE-EJECUCIÓN
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
[ -f ".sdd/hooks/antes_especificar.sh" ] && bash .sdd/hooks/antes_especificar.sh
|
|
24
|
+
|
|
25
|
+
# Verificar prerequisitos
|
|
26
|
+
if [ ! -f ".sdd/memoria/constitucion.md" ]; then
|
|
27
|
+
echo "ERROR: ejecuta /sdd.constitucion primero"
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
cat .sdd/memoria/constitucion.md | head -30
|
|
32
|
+
cat .sdd/sdd.config.yaml 2>/dev/null
|
|
33
|
+
|
|
34
|
+
# Si existe contexto de descubrimiento previo, cargarlo como base
|
|
35
|
+
if [ -f ".sdd/memoria/contexto-descubrimiento.md" ]; then
|
|
36
|
+
echo "CONTEXTO_DESCUBRIMIENTO_DISPONIBLE"
|
|
37
|
+
cat .sdd/memoria/contexto-descubrimiento.md
|
|
38
|
+
fi
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
> Si se detecta `contexto-descubrimiento.md`, úsalo como fuente principal para pre-rellenar la spec. No vuelvas a preguntar lo que ya está respondido ahí. Marca con `[POR_DEFINIR]` solo lo que falte.
|
|
42
|
+
|
|
43
|
+
## PASO 1 — Capturar descripción
|
|
44
|
+
|
|
45
|
+
El usuario pasó la descripción tras `/sdd.especificar`. Si está vacía, pregunta:
|
|
46
|
+
|
|
47
|
+
> ¿Qué quieres construir o cambiar? Descríbelo en lenguaje natural — no necesitas detalles técnicos todavía.
|
|
48
|
+
|
|
49
|
+
## PASO 2 — Detectar tamaño del cambio
|
|
50
|
+
|
|
51
|
+
Clasifica usando estos criterios. Comparte la clasificación con el usuario:
|
|
52
|
+
|
|
53
|
+
| Tamaño | Criterios | Flujo recomendado |
|
|
54
|
+
|--------|-----------|-------------------|
|
|
55
|
+
| **Micro** | ≤3 archivos, <10 líneas, sin lógica nueva | spec+plan+tareas en un solo paso → implementar |
|
|
56
|
+
| **Pequeño** | 1 módulo/componente nuevo simple | flujo estándar |
|
|
57
|
+
| **Mediano** | Múltiples módulos, integración, refactor | + aclarar + checklist |
|
|
58
|
+
| **Grande** | Sistema nuevo, migración, cambio arquitectónico | flujo completo + analizar |
|
|
59
|
+
|
|
60
|
+
Para Mediano/Grande, confirma con el usuario:
|
|
61
|
+
> Detecté que esto es de tamaño **{TAMAÑO}**. ¿Confirmas?
|
|
62
|
+
|
|
63
|
+
## PASO 3 — Generar ID único
|
|
64
|
+
|
|
65
|
+
Según `numeracion_especificaciones` en config:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
FECHA=$(date +%Y-%m-%d)
|
|
69
|
+
|
|
70
|
+
# Generar slug del título
|
|
71
|
+
SLUG=$(echo "$INPUT" | tr '[:upper:]' '[:lower:]' \
|
|
72
|
+
| sed 's/[áàä]/a/g; s/[éèë]/e/g; s/[íìï]/i/g; s/[óòö]/o/g; s/[úùü]/u/g; s/ñ/n/g' \
|
|
73
|
+
| tr ' ' '-' | tr -cd '[:alnum:]-' | cut -c1-40)
|
|
74
|
+
|
|
75
|
+
# Si numeracion es "secuencial" o "ambos", contar specs existentes
|
|
76
|
+
N=$(ls .sdd/especificaciones/ 2>/dev/null | wc -l)
|
|
77
|
+
SECUENCIA=$(printf "%03d" $((N+1)))
|
|
78
|
+
|
|
79
|
+
# Según config
|
|
80
|
+
case "$NUMERACION" in
|
|
81
|
+
fecha) ID="${FECHA}-${SLUG}" ;;
|
|
82
|
+
secuencial) ID="${SECUENCIA}-${SLUG}" ;;
|
|
83
|
+
ambos) ID="${FECHA}-${SECUENCIA}-${SLUG}" ;;
|
|
84
|
+
esac
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Crea: `.sdd/especificaciones/{ID}/`
|
|
88
|
+
|
|
89
|
+
## PASO 4 — Generar spec.md
|
|
90
|
+
|
|
91
|
+
Lee plantilla `plantillas/especificacion.md`. Si no existe en el plugin instalado, usa esta:
|
|
92
|
+
|
|
93
|
+
```markdown
|
|
94
|
+
---
|
|
95
|
+
id: {ID}
|
|
96
|
+
titulo: "[TÍTULO_HUMANO]"
|
|
97
|
+
tamano: micro | pequeño | mediano | grande
|
|
98
|
+
estado: borrador
|
|
99
|
+
creada: {FECHA}
|
|
100
|
+
actualizada: {FECHA}
|
|
101
|
+
autor: humano
|
|
102
|
+
constitucion_version: {VERSION}
|
|
103
|
+
etiquetas: []
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
# Especificación: [TÍTULO]
|
|
107
|
+
|
|
108
|
+
## 1. Contexto y Motivación
|
|
109
|
+
|
|
110
|
+
[2-4 frases. POR QUÉ se necesita esto. Qué problema resuelve.
|
|
111
|
+
La motivación debe ser de negocio o usuario, NO técnica.]
|
|
112
|
+
|
|
113
|
+
## 2. Objetivo
|
|
114
|
+
|
|
115
|
+
[QUÉ debe lograr cuando esté terminado. 1-3 frases declarativas.
|
|
116
|
+
Sin detalles de implementación.]
|
|
117
|
+
|
|
118
|
+
## 3. Usuarios y Actores
|
|
119
|
+
|
|
120
|
+
| Actor | Rol | Necesidad principal |
|
|
121
|
+
|-------|-----|---------------------|
|
|
122
|
+
| [Actor 1] | [rol] | [qué quiere lograr] |
|
|
123
|
+
|
|
124
|
+
## 4. Historias de Usuario
|
|
125
|
+
|
|
126
|
+
### HU-001: [Título corto]
|
|
127
|
+
**Como** [tipo de usuario]
|
|
128
|
+
**Quiero** [acción/capacidad]
|
|
129
|
+
**Para** [beneficio/valor]
|
|
130
|
+
|
|
131
|
+
**Criterios de aceptación:**
|
|
132
|
+
- [ ] **CA-001-01**: [criterio testeable] (P1)
|
|
133
|
+
- [ ] **CA-001-02**: [criterio testeable] (P1)
|
|
134
|
+
- [ ] **CA-001-03**: [criterio testeable] (P2)
|
|
135
|
+
|
|
136
|
+
### HU-002: [Título corto]
|
|
137
|
+
[...]
|
|
138
|
+
|
|
139
|
+
## 5. Escenarios de Uso
|
|
140
|
+
|
|
141
|
+
### Escenario 1: Caso feliz
|
|
142
|
+
**Dado** [estado inicial / precondiciones]
|
|
143
|
+
**Cuando** [acción del actor]
|
|
144
|
+
**Entonces** [resultado esperado]
|
|
145
|
+
**Y** [resultado adicional]
|
|
146
|
+
|
|
147
|
+
### Escenario 2: Caso de error principal
|
|
148
|
+
**Dado** [precondición]
|
|
149
|
+
**Cuando** [acción incorrecta o condición de fallo]
|
|
150
|
+
**Entonces** [manejo de error esperado]
|
|
151
|
+
|
|
152
|
+
### Escenario 3: Caso borde
|
|
153
|
+
**Dado** [precondición borde]
|
|
154
|
+
**Cuando** [acción]
|
|
155
|
+
**Entonces** [comportamiento esperado]
|
|
156
|
+
|
|
157
|
+
[Mínimo 3 escenarios: feliz + error + borde]
|
|
158
|
+
|
|
159
|
+
## 6. Requisitos Funcionales
|
|
160
|
+
|
|
161
|
+
- **RF-001**: El sistema DEBE [acción específica]
|
|
162
|
+
- **RF-002**: El sistema DEBE [acción específica]
|
|
163
|
+
- **RF-003**: El sistema NO DEBE [acción prohibida]
|
|
164
|
+
|
|
165
|
+
> Usa MUST/MUST NOT/SHOULD/MAY (DEBE/NO DEBE/DEBERÍA/PUEDE) explícitamente.
|
|
166
|
+
|
|
167
|
+
## 7. Requisitos No Funcionales
|
|
168
|
+
|
|
169
|
+
| Categoría | Requisito | Métrica |
|
|
170
|
+
|-----------|-----------|---------|
|
|
171
|
+
| Rendimiento | [requisito] | [métrica medible] |
|
|
172
|
+
| Seguridad | [requisito] | [criterio] |
|
|
173
|
+
| Disponibilidad | [requisito] | [SLO] |
|
|
174
|
+
| Accesibilidad | [requisito] | [estándar, ej: WCAG 2.1 AA] |
|
|
175
|
+
|
|
176
|
+
## 8. Fuera de Alcance (Exclusiones Explícitas)
|
|
177
|
+
|
|
178
|
+
[Lista de cosas que claramente NO cubre esta spec.
|
|
179
|
+
Esto es crítico para evitar scope creep.]
|
|
180
|
+
|
|
181
|
+
- ❌ [Cosa A que NO se hará]
|
|
182
|
+
- ❌ [Cosa B que NO se hará]
|
|
183
|
+
|
|
184
|
+
## 9. Dependencias y Asunciones
|
|
185
|
+
|
|
186
|
+
### Dependencias
|
|
187
|
+
- [Otra spec, feature, servicio externo, dato]
|
|
188
|
+
|
|
189
|
+
### Asunciones
|
|
190
|
+
- [Lo que se asume sobre el entorno, los usuarios, los datos]
|
|
191
|
+
- [NECESITA_ACLARACION]: [si hay algo importante asumido sin certeza]
|
|
192
|
+
|
|
193
|
+
## 10. Términos del Dominio
|
|
194
|
+
|
|
195
|
+
[Si esta spec introduce nuevos términos del dominio, lístalos aquí.
|
|
196
|
+
Posteriormente, `/sdd.glosario` los añadirá al glosario formal.]
|
|
197
|
+
|
|
198
|
+
- **[Término]**: [definición]
|
|
199
|
+
|
|
200
|
+
## 11. Preguntas Abiertas
|
|
201
|
+
|
|
202
|
+
- [ ] [NECESITA_ACLARACION]: [pregunta crítica sin resolver]
|
|
203
|
+
- [ ] [POR_DECIDIR]: [decisión que se pospone]
|
|
204
|
+
|
|
205
|
+
## 12. Criterios de Éxito Medibles
|
|
206
|
+
|
|
207
|
+
[Cómo sabremos, en producción, que la feature cumple su objetivo:]
|
|
208
|
+
|
|
209
|
+
- [Métrica 1 con número]
|
|
210
|
+
- [Métrica 2 con número]
|
|
211
|
+
|
|
212
|
+
## 13. Referencias
|
|
213
|
+
|
|
214
|
+
- [Issue, mockup, documento relacionado]
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## PASO 5 — Marcar ambigüedades
|
|
218
|
+
|
|
219
|
+
Mientras generas la spec, donde haya información ambigua o asumida sin certeza, inserta el marcador configurado (por defecto `[NECESITA_ACLARACION]`). Estos marcadores son señales para `/sdd.aclarar` y `/sdd.checklist`.
|
|
220
|
+
|
|
221
|
+
**NO inventes información** para evitar el marcador. Si no sabes algo, márcalo.
|
|
222
|
+
|
|
223
|
+
## PASO 6 — Actualizar índice
|
|
224
|
+
|
|
225
|
+
Añade entrada a `.sdd/INDICE.md`:
|
|
226
|
+
|
|
227
|
+
```markdown
|
|
228
|
+
| {ID} | [TÍTULO] | borrador | {FECHA} | — | — |
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## PASO 7 — Actualizar estado
|
|
232
|
+
|
|
233
|
+
```json
|
|
234
|
+
{
|
|
235
|
+
"fase_actual": "especificacion",
|
|
236
|
+
"especificacion_activa": "{ID}",
|
|
237
|
+
"ultima_actualizacion": "{FECHA}",
|
|
238
|
+
"historial": [..., {"fase": "especificacion", "id": "{ID}", "fecha": "{FECHA}"}]
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## VALIDACIÓN DE SALIDA
|
|
243
|
+
|
|
244
|
+
Antes de entregar el resultado al usuario, verifica que la spec generada es válida:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
SPEC_ID=$(grep -o '"especificacion_activa": "[^"]*"' .sdd/estado.json 2>/dev/null | cut -d'"' -f4)
|
|
248
|
+
SPEC_FILE=".sdd/especificaciones/${SPEC_ID}/spec.md"
|
|
249
|
+
|
|
250
|
+
# Estructura mínima requerida
|
|
251
|
+
grep -q "## 1. Contexto" "$SPEC_FILE" || echo "FALTA: sección Contexto"
|
|
252
|
+
grep -q "## 2. Objetivo" "$SPEC_FILE" || echo "FALTA: sección Objetivo"
|
|
253
|
+
grep -q "## 4. Historias" "$SPEC_FILE" || echo "FALTA: sección Historias"
|
|
254
|
+
grep -q "CA-" "$SPEC_FILE" || echo "FALTA: criterios de aceptación"
|
|
255
|
+
grep -q "## 8. Fuera de Alcance" "$SPEC_FILE" || echo "FALTA: exclusiones explícitas"
|
|
256
|
+
|
|
257
|
+
# Frontmatter mínimo
|
|
258
|
+
grep -q "^id:" "$SPEC_FILE" || echo "FALTA: id en frontmatter"
|
|
259
|
+
grep -q "^estado:" "$SPEC_FILE" || echo "FALTA: estado en frontmatter"
|
|
260
|
+
grep -q "^tamano:" "$SPEC_FILE" || echo "FALTA: tamano en frontmatter"
|
|
261
|
+
|
|
262
|
+
echo "Validación completada"
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Si alguna verificación falla, corrige antes de continuar — no entregues una spec con estructura incompleta.
|
|
266
|
+
|
|
267
|
+
## VERIFICACIONES POST-EJECUCIÓN
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
[ -f ".sdd/hooks/despues_especificar.sh" ] && bash .sdd/hooks/despues_especificar.sh
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## PASO 8 — Mostrar resultado y siguiente paso
|
|
274
|
+
|
|
275
|
+
**Si es Micro:**
|
|
276
|
+
```
|
|
277
|
+
✅ Spec creada (micro).
|
|
278
|
+
📁 .sdd/especificaciones/{ID}/spec.md
|
|
279
|
+
|
|
280
|
+
Como es un cambio pequeño, generaré plan y tareas automáticamente.
|
|
281
|
+
Continuando con /sdd.planificar...
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
**Si tiene marcadores [NECESITA_ACLARACION]:**
|
|
285
|
+
```
|
|
286
|
+
✅ Spec creada (borrador).
|
|
287
|
+
📁 .sdd/especificaciones/{ID}/spec.md
|
|
288
|
+
⚠️ [N] puntos requieren aclaración.
|
|
289
|
+
|
|
290
|
+
PRÓXIMO PASO RECOMENDADO:
|
|
291
|
+
/sdd.aclarar — resolver los [NECESITA_ACLARACION]
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**Si está limpia:**
|
|
295
|
+
```
|
|
296
|
+
✅ Spec creada.
|
|
297
|
+
📁 .sdd/especificaciones/{ID}/spec.md
|
|
298
|
+
|
|
299
|
+
SIGUIENTES PASOS:
|
|
300
|
+
/sdd.checklist — validar calidad de la spec (recomendado)
|
|
301
|
+
/sdd.planificar — pasar al plan técnico
|
|
302
|
+
```
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Dashboard del estado actual del flujo SDD — qué fase, qué spec activa, progreso de tareas, próximo paso recomendado.
|
|
3
|
+
allowed-tools: Read, Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /sdd.estado — Dashboard de Estado
|
|
7
|
+
|
|
8
|
+
## PASO 1 — Cargar todo el contexto
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
[ ! -d .sdd ] && echo "NO_INICIALIZADO" && exit 0
|
|
12
|
+
|
|
13
|
+
cat .sdd/estado.json
|
|
14
|
+
cat .sdd/sdd.config.yaml | head -50
|
|
15
|
+
ls .sdd/especificaciones/ 2>/dev/null
|
|
16
|
+
|
|
17
|
+
SPEC_ID=$(grep -o '"especificacion_activa": "[^"]*"' .sdd/estado.json | cut -d'"' -f4)
|
|
18
|
+
if [ -n "$SPEC_ID" ]; then
|
|
19
|
+
cat ".sdd/especificaciones/${SPEC_ID}/.estado-tareas.json" 2>/dev/null
|
|
20
|
+
fi
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## PASO 2 — Si no está inicializado
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
🚫 SDD-ES no está inicializado en este proyecto.
|
|
27
|
+
|
|
28
|
+
Ejecuta: /sdd.constitucion
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## PASO 3 — Generar dashboard completo
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
╔════════════════════════════════════════════════════════════════╗
|
|
35
|
+
║ SDD-ES — Dashboard del Proyecto ║
|
|
36
|
+
╠════════════════════════════════════════════════════════════════╣
|
|
37
|
+
║ ║
|
|
38
|
+
║ 📌 PROYECTO ║
|
|
39
|
+
║ Nombre: [del estado] ║
|
|
40
|
+
║ Inicializado: [fecha] ║
|
|
41
|
+
║ Constitución: v[X.Y.Z] ║
|
|
42
|
+
║ Stack: [LENGUAJE] / [FRAMEWORK] ║
|
|
43
|
+
║ ║
|
|
44
|
+
╠════════════════════════════════════════════════════════════════╣
|
|
45
|
+
║ 🎯 ESPECIFICACIÓN ACTIVA ║
|
|
46
|
+
║ ║
|
|
47
|
+
║ ID: {SPEC_ID} ║
|
|
48
|
+
║ Título: [título] ║
|
|
49
|
+
║ Fase actual: {FASE} ║
|
|
50
|
+
║ Tamaño: {TAMAÑO} ║
|
|
51
|
+
║ ║
|
|
52
|
+
║ ESTADO POR ARTEFACTO: ║
|
|
53
|
+
║ • Spec: ✅ generada ║
|
|
54
|
+
║ • Aclarada: ✅ / ⏸ / ❌ ║
|
|
55
|
+
║ • Checklist: ✅ APROBADA / ⚠️ obs / ❌ ║
|
|
56
|
+
║ • Plan: ✅ aprobado / ⏸ pendiente ║
|
|
57
|
+
║ • Tareas: ✅ {N} generadas / ⏸ ║
|
|
58
|
+
║ • Análisis: ✅ APROBADO / ⚠️ obs / 🔴 BLOQUEADO ║
|
|
59
|
+
║ • Implementa: 🔧 en progreso / ✅ / ⏸ ║
|
|
60
|
+
║ • Verificada: ✅ / ⏸ ║
|
|
61
|
+
║ ║
|
|
62
|
+
║ PROGRESO DE TAREAS: ║
|
|
63
|
+
║ [████████████░░░░░░░░] 60% ({N}/{M}) ║
|
|
64
|
+
║ ║
|
|
65
|
+
║ ✅ Completadas: {N} ║
|
|
66
|
+
║ 🔧 En progreso: 1 (T00X) ║
|
|
67
|
+
║ ⬜ Pendientes: {N} ║
|
|
68
|
+
║ ❌ Bloqueadas: {N} ║
|
|
69
|
+
║ ║
|
|
70
|
+
╠════════════════════════════════════════════════════════════════╣
|
|
71
|
+
║ 🤖 AGENTES CONFIGURADOS ║
|
|
72
|
+
║ ║
|
|
73
|
+
║ [✅] arquitecto (opus) ║
|
|
74
|
+
║ [✅] disenador-api (sonnet) ║
|
|
75
|
+
║ [✅] asesor-datos (opus) ║
|
|
76
|
+
║ [✅] desarrollador-backend (sonnet) ║
|
|
77
|
+
║ [❌] desarrollador-frontend (sonnet) — desactivado ║
|
|
78
|
+
║ [✅] operaciones (sonnet) ║
|
|
79
|
+
║ [✅] tester (sonnet) ║
|
|
80
|
+
║ [✅] revisor (opus) ║
|
|
81
|
+
║ ║
|
|
82
|
+
╠════════════════════════════════════════════════════════════════╣
|
|
83
|
+
║ 📚 HISTORIAL DEL PROYECTO ║
|
|
84
|
+
║ ║
|
|
85
|
+
║ Especificaciones totales: [N] ║
|
|
86
|
+
║ ║
|
|
87
|
+
║ Últimas 5: ║
|
|
88
|
+
║ ✅ 2026-06-01-auth-magic-link (completada) ║
|
|
89
|
+
║ ✅ 2026-06-03-perfiles-usuario (completada) ║
|
|
90
|
+
║ 🔄 2026-06-08-pagos-stripe (en progreso) ║
|
|
91
|
+
║ ⏸ 2026-06-09-export-csv (en borrador) ║
|
|
92
|
+
║ ║
|
|
93
|
+
╠════════════════════════════════════════════════════════════════╣
|
|
94
|
+
║ ➡️ PRÓXIMO PASO RECOMENDADO ║
|
|
95
|
+
║ ║
|
|
96
|
+
║ {COMANDO_SUGERIDO} ║
|
|
97
|
+
║ ║
|
|
98
|
+
║ Razón: {EXPLICACIÓN} ║
|
|
99
|
+
║ ║
|
|
100
|
+
╚════════════════════════════════════════════════════════════════╝
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## PASO 4 — Determinar próximo paso según fase
|
|
104
|
+
|
|
105
|
+
| Fase actual | Próximo paso |
|
|
106
|
+
|-------------|--------------|
|
|
107
|
+
| Sin inicializar | `/sdd.constitucion` |
|
|
108
|
+
| `constitucion_completa` | `/sdd.especificar [descripción]` |
|
|
109
|
+
| `especificacion` (con marcadores) | `/sdd.aclarar` |
|
|
110
|
+
| `especificacion` (limpia, no verificada) | `/sdd.checklist` o `/sdd.planificar` |
|
|
111
|
+
| `plan` (no aprobado) | `/sdd.planificar aprobar` |
|
|
112
|
+
| `plan_aprobado` | `/sdd.tareas` |
|
|
113
|
+
| `tareas_generadas` (no analizadas) | `/sdd.analizar` o `/sdd.implementar` |
|
|
114
|
+
| `implementacion` (en progreso) | `/sdd.implementar continuar` |
|
|
115
|
+
| `implementacion_completa` | `/sdd.verificar` |
|
|
116
|
+
| `verificada` (sin snapshot) | `/sdd.snapshot` |
|
|
117
|
+
| `completado` | `/sdd.especificar [nueva feature]` |
|
|
118
|
+
|
|
119
|
+
## PASO 5 — Modos adicionales
|
|
120
|
+
|
|
121
|
+
`/sdd.estado historial` — muestra solo el historial completo de specs
|
|
122
|
+
`/sdd.estado tareas` — muestra solo el detalle de tareas de la spec activa
|
|
123
|
+
`/sdd.estado agentes` — muestra solo la config de agentes
|
|
124
|
+
`/sdd.estado todo` — muestra TODO lo de arriba más detalles extendidos
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Gestiona el glosario del dominio. Añade, edita o consulta términos del dominio del proyecto.
|
|
3
|
+
allowed-tools: Read, Write, Edit, Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /sdd.glosario — Glosario del Dominio
|
|
7
|
+
|
|
8
|
+
Mantienes la definición única y consistente de cada término del dominio. Esto evita que distintos agentes/devs usen sinónimos confusos para el mismo concepto.
|
|
9
|
+
|
|
10
|
+
## Modos de uso
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
/sdd.glosario # Mostrar glosario completo
|
|
14
|
+
/sdd.glosario añadir [término] # Añadir nuevo término
|
|
15
|
+
/sdd.glosario editar [término] # Editar término existente
|
|
16
|
+
/sdd.glosario buscar [palabra] # Buscar términos relacionados
|
|
17
|
+
/sdd.glosario importar # Importar términos pendientes de las specs
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## PASO 1 — Cargar glosario
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
mkdir -p .sdd/dominio/definiciones
|
|
24
|
+
[ ! -f .sdd/dominio/glosario.md ] && cat > .sdd/dominio/glosario.md << 'EOF'
|
|
25
|
+
# Glosario del Dominio
|
|
26
|
+
|
|
27
|
+
> Términos del dominio del proyecto. Cada término tiene UNA definición precisa.
|
|
28
|
+
> Editar con: `/sdd.glosario`
|
|
29
|
+
|
|
30
|
+
## Términos
|
|
31
|
+
EOF
|
|
32
|
+
|
|
33
|
+
cat .sdd/dominio/glosario.md
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Modo: Mostrar (sin args)
|
|
37
|
+
|
|
38
|
+
Lista todos los términos con su definición resumida y la fecha de última actualización.
|
|
39
|
+
|
|
40
|
+
## Modo: Añadir
|
|
41
|
+
|
|
42
|
+
Pide al usuario:
|
|
43
|
+
1. **Término** (sustantivo, mayúscula inicial si es propio)
|
|
44
|
+
2. **Definición** precisa (1-2 frases)
|
|
45
|
+
3. **Sinónimos a evitar** (palabras que NO deben usarse)
|
|
46
|
+
4. **Ejemplos** (1-3 casos concretos)
|
|
47
|
+
5. **Categoría** (negocio | técnico | usuario | proceso)
|
|
48
|
+
|
|
49
|
+
Añade al glosario:
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
### [Término]
|
|
53
|
+
|
|
54
|
+
**Definición:** [una frase precisa]
|
|
55
|
+
|
|
56
|
+
**Categoría:** [categoría]
|
|
57
|
+
|
|
58
|
+
**Sinónimos a evitar:**
|
|
59
|
+
- ~~[sinónimo 1]~~ (usar siempre "[Término]")
|
|
60
|
+
|
|
61
|
+
**Ejemplos:**
|
|
62
|
+
- [ejemplo 1]
|
|
63
|
+
- [ejemplo 2]
|
|
64
|
+
|
|
65
|
+
**Referenciado en specs:**
|
|
66
|
+
- {ID_spec_1}, {ID_spec_2}
|
|
67
|
+
|
|
68
|
+
**Última actualización:** {FECHA}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Si la definición es compleja, crea archivo separado en `.sdd/dominio/definiciones/[termino].md` y enlázalo desde el glosario.
|
|
72
|
+
|
|
73
|
+
## Modo: Editar
|
|
74
|
+
|
|
75
|
+
Lee la entrada actual, presenta al usuario, recibe cambios, actualiza con marca de versión.
|
|
76
|
+
|
|
77
|
+
## Modo: Buscar
|
|
78
|
+
|
|
79
|
+
Búsqueda fuzzy en términos y definiciones. Útil para detectar duplicados/sinónimos antes de añadir.
|
|
80
|
+
|
|
81
|
+
## Modo: Importar
|
|
82
|
+
|
|
83
|
+
Escanea todas las specs en `.sdd/especificaciones/` buscando términos en la sección 10 "Términos del Dominio". Para cada uno no presente en el glosario:
|
|
84
|
+
|
|
85
|
+
> Detectado en spec {ID}: "[término]"
|
|
86
|
+
> ¿Añadir al glosario? (sí/no/saltar todos)
|
|
87
|
+
|
|
88
|
+
## Verificación de consistencia
|
|
89
|
+
|
|
90
|
+
Al añadir un término, verifica que no haya términos similares ya:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Búsqueda fuzzy en términos existentes
|
|
94
|
+
grep -i "[parte del término]" .sdd/dominio/glosario.md
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Si encuentra parecido:
|
|
98
|
+
> ⚠️ "[Nuevo término]" se parece a "[Término existente]".
|
|
99
|
+
> ¿Son el mismo concepto? Si sí, añade el nuevo como sinónimo a evitar del existente.
|
|
100
|
+
|
|
101
|
+
## Reporte
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
✅ Glosario actualizado
|
|
105
|
+
📁 .sdd/dominio/glosario.md
|
|
106
|
+
📚 [N] términos definidos
|
|
107
|
+
🆕 [M] añadidos en esta sesión
|
|
108
|
+
```
|