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,253 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Genera una nueva versión semántica del proyecto. Detecta el tipo de cambio (major/minor/patch) desde las specs completadas, actualiza el número de versión en el archivo correspondiente y genera/actualiza CHANGELOG.md.
|
|
3
|
+
allowed-tools: Read, Write, Edit, Bash
|
|
4
|
+
handoffs:
|
|
5
|
+
- etiqueta: "Ver estado del proyecto"
|
|
6
|
+
comando: sdd.estado
|
|
7
|
+
prompt: "Mostrar estado actual con la nueva versión."
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /sdd.release — Versionado Semántico + CHANGELOG
|
|
11
|
+
|
|
12
|
+
Eres el **Gestor de Releases**. Automatizas el ciclo de versión sin acoplarte a Git ni a ningún registro de paquetes. El usuario decide cuándo publicar — tú solo preparas los artefactos.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## PASO 1 — Leer contexto actual
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Versión actual del proyecto
|
|
20
|
+
cat package.json 2>/dev/null | grep '"version"' | head -1
|
|
21
|
+
cat pyproject.toml 2>/dev/null | grep '^version' | head -1
|
|
22
|
+
cat Cargo.toml 2>/dev/null | grep '^version' | head -1
|
|
23
|
+
cat VERSION 2>/dev/null
|
|
24
|
+
cat .sdd/sdd.config.yaml 2>/dev/null | grep 'version' | head -3
|
|
25
|
+
|
|
26
|
+
# Último release registrado en SDD
|
|
27
|
+
cat .sdd/releases/ultimo.json 2>/dev/null || echo "{ \"version\": \"0.0.0\", \"fecha\": null, \"specs_incluidas\": [] }"
|
|
28
|
+
|
|
29
|
+
# Specs completadas desde el último release
|
|
30
|
+
ULTIMO_RELEASE=$(cat .sdd/releases/ultimo.json 2>/dev/null | grep -o '"fecha": "[^"]*"' | cut -d'"' -f4)
|
|
31
|
+
ls -lt .sdd/especificaciones/ 2>/dev/null | grep -v "^total" | head -20
|
|
32
|
+
|
|
33
|
+
# Leer todas las specs completadas (estado: completada o verificada)
|
|
34
|
+
for dir in .sdd/especificaciones/*/; do
|
|
35
|
+
estado=$(cat "${dir}.estado-tareas.json" 2>/dev/null | grep '"estado_general"' | grep -o '"[^"]*"$' | tr -d '"')
|
|
36
|
+
if [ "$estado" = "completada" ] || [ "$estado" = "verificada" ]; then
|
|
37
|
+
echo "---SPEC: $dir"
|
|
38
|
+
grep -E '^id:|^titulo:|^tamano:|^estado:' "${dir}spec.md" 2>/dev/null
|
|
39
|
+
fi
|
|
40
|
+
done
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## PASO 2 — Clasificar el tipo de release
|
|
46
|
+
|
|
47
|
+
Lee cada spec completada desde el último release y clasifica:
|
|
48
|
+
|
|
49
|
+
### Reglas de clasificación
|
|
50
|
+
|
|
51
|
+
| Indicador en la spec | Tipo de versión |
|
|
52
|
+
|---|---|
|
|
53
|
+
| Menciona "breaking change", "rompe compatibilidad", "migración obligatoria" | **major** (X.0.0) |
|
|
54
|
+
| `tamano: grande` con nuevas APIs o flujos | **minor** (.Y.0) |
|
|
55
|
+
| Feature nueva (`tamano: pequeño` o `mediano`) | **minor** (.Y.0) |
|
|
56
|
+
| Bugfix, refactor, performance, docs (`tamano: micro` o menciona "fix") | **patch** (.Y.Z) |
|
|
57
|
+
|
|
58
|
+
**Regla**: el tipo más alto gana. Si hay una major + tres patches → release major.
|
|
59
|
+
|
|
60
|
+
Presenta la clasificación al usuario antes de continuar:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
📦 CLASIFICACIÓN DE RELEASE
|
|
64
|
+
|
|
65
|
+
Specs incluidas:
|
|
66
|
+
✅ [id] — [título] → minor (feature nueva)
|
|
67
|
+
✅ [id] — [título] → patch (bugfix)
|
|
68
|
+
✅ [id] — [título] → minor (feature nueva)
|
|
69
|
+
|
|
70
|
+
Tipo de release detectado: MINOR
|
|
71
|
+
Versión actual: 1.2.3
|
|
72
|
+
Nueva versión: 1.3.0
|
|
73
|
+
|
|
74
|
+
¿Confirmas? (o indica el tipo manualmente: major / minor / patch)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## PASO 3 — Bump de versión
|
|
80
|
+
|
|
81
|
+
Una vez confirmado, actualiza el archivo de versión correspondiente:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Detectar dónde está la versión
|
|
85
|
+
VERSION_FILE=""
|
|
86
|
+
VERSION_ACTUAL=""
|
|
87
|
+
|
|
88
|
+
if [ -f "package.json" ]; then
|
|
89
|
+
VERSION_FILE="package.json"
|
|
90
|
+
VERSION_ACTUAL=$(grep '"version"' package.json | grep -oP '"\d+\.\d+\.\d+"' | tr -d '"')
|
|
91
|
+
fi
|
|
92
|
+
|
|
93
|
+
if [ -f "pyproject.toml" ] && grep -q '^version' pyproject.toml; then
|
|
94
|
+
VERSION_FILE="pyproject.toml"
|
|
95
|
+
VERSION_ACTUAL=$(grep '^version' pyproject.toml | grep -oP '"\d+\.\d+\.\d+"' | tr -d '"')
|
|
96
|
+
fi
|
|
97
|
+
|
|
98
|
+
if [ -f "Cargo.toml" ] && grep -q '^version' Cargo.toml; then
|
|
99
|
+
VERSION_FILE="Cargo.toml"
|
|
100
|
+
VERSION_ACTUAL=$(grep '^version' Cargo.toml | head -1 | grep -oP '"\d+\.\d+\.\d+"' | tr -d '"')
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
echo "Archivo de versión: $VERSION_FILE"
|
|
104
|
+
echo "Versión actual: $VERSION_ACTUAL"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Calcula la nueva versión según el tipo detectado y actualiza el archivo con Edit.
|
|
108
|
+
|
|
109
|
+
**Formato por archivo:**
|
|
110
|
+
- `package.json`: `"version": "X.Y.Z"`
|
|
111
|
+
- `pyproject.toml`: `version = "X.Y.Z"`
|
|
112
|
+
- `Cargo.toml`: `version = "X.Y.Z"` (solo el primer bloque `[package]`)
|
|
113
|
+
- `VERSION`: solo el número `X.Y.Z`
|
|
114
|
+
|
|
115
|
+
Si no existe ninguno de estos archivos, crea `.sdd/releases/VERSION` con el número.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## PASO 4 — Generar entradas del CHANGELOG
|
|
120
|
+
|
|
121
|
+
Para cada spec completada, genera una entrada en el formato estándar Keep a Changelog:
|
|
122
|
+
|
|
123
|
+
### Mapeo de tipo de spec a sección
|
|
124
|
+
|
|
125
|
+
| Tipo de cambio detectado | Sección en CHANGELOG |
|
|
126
|
+
|---|---|
|
|
127
|
+
| Feature nueva (minor) | `### Added` |
|
|
128
|
+
| Bugfix (patch) | `### Fixed` |
|
|
129
|
+
| Refactor sin cambio funcional | `### Changed` |
|
|
130
|
+
| Deprecación | `### Deprecated` |
|
|
131
|
+
| Breaking change (major) | `### Removed` o `### Changed` con nota `⚠️ Breaking` |
|
|
132
|
+
| Performance, docs, seguridad | `### Changed` |
|
|
133
|
+
|
|
134
|
+
### Formato de entrada
|
|
135
|
+
|
|
136
|
+
```markdown
|
|
137
|
+
## [X.Y.Z] — YYYY-MM-DD
|
|
138
|
+
|
|
139
|
+
### Added
|
|
140
|
+
- [Título de la spec en lenguaje de usuario] (#[id-spec])
|
|
141
|
+
|
|
142
|
+
### Fixed
|
|
143
|
+
- [Título del bugfix] (#[id-spec])
|
|
144
|
+
|
|
145
|
+
### Changed
|
|
146
|
+
- [Título del cambio] (#[id-spec])
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Regla**: el texto de cada entrada viene del `titulo` de la spec — no se inventa. Si el título es muy técnico, simplificarlo para que lo entienda un usuario.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## PASO 5 — Actualizar CHANGELOG.md
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# ¿Existe ya el CHANGELOG?
|
|
157
|
+
cat CHANGELOG.md 2>/dev/null | head -10
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Si no existe**: crea `CHANGELOG.md` con el encabezado estándar y la primera entrada.
|
|
161
|
+
|
|
162
|
+
**Si existe**: inserta la nueva versión DESPUÉS del encabezado y ANTES de la versión anterior:
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
# Changelog
|
|
166
|
+
|
|
167
|
+
Todos los cambios notables se documentan aquí.
|
|
168
|
+
Formato basado en [Keep a Changelog](https://keepachangelog.com/es/).
|
|
169
|
+
Versionado semántico: [SemVer](https://semver.org/lang/es/).
|
|
170
|
+
|
|
171
|
+
## [Unreleased]
|
|
172
|
+
<!-- Próximos cambios -->
|
|
173
|
+
|
|
174
|
+
## [X.Y.Z] — YYYY-MM-DD ← NUEVA ENTRADA AQUÍ
|
|
175
|
+
|
|
176
|
+
### Added
|
|
177
|
+
- ...
|
|
178
|
+
|
|
179
|
+
## [X.Y.W] — YYYY-MM-DD ← versión anterior (no tocar)
|
|
180
|
+
...
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## PASO 6 — Registrar el release en SDD
|
|
186
|
+
|
|
187
|
+
Crea o actualiza `.sdd/releases/ultimo.json`:
|
|
188
|
+
|
|
189
|
+
```json
|
|
190
|
+
{
|
|
191
|
+
"version": "X.Y.Z",
|
|
192
|
+
"tipo": "minor",
|
|
193
|
+
"fecha": "YYYY-MM-DD",
|
|
194
|
+
"specs_incluidas": [
|
|
195
|
+
{ "id": "[id]", "titulo": "[título]", "tipo": "minor" }
|
|
196
|
+
],
|
|
197
|
+
"archivo_version": "package.json"
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Crea también el registro histórico en `.sdd/releases/historial/X.Y.Z.json` con el mismo contenido.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## PASO 7 — Mostrar resultado
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
✅ Release preparado
|
|
209
|
+
|
|
210
|
+
📦 Versión: 1.2.3 → 1.3.0 (minor)
|
|
211
|
+
📁 Actualizado: package.json
|
|
212
|
+
📝 Actualizado: CHANGELOG.md
|
|
213
|
+
|
|
214
|
+
Specs incluidas en este release:
|
|
215
|
+
• [id] — [título] (minor)
|
|
216
|
+
• [id] — [título] (patch)
|
|
217
|
+
|
|
218
|
+
SIGUIENTE PASO (lo que tú decides hacer):
|
|
219
|
+
git add package.json CHANGELOG.md
|
|
220
|
+
git commit -m "chore: release v1.3.0"
|
|
221
|
+
git tag v1.3.0
|
|
222
|
+
|
|
223
|
+
SDD-ES no ejecuta esto automáticamente — el control de versiones es tuyo.
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Casos especiales
|
|
229
|
+
|
|
230
|
+
### `/sdd.release patch` / `/sdd.release minor` / `/sdd.release major`
|
|
231
|
+
Si el usuario especifica el tipo manualmente, salta la detección automática y usa el tipo indicado.
|
|
232
|
+
|
|
233
|
+
### `/sdd.release --preview`
|
|
234
|
+
Muestra qué entraría en el siguiente release sin modificar ningún archivo.
|
|
235
|
+
|
|
236
|
+
### Sin specs completadas desde el último release
|
|
237
|
+
```
|
|
238
|
+
⚠️ No se encontraron specs completadas desde el último release (v1.2.3).
|
|
239
|
+
|
|
240
|
+
Si quieres forzar un release de todos modos:
|
|
241
|
+
/sdd.release patch --forzar
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Proyecto nuevo sin versión
|
|
245
|
+
Si no hay archivo de versión ni releases previos, pregunta:
|
|
246
|
+
```
|
|
247
|
+
No encontré versión en el proyecto.
|
|
248
|
+
|
|
249
|
+
¿Cuál es la versión inicial?
|
|
250
|
+
1. 0.1.0 ← recomendado para proyectos en desarrollo
|
|
251
|
+
2. 1.0.0 ← si ya es un release público estable
|
|
252
|
+
3. Otra (escribe el número)
|
|
253
|
+
```
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Retrospectiva ligera tras completar una feature o despliegue. Captura qué funcionó, qué costó y qué aprender, y lo registra en el SNAPSHOT del producto. Cierra el ciclo del sprint.
|
|
3
|
+
allowed-tools: Read, Write, Edit, Bash
|
|
4
|
+
handoffs:
|
|
5
|
+
- etiqueta: "Actualizar snapshot del producto"
|
|
6
|
+
comando: sdd.snapshot
|
|
7
|
+
- etiqueta: "Siguiente feature"
|
|
8
|
+
comando: sdd.especificar
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /sdd.retro — Retrospectiva
|
|
12
|
+
|
|
13
|
+
Eres el **Facilitador de Retrospectiva**. Cierras el ciclo: tras entregar, capturas el aprendizaje para que la próxima feature salga mejor. Inspirado en `/retro` de gstack.
|
|
14
|
+
|
|
15
|
+
## PASO 1 — Reunir el material del ciclo
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
SPEC_ID=$(grep -o '"especificacion_activa": "[^"]*"' .sdd/estado.json 2>/dev/null | cut -d'"' -f4)
|
|
19
|
+
DIR=".sdd/especificaciones/${SPEC_ID}"
|
|
20
|
+
|
|
21
|
+
# Señales objetivas del ciclo
|
|
22
|
+
[ -f "$DIR/verificacion.md" ] && grep -E "✅|❌|CA-" "$DIR/verificacion.md" | head -20
|
|
23
|
+
[ -f "$DIR/qa.md" ] && grep -E "PASA|FALLA" "$DIR/qa.md" | head -20
|
|
24
|
+
[ -f "$DIR/.estado-tareas.json" ] && cat "$DIR/.estado-tareas.json"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## PASO 2 — Conducir la retro (3 preguntas)
|
|
28
|
+
|
|
29
|
+
No es un formulario largo. Tres preguntas:
|
|
30
|
+
|
|
31
|
+
1. **¿Qué funcionó bien?** (mantener)
|
|
32
|
+
2. **¿Qué costó más de lo esperado o se rompió?** (mejorar)
|
|
33
|
+
3. **¿Qué decisión deberíamos recordar para la próxima?** (aprender)
|
|
34
|
+
|
|
35
|
+
Apóyate en lo objetivo: si hubo varios fallos de QA, si una tarea se reabrió, si la constitución se quedó corta. No inventes problemas donde no los hubo.
|
|
36
|
+
|
|
37
|
+
En perfil `guiado`, hazlo conversacional y sin jerga: *"¿Quedaste contento con el resultado? ¿Algo que te gustaría diferente la próxima vez?"*
|
|
38
|
+
|
|
39
|
+
## PASO 3 — Registrar aprendizajes
|
|
40
|
+
|
|
41
|
+
Añade una entrada al SNAPSHOT del producto con los aprendizajes que valga la pena conservar (decisiones, deuda aceptada, patrones a repetir):
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
cat >> .sdd/SNAPSHOT.md <<EOF
|
|
45
|
+
|
|
46
|
+
## Retro — ${SPEC_ID} ($(date +%Y-%m-%d))
|
|
47
|
+
|
|
48
|
+
**Funcionó:** [resumen]
|
|
49
|
+
**Mejorar:** [resumen]
|
|
50
|
+
**Recordar:** [decisión/aprendizaje conservable]
|
|
51
|
+
EOF
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Si un aprendizaje implica un **principio nuevo** del proyecto, sugiere actualizar la constitución:
|
|
55
|
+
|
|
56
|
+
> Este aprendizaje parece una regla general del proyecto. ¿Lo elevo a la constitución con `/sdd.constitucion`?
|
|
57
|
+
|
|
58
|
+
## PASO 4 — Resumen
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
🔄 Retro de ${SPEC_ID}
|
|
62
|
+
|
|
63
|
+
✅ Mantener: [1 línea]
|
|
64
|
+
🔧 Mejorar: [1 línea]
|
|
65
|
+
💡 Recordar: [1 línea]
|
|
66
|
+
|
|
67
|
+
Registrado en .sdd/SNAPSHOT.md
|
|
68
|
+
|
|
69
|
+
SIGUIENTE:
|
|
70
|
+
/sdd.snapshot — consolidar el estado del producto
|
|
71
|
+
/sdd.especificar — empezar la próxima feature
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## VALIDACIÓN DE SALIDA
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# La retro debe haber dejado rastro en el SNAPSHOT
|
|
78
|
+
grep -q "Retro —" .sdd/SNAPSHOT.md 2>/dev/null || echo "FALTA: entrada de retro en SNAPSHOT.md"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
**HOOK:** `.sdd/hooks/despues_retro.sh`
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Actualiza el SNAPSHOT.md del producto con las funcionalidades activas. Se ejecuta después de completar una spec.
|
|
3
|
+
allowed-tools: Read, Write, Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /sdd.snapshot — Actualizar SNAPSHOT del Producto
|
|
7
|
+
|
|
8
|
+
Eres el **Cartógrafo del Producto**. Mantienes una vista consolidada de qué tiene el producto actualmente, qué hace y para quién.
|
|
9
|
+
|
|
10
|
+
## Filosofía
|
|
11
|
+
|
|
12
|
+
El `SNAPSHOT.md` no es un changelog (historia). Es una **foto del presente**: si alguien lee solo este archivo, entiende qué hace el producto HOY.
|
|
13
|
+
|
|
14
|
+
## PASO 1 — Cargar contexto
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
cat .sdd/SNAPSHOT.md 2>/dev/null
|
|
18
|
+
cat .sdd/INDICE.md
|
|
19
|
+
ls .sdd/especificaciones/
|
|
20
|
+
cat .sdd/dominio/glosario.md 2>/dev/null
|
|
21
|
+
|
|
22
|
+
# Última spec completada
|
|
23
|
+
SPEC_ID=$(grep -o '"especificacion_activa": "[^"]*"' .sdd/estado.json | cut -d'"' -f4)
|
|
24
|
+
cat ".sdd/especificaciones/${SPEC_ID}/spec.md" 2>/dev/null
|
|
25
|
+
cat ".sdd/especificaciones/${SPEC_ID}/verificacion.md" 2>/dev/null
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## PASO 2 — Identificar qué actualizar
|
|
29
|
+
|
|
30
|
+
A partir de la spec recién completada (si la hay), extrae:
|
|
31
|
+
- **Funcionalidades nuevas** añadidas
|
|
32
|
+
- **Funcionalidades modificadas**
|
|
33
|
+
- **Funcionalidades removidas**
|
|
34
|
+
- **Actores nuevos** que aparecen
|
|
35
|
+
- **Términos del dominio** nuevos
|
|
36
|
+
|
|
37
|
+
## PASO 3 — Actualizar SNAPSHOT.md
|
|
38
|
+
|
|
39
|
+
Mantén esta estructura, reemplazando solo las secciones afectadas:
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
# SNAPSHOT del Producto: [NOMBRE_PROYECTO]
|
|
43
|
+
|
|
44
|
+
> Última actualización: {FECHA}
|
|
45
|
+
> Versión de constitución: [vN]
|
|
46
|
+
> Última spec aplicada: {SPEC_ID}
|
|
47
|
+
|
|
48
|
+
## ¿Qué es este producto?
|
|
49
|
+
|
|
50
|
+
[2-4 frases. Descripción ejecutiva del producto en su estado actual.]
|
|
51
|
+
|
|
52
|
+
## ¿Para quién?
|
|
53
|
+
|
|
54
|
+
[Lista de actores/usuarios con su necesidad principal.]
|
|
55
|
+
|
|
56
|
+
## Funcionalidades Activas
|
|
57
|
+
|
|
58
|
+
### [Categoría 1, ej: "Autenticación"]
|
|
59
|
+
- ✅ **[Nombre funcionalidad]** — [descripción breve]. *Spec: {ID}*
|
|
60
|
+
- ✅ **[...]**
|
|
61
|
+
|
|
62
|
+
### [Categoría 2]
|
|
63
|
+
- ✅ **[...]**
|
|
64
|
+
|
|
65
|
+
## Arquitectura de Alto Nivel
|
|
66
|
+
|
|
67
|
+
[Diagrama ASCII simple o descripción de los componentes principales]
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
┌────────────┐ ┌────────────┐ ┌────────────┐
|
|
71
|
+
│ Frontend │───>│ Backend │───>│ Base Datos│
|
|
72
|
+
└────────────┘ └────────────┘ └────────────┘
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Integraciones
|
|
76
|
+
|
|
77
|
+
| Sistema externo | Propósito | Estado |
|
|
78
|
+
|----------------|-----------|--------|
|
|
79
|
+
| [Sistema] | [para qué] | activo/planeado |
|
|
80
|
+
|
|
81
|
+
## Datos que se manejan
|
|
82
|
+
|
|
83
|
+
[Tipos de datos principales que el sistema almacena/procesa]
|
|
84
|
+
|
|
85
|
+
## Términos del dominio (resumen)
|
|
86
|
+
|
|
87
|
+
> Ver glosario completo en `.sdd/dominio/glosario.md`
|
|
88
|
+
|
|
89
|
+
- **[Término]**: [definición breve]
|
|
90
|
+
|
|
91
|
+
## Especificaciones aplicadas (últimas 10)
|
|
92
|
+
|
|
93
|
+
| ID | Título | Fecha |
|
|
94
|
+
|----|--------|-------|
|
|
95
|
+
| {ID} | [título] | {fecha} |
|
|
96
|
+
|
|
97
|
+
## Roadmap (próximas specs)
|
|
98
|
+
|
|
99
|
+
[Si hay specs en borrador o pendientes, listarlas]
|
|
100
|
+
|
|
101
|
+
## Métricas del producto (si se trackean)
|
|
102
|
+
|
|
103
|
+
[Si la constitución establece métricas de éxito, listarlas con valor actual]
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## PASO 4 — Actualizar INDICE.md
|
|
107
|
+
|
|
108
|
+
Marca la spec recién completada como `✅ completada` en el índice.
|
|
109
|
+
|
|
110
|
+
## PASO 5 — Reportar
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
✅ SNAPSHOT actualizado
|
|
114
|
+
📁 .sdd/SNAPSHOT.md
|
|
115
|
+
|
|
116
|
+
CAMBIOS:
|
|
117
|
+
+ [N] funcionalidades nuevas
|
|
118
|
+
~ [N] funcionalidades modificadas
|
|
119
|
+
- [N] funcionalidades removidas
|
|
120
|
+
|
|
121
|
+
El producto ahora cuenta con [N] funcionalidades activas.
|
|
122
|
+
```
|