specleap-framework 2.1.0 → 2.1.5

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 (75) hide show
  1. package/.agents/backend.md +3 -3
  2. package/.agents/frontend.md +2 -2
  3. package/.agents/producto.md +9 -11
  4. package/.claude/hooks/spec-guard.sh +132 -0
  5. package/.claude/settings.json.template +15 -0
  6. package/.clinerules +3 -3
  7. package/.coderabbit.yaml +2 -4
  8. package/.commands/compliance.md +89 -0
  9. package/.commands/inicio.md +15 -15
  10. package/.commands/nuevo/README.md +2 -2
  11. package/.commands/planificar.md +1 -1
  12. package/.continue/rules/04-git-workflow.md +5 -5
  13. package/.continuerules +3 -4
  14. package/.cursorrules +1 -1
  15. package/.github/copilot-instructions.md +1 -1
  16. package/.specleap/i18n/en.json +177 -0
  17. package/.specleap/i18n/es.json +177 -0
  18. package/.specleap/i18n.sh +63 -0
  19. package/CHANGELOG.md +276 -0
  20. package/CLAUDE.md +54 -13
  21. package/README.md +169 -528
  22. package/SETUP.md +16 -13
  23. package/openspec/INDEX.md +53 -0
  24. package/openspec/README.md +104 -0
  25. package/openspec/SPEC-FORMAT.md +168 -0
  26. package/openspec/changes/.gitkeep +0 -0
  27. package/openspec/cli/COMMAND_REFERENCE.md +817 -0
  28. package/openspec/cli/README.md +189 -0
  29. package/openspec/cli/apply.sh +229 -0
  30. package/openspec/cli/archive.sh +240 -0
  31. package/openspec/cli/code-review.sh +207 -0
  32. package/openspec/cli/common.sh +171 -0
  33. package/openspec/cli/enrich.sh +188 -0
  34. package/openspec/cli/ff.sh +329 -0
  35. package/openspec/cli/new.sh +260 -0
  36. package/openspec/cli/openspec +82 -0
  37. package/openspec/cli/report.sh +244 -0
  38. package/openspec/cli/status.sh +178 -0
  39. package/openspec/cli/verify.sh +246 -0
  40. package/openspec/config.yaml +76 -0
  41. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/00-original-user-story.md +5 -0
  42. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/01-refined-user-story.md +106 -0
  43. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/README.md +333 -0
  44. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/design.md +461 -0
  45. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/proposal.md +124 -0
  46. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/specs/functional/F001-authentication.spec.md +399 -0
  47. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/specs/technical/T001-jwt-implementation.spec.md +606 -0
  48. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/tasks.md +433 -0
  49. package/openspec/examples/MERMAID_DIAGRAMS.md +481 -0
  50. package/openspec/examples/README.md +334 -0
  51. package/openspec/specs/functional/.gitkeep +0 -0
  52. package/openspec/specs/integration/.gitkeep +0 -0
  53. package/openspec/specs/security/.gitkeep +0 -0
  54. package/openspec/specs/technical/.gitkeep +0 -0
  55. package/openspec/templates/.coderabbit.yaml +259 -0
  56. package/openspec/templates/design.md +181 -0
  57. package/openspec/templates/proposal.md +79 -0
  58. package/openspec/templates/tasks.md +193 -0
  59. package/package.json +10 -5
  60. package/rules/git-workflow.md +3 -3
  61. package/rules/session-protocol.md +3 -3
  62. package/scripts/README.md +13 -25
  63. package/scripts/compliance-audit.sh +325 -0
  64. package/scripts/generate-contract.sh +4 -4
  65. package/scripts/install-skills.sh +12 -11
  66. package/scripts/lib/render-contrato.py +1 -1
  67. package/scripts/quality-baseline.sh +210 -0
  68. package/scripts/quality-healing.sh +241 -0
  69. package/setup.sh +3 -3
  70. package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
  71. package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
  72. package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/search.cpython-314.pyc +0 -0
  73. package/scripts/lib/jira-project-utils.sh +0 -222
  74. package/scripts/setup-mcp.sh +0 -654
  75. package/scripts/test-cuestionario.sh +0 -428
@@ -0,0 +1,817 @@
1
+ # 📖 Referencia Completa de Comandos — OpenSpec CLI
2
+
3
+ Documentación detallada de todos los comandos del workflow de SpecLeap.
4
+
5
+ ---
6
+
7
+ ## 📋 Índice de Comandos
8
+
9
+ | Comando | Fase | Descripción |
10
+ |---------|-----------|-------------|
11
+ | [`openspec`](#openspec) | — | Dispatcher principal + ayuda |
12
+ | [`enrich`](#enrich) | Learn | Refinar user story con AI |
13
+ | [`new`](#new) | Learn | Crear propuesta de cambio |
14
+ | [`ff`](#ff) | Learn | Fast-forward (generar con AI) |
15
+ | [`apply`](#apply) | Implement | Aplicar propuesta (branch + deltas) |
16
+ | [`verify`](#verify) | Deploy | Verificar tests + specs |
17
+ | [`code-review`](#code-review) | Review | Solicitar review + crear PR |
18
+ | [`archive`](#archive) | Review | Archivar propuesta completada |
19
+ | [`report`](#report) | Deploy | Generar testing report |
20
+ | [`status`](#status) | — | Ver estado de propuestas |
21
+
22
+ ---
23
+
24
+ ## `openspec`
25
+
26
+ Dispatcher principal que ejecuta subcomandos.
27
+
28
+ ### Uso
29
+
30
+ ```bash
31
+ openspec <comando> [opciones]
32
+ openspec --help
33
+ openspec --version
34
+ ```
35
+
36
+ ### Opciones
37
+
38
+ | Opción | Descripción |
39
+ |--------|-------------|
40
+ | `-h, --help` | Mostrar ayuda |
41
+ | `-v, --version` | Mostrar versión |
42
+
43
+ ### Ejemplos
44
+
45
+ ```bash
46
+ # Ver ayuda general
47
+ openspec --help
48
+
49
+ # Ver versión
50
+ openspec --version
51
+
52
+ # Ejecutar comando
53
+ openspec new CHANGE-001 "Mi feature"
54
+ ```
55
+
56
+ ### Exit Codes
57
+
58
+ - `0` — Éxito
59
+ - `1` — Comando no encontrado
60
+
61
+ ---
62
+
63
+ ## `enrich`
64
+
65
+ Refina una user story simple con AI, añadiendo contexto, criterios de aceptación, y estimaciones.
66
+
67
+ ### Uso
68
+
69
+ ```bash
70
+ openspec enrich <user-story> [opciones]
71
+ openspec enrich --file <path> [opciones]
72
+ ```
73
+
74
+ ### Opciones
75
+
76
+ | Opción | Tipo | Descripción |
77
+ |--------|------|-------------|
78
+ | `--file <path>` | string | Leer user story desde archivo |
79
+ | `--output <path>` | string | Guardar resultado (default: STDOUT) |
80
+ | `--model <model>` | string | Modelo AI a usar (default: auto) |
81
+ | `-h, --help` | — | Mostrar ayuda |
82
+
83
+ ### AI CLI Soportados
84
+
85
+ - **oracle** — Preferido si está instalado
86
+ - **gh copilot** — Requiere `gh extension install github/gh-copilot`
87
+ - **ai-cli** — Requiere AI CLI instalado
88
+
89
+ ### Ejemplos
90
+
91
+ ```bash
92
+ # User story inline
93
+ openspec enrich "Como usuario quiero hacer login"
94
+
95
+ # Desde archivo
96
+ openspec enrich --file stories/US-123.md
97
+
98
+ # Guardar resultado
99
+ openspec enrich "Como usuario..." --output us-refined.md
100
+
101
+ # Especificar modelo
102
+ openspec enrich "Como usuario..." --model anthropic/claude-sonnet-4
103
+ ```
104
+
105
+ ### Output
106
+
107
+ User story refinada en markdown con:
108
+ - Título y descripción
109
+ - Contexto del negocio
110
+ - Criterios de aceptación (GIVEN/WHEN/THEN)
111
+ - Casos de uso adicionales
112
+ - Requisitos no funcionales
113
+ - Estimación inicial
114
+ - Fuera de alcance
115
+
116
+ ### Exit Codes
117
+
118
+ - `0` — Éxito
119
+ - `1` — AI CLI no encontrado
120
+ - `1` — Input vacío o inválido
121
+
122
+ ---
123
+
124
+ ## `new`
125
+
126
+ Crea una nueva propuesta de cambio con estructura completa (proposal, design, tasks).
127
+
128
+ ### Uso
129
+
130
+ ```bash
131
+ openspec new [CHANGE-ID] <título> [opciones]
132
+ openspec new --auto <título> [opciones]
133
+ ```
134
+
135
+ ### Opciones
136
+
137
+ | Opción | Tipo | Descripción |
138
+ |--------|------|-------------|
139
+ | `--auto` | — | Generar ID automáticamente |
140
+ | `--from <file>` | string | Crear desde user story refinada |
141
+ | `--ticket <id>` | string | Asociar con ID del ticket (ej: app-tienda-23) |
142
+ | `--priority <level>` | string | Prioridad: critical\|high\|medium\|low |
143
+ | `--author <name>` | string | Autor (default: git user) |
144
+ | `-h, --help` | — | Mostrar ayuda |
145
+
146
+ ### Ejemplos
147
+
148
+ ```bash
149
+ # ID manual
150
+ openspec new CHANGE-001 "Implementar autenticación JWT"
151
+
152
+ # ID automático
153
+ openspec new --auto "Sistema de notificaciones"
154
+
155
+ # Con ticket y prioridad
156
+ openspec new --auto "Login social" --ticket app-tienda-23 --priority high
157
+
158
+ # Desde user story refinada
159
+ openspec new --auto "Auth" --from us-refined.md --ticket app-tienda-24
160
+ ```
161
+
162
+ ### Output
163
+
164
+ Crea directorio: `openspec/changes/CHANGE-XXX-nombre/`
165
+
166
+ **Archivos creados:**
167
+ - `proposal.md` — QUÉ y POR QUÉ
168
+ - `design.md` — CÓMO (diseño técnico)
169
+ - `tasks.md` — Tareas y Testing Report
170
+ - `README.md` — Guía de próximos pasos
171
+ - `specs/` — Directorio para delta specs
172
+
173
+ ### Exit Codes
174
+
175
+ - `0` — Éxito
176
+ - `1` — ID inválido o ya existe
177
+ - `1` — Título vacío
178
+
179
+ ---
180
+
181
+ ## `ff`
182
+
183
+ Fast-forward: genera automáticamente con AI el contenido de proposal.md, design.md y tasks.md.
184
+
185
+ ### Uso
186
+
187
+ ```bash
188
+ openspec ff <CHANGE-ID> [opciones]
189
+ ```
190
+
191
+ ### Opciones
192
+
193
+ | Opción | Tipo | Descripción |
194
+ |--------|------|-------------|
195
+ | `--model <model>` | string | Modelo AI a usar (default: auto) |
196
+ | `--skip-proposal` | — | Omitir generación de proposal.md |
197
+ | `--skip-design` | — | Omitir generación de design.md |
198
+ | `--skip-tasks` | — | Omitir generación de tasks.md |
199
+ | `-h, --help` | — | Mostrar ayuda |
200
+
201
+ ### Prerequisitos
202
+
203
+ - Propuesta creada con `openspec new`
204
+ - Al menos `proposal.md` con contexto básico
205
+
206
+ ### Ejemplos
207
+
208
+ ```bash
209
+ # Generar todo
210
+ openspec ff CHANGE-001
211
+
212
+ # Solo design y tasks (proposal ya completo)
213
+ openspec ff CHANGE-002 --skip-proposal
214
+
215
+ # Usar modelo específico
216
+ openspec ff CHANGE-003 --model anthropic/claude-opus-4
217
+ ```
218
+
219
+ ### Output
220
+
221
+ **Archivos actualizados:**
222
+ - `design.md` — Diseño técnico completo (arquitectura, API, ADRs)
223
+ - `tasks.md` — Tareas desglosadas con estimaciones
224
+ - *(proposal.md no se toca si ya tiene contenido)*
225
+
226
+ ### Notas Importantes
227
+
228
+ ⚠️ **REVISAR SIEMPRE** el output del AI antes de aplicar. El AI puede generar:
229
+ - Placeholders ("TODO", "...", "XXX")
230
+ - Suposiciones incorrectas
231
+ - Código que no se ajusta a tu stack
232
+
233
+ ### Exit Codes
234
+
235
+ - `0` — Éxito
236
+ - `1` — Propuesta no encontrada
237
+ - `1` — AI CLI no disponible
238
+
239
+ ---
240
+
241
+ ## `apply`
242
+
243
+ Aplica una propuesta aprobada: crea branch Git, aplica delta specs, y actualiza estado.
244
+
245
+ ### Uso
246
+
247
+ ```bash
248
+ openspec apply <CHANGE-ID> [opciones]
249
+ ```
250
+
251
+ ### Opciones
252
+
253
+ | Opción | Tipo | Descripción |
254
+ |--------|------|-------------|
255
+ | `--no-branch` | — | No crear branch de Git |
256
+ | `--base <branch>` | string | Branch base (default: develop) |
257
+ | `--dry-run` | — | Simular sin hacer cambios |
258
+ | `-h, --help` | — | Mostrar ayuda |
259
+
260
+ ### Prerequisitos
261
+
262
+ - Propuesta completada y revisada
263
+ - Git repositorio inicializado
264
+ - Base branch existente
265
+
266
+ ### Ejemplos
267
+
268
+ ```bash
269
+ # Aplicar propuesta
270
+ openspec apply CHANGE-001
271
+
272
+ # Con base branch diferente
273
+ openspec apply CHANGE-002 --base main
274
+
275
+ # Simular (sin hacer cambios)
276
+ openspec apply CHANGE-003 --dry-run
277
+
278
+ # Sin crear branch (ya estás en uno)
279
+ openspec apply CHANGE-004 --no-branch
280
+ ```
281
+
282
+ ### Acciones Realizadas
283
+
284
+ 1. ✅ Crea branch: `feat/CHANGE-XXX-nombre` (desde `develop`)
285
+ 2. ✅ Aplica delta specs desde `changes/CHANGE-XXX/specs/` a `specs/`
286
+ 3. ✅ Actualiza estado de propuesta: `draft` → `in_progress`
287
+ 4. ✅ Commit inicial del setup
288
+
289
+ ### Output
290
+
291
+ ```
292
+ ✓ Branch creado: feat/CHANGE-001-autenticacion
293
+ ✓ Delta specs aplicadas: 2 archivos
294
+ ✓ Estado actualizado: in_progress
295
+ ✓ Commit: chore(openspec): iniciar implementación de CHANGE-001
296
+
297
+ Próximos pasos:
298
+ 1. Implementar según design.md y tasks.md
299
+ 2. Usar AI assistant (Continue, Copilot) con las specs
300
+ 3. Escribir tests según Testing Strategy
301
+ 4. openspec verify CHANGE-001
302
+ ```
303
+
304
+ ### Exit Codes
305
+
306
+ - `0` — Éxito
307
+ - `1` — Propuesta no encontrada
308
+ - `1` — Branch ya existe
309
+ - `1` — Working directory sucio (cambios sin commitear)
310
+
311
+ ---
312
+
313
+ ## `verify`
314
+
315
+ Verifica que una propuesta cumpla requisitos antes de PR: ejecuta tests, valida cobertura, y verifica specs.
316
+
317
+ ### Uso
318
+
319
+ ```bash
320
+ openspec verify <CHANGE-ID> [opciones]
321
+ ```
322
+
323
+ ### Opciones
324
+
325
+ | Opción | Tipo | Descripción |
326
+ |--------|------|-------------|
327
+ | `--skip-tests` | — | Omitir ejecución de tests |
328
+ | `--skip-specs` | — | Omitir validación de specs |
329
+ | `--coverage <min>` | number | Cobertura mínima (default: 80) |
330
+ | `-h, --help` | — | Mostrar ayuda |
331
+
332
+ ### Test Frameworks Detectados
333
+
334
+ - **PHPUnit** — `phpunit.xml` o `phpunit.xml.dist`
335
+ - **Jest** — `package.json` con jest configurado
336
+
337
+ ### Ejemplos
338
+
339
+ ```bash
340
+ # Verificación completa
341
+ openspec verify CHANGE-001
342
+
343
+ # Solo tests (specs ya validadas)
344
+ openspec verify CHANGE-002 --skip-specs
345
+
346
+ # Cobertura personalizada
347
+ openspec verify CHANGE-003 --coverage 90
348
+ ```
349
+
350
+ ### Verificaciones Realizadas
351
+
352
+ 1. ✅ **Tests:**
353
+ - Ejecuta suite completa (unit + integration)
354
+ - Valida que pasen todos los tests
355
+ - Verifica cobertura mínima
356
+
357
+ 2. ✅ **Specs:**
358
+ - Valida que delta specs estén aplicados
359
+ - Verifica YAML válido en `config.yaml`
360
+ - Busca placeholders sin completar
361
+
362
+ 3. ✅ **Archivos:**
363
+ - Verifica que proposal/design/tasks estén completos
364
+ - Detecta "TODO", "FIXME", "XXX", "..."
365
+
366
+ ### Output
367
+
368
+ ```
369
+ ✓ Tests pasaron: 45/45 (0 fallidos)
370
+ ✓ Cobertura: 91% (>= 80%)
371
+ ✓ Specs aplicadas: 2 archivos
372
+ ✓ Archivos completos: proposal.md, design.md, tasks.md
373
+
374
+ Verificación EXITOSA
375
+
376
+ Próximos pasos:
377
+ 1. openspec code-review CHANGE-001 --create-pr
378
+ 2. Crear Pull Request
379
+ 3. Esperar aprobación de CodeRabbit + equipo
380
+ ```
381
+
382
+ ### Exit Codes
383
+
384
+ - `0` — Verificación exitosa
385
+ - `1` — Tests fallidos
386
+ - `1` — Cobertura insuficiente
387
+ - `1` — Specs no aplicadas
388
+ - `1` — Archivos incompletos
389
+
390
+ ---
391
+
392
+ ## `code-review`
393
+
394
+ Solicita code review: verifica tests, crea PR, y activa CodeRabbit.
395
+
396
+ ### Uso
397
+
398
+ ```bash
399
+ openspec code-review <CHANGE-ID> [opciones]
400
+ ```
401
+
402
+ ### Opciones
403
+
404
+ | Opción | Tipo | Descripción |
405
+ |--------|------|-------------|
406
+ | `--create-pr` | — | Crear Pull Request automáticamente |
407
+ | `--base <branch>` | string | Branch base para PR (default: develop) |
408
+ | `--draft` | — | Crear PR como draft |
409
+ | `-h, --help` | — | Mostrar ayuda |
410
+
411
+ ### Prerequisitos
412
+
413
+ - Branch feature creado
414
+ - Tests pasando (`openspec verify` OK)
415
+ - CLI `gh` configurado (para crear PRs)
416
+ - CodeRabbit activo en el repo
417
+
418
+ ### Ejemplos
419
+
420
+ ```bash
421
+ # Solo verificar (no crear PR)
422
+ openspec code-review CHANGE-001
423
+
424
+ # Verificar y crear PR
425
+ openspec code-review CHANGE-002 --create-pr
426
+
427
+ # PR como draft
428
+ openspec code-review CHANGE-003 --create-pr --draft
429
+
430
+ # Con base branch diferente
431
+ openspec code-review CHANGE-004 --create-pr --base main
432
+ ```
433
+
434
+ ### Acciones Realizadas
435
+
436
+ 1. ✅ Ejecuta `openspec verify` primero
437
+ 2. ✅ Pushea branch a remoto
438
+ 3. ✅ Crea Pull Request (si `--create-pr`)
439
+ 4. ✅ Extrae ticket id de proposal.md para título PR
440
+ 5. ✅ CodeRabbit hace review automático
441
+ 6. ✅ Actualiza estado: `in_progress` → `testing`
442
+
443
+ ### Formato del PR
444
+
445
+ **Título:**
446
+ ```
447
+ app-tienda-23 — Implementar Autenticación JWT
448
+ ```
449
+
450
+ **Body:**
451
+ ```markdown
452
+ ## Propuesta
453
+ CHANGE-001 — Implementar Autenticación de Usuario
454
+
455
+ ## Descripción
456
+ [Resumen ejecutivo desde proposal.md]
457
+
458
+ ## Archivos Clave
459
+ - `openspec/changes/CHANGE-001/proposal.md` — QUÉ y POR QUÉ
460
+ - `openspec/changes/CHANGE-001/design.md` — CÓMO
461
+ - `openspec/changes/CHANGE-001/tasks.md` — Testing Report
462
+
463
+ ## Testing Report
464
+ Ver `tasks.md` para resultados completos.
465
+
466
+ ## Referencias
467
+ - Propuesta: openspec/changes/CHANGE-001/
468
+ - Ticket: app-tienda-23
469
+
470
+ ---
471
+ **Code Review:** CodeRabbit está activo.
472
+ ```
473
+
474
+ ### Output
475
+
476
+ ```
477
+ ✓ Verificación pasada
478
+ ✓ Branch pusheado: feat/CHANGE-001-auth
479
+ ✓ Pull Request creado: #45
480
+ ✓ Estado actualizado: testing
481
+
482
+ CodeRabbit revisará automáticamente el PR
483
+ Revisa los comentarios y aplica cambios sugeridos
484
+
485
+ Cuando el review esté aprobado:
486
+ openspec archive CHANGE-001
487
+ ```
488
+
489
+ ### Exit Codes
490
+
491
+ - `0` — Éxito
492
+ - `1` — Verificación falló
493
+ - `1` — No se pudo pushear branch
494
+ - `1` — Error al crear PR
495
+
496
+ ---
497
+
498
+ ## `archive`
499
+
500
+ Archiva una propuesta completada y mergeada: actualiza estado, elimina branch, y genera reporte final.
501
+
502
+ ### Uso
503
+
504
+ ```bash
505
+ openspec archive <CHANGE-ID> [opciones]
506
+ ```
507
+
508
+ ### Opciones
509
+
510
+ | Opción | Tipo | Descripción |
511
+ |--------|------|-------------|
512
+ | `--keep-branch` | — | No eliminar branch feature |
513
+ | `--no-merge` | — | No verificar merge (útil si ya mergeado) |
514
+ | `-h, --help` | — | Mostrar ayuda |
515
+
516
+ ### Prerequisitos
517
+
518
+ - PR mergeado a base branch
519
+ - Code review aprobado
520
+
521
+ ### Ejemplos
522
+
523
+ ```bash
524
+ # Archivar y eliminar branch
525
+ openspec archive CHANGE-001
526
+
527
+ # Conservar branch
528
+ openspec archive CHANGE-002 --keep-branch
529
+
530
+ # Sin verificar merge (ya mergeado manualmente)
531
+ openspec archive CHANGE-003 --no-merge
532
+ ```
533
+
534
+ ### Acciones Realizadas
535
+
536
+ 1. ✅ Verifica que PR esté mergeado (si gh disponible)
537
+ 2. ✅ Actualiza estado: `testing` → `completed`
538
+ 3. ✅ Añade fecha de completación a proposal.md
539
+ 4. ✅ Marca specs como `implemented`
540
+ 5. ✅ Elimina branch feature (local + remoto)
541
+ 6. ✅ Genera `COMPLETION_REPORT.md`
542
+
543
+ ### Output
544
+
545
+ ```
546
+ ✓ PR verificado como mergeado
547
+ ✓ Propuesta archivada: CHANGE-001
548
+ ✓ Specs actualizadas: 2 archivos (state: implemented)
549
+ ✓ Branch eliminado: feat/CHANGE-001-auth
550
+ ✓ Reporte generado: COMPLETION_REPORT.md
551
+
552
+ Propuesta completada exitosamente
553
+
554
+ Reporte final: openspec/changes/CHANGE-001-auth/COMPLETION_REPORT.md
555
+ ```
556
+
557
+ ### Reporte Generado
558
+
559
+ **`COMPLETION_REPORT.md` incluye:**
560
+ - Fecha de completación
561
+ - Archivos generados
562
+ - Specs actualizadas
563
+ - Commits relacionados
564
+ - Estado final
565
+
566
+ ### Exit Codes
567
+
568
+ - `0` — Éxito
569
+ - `1` — Propuesta no encontrada
570
+ - `1` — PR no mergeado (si verificando)
571
+
572
+ ---
573
+
574
+ ## `report`
575
+
576
+ Genera testing report automáticamente desde resultados de tests (PHPUnit, Jest, etc.).
577
+
578
+ ### Uso
579
+
580
+ ```bash
581
+ openspec report [CHANGE-ID] [opciones]
582
+ ```
583
+
584
+ ### Opciones
585
+
586
+ | Opción | Tipo | Descripción |
587
+ |--------|------|-------------|
588
+ | `--format <fmt>` | string | Formato: markdown\|json\|text (default: markdown) |
589
+ | `--output <file>` | string | Archivo de salida (default: STDOUT) |
590
+ | `-h, --help` | — | Mostrar ayuda |
591
+
592
+ ### Ejemplos
593
+
594
+ ```bash
595
+ # Generar para proyecto
596
+ openspec report
597
+
598
+ # Generar para propuesta específica
599
+ openspec report CHANGE-001
600
+
601
+ # Formato JSON
602
+ openspec report --format json --output report.json
603
+
604
+ # Formato texto plano
605
+ openspec report CHANGE-002 --format text
606
+ ```
607
+
608
+ ### Test Frameworks Detectados
609
+
610
+ - **PHPUnit** — Parse output de `phpunit --testdox --coverage-text`
611
+ - **Jest** — Parse output de `npm test -- --coverage --json`
612
+
613
+ ### Output (markdown)
614
+
615
+ ```markdown
616
+ ## Testing Report
617
+
618
+ | Suite | Tests | Passed | Failed | Coverage |
619
+ |-------|-------|--------|--------|----------|
620
+ | Unit | 45 | 45 | 0 | 91% |
621
+ | Integration | 12 | 12 | 0 | N/A |
622
+ | E2E | 3 | 3 | 0 | N/A |
623
+
624
+ **Fecha:** 2026-02-12 22:45:00
625
+
626
+ ### Resumen
627
+ - Total tests: 60
628
+ - Pasados: 60
629
+ - Fallidos: 0
630
+ - Cobertura: 91%
631
+
632
+ ### CodeRabbit Status
633
+ - [ ] Review pendiente
634
+ - [ ] Cambios requeridos
635
+ - [ ] Aprobado
636
+ ```
637
+
638
+ ### Actualización Automática
639
+
640
+ Si se proporciona `CHANGE-ID`, actualiza automáticamente `tasks.md` con el reporte.
641
+
642
+ ### Exit Codes
643
+
644
+ - `0` — Éxito
645
+ - `1` — Test framework no detectado
646
+ - `1` — Tests fallaron (exit code del framework)
647
+
648
+ ---
649
+
650
+ ## `status`
651
+
652
+ Muestra el estado actual de todas las propuestas (activas o todas).
653
+
654
+ ### Uso
655
+
656
+ ```bash
657
+ openspec status [opciones]
658
+ ```
659
+
660
+ ### Opciones
661
+
662
+ | Opción | Tipo | Descripción |
663
+ |--------|------|-------------|
664
+ | `--all` | — | Mostrar todas (incluidas completadas) |
665
+ | `--state <state>` | string | Filtrar por estado |
666
+ | `--format <fmt>` | string | Formato: table\|json\|list (default: table) |
667
+ | `-h, --help` | — | Mostrar ayuda |
668
+
669
+ ### Estados Disponibles
670
+
671
+ - `draft` — Borrador
672
+ - `review` — En revisión
673
+ - `approved` — Aprobada
674
+ - `in_progress` — En desarrollo
675
+ - `testing` — En testing
676
+ - `completed` — Completada
677
+ - `archived` — Archivada
678
+ - `rejected` — Rechazada
679
+
680
+ ### Ejemplos
681
+
682
+ ```bash
683
+ # Ver propuestas activas
684
+ openspec status
685
+
686
+ # Ver todas (incluidas completadas)
687
+ openspec status --all
688
+
689
+ # Filtrar por estado
690
+ openspec status --state in_progress
691
+
692
+ # Formato JSON
693
+ openspec status --format json
694
+
695
+ # Formato lista
696
+ openspec status --format list
697
+ ```
698
+
699
+ ### Output (table)
700
+
701
+ ```
702
+ ID | Título | Estado | Prioridad | Autor | Fecha
703
+ ------------|--------------------------------|--------------|-----------|--------------|----------
704
+ CHANGE-001 | Autenticación JWT | in_progress | high | SpecLeap Team | 2026-02-12
705
+ CHANGE-002 | Sistema notificaciones | draft | medium | SpecLeap Team | 2026-02-13
706
+ CHANGE-003 | Optimizar queries DB | testing | high | Backend Team | 2026-02-10
707
+
708
+ Total: 3 propuesta(s)
709
+
710
+ in_progress: 1
711
+ draft: 1
712
+ testing: 1
713
+ ```
714
+
715
+ ### Exit Codes
716
+
717
+ - `0` — Éxito (siempre, incluso si 0 propuestas)
718
+
719
+ ---
720
+
721
+ ## 🔧 Variables de Entorno
722
+
723
+ El CLI respeta estas variables (si están definidas):
724
+
725
+ | Variable | Descripción | Default |
726
+ |----------|-------------|---------|
727
+ | `OPENSPEC_AI_CLI` | Forzar AI CLI: oracle\|gh\|ai-cli | auto-detect |
728
+ | `OPENSPEC_MODEL` | Modelo AI por defecto | auto |
729
+ | `OPENSPEC_BASE_BRANCH` | Branch base | develop |
730
+ | `OPENSPEC_COVERAGE_MIN` | Cobertura mínima | 80 |
731
+
732
+ **Ejemplo:**
733
+
734
+ ```bash
735
+ export OPENSPEC_AI_CLI=oracle
736
+ export OPENSPEC_MODEL=anthropic/claude-sonnet-4
737
+ export OPENSPEC_COVERAGE_MIN=90
738
+
739
+ openspec enrich "Como usuario..." # Usará oracle + sonnet-4
740
+ openspec verify CHANGE-001 # Requerirá 90% coverage
741
+ ```
742
+
743
+ ---
744
+
745
+ ## 📊 Exit Codes Comunes
746
+
747
+ | Código | Significado |
748
+ |--------|-------------|
749
+ | `0` | Éxito |
750
+ | `1` | Error general (ver output) |
751
+ | `127` | Comando no encontrado |
752
+
753
+ ---
754
+
755
+ ## 🐛 Troubleshooting
756
+
757
+ ### "Comando no encontrado: openspec"
758
+
759
+ **Causa:** CLI no está en `$PATH`
760
+
761
+ **Solución:**
762
+ ```bash
763
+ export PATH="$PATH:$(pwd)/openspec/cli"
764
+ # O añadir a ~/.zshrc o ~/.bashrc
765
+ ```
766
+
767
+ ### "No se encontró CLI de AI"
768
+
769
+ **Causa:** oracle, gh copilot, u ai-cli no instalados
770
+
771
+ **Solución:**
772
+ ```bash
773
+ # Instalar oracle (recomendado)
774
+ npm install -g @anthropic-ai/oracle
775
+
776
+ # O gh copilot
777
+ gh extension install github/gh-copilot
778
+
779
+ # O ai-cli
780
+ # Ver https://specleap.com
781
+ ```
782
+
783
+ ### "Tests fallaron"
784
+
785
+ **Causa:** Tests no pasan en `openspec verify`
786
+
787
+ **Solución:**
788
+ 1. Ejecutar tests manualmente: `phpunit` o `npm test`
789
+ 2. Corregir código hasta que pasen
790
+ 3. Re-intentar `openspec verify`
791
+
792
+ ### "Branch ya existe"
793
+
794
+ **Causa:** Ya existe `feat/CHANGE-XXX-nombre`
795
+
796
+ **Solución:**
797
+ ```bash
798
+ # Eliminar branch existente
799
+ git branch -D feat/CHANGE-001-nombre
800
+
801
+ # O usar --no-branch si ya estás en el branch correcto
802
+ openspec apply CHANGE-001 --no-branch
803
+ ```
804
+
805
+ ---
806
+
807
+ ## 📚 Ver También
808
+
809
+ - [CLI README](./README.md) — Guía de uso general
810
+ - [Ejemplo Completo](../examples/CHANGE-SAMPLE-001-user-authentication/README.md)
811
+ - [Metodología SDD](../../.continue/rules/01-sdd-methodology.md)
812
+ - [Templates](../templates/)
813
+
814
+ ---
815
+
816
+ **Última actualización:** 2026-02-12
817
+ **Versión CLI:** 1.0.0