create-quiver 0.17.1 → 0.17.2

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 (86) hide show
  1. package/ACTIVE_SLICES.md +43 -0
  2. package/CHANGELOG.md +4 -0
  3. package/auditoria-ux-ui-performance-documentacion.md +705 -0
  4. package/copys-landing-page.md +244 -0
  5. package/docs/TROUBLESHOOTING.md +53 -0
  6. package/docs/reference/commands.md +42 -0
  7. package/docs/workflows/existing-project-ai-quiver-setup.md +552 -0
  8. package/docs/workflows/existing-project.md +21 -0
  9. package/package.json +1 -1
  10. package/specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json +1 -0
  11. package/specs/quiver-v53-reliable-deep-project-analysis/EVIDENCE_REPORT.md +151 -0
  12. package/specs/quiver-v53-reliable-deep-project-analysis/EXECUTION_PLAN.md +50 -0
  13. package/specs/quiver-v53-reliable-deep-project-analysis/SPEC.md +207 -0
  14. package/specs/quiver-v53-reliable-deep-project-analysis/STATUS.md +32 -0
  15. package/specs/quiver-v53-reliable-deep-project-analysis/pr.md +73 -0
  16. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-00-analysis-run-contract/CLOSURE_BRIEF.md +32 -0
  17. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-00-analysis-run-contract/EXECUTION_BRIEF.md +63 -0
  18. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-00-analysis-run-contract/slice.json +70 -0
  19. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-01-provider-fixture-harness/CLOSURE_BRIEF.md +38 -0
  20. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-01-provider-fixture-harness/EXECUTION_BRIEF.md +60 -0
  21. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-01-provider-fixture-harness/slice.json +74 -0
  22. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-02-safe-context-boundary/CLOSURE_BRIEF.md +33 -0
  23. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-02-safe-context-boundary/EXECUTION_BRIEF.md +68 -0
  24. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-02-safe-context-boundary/slice.json +85 -0
  25. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-03-schema-error-grouping/CLOSURE_BRIEF.md +34 -0
  26. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-03-schema-error-grouping/EXECUTION_BRIEF.md +65 -0
  27. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-03-schema-error-grouping/slice.json +80 -0
  28. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-04-safe-repair-layer/CLOSURE_BRIEF.md +34 -0
  29. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-04-safe-repair-layer/EXECUTION_BRIEF.md +63 -0
  30. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-04-safe-repair-layer/slice.json +80 -0
  31. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-05-controlled-retry-layer/CLOSURE_BRIEF.md +34 -0
  32. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-05-controlled-retry-layer/EXECUTION_BRIEF.md +65 -0
  33. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-05-controlled-retry-layer/slice.json +81 -0
  34. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-06-audit-review-transaction/CLOSURE_BRIEF.md +35 -0
  35. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-06-audit-review-transaction/EXECUTION_BRIEF.md +71 -0
  36. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-06-audit-review-transaction/slice.json +88 -0
  37. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-07-semantic-validation-docs/CLOSURE_BRIEF.md +32 -0
  38. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-07-semantic-validation-docs/EXECUTION_BRIEF.md +66 -0
  39. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-07-semantic-validation-docs/slice.json +86 -0
  40. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/CLOSURE_BRIEF.md +34 -0
  41. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/EXECUTION_BRIEF.md +67 -0
  42. package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/slice.json +81 -0
  43. package/specs/quiver-v54-deep-project-analysis-hardening/EVIDENCE_REPORT.md +53 -0
  44. package/specs/quiver-v54-deep-project-analysis-hardening/EXECUTION_PLAN.md +55 -0
  45. package/specs/quiver-v54-deep-project-analysis-hardening/SPEC.md +184 -0
  46. package/specs/quiver-v54-deep-project-analysis-hardening/STATUS.md +34 -0
  47. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-01-contract-regression-harness/CLOSURE_BRIEF.md +10 -0
  48. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-01-contract-regression-harness/EXECUTION_BRIEF.md +54 -0
  49. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-01-contract-regression-harness/slice.json +72 -0
  50. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-02-safe-discovery-sampling/CLOSURE_BRIEF.md +11 -0
  51. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-02-safe-discovery-sampling/EXECUTION_BRIEF.md +53 -0
  52. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-02-safe-discovery-sampling/slice.json +69 -0
  53. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-03-run-lifecycle-cli-io/CLOSURE_BRIEF.md +10 -0
  54. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-03-run-lifecycle-cli-io/EXECUTION_BRIEF.md +53 -0
  55. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-03-run-lifecycle-cli-io/slice.json +69 -0
  56. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-04-artifact-store-redaction/CLOSURE_BRIEF.md +10 -0
  57. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-04-artifact-store-redaction/EXECUTION_BRIEF.md +54 -0
  58. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-04-artifact-store-redaction/slice.json +73 -0
  59. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-05-path-aware-repair-engine/CLOSURE_BRIEF.md +10 -0
  60. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-05-path-aware-repair-engine/EXECUTION_BRIEF.md +57 -0
  61. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-05-path-aware-repair-engine/slice.json +72 -0
  62. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-06-retry-controller/CLOSURE_BRIEF.md +9 -0
  63. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-06-retry-controller/EXECUTION_BRIEF.md +52 -0
  64. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-06-retry-controller/slice.json +70 -0
  65. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-07-final-validation-review-write-gate/CLOSURE_BRIEF.md +10 -0
  66. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-07-final-validation-review-write-gate/EXECUTION_BRIEF.md +57 -0
  67. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-07-final-validation-review-write-gate/slice.json +75 -0
  68. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-08-doctor-agents-guidance/CLOSURE_BRIEF.md +9 -0
  69. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-08-doctor-agents-guidance/EXECUTION_BRIEF.md +51 -0
  70. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-08-doctor-agents-guidance/slice.json +66 -0
  71. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-09-release-smoke-rollback-docs/CLOSURE_BRIEF.md +10 -0
  72. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-09-release-smoke-rollback-docs/EXECUTION_BRIEF.md +54 -0
  73. package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-09-release-smoke-rollback-docs/slice.json +69 -0
  74. package/src/create-quiver/commands/ai.js +353 -70
  75. package/src/create-quiver/index.js +3 -0
  76. package/src/create-quiver/lib/ai/analyze-project-discovery.js +213 -2
  77. package/src/create-quiver/lib/ai/analyze-project-docs.js +3 -1
  78. package/src/create-quiver/lib/ai/analyze-project-parser.js +1 -0
  79. package/src/create-quiver/lib/ai/analyze-project-prompts.js +130 -0
  80. package/src/create-quiver/lib/ai/analyze-project-repair.js +402 -0
  81. package/src/create-quiver/lib/ai/analyze-project-sampling.js +31 -4
  82. package/src/create-quiver/lib/ai/analyze-project-validation.js +168 -0
  83. package/src/create-quiver/lib/ai/artifacts.js +83 -2
  84. package/src/create-quiver/lib/doctor.js +107 -12
  85. package/src/create-quiver/lib/i18n/messages/en.js +5 -0
  86. package/src/create-quiver/lib/i18n/messages/es.js +5 -0
@@ -0,0 +1,705 @@
1
+ # Auditoría del Proyecto Quiver
2
+
3
+ > Fecha de auditoría: 2026-06-01
4
+ > Versión analizada: 0.15.4
5
+ > Tipo de producto: CLI framework (Node.js)
6
+ > Alcance: estructura de repositorio, comandos, documentación, tests, scripts, dependencias
7
+
8
+ ---
9
+
10
+ ## 1. Resumen Ejecutivo
11
+
12
+ Quiver es un framework CLI técnicamente sólido, con una propuesta de valor clara (ordenar el trabajo asistido por IA con WDD + SDD), una arquitectura modular bien pensada, tests extensos (38 archivos en `tests/commands/`, más cobertura en `tests/lib/`), y una documentación considerablemente más madura que la mayoría de proyectos OSS equivalentes.
13
+
14
+ El producto está activamente desarrollado: pasó de v0.10 a v0.15 en menos de dos semanas de mayo de 2026, con dogfooding real y hardening iterativo. Esto es un punto muy favorable.
15
+
16
+ **Principales fortalezas:**
17
+ - Huella de dependencias mínima (solo `@clack/prompts` y `zod`)
18
+ - Documentación multi-idioma (EN/ES) y multi-plataforma (macOS, Linux, Windows)
19
+ - Arquitectura modular con separación clara entre comandos y servicios
20
+ - Smoke tests y CI scripts bien estructurados
21
+ - Flujo de workflow WDD + SDD completo y bien articulado
22
+
23
+ **Principales hallazgos de la auditoría:**
24
+
25
+ 1. **UX/DX del CLI:** Problemas de experiencia detectables en feedback visual, mensajes de error (mezcla de i18n e inglés hardcodeado), y complejidad del namespace que aumenta la curva de aprendizaje.
26
+ 2. **Documentación:** El `CONTRIBUTING.md` es críticamente escaso. El `ROADMAP.md` mezcla información interna con pública. Errores de encoding en `CLI_UX_GUIDE.md`. Falta `ARCHITECTURE.md`.
27
+ 3. **Performance:** Arquitectura síncrona en toda la capa de I/O. El archivo `commands/ai.js` de 3438 líneas no impacta runtime pero sí el tiempo de carga del módulo.
28
+ 4. **Automatización:** Sin CI/CD declarativo (GitHub Actions/similar). El changelog y la referencia de comandos son manuales.
29
+ 5. **Modernización:** Parser manual de 1100+ líneas en lugar de Commander.js/yargs. Sin TypeScript. Sin shell completion scripts.
30
+
31
+ ---
32
+
33
+ ## 2. Problemas Detectados de UX/UI
34
+
35
+ > Nota: Quiver es un CLI, por lo que "UX/UI" se refiere a experiencia en terminal, legibilidad de output, mensajes, flujos y documentación de usuario.
36
+
37
+ ---
38
+
39
+ ### 2.1 Mensajes de error no localizados en múltiples comandos
40
+
41
+ **Problema detectado:**
42
+ Varios comandos tienen una función `formatError()` local que emite strings hardcodeados en inglés, ignorando el sistema i18n del proyecto. Afecta a: `commands/config.js`, `commands/evidence.js`, `commands/spec.js`, `commands/graph.js`, `commands/prepare.js` (en `buildNextSteps()`), y `commands/ai.js`.
43
+
44
+ **Archivo relacionado:** `src/create-quiver/commands/config.js`, `evidence.js`, `spec.js`, `graph.js`, `prepare.js`, `ai.js`
45
+
46
+ **Impacto:** Un usuario que configura `--lang es` recibe mensajes de error en inglés. Rompe la promesa de soporte completo EN/ES anunciada en el README y la `CLI_UX_GUIDE.md`.
47
+
48
+ **Recomendación:** Auditar todos los `formatError()` locales y reemplazarlos con `createTranslator(options.language).t(key)` usando keys del catálogo i18n. Agregar un test de contrato que verifique que ningún mensaje de error de nivel de usuario quede fuera del sistema i18n.
49
+
50
+ **Prioridad:** Alta
51
+
52
+ ---
53
+
54
+ ### 2.2 Namespace plano con 8 comandos de dominio slice/handoff en el root
55
+
56
+ **Problema detectado:**
57
+ Los comandos `start-slice`, `check-slice`, `check-pr`, `check-scope`, `cleanup-slice`, `refresh-active-slices`, `check-handoff` y `new-handoff` viven en el namespace root junto a comandos de nivel completamente distinto como `init`, `analyze` o `version`. Ejecutar `quiver --help` muestra 23+ entradas sin jerarquía clara.
58
+
59
+ **Archivo relacionado:** `src/create-quiver/index.js` (SUPPORTED_COMMAND_MODES)
60
+
61
+ **Impacto:** Alta carga cognitiva para usuarios nuevos. Percepción del CLI como colección de scripts ad-hoc en lugar de framework estructurado. El TAB completion (cuando esté disponible) será difícil de usar.
62
+
63
+ **Recomendación:** Introducir namespaces `slice` y `handoff` (ya están definidos como canónicos en `docs/CLI_UX_GUIDE.md` sección "Namespaces y aliases") con aliases de compatibilidad deprecated para los comandos legacy. El `CLI_UX_GUIDE.md` ya documenta este contrato — falta completar la implementación.
64
+
65
+ **Prioridad:** Alta
66
+
67
+ ---
68
+
69
+ ### 2.3 Ausencia de feedback visual de progreso en `init` y `analyze`
70
+
71
+ **Problema detectado:**
72
+ Los comandos `init` (que escribe múltiples archivos y puede llamar a npm install) y `analyze` (que escanea todo el proyecto) no muestran progreso durante la ejecución. El usuario ve un cursor parpadeando sin saber si el proceso está funcionando.
73
+
74
+ **Archivo relacionado:** `src/create-quiver/index.js` (runAnalyze, lógica de init)
75
+
76
+ **Impacto:** Percepción de que el CLI no responde. Peor en proyectos grandes o conexiones lentas donde npm install puede tardar varios segundos.
77
+
78
+ **Recomendación:** Agregar spinner de `@clack/prompts` (ya está como dependencia) durante las fases lentas. Al finalizar, mostrar un resumen: "Creados N archivos. Próximo paso: `quiver flow`."
79
+
80
+ **Prioridad:** Alta
81
+
82
+ ---
83
+
84
+ ### 2.4 `--auto-start` en `next` mezcla consulta con acción sin advertencia clara
85
+
86
+ **Problema detectado:**
87
+ El flag `--auto-start` convierte un comando de solo lectura (`next`) en un comando que ejecuta `start-slice`. La confirmación usa un `[y/N]` de readline propio que no pasa por el sistema i18n ni por `lib/cli/selectors.js`.
88
+
89
+ **Archivo relacionado:** `src/create-quiver/commands/next.js` (líneas 85-104)
90
+
91
+ **Impacto:** Sorpresa para el usuario que no espera que un comando de consulta ejecute acciones. La confirmación en inglés fijo rompe la experiencia en modo `--lang es`.
92
+
93
+ **Recomendación:** Mover `promptConfirm` para que use `promptText` de `lib/cli/selectors.js`. Documentar claramente en el help que `--auto-start` ejecuta `slice start` tras confirmación.
94
+
95
+ **Prioridad:** Media
96
+
97
+ ---
98
+
99
+ ### 2.5 `--section` en `dashboard` sin validación ni lista de valores válidos en el help
100
+
101
+ **Problema detectado:**
102
+ El flag `--section <name>` acepta cualquier string. Si se pasa un valor inválido, el comportamiento no está documentado. El help genérico dice "Show one human dashboard section" sin listar las secciones disponibles. La referencia de comandos sí las lista (`specs`, `slices`, `blockers`, `warnings`, `agents`, `approvals`, `runs`, `active-slice`, `next-steps`) pero esa información no está en el help inline.
103
+
104
+ **Archivo relacionado:** `src/create-quiver/commands/dashboard.js`
105
+
106
+ **Impacto:** Experiencia confusa cuando el usuario prueba un nombre de sección incorrecto.
107
+
108
+ **Recomendación:** Agregar validación de `--section` con mensaje accionable: "Sección desconocida 'X'. Secciones disponibles: specs, slices, blockers, warnings, agents, approvals, runs, active-slice, next-steps."
109
+
110
+ **Prioridad:** Media
111
+
112
+ ---
113
+
114
+ ### 2.6 `plan` no avisa cuando faltan `estimated_hours` en los slices
115
+
116
+ **Problema detectado:**
117
+ La ruta crítica se calcula a partir de `estimated_hours` en `slice.json`. Si ese campo falta o es 0, la ruta crítica aparece como `-` sin ninguna explicación de por qué.
118
+
119
+ **Archivo relacionado:** `src/create-quiver/commands/plan.js` (línea 8, `toHourCount`)
120
+
121
+ **Impacto:** El usuario no sabe que puede mejorar la utilidad del comando completando el campo `estimated_hours`.
122
+
123
+ **Recomendación:** Si ningún slice tiene `estimated_hours > 0`, agregar al output: "Nota: agregá `estimated_hours` a tus archivos `slice.json` para activar el cálculo de ruta crítica."
124
+
125
+ **Prioridad:** Baja
126
+
127
+ ---
128
+
129
+ ### 2.7 `graph --level <n>` devuelve output vacío sin mensaje explicativo
130
+
131
+ **Problema detectado:**
132
+ Si `--level` filtra a un nivel sin slices (por ejemplo, el nivel solicitado excede la profundidad del grafo), el output es vacío sin ningún mensaje.
133
+
134
+ **Archivo relacionado:** `src/create-quiver/commands/graph.js`
135
+
136
+ **Impacto:** El usuario no sabe si el comando funcionó o si hay un problema.
137
+
138
+ **Recomendación:** Si el nivel filtrado no contiene slices, mostrar: "No hay slices en el nivel N. Ejecutá `graph` sin `--level` para ver todos los niveles."
139
+
140
+ **Prioridad:** Baja
141
+
142
+ ---
143
+
144
+ ### 2.8 Relación entre `--json` y `--format` en `graph` no está documentada
145
+
146
+ **Problema detectado:**
147
+ `--json` emite la estructura de datos del grafo. `--format tree|mermaid|dot` cambia el renderizado human-readable. Si se combinan `--json --format mermaid`, el resultado no está documentado y podría confundir.
148
+
149
+ **Archivo relacionado:** `src/create-quiver/commands/graph.js`
150
+
151
+ **Impacto:** Comportamiento impredecible para usuarios avanzados.
152
+
153
+ **Recomendación:** Documentar explícitamente en el help: "`--json` emite datos estructurados independientemente de `--format`. Los dos flags son ortogonales."
154
+
155
+ **Prioridad:** Baja
156
+
157
+ ---
158
+
159
+ ### 2.9 `migrate` puede modificar archivos sin confirmación previa
160
+
161
+ **Problema detectado:**
162
+ `migrate` sin `--dry-run` aplica cambios a archivos existentes sin mostrar una advertencia previa. No exige revisión antes de ejecutar operaciones potencialmente destructivas.
163
+
164
+ **Archivo relacionado:** `src/create-quiver/index.js` (runMigrate / updateStateForMigrate)
165
+
166
+ **Impacto:** Riesgo de pérdida de datos o modificaciones inesperadas en proyectos con estructura legacy.
167
+
168
+ **Recomendación:** Mostrar advertencia antes de ejecutar: "Esto modificará archivos existentes. Ejecutá con `--dry-run` primero para previsualizar." Idealmente, requerir confirmación explícita en TTY o `--yes` en modo no interactivo.
169
+
170
+ **Prioridad:** Alta
171
+
172
+ ---
173
+
174
+ ### 2.10 `demo create spec-viewer` tiene tres niveles de profundidad para un único caso
175
+
176
+ **Problema detectado:**
177
+ La estructura `demo create spec-viewer` tiene tres niveles de anidamiento para un único caso de uso con un único valor posible (`spec-viewer`).
178
+
179
+ **Archivo relacionado:** `src/create-quiver/commands/demo.js`
180
+
181
+ **Impacto:** Fricción innecesaria. El usuario debe recordar exactamente los tres niveles del comando.
182
+
183
+ **Recomendación:** Simplificar a `demo spec-viewer [--dry-run]`. El nivel `create` puede mantenerse como alias de compatibilidad. La `README_FOR_AI.md` ya documenta `demo spec-viewer` como la forma canónica.
184
+
185
+ **Prioridad:** Baja
186
+
187
+ ---
188
+
189
+ ## 3. Oportunidades de Mejora UX/UI
190
+
191
+ ### 3.1 Agregar un comando `status` de nivel superior
192
+
193
+ La `docs/reference/commands.md` ya documenta `status` y `README_FOR_AI.md` lo menciona como canónico. Si el comando ya existe, hay que asegurarse de que esté en `SUPPORTED_COMMAND_MODES` y en el `--help`. Si no está completamente implementado, completarlo. Un `quiver status` que muestra el estado más relevante en contexto (slice activo si hay uno, o el próximo paso del flow si no) sería el análogo CLI de `git status`: el comando que cualquier usuario ejecuta cuando no sabe qué hacer.
194
+
195
+ ### 3.2 Resumen post-ejecución en `init`
196
+
197
+ Al finalizar `init`, mostrar un resumen accionable: "Archivos creados: N. Próximo paso recomendado: `quiver flow`." Esto reduce la desorientación de usuarios nuevos que no saben qué hacer después de inicializar.
198
+
199
+ ### 3.3 Agregar campo `next_command` al output JSON de `flow`
200
+
201
+ El comando `flow` es el punto de entrada de orientación para automatizaciones y agentes. Agregar un campo `next_command` con el comando exacto a ejecutar (string) permite que un script o agente lo ejecute directamente sin parsear texto humano.
202
+
203
+ ### 3.4 Expandir `evidence` con `list` y `show`
204
+
205
+ `evidence run` genera archivos de evidencia pero no hay forma de listarlos o visualizarlos desde el CLI. Agregar `evidence list` (lista los archivos generados en `.quiver/evidence/`) y `evidence show <path>` (muestra el contenido de un archivo de evidencia) cierra el loop del flujo de validación. La `README_FOR_AI.md` ya los documenta como comandos canónicos.
206
+
207
+ ### 3.5 Detectar rama principal automáticamente en `spec close`
208
+
209
+ En lugar de defaultear a `main` para `--base <branch>`, detectar la rama principal del remote via `git remote show origin`. Muchos proyectos usan `master`, `develop` u otras ramas base.
210
+
211
+ ### 3.6 Indicador de ruta crítica en la tabla de `plan`
212
+
213
+ Agregar una columna o marcador visual (por ejemplo `*`) en la tabla de `plan` para identificar qué slices están en la ruta crítica. Actualmente la ruta crítica solo aparece como una línea de texto al inicio, desconectada de la tabla.
214
+
215
+ ### 3.7 Autocompletado de shell (bash/zsh/fish)
216
+
217
+ Generar scripts de completion para bash, zsh y fish mejoraría significativamente la ergonomía del CLI para usuarios avanzados. Commander.js y yargs los generan automáticamente. En el parser manual actual, se podría agregar un comando `completion` que emite el script de shell correspondiente.
218
+
219
+ ### 3.8 Consistencia de verbos en mensajes de confirmación
220
+
221
+ Los mensajes de confirmación que usan readline manual (`[y/N]`) deberían pasar por `lib/cli/selectors.js` para garantizar consistencia visual, localización y que respeten `--no-color`.
222
+
223
+ ---
224
+
225
+ ## 4. Oportunidades de Modernización
226
+
227
+ ### 4.1 Migración a Commander.js o yargs
228
+
229
+ **Estado actual:** Parser manual de 1100+ líneas en `src/create-quiver/index.js`.
230
+
231
+ **Por qué modernizar:**
232
+ - Definición declarativa de comandos y flags (en lugar de condicionales manuales)
233
+ - Help automático y contextual por subcomando
234
+ - Autocompletado de shell generado automáticamente
235
+ - Validación de tipos de argumentos built-in
236
+ - Menor superficie de bugs de parsing
237
+
238
+ **Costo estimado:** Alto (migración completa). Puede hacerse iterativamente: Commander en comandos nuevos, aliases para los existentes.
239
+
240
+ ---
241
+
242
+ ### 4.2 TypeScript para el código fuente
243
+
244
+ **Estado actual:** JavaScript puro sin tipos.
245
+
246
+ **Por qué modernizar:**
247
+ - Mejora la experiencia de desarrollo en IDEs
248
+ - Detecta errores de tipos en tiempo de compilación (especialmente importante en un proyecto con muchos módulos interconectados)
249
+ - Facilita contribuciones externas (autocompletado e inferencia)
250
+
251
+ **Costo estimado:** Alto. Puede comenzarse con los módulos `lib/` más críticos y expandirse incrementalmente.
252
+
253
+ ---
254
+
255
+ ### 4.3 JSON Schema publicado para `slice.json`
256
+
257
+ **Estado actual:** `slice.json` tiene una estructura bien definida internamente pero no hay un schema JSON publicado.
258
+
259
+ **Por qué modernizar:**
260
+ - Validación en IDEs con Language Server Protocol (VSCode, JetBrains)
261
+ - Reducción de errores de edición manual
262
+ - Documentación implícita de la estructura
263
+
264
+ **Costo:** Bajo. Generar el schema a partir de los objetos Zod existentes en el código.
265
+
266
+ ---
267
+
268
+ ### 4.4 GitHub Actions para CI declarativo
269
+
270
+ **Estado actual:** Los tests y smokes se ejecutan mediante scripts bash en `scripts/ci/`. No hay configuración de CI declarativa visible en el repositorio (no se encontró `.github/workflows/`).
271
+
272
+ **Por qué modernizar:**
273
+ - CI automático en cada PR sin depender de que el mantenedor lo ejecute manualmente
274
+ - Matrix de SO (macOS, Linux, Windows) automatizada
275
+ - Integración con status checks de GitHub
276
+ - Reducción de errores de regresión por cambios no testeados
277
+
278
+ **Costo:** Medio. Traducir los scripts existentes de `scripts/ci/` a un workflow de GitHub Actions.
279
+
280
+ ---
281
+
282
+ ### 4.5 Scripts `package.json` mixtos (bash y Node)
283
+
284
+ **Estado actual:** Los scripts de `package.json` mezclan invocaciones bash (`bash tools/scripts/check-slice-readiness.sh`) con comandos Node (`node bin/create-quiver.js plan`). Los scripts bash no funcionan nativamente en Windows PowerShell.
285
+
286
+ **Por qué modernizar:** Usar el CLI Node para todos los scripts del `package.json` mejora la portabilidad cross-platform, que es uno de los objetivos declarados del proyecto.
287
+
288
+ **Costo:** Bajo. Reemplazar scripts bash con sus equivalentes `npx create-quiver <command>`.
289
+
290
+ ---
291
+
292
+ ### 4.6 Fragmentación de `commands/ai.js`
293
+
294
+ **Estado actual:** Archivo de 3438 líneas con 23 subcomandos.
295
+
296
+ **Por qué modernizar:** Impacta directamente el tiempo de require y la mantenibilidad. Fragmentar en módulos por dominio (`lifecycle.js`, `planner.js`, `agents.js`, `execution.js`, `inspection.js`) mantiene el mismo comportamiento externo con mejor estructura interna.
297
+
298
+ **Costo:** Medio. Refactor sin cambios de API.
299
+
300
+ ---
301
+
302
+ ## 5. Oportunidades de Automatización
303
+
304
+ ### 5.1 Generación automática de `docs/reference/commands.md`
305
+
306
+ **Estado actual:** La referencia de comandos se mantiene manualmente y puede quedar desactualizada respecto a la implementación real.
307
+
308
+ **Propuesta:** Crear un script que genere `docs/reference/commands.md` a partir del output de `quiver --help` (o de una fuente declarativa en el código). Ejecutar como parte del proceso de release.
309
+
310
+ **Valor:** Garantiza que la documentación siempre refleje la implementación real.
311
+
312
+ ---
313
+
314
+ ### 5.2 Generación automática del `CHANGELOG.md`
315
+
316
+ **Estado actual:** El changelog se mantiene manualmente. La sección `[Unreleased]` acumula cambios sin formatear.
317
+
318
+ **Propuesta:** Adoptar [Conventional Commits](https://www.conventionalcommits.org/) y usar `standard-version` o `release-please` para generar automáticamente el changelog desde los mensajes de commit.
319
+
320
+ **Valor:** Reduce el esfuerzo manual de releases y garantiza consistencia en el formato.
321
+
322
+ ---
323
+
324
+ ### 5.3 CI automático en PRs con GitHub Actions
325
+
326
+ **Estado actual:** Los smoke tests y la suite de tests se ejecutan manualmente.
327
+
328
+ **Propuesta:** Workflow de GitHub Actions que ejecute automáticamente `node --test tests/**/*.test.js`, `npm run smoke:create-quiver`, `npm run smoke:doctor-fixtures` y `npm run smoke:guided-workflow` en cada PR, con matriz de SO (ubuntu, macos, windows).
329
+
330
+ **Valor:** Detecta regresiones antes de merge sin intervención manual.
331
+
332
+ ---
333
+
334
+ ### 5.4 Lint de documentación (links rotos, acentos faltantes)
335
+
336
+ **Estado actual:** El `CLI_UX_GUIDE.md` tiene palabras sin acentos ("estandar", "Ningun", "solo", "canonico"). No hay validación automática de links en la documentación.
337
+
338
+ **Propuesta:** Agregar `markdownlint` y `markdown-link-check` como devDependencies. Ejecutar en CI en cada PR.
339
+
340
+ **Valor:** Previene regresiones de calidad en documentación.
341
+
342
+ ---
343
+
344
+ ### 5.5 Publicación automática a npm en releases
345
+
346
+ **Estado actual:** El proceso de release usa `scripts/release-quiver.sh`. No está claro si el publish a npm es manual o automatizado.
347
+
348
+ **Propuesta:** Agregar un workflow de GitHub Actions que publique automáticamente a npm cuando se crea un tag `v*.*.*` en el repositorio.
349
+
350
+ **Valor:** Elimina pasos manuales propensos a errores en el proceso de release.
351
+
352
+ ---
353
+
354
+ ### 5.6 Verificación de versión mínima de Node.js
355
+
356
+ **Estado actual:** El `package.json` no declara `engines` con la versión mínima de Node.js requerida.
357
+
358
+ **Propuesta:** Agregar `"engines": { "node": ">=18.0.0" }` (o la versión mínima que efectivamente se soporta) y validarlo en CI.
359
+
360
+ **Valor:** Evita reportes de bugs por incompatibilidades de runtime.
361
+
362
+ ---
363
+
364
+ ### 5.7 Smoke test de instalación desde npm pack
365
+
366
+ **Estado actual:** `npm run smoke:tiered-pack` existe pero no está claro si se ejecuta en CI automáticamente.
367
+
368
+ **Propuesta:** Incluir el smoke de `npm pack --dry-run` y validación del tarball en el workflow de CI para cada release candidate.
369
+
370
+ **Valor:** Garantiza que el paquete publicado en npm es válido antes de publicarlo.
371
+
372
+ ---
373
+
374
+ ## 6. Problemas de Performance
375
+
376
+ ### 6.1 I/O síncrono en toda la capa de lectura de archivos
377
+
378
+ **Problema detectado:** Todos los módulos usan `fs.readFileSync`, `fs.readdirSync` y similares. En proyectos con muchos specs y slices, esto puede acumular latencia sincrónica.
379
+
380
+ **Posible causa:** Decisión de simplicidad en un CLI que no necesita concurrencia. Sin embargo, comandos como `analyze` o `doctor` hacen múltiples lecturas secuenciales.
381
+
382
+ **Impacto:** En proyectos pequeños, imperceptible. En monorepos con decenas de specs y cientos de slices, el tiempo de respuesta puede crecer linealmente.
383
+
384
+ **Recomendación:** Para los comandos de lectura masiva (`analyze`, `plan`, `graph`), evaluar el uso de `fs.promises` con `Promise.all()` para lecturas paralelas donde el orden no importe.
385
+
386
+ **Prioridad:** Baja (no es un problema actualmente, pero conviene prevenir)
387
+
388
+ ---
389
+
390
+ ### 6.2 Carga completa de `commands/ai.js` en cada invocación del CLI
391
+
392
+ **Problema detectado:** El archivo `commands/ai.js` tiene 3438 líneas y requiere (via `require`) toda su cadena de dependencias en cada invocación del CLI, aunque el usuario esté ejecutando `quiver flow` o `quiver plan`.
393
+
394
+ **Posible causa:** Node.js carga y parsea todos los `require()` en el entrypoint de forma síncrona.
395
+
396
+ **Impacto:** Pequeño overhead de startup. En Node.js moderno es menos de 100ms en la mayoría de casos, pero es un overhead evitable.
397
+
398
+ **Recomendación:** Lazy-require de `commands/ai.js` y otros módulos pesados. Cargarlos solo cuando el comando correspondiente sea el que se invoca.
399
+
400
+ **Prioridad:** Baja
401
+
402
+ ---
403
+
404
+ ### 6.3 `evidence run` usa `spawnSync` (bloqueante)
405
+
406
+ **Problema detectado:** La ejecución de comandos en `evidence run` usa `spawnSync`, que bloquea el event loop durante toda la ejecución del comando.
407
+
408
+ **Posible causa:** Simplicidad de implementación para capturar output completo.
409
+
410
+ **Impacto:** Para comandos de evidencia cortos (segundos), el impacto es mínimo. Para comandos largos (suites de tests de varios minutos), el proceso CLI queda bloqueado sin posibilidad de manejar señales.
411
+
412
+ **Recomendación:** Migrar a `spawn` async con acumulación de output en streams. Agregar manejo de `SIGINT` para poder interrumpir la ejecución.
413
+
414
+ **Prioridad:** Media
415
+
416
+ ---
417
+
418
+ ### 6.4 Escaneo de proyecto sin límite de profundidad declarado
419
+
420
+ **Problema detectado:** El análisis del proyecto en `analyze` usa lectura recursiva de directorios. Si no hay límite de profundidad configurado, en monorepos muy grandes puede leer miles de archivos innecesarios.
421
+
422
+ **Posible causa:** No se pudo verificar el comportamiento exacto de `lib/project-scan.js` — es un supuesto basado en el patrón observado en `commands/spec.js` (`findSliceJsonFiles`).
423
+
424
+ **Impacto:** Potencial lentitud en el primer `analyze` de proyectos grandes.
425
+
426
+ **Recomendación:** Verificar si `lib/project-scan.js` respeta archivos `.gitignore` y límites de profundidad. Si no, agregar soporte para ignorar `node_modules`, `.git`, `dist`, y otras carpetas pesadas.
427
+
428
+ **Prioridad:** Media
429
+
430
+ ---
431
+
432
+ ## 7. Mejoras de Performance Recomendadas
433
+
434
+ ### 7.1 Implementar lazy-require para módulos pesados
435
+
436
+ ```js
437
+ // En lugar de en el top del archivo:
438
+ const { runXxx } = require('./commands/ai');
439
+
440
+ // Dentro del bloque que lo necesita:
441
+ if (mode === 'ai') {
442
+ const { runXxx } = require('./commands/ai');
443
+ // ...
444
+ }
445
+ ```
446
+
447
+ Esto reduce el tiempo de startup cuando el usuario ejecuta comandos simples como `quiver flow` o `quiver version`.
448
+
449
+ ### 7.2 Caché de estado de proyecto durante la sesión
450
+
451
+ Comandos como `flow`, `dashboard`, `plan` y `next` todos llaman a `resolveProjectState()`. Si se ejecutan en el mismo proceso (por ejemplo, en automatizaciones que encadenan comandos), no hay caché entre llamadas. Implementar un módulo de caché en memoria con TTL corto (1-2 segundos) reduciría el I/O redundante.
452
+
453
+ ### 7.3 Agregar campo `engines` en `package.json`
454
+
455
+ ```json
456
+ "engines": {
457
+ "node": ">=18.0.0"
458
+ }
459
+ ```
460
+
461
+ Permite que npm advierta al usuario si está usando una versión de Node.js incompatible, evitando bugs de runtime difíciles de diagnosticar.
462
+
463
+ ### 7.4 Lazy-load de dependencias opcionales
464
+
465
+ `@clack/prompts` solo se necesita en comandos interactivos (TTY). Si el CLI detecta que está en modo JSON o no-TTY, no necesita cargar esa dependencia. Cargarla lazy reduce el overhead de startup en pipelines de CI.
466
+
467
+ ### 7.5 Paralelización de lecturas en `analyze`
468
+
469
+ En `analyze`, las lecturas de archivos de configuración, detección de frameworks y generación de mapa de proyecto pueden paralelizarse con `Promise.all()`. Esto puede reducir el tiempo de análisis en proyectos medianos de 2-4 segundos a menos de 1 segundo.
470
+
471
+ ---
472
+
473
+ ## 8. Errores o Debilidades en la Documentación
474
+
475
+ ### 8.1 `CONTRIBUTING.md` críticamente escaso
476
+
477
+ **Problema:** El `CONTRIBUTING.md` tiene 16 líneas totales. Describe el proceso a muy alto nivel pero omite completamente:
478
+ - Cómo configurar el entorno de desarrollo
479
+ - Cómo ejecutar los tests
480
+ - Guías de estilo de código
481
+ - Proceso de revisión de PRs
482
+ - Convenciones de nombres de branches
483
+ - Cómo reportar bugs vs. proponer features
484
+
485
+ **Impacto:** Un contribuidor externo no puede empezar sin leer el README y deducir los pasos de desarrollo.
486
+
487
+ ---
488
+
489
+ ### 8.2 Errores de encoding en `CLI_UX_GUIDE.md`
490
+
491
+ **Problema:** El archivo `docs/CLI_UX_GUIDE.md` tiene múltiples palabras sin acentos:
492
+ - "estandar" → "estándar"
493
+ - "Ningun" → "Ningún"
494
+ - "solo" → "sólo" (en contexto de restricción)
495
+ - "canonico" → "canónico"
496
+ - "Mas" → "Más"
497
+ - "Tambien" → "También"
498
+
499
+ **Archivo relacionado:** `docs/CLI_UX_GUIDE.md`
500
+
501
+ **Impacto:** Reduce la percepción de calidad y profesionalismo del proyecto, especialmente en un CLI que tiene soporte oficial de español.
502
+
503
+ ---
504
+
505
+ ### 8.3 `ROADMAP.md` mezcla información interna con pública
506
+
507
+ **Problema:** El ROADMAP usa referencias internas de specs (`v27`, `v28`, etc.), menciona entradas `[Unreleased]` del changelog, y tiene secciones de "Post-Checkpoint Plan" con notas internas que no aportan valor a un contribuidor o usuario externo.
508
+
509
+ **Impacto:** Un usuario externo que lee el ROADMAP no puede distinguir qué está planeado, qué ya está implementado y qué es una nota interna de mantenimiento.
510
+
511
+ ---
512
+
513
+ ### 8.4 `SECURITY.md` sin método de contacto
514
+
515
+ **Problema:** La política de seguridad dice "Report the issue privately to the maintainers" sin especificar un email, formulario o proceso concreto.
516
+
517
+ **Archivo relacionado:** `SECURITY.md`
518
+
519
+ **Impacto:** Un investigador de seguridad que encuentra una vulnerabilidad no tiene forma clara de reportarla de manera responsable.
520
+
521
+ ---
522
+
523
+ ### 8.5 `[Unreleased]` en `CHANGELOG.md` sin formalizar
524
+
525
+ **Problema:** La sección `[Unreleased]` del changelog describe cambios de v30 y v31 (que el ROADMAP marca como "release-ready, pending package publication") pero no tienen fecha ni número de versión final asignado.
526
+
527
+ **Impacto:** Un usuario que lee el changelog no puede saber qué versión del CLI incluye los cambios de esa sección.
528
+
529
+ ---
530
+
531
+ ### 8.6 Falta `ARCHITECTURE.md`
532
+
533
+ **Problema:** No existe un documento que explique la arquitectura del proyecto: estructura de módulos, responsabilidades de cada capa (`commands/`, `lib/`, `lib/ai/`, `lib/cli/`, `lib/i18n/`, `lib/renderers/`), flujo de datos, y decisiones de diseño.
534
+
535
+ **Impacto:** Un nuevo contribuidor debe leer el código fuente completo para entender cómo encajan las piezas.
536
+
537
+ ---
538
+
539
+ ### 8.7 Referencia a "v47" en `CLI_UX_GUIDE.md` y `reference/commands.md`
540
+
541
+ **Problema:** El `CLI_UX_GUIDE.md` menciona "En v47 la superficie canónica de configuración sigue siendo `config language show|set`". El proyecto está en v0.15. "v47" es un número de spec interno que no tiene ningún significado para un lector externo.
542
+
543
+ **Archivo relacionado:** `docs/CLI_UX_GUIDE.md`, `docs/reference/commands.md`
544
+
545
+ **Impacto:** Confusión sobre la versión a la que aplica la documentación.
546
+
547
+ ---
548
+
549
+ ### 8.8 `separator.md` sin propósito documentado
550
+
551
+ **Problema:** Existe un archivo `separator.md` en la raíz del proyecto sin contenido explicativo de su propósito. No está referenciado en el README ni en la guía de contribución.
552
+
553
+ **Impacto:** Confusión para contribuidores que no saben si es un archivo de configuración, un artefacto de proceso o un error.
554
+
555
+ ---
556
+
557
+ ### 8.9 Archivos `.template` en la raíz del repositorio sin explicación
558
+
559
+ **Problema:** Archivos como `TEMPLATE.md`, `AGENTS.md.template`, `AGENTS.md.es.template`, `package.template.json` en la raíz no están explicados en el README ni en el `CONTRIBUTING.md`.
560
+
561
+ **Impacto:** Un contribuidor no sabe qué son estos archivos, si debe editarlos o si son generados automáticamente.
562
+
563
+ ---
564
+
565
+ ### 8.10 `docs/TROUBLESHOOTING.md.template` existe como template pero la instancia del proyecto vive en `docs/TROUBLESHOOTING.md`
566
+
567
+ **Problema:** Existe tanto `docs/TROUBLESHOOTING.md.template` (template para proyectos generados por Quiver) como `docs/TROUBLESHOOTING.md` (para el propio repositorio de Quiver). La distinción no está clara sin leer los archivos.
568
+
569
+ ---
570
+
571
+ ### 8.11 Ejemplos en `examples/` sin enlace prominente desde el README
572
+
573
+ **Problema:** El directorio `examples/01-basic-slice/` existe pero no está enlazado ni mencionado en el README principal. Es un recurso valioso para usuarios nuevos que no tiene visibilidad.
574
+
575
+ ---
576
+
577
+ ## 9. Oportunidades de Mejora en Documentación
578
+
579
+ ### 9.1 Expandir `CONTRIBUTING.md`
580
+
581
+ Agregar como mínimo:
582
+ - **Setup de desarrollo:** `git clone`, `npm install`, `node bin/create-quiver.js --help`
583
+ - **Cómo ejecutar tests:** `node --test tests/**/*.test.js`
584
+ - **Cómo ejecutar smoke tests:** los 4 scripts disponibles
585
+ - **Convenciones de commits:** si hay convención (Conventional Commits u otra)
586
+ - **Proceso de PR:** qué se espera en el body, qué checks deben pasar
587
+ - **Arquitectura del proyecto:** referencia a `ARCHITECTURE.md` (a crear)
588
+
589
+ ### 9.2 Crear `ARCHITECTURE.md`
590
+
591
+ Un documento de 1-2 páginas que explique:
592
+ - Entrypoints (`bin/`, `src/create-quiver/index.js`)
593
+ - Responsabilidades de `commands/` vs `lib/`
594
+ - Subdirectorios clave: `lib/ai/`, `lib/cli/`, `lib/i18n/`, `lib/renderers/`
595
+ - Cómo se registra un nuevo comando
596
+ - Cómo funciona el sistema i18n
597
+ - Cómo se ejecutan los tests
598
+
599
+ ### 9.3 Corregir acentos en `CLI_UX_GUIDE.md`
600
+
601
+ Pasada de revisión para corregir todos los acentos faltantes. Agregar un linter de markdown (`markdownlint`) para prevenir regresiones.
602
+
603
+ ### 9.4 Simplificar `ROADMAP.md` para audiencia pública
604
+
605
+ Separar en dos secciones:
606
+ - **Público:** qué funcionalidades están planeadas, en qué orden, sin referencias a specs internas
607
+ - **Interno:** (o mover a un archivo separado) referencias a specs v27-v31, notas de dogfooding, etc.
608
+
609
+ ### 9.5 Agregar contacto a `SECURITY.md`
610
+
611
+ Agregar un email de contacto o un formulario (por ejemplo, un issue privado de GitHub con la plantilla de seguridad). GitHub tiene soporte nativo para reportes de vulnerabilidades privados vía `Settings > Code security > Private vulnerability reporting`.
612
+
613
+ ### 9.6 Enlazar `examples/` desde el README
614
+
615
+ Agregar una sección "Ejemplos" en el README que enlace al directorio `examples/01-basic-slice/` y explique brevemente qué muestra cada ejemplo.
616
+
617
+ ### 9.7 Eliminar referencias a versiones internas de specs en documentación pública
618
+
619
+ Reemplazar referencias como "En v47" por "En la versión actual" o simplemente omitirlas. Los números de spec son artefactos de proceso interno sin significado externo.
620
+
621
+ ### 9.8 Documentar el propósito de archivos en la raíz
622
+
623
+ En el `CONTRIBUTING.md` o en un `README` de la raíz, explicar para qué sirven `separator.md`, `TEMPLATE.md`, `package.template.json`, y los archivos `.template`.
624
+
625
+ ### 9.9 Agregar campo `engines` al `package.json` y documentarlo
626
+
627
+ ```json
628
+ "engines": {
629
+ "node": ">=18.0.0"
630
+ }
631
+ ```
632
+
633
+ Y documentar en el README / guías de instalación qué versión de Node.js es la mínima requerida.
634
+
635
+ ### 9.10 Formalizar la sección `[Unreleased]` del CHANGELOG antes de cada release
636
+
637
+ Agregar el proceso de formalización del changelog como un paso documentado en `scripts/release-quiver.sh` o en el CONTRIBUTING.
638
+
639
+ ---
640
+
641
+ ## 10. Priorización General
642
+
643
+ | Prioridad | Área | Hallazgo | Acción Recomendada | Impacto Esperado |
644
+ |---|---|---|---|---|
645
+ | Alta | UX/CLI | Mensajes de error no localizados (6 comandos) | Reemplazar `formatError()` locales con i18n | Experiencia consistente para usuarios de `--lang es` |
646
+ | Alta | UX/CLI | `migrate` modifica archivos sin confirmación | Agregar advertencia y paso de preview obligatorio | Prevenir pérdida de datos en migración |
647
+ | Alta | UX/CLI | Namespace plano con 8 comandos de slice/handoff | Completar implementación de `slice` y `handoff` namespaces (ya en CLI_UX_GUIDE) | Reducir carga cognitiva, CLI más coherente |
648
+ | Alta | Docs | `CONTRIBUTING.md` de 16 líneas | Expandir con setup, tests, convenciones, arquitectura | Facilita contribuciones externas |
649
+ | Alta | Automatización | Sin CI declarativo (GitHub Actions) | Crear workflow que ejecute tests y smokes en cada PR | Detecta regresiones antes de merge |
650
+ | Alta | UX/CLI | Sin feedback de progreso en `init` y `analyze` | Agregar spinner de `@clack/prompts` | Percepción de CLI responsivo |
651
+ | Media | Performance | `evidence run` usa `spawnSync` | Migrar a `spawn` async con manejo de señales | Permite interrumpir evidencias largas |
652
+ | Media | UX/CLI | `--auto-start` en `next` no usa sistema i18n | Reemplazar readline manual con `lib/cli/selectors.js` | Consistencia de UX y localización |
653
+ | Media | Docs | Acentos faltantes en `CLI_UX_GUIDE.md` | Corrección manual + agregar `markdownlint` | Calidad y profesionalismo de docs |
654
+ | Media | Docs | `SECURITY.md` sin método de contacto | Agregar email o activar private vulnerability reporting | Proceso de seguridad responsable |
655
+ | Media | Modernización | Scripts bash en `package.json` no portables | Reemplazar con comandos Node CLI | Portabilidad Windows |
656
+ | Media | Automatización | Changelog manual | Adoptar Conventional Commits + release-please | Releases más ágiles y consistentes |
657
+ | Media | Docs | Referencias a "v47" en docs públicas | Eliminar referencias a versiones de spec internas | Claridad para contribuidores externos |
658
+ | Baja | Performance | I/O síncrono en toda la capa de lecturas | Evaluar paralelización en `analyze` con `Promise.all` | Mejora en proyectos grandes |
659
+ | Baja | Modernización | Sin TypeScript | Migración incremental desde módulos `lib/` | Mejor DX para contribuidores |
660
+ | Baja | Modernización | Sin JSON Schema para `slice.json` | Generar desde Zod, publicar en SchemaStore | Validación en IDE para usuarios |
661
+ | Baja | Modernización | Sin shell completion | Implementar comando `completion` | Ergonomía para usuarios avanzados |
662
+ | Baja | UX/CLI | `plan` no avisa de `estimated_hours` faltante | Agregar nota informativa en el output | Mejor guía para usuarios nuevos |
663
+ | Baja | UX/CLI | `graph --level` vacío sin mensaje | Agregar mensaje explicativo | Evita confusión sobre si funcionó |
664
+ | Baja | Docs | `examples/` no enlazado desde README | Agregar sección Ejemplos en README | Mejor onboarding de usuarios nuevos |
665
+
666
+ ---
667
+
668
+ ## 11. Roadmap de Mejoras Sugerido
669
+
670
+ ### Corto plazo (próximas 2-4 semanas)
671
+
672
+ - Localizar todos los `formatError()` hardcodeados en inglés en los 6 comandos afectados.
673
+ - Agregar advertencia de preview obligatoria en `migrate` antes de ejecutar.
674
+ - Completar la implementación de los namespaces `slice` y `handoff` (ya documentados en `CLI_UX_GUIDE.md` como canónicos).
675
+ - Agregar spinner de progreso en `init` y `analyze`.
676
+ - Expandir `CONTRIBUTING.md` con setup, tests y convenciones.
677
+ - Corregir acentos faltantes en `CLI_UX_GUIDE.md`.
678
+ - Agregar `"engines"` al `package.json`.
679
+ - Agregar método de contacto a `SECURITY.md` (activar private vulnerability reporting en GitHub).
680
+ - Agregar `next_command` al JSON output de `flow`.
681
+ - Agregar validación de `--section` en `dashboard` con lista de valores válidos.
682
+
683
+ ### Mediano plazo (próximos 1-3 meses)
684
+
685
+ - Crear workflow de GitHub Actions para CI (tests + smokes en ubuntu, macos, windows).
686
+ - Crear `ARCHITECTURE.md` con descripción de capas, módulos y flujo de datos.
687
+ - Implementar `evidence list` y `evidence show` (ya documentados en `README_FOR_AI.md`).
688
+ - Migrar `evidence run` de `spawnSync` a `spawn` async.
689
+ - Fragmentar `commands/ai.js` en módulos por dominio.
690
+ - Simplificar `demo create spec-viewer` a `demo spec-viewer`.
691
+ - Reemplazar scripts bash en `package.json` con equivalentes Node CLI.
692
+ - Adoptar Conventional Commits y automatizar generación de changelog.
693
+ - Simplificar `ROADMAP.md` para separar información pública de interna.
694
+ - Generar JSON Schema para `slice.json` desde Zod.
695
+ - Agregar `markdownlint` y `markdown-link-check` al proceso de CI.
696
+
697
+ ### Largo plazo (próximos 3-6 meses)
698
+
699
+ - Migrar el parser manual a Commander.js o yargs (lazy-loading para mantener startup rápido).
700
+ - Implementar lazy-require para módulos pesados (especialmente `commands/ai.js`).
701
+ - Agregar scripts de shell completion (bash, zsh, fish).
702
+ - Migración incremental a TypeScript (comenzar por `lib/`).
703
+ - Automatización completa de releases con GitHub Actions (tag → npm publish).
704
+ - Publicar JSON Schema de `slice.json` en SchemaStore.
705
+ - Implementar paralelización de lecturas en `analyze` con `Promise.all`.