sdd-es 2.0.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/.claude/settings.json +21 -45
  2. package/LICENSE +21 -0
  3. package/README.md +51 -21
  4. package/agents/architecture-designer.md +174 -0
  5. package/agents/arquitecto.md +16 -1
  6. package/agents/asesor-datos.md +15 -1
  7. package/agents/critico.md +37 -1
  8. package/agents/desarrollador-backend.md +3 -1
  9. package/agents/desarrollador-frontend.md +3 -1
  10. package/agents/disenador-api.md +13 -1
  11. package/agents/documentador.md +3 -1
  12. package/agents/investigador.md +3 -1
  13. package/agents/operaciones.md +3 -1
  14. package/agents/product-designer.md +232 -0
  15. package/agents/revisor.md +25 -1
  16. package/agents/seguridad.md +5 -1
  17. package/agents/tester.md +3 -1
  18. package/claude-hooks/agent-memory.js +154 -0
  19. package/cli/index.js +1 -2
  20. package/commands/sdd.analizar.md +23 -2
  21. package/commands/sdd.compliance.md +516 -0
  22. package/commands/sdd.configurar.md +33 -0
  23. package/commands/sdd.constitucion.md +198 -23
  24. package/commands/sdd.construir.md +210 -0
  25. package/commands/sdd.dise/303/261ar.md +188 -0
  26. package/commands/sdd.estado.md +68 -1
  27. package/commands/sdd.exportar.md +344 -0
  28. package/commands/sdd.implementar.md +203 -23
  29. package/commands/sdd.interpretar.md +239 -0
  30. package/commands/sdd.md +70 -1
  31. package/commands/sdd.optimizar.md +164 -0
  32. package/commands/sdd.planificar.md +64 -0
  33. package/commands/sdd.verificar.md +10 -0
  34. package/craft/accessibility-baseline.md +216 -0
  35. package/craft/anti-ai-slop.md +158 -0
  36. package/craft/color.md +160 -0
  37. package/craft/typography.md +121 -0
  38. package/design-systems/bold-brutalist/DESIGN.md +239 -0
  39. package/design-systems/editorial-minimal/DESIGN.md +205 -0
  40. package/design-systems/neutral-modern/DESIGN.md +227 -0
  41. package/design-systems/vibrant-consumer/DESIGN.md +257 -0
  42. package/design-systems/warm-editorial/DESIGN.md +221 -0
  43. package/docs/AGENTES.md +4 -1
  44. package/docs/FABRICA.md +164 -115
  45. package/docs/MEMORIA-Y-OBSERVABILIDAD.md +237 -0
  46. package/docs/MODELOS.md +3 -0
  47. package/docs/QUE-PASA-SI-FALLA.md +404 -0
  48. package/docs/SEGURIDAD-PARA-NOTECNICOS.md +280 -0
  49. package/package.json +5 -3
  50. package/skills/cache-audit/SKILL.md +163 -0
  51. package/skills/critica-diseno/SKILL.md +193 -0
  52. package/skills/descubrir-idea/SKILL.md +133 -0
  53. package/skills/effort-router/SKILL.md +128 -0
  54. package/skills/elegir-direccion/SKILL.md +184 -0
  55. package/skills/github-connect/IMPLEMENTATION-CHECKLIST.md +297 -0
  56. package/skills/github-connect/INDEX.md +223 -0
  57. package/skills/github-connect/INTEGRATION.md +361 -0
  58. package/skills/github-connect/QUICK-START.md +168 -0
  59. package/skills/github-connect/README.md +414 -0
  60. package/skills/github-connect/RESUMEN_IMPLEMENTACION.txt +374 -0
  61. package/skills/github-connect/SKILL.md +343 -0
  62. package/skills/github-connect/STRUCTURE.txt +252 -0
  63. package/skills/github-connect/example-config.yaml +41 -0
  64. package/skills/github-connect/github-connect.sh +419 -0
  65. package/skills/interpretar-idea/SKILL.md +254 -0
  66. package/skills/memory-compactor/SKILL.md +114 -0
  67. package/skills/modo-guiado/SKILL.md +12 -2
  68. package/skills/observabilidad-consumo/SKILL.md +164 -0
  69. package/skills/token-budget/SKILL.md +154 -0
  70. package/skills/vercel-deploy/00-START-HERE.txt +364 -0
  71. package/skills/vercel-deploy/CHECKLIST.md +205 -0
  72. package/skills/vercel-deploy/EXEC-SUMMARY.txt +322 -0
  73. package/skills/vercel-deploy/FLOW.txt +334 -0
  74. package/skills/vercel-deploy/INDEX.md +276 -0
  75. package/skills/vercel-deploy/INTEGRATION.md +328 -0
  76. package/skills/vercel-deploy/MANIFEST.md +310 -0
  77. package/skills/vercel-deploy/README.md +65 -0
  78. package/skills/vercel-deploy/SKILL.md +356 -0
  79. package/skills/vercel-deploy/deploy.sh +298 -0
  80. package/skills/vercel-deploy/estado.json.example +205 -0
  81. package/skills/vercel-deploy/skill.yaml +323 -0
  82. package/skills/vercel-deploy/vercel-deploy.sh +216 -0
  83. package/skills/wireframe-mvp/SKILL.md +157 -0
  84. package/.claude-plugin/marketplace.json +0 -31
  85. package/.claude-plugin/plugin.json +0 -97
  86. package/docs/EJEMPLO-PRACTICA.md +0 -383
  87. package/docs/EJEMPLOS.md +0 -212
  88. /package/skills/{compresion-tokens.md → compresion-tokens/SKILL.md} +0 -0
  89. /package/skills/{constitucion-constraint.md → constitucion-constraint/SKILL.md} +0 -0
  90. /package/skills/{deteccion-stack.md → deteccion-stack/SKILL.md} +0 -0
  91. /package/skills/{enrutador-agentes.md → enrutador-agentes/SKILL.md} +0 -0
  92. /package/skills/{gestion-estado.md → gestion-estado/SKILL.md} +0 -0
  93. /package/skills/{indexador.md → indexador/SKILL.md} +0 -0
  94. /package/skills/{validacion-spec.md → validacion-spec/SKILL.md} +0 -0
  95. /package/skills/{verificador-implementacion.md → verificador-implementacion/SKILL.md} +0 -0
@@ -1,383 +0,0 @@
1
- # Ejemplo Práctico — API de Lista de Tareas desde Cero
2
-
3
- Este ejemplo recorre el flujo completo de SDD-ES construyendo una API REST de lista de tareas con Node.js + Express + SQLite. No asume ningún código previo.
4
-
5
- ---
6
-
7
- ## Contexto del proyecto
8
-
9
- Tienes una carpeta vacía. Quieres construir una API que permita crear, listar, completar y eliminar tareas.
10
-
11
- ```bash
12
- mkdir mi-api-tareas
13
- cd mi-api-tareas
14
- git init
15
- bash /ruta/a/sdd-es/instalar.sh
16
- ```
17
-
18
- Abre Claude Code en `mi-api-tareas`.
19
-
20
- ---
21
-
22
- ## Paso 1 — Constitución
23
-
24
- ```
25
- /sdd.constitucion
26
- ```
27
-
28
- Claude detecta que el proyecto está vacío y te pregunta por el stack. Respondes:
29
-
30
- ```
31
- Stack: Node.js con Express
32
- Base de datos: SQLite (sin ORM, queries directas)
33
- Tests: Jest
34
- Calidad: cobertura mínima 80%, funciones ≤40 líneas, sin any en TypeScript
35
- Sin TypeScript por ahora — JavaScript puro
36
- ```
37
-
38
- Claude genera `.sdd/memoria/constitucion.md` con tus principios.
39
-
40
- ---
41
-
42
- ## Paso 2 — Primera especificación
43
-
44
- ```
45
- /sdd.especificar API de lista de tareas — CRUD completo con SQLite
46
- ```
47
-
48
- Claude detecta que es un cambio **mediano** (varios endpoints, BD, tests) y genera la spec:
49
-
50
- ```
51
- ✅ Spec creada: .sdd/especificaciones/2026-06-09-api-lista-tareas/spec.md
52
-
53
- ⚠️ 2 puntos requieren aclaración.
54
-
55
- PRÓXIMO PASO RECOMENDADO:
56
- /sdd.aclarar — resolver los [NECESITA_ACLARACION]
57
- ```
58
-
59
- La spec generada contiene secciones como:
60
-
61
- ```markdown
62
- ## 4. Historias de Usuario
63
-
64
- ### HU-001: Gestión de tareas
65
- Como usuario de la API
66
- Quiero crear, listar, completar y eliminar tareas
67
- Para organizar mi trabajo
68
-
69
- Criterios de aceptación:
70
- - [ ] CA-001-01: POST /tareas crea una tarea con título obligatorio (P1)
71
- - [ ] CA-001-02: GET /tareas devuelve todas las tareas ordenadas por fecha (P1)
72
- - [ ] CA-001-03: PATCH /tareas/:id/completar marca la tarea como completa (P1)
73
- - [ ] CA-001-04: DELETE /tareas/:id elimina la tarea (P1)
74
- - [ ] CA-001-05: POST /tareas sin título devuelve 400 con mensaje de error (P1)
75
- - [ ] CA-001-06: PATCH /tareas/:id con ID inexistente devuelve 404 (P2)
76
-
77
- ## 8. Fuera de Alcance
78
-
79
- ❌ Autenticación de usuarios
80
- ❌ Múltiples listas por usuario
81
- ❌ Prioridades o etiquetas
82
- ```
83
-
84
- ---
85
-
86
- ## Paso 3 — Aclarar ambigüedades
87
-
88
- ```
89
- /sdd.aclarar
90
- ```
91
-
92
- Claude encuentra 2 puntos sin definir y pregunta:
93
-
94
- ```
95
- 🔴 ACLARACIONES CRÍTICAS
96
-
97
- 1. [Datos] — ¿Las tareas tienen fecha de vencimiento?
98
- a) Sí, campo opcional `vence_en` (ISO 8601)
99
- b) No, solo título y estado
100
-
101
- 2. [Formato] — ¿Qué devuelve DELETE /tareas/:id?
102
- a) 204 sin body
103
- b) 200 con la tarea eliminada
104
- ```
105
-
106
- Respondes: `1.b, 2.a`
107
-
108
- Claude actualiza la spec y elimina los marcadores `[NECESITA_ACLARACION]`.
109
-
110
- ---
111
-
112
- ## Paso 4 — Plan técnico
113
-
114
- ```
115
- /sdd.planificar
116
- ```
117
-
118
- El arquitecto, el asesor de datos y el crítico trabajan en paralelo. Claude genera `.sdd/especificaciones/{ID}/plan.md`:
119
-
120
- ```
121
- ── Constitutional AI Check ─────────────────────────────
122
- ✅ Stack: Express + SQLite — alineado con constitución
123
- ✅ Patrones: módulos ES, funciones ≤40 líneas
124
- ✅ Sin dependencias nuevas más allá de express y better-sqlite3
125
- ─────────────────────────────────────────────────────────
126
-
127
- 📋 Plan técnico generado
128
- • 6 archivos afectados
129
- • 2 dependencias nuevas (express, better-sqlite3)
130
- • 4 decisiones técnicas
131
- • 1 riesgo identificado
132
-
133
- ⚠️ PUNTOS DESTACADOS:
134
- • Riesgo medio: SQLite no soporta concurrencia alta — documentado, aceptado
135
- para el scope actual (API local/dev)
136
-
137
- POR FAVOR REVISA EL PLAN:
138
- /sdd.planificar aprobar — continuar al desglose
139
- /sdd.planificar revisar — discutir cambios
140
- ```
141
-
142
- Revisas el plan en `.sdd/especificaciones/{ID}/plan.md`. Ves que el arquitecto propuso esta estructura:
143
-
144
- ```
145
- src/
146
- db.js ← inicialización de SQLite
147
- tareas.js ← lógica de negocio
148
- rutas.js ← endpoints Express
149
- app.js ← setup de Express
150
- server.js ← punto de entrada
151
- tests/
152
- tareas.test.js
153
- ```
154
-
155
- ```
156
- /sdd.planificar aprobar
157
- ```
158
-
159
- ---
160
-
161
- ## Paso 5 — Desglose en tareas
162
-
163
- ```
164
- /sdd.tareas
165
- ```
166
-
167
- ```
168
- ✅ 8 tareas generadas
169
-
170
- DISTRIBUCIÓN POR AGENTE:
171
- • arquitecto: 1 (estructura base)
172
- • desarrollador-backend: 5 (BD, lógica, rutas)
173
- • tester: 2 (tests unitarios + integración)
174
-
175
- COBERTURA:
176
- • 6/6 CAs cubiertos
177
- ```
178
-
179
- Las tareas generadas en `.sdd/especificaciones/{ID}/tareas.md`:
180
-
181
- ```
182
- T001 — Inicializar proyecto e instalar dependencias [arquitecto]
183
- T002 — Crear módulo de BD (db.js + migración inicial) [backend]
184
- T003 — Tests unitarios de la capa de datos [tester]
185
- T004 — Implementar lógica de tareas (tareas.js) [backend]
186
- T005 — Tests unitarios de lógica [tester]
187
- T006 — Implementar rutas Express (rutas.js) [backend]
188
- T007 — Setup de app.js y server.js [backend]
189
- T008 — Tests de integración (API completa) [tester]
190
- ```
191
-
192
- ---
193
-
194
- ## Paso 6 — Implementación
195
-
196
- ```
197
- /sdd.implementar
198
- ```
199
-
200
- Claude muestra el progreso en tiempo real:
201
-
202
- ```
203
- 🔧 T001 — Inicializar proyecto e instalar dependencias
204
- Agente: arquitecto (modelo: opus)
205
- Tiempo estimado: S
206
-
207
- ✅ T001 completada — Verificación: PASADA
208
-
209
- 🔧 T002 — Crear módulo de BD
210
- Agente: desarrollador-backend (modelo: sonnet)
211
-
212
- ── Validación de convenciones: src/db.js (fuentes: constitución, inferido) ──
213
- ✅ Sin violaciones
214
- ────────────────────────────────────────────────────────────────────────────
215
-
216
- ✅ T002 completada — Verificación: PASADA
217
-
218
- 🔧 T003 — Tests unitarios de la capa de datos
219
- Agente: tester (modelo: sonnet)
220
- ✅ T003 completada
221
-
222
- [...continúa para T004–T008...]
223
-
224
- ✅ T008 completada
225
- ```
226
-
227
- El código generado en `src/db.js`:
228
-
229
- ```javascript
230
- import Database from 'better-sqlite3'
231
- import { join, dirname } from 'node:path'
232
- import { fileURLToPath } from 'node:url'
233
-
234
- const __dirname = dirname(fileURLToPath(import.meta.url))
235
- const DB_PATH = join(__dirname, '..', 'tareas.db')
236
-
237
- let db
238
-
239
- export function getDb() {
240
- if (!db) {
241
- db = new Database(DB_PATH)
242
- db.pragma('journal_mode = WAL')
243
- inicializar(db)
244
- }
245
- return db
246
- }
247
-
248
- function inicializar(db) {
249
- db.exec(`
250
- CREATE TABLE IF NOT EXISTS tareas (
251
- id INTEGER PRIMARY KEY AUTOINCREMENT,
252
- titulo TEXT NOT NULL,
253
- completa INTEGER NOT NULL DEFAULT 0,
254
- creada_en TEXT NOT NULL DEFAULT (datetime('now'))
255
- )
256
- `)
257
- }
258
- ```
259
-
260
- Y en `src/tareas.js`:
261
-
262
- ```javascript
263
- import { getDb } from './db.js'
264
-
265
- export function listarTareas() {
266
- return getDb()
267
- .prepare('SELECT * FROM tareas ORDER BY creada_en DESC')
268
- .all()
269
- }
270
-
271
- export function crearTarea(titulo) {
272
- if (!titulo || titulo.trim().length === 0) {
273
- throw new Error('El título es obligatorio')
274
- }
275
- const stmt = getDb().prepare('INSERT INTO tareas (titulo) VALUES (?)')
276
- const result = stmt.run(titulo.trim())
277
- return getDb().prepare('SELECT * FROM tareas WHERE id = ?').get(result.lastInsertRowid)
278
- }
279
-
280
- export function completarTarea(id) {
281
- const tarea = getDb().prepare('SELECT * FROM tareas WHERE id = ?').get(id)
282
- if (!tarea) return null
283
- getDb().prepare('UPDATE tareas SET completa = 1 WHERE id = ?').run(id)
284
- return { ...tarea, completa: 1 }
285
- }
286
-
287
- export function eliminarTarea(id) {
288
- const result = getDb().prepare('DELETE FROM tareas WHERE id = ?').run(id)
289
- return result.changes > 0
290
- }
291
- ```
292
-
293
- ---
294
-
295
- ## Paso 7 — Verificación final
296
-
297
- Al terminar todas las tareas, Claude invoca automáticamente al revisor y corre los tests:
298
-
299
- ```
300
- 📊 Implementación Completada: 2026-06-09-api-lista-tareas
301
-
302
- Tareas: 8/8 ✅
303
- Tests: Jest — 14 pasados, 0 fallidos
304
- Cobertura: 87% (umbral: 80%) ✅
305
- Constitución: ✅
306
-
307
- Revisión del agente revisor:
308
- ✅ Todos los CAs cubiertos por tests
309
- ✅ Funciones ≤40 líneas (máx. encontrada: 18 líneas)
310
- 🟡 Sugerencia: añadir middleware de manejo de errores global (no bloqueante)
311
-
312
- SIGUIENTES PASOS:
313
- /sdd.verificar — verificación final contra spec original
314
- /sdd.snapshot — actualizar SNAPSHOT del producto
315
- ```
316
-
317
- ```
318
- /sdd.verificar
319
- ```
320
-
321
- ```
322
- ✅ Verificación completada
323
-
324
- CA-001-01: POST /tareas crea tarea ✅ test: "debería crear tarea con título"
325
- CA-001-02: GET /tareas devuelve ordenadas ✅ test: "debería listar en orden descendente"
326
- CA-001-03: PATCH completa la tarea ✅ test: "debería marcar como completa"
327
- CA-001-04: DELETE elimina la tarea ✅ test: "debería eliminar y devolver 204"
328
- CA-001-05: POST sin título → 400 ✅ test: "debería devolver 400 sin título"
329
- CA-001-06: PATCH ID inexistente → 404 ✅ test: "debería devolver 404 si no existe"
330
-
331
- 6/6 criterios de aceptación verificados ✅
332
- ```
333
-
334
- ---
335
-
336
- ## Resultado final
337
-
338
- ```
339
- mi-api-tareas/
340
- ├── src/
341
- │ ├── db.js ← BD SQLite
342
- │ ├── tareas.js ← lógica de negocio
343
- │ ├── rutas.js ← endpoints Express
344
- │ ├── app.js ← setup Express
345
- │ └── server.js ← punto de entrada
346
- ├── tests/
347
- │ └── tareas.test.js ← 14 tests, 87% cobertura
348
- ├── package.json
349
- ├── tareas.db ← BD generada en primera ejecución
350
- └── .sdd/
351
- ├── memoria/constitucion.md
352
- ├── especificaciones/2026-06-09-api-lista-tareas/
353
- │ ├── spec.md
354
- │ ├── plan.md
355
- │ ├── tareas.md
356
- │ └── checklist-spec.md
357
- └── SNAPSHOT.md
358
- ```
359
-
360
- **Lo que SDD-ES garantizó:**
361
- - Cada línea de código está trazada a un criterio de aceptación
362
- - El revisor verificó independientemente del implementador
363
- - La constitución se cumplió en cada decisión técnica
364
- - Los tests no son decorativos — cada CA tiene su test
365
-
366
- ---
367
-
368
- ## Próxima feature
369
-
370
- ```
371
- /sdd.especificar añadir prioridad a las tareas (alta/media/baja)
372
- ```
373
-
374
- El sistema detecta que hay una spec anterior completada, carga el contexto del proyecto (constitución + snapshot) y empieza desde cero — sin repetir preguntas ya respondidas.
375
-
376
- ---
377
-
378
- ## Ver también
379
-
380
- - [FLUJO.md](FLUJO.md) — diagrama completo del flujo
381
- - [AGENTES.md](AGENTES.md) — qué hace cada agente
382
- - [PERSONALIZACION.md](PERSONALIZACION.md) — ajustar modelos, activar/desactivar agentes
383
- - [FILOSOFIA.md](FILOSOFIA.md) — por qué SDD con IA
package/docs/EJEMPLOS.md DELETED
@@ -1,212 +0,0 @@
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.
File without changes