specleap-framework 2.1.14 → 2.2.1

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.
@@ -9,7 +9,7 @@
9
9
  ## Qué dimensiones se auditan
10
10
 
11
11
  1. **Version** — El `package.json.version` coincide con el último tag de git.
12
- 2. **Skills** — El número de carpetas en `~/.skills/` coincide con los counters declarados en `CLAUDE.md`, `README.md` y `.quality/baselines/baseline.json`.
12
+ 2. **Skills** — El número de carpetas en `~/.claude/skills/` (o `~/.skills/` si es instalación legacy) coincide con los counters declarados en `CLAUDE.md`, `README.md` y `.quality/baselines/baseline.json`.
13
13
  3. **i18n** — Todas las claves de `.specleap/i18n/es.json` existen en `.specleap/i18n/en.json` y viceversa.
14
14
  4. **Hooks** — `.claude/hooks/spec-guard.sh` existe, tiene shebang, es ejecutable y está referenciado en `.claude/settings.json.template`.
15
15
  5. **Baseline** — `.quality/baselines/baseline.json.repo_snapshot` no difiere >20% de los counters reales del repo.
@@ -91,14 +91,14 @@ Usuario: "explicar cómo funciona el sistema de autenticación"
91
91
  IA:
92
92
  🔍 Leyendo contexto del proyecto...
93
93
 
94
- cat proyectos/app-tienda/CONTRATO.md:
94
+ cat proyectos/task-manager/CONTRATO.md:
95
95
  Sistema de Usuarios → Autenticación: Laravel Sanctum (SPA)
96
96
 
97
- cat proyectos/app-tienda/context/tech-stack.md:
97
+ cat proyectos/task-manager/context/tech-stack.md:
98
98
  Autenticación: Laravel Sanctum 4.x
99
99
  Frontend: React 18 con axios
100
100
 
101
- cat proyectos/app-tienda/context/architecture.md:
101
+ cat proyectos/task-manager/context/architecture.md:
102
102
  API stateless, tokens en localStorage
103
103
 
104
104
  ---
@@ -116,8 +116,8 @@ Pregunta dónde está el código:
116
116
  ¿En qué directorio está el código del proyecto?
117
117
 
118
118
  Ejemplo:
119
- - `/path/to/app-tienda-backend`
120
- - `/path/to/app-tienda-frontend`
119
+ - `/path/to/task-manager-backend`
120
+ - `/path/to/task-manager-frontend`
121
121
  ```
122
122
 
123
123
  ---
@@ -8,8 +8,167 @@
8
8
 
9
9
  ## Flujo Completo
10
10
 
11
+ ### Paso 0: Ofrecer Instalación de markitdown (Herramienta Opcional)
12
+
13
+ **ANTES de listar proyectos**, preguntar al usuario si quiere instalar **markitdown** (herramienta opcional de Microsoft que convierte PDF/Word/Excel/PowerPoint/HTML a Markdown). Esta conversión reduce significativamente el consumo de tokens cuando SpecLeap procesa documentos no-markdown durante el flujo (briefs en PDF, requisitos en Word, etc.).
14
+
15
+ **Importante:** Este paso solo se ejecuta UNA VEZ por sesión "Hola". Si el usuario ya respondió antes en la misma sesión, saltar este paso.
16
+
17
+ #### Detectar idioma del usuario
18
+
19
+ Por defecto, el idioma de SpecLeap es **español** (ver `CLAUDE.md`). Si el usuario te ha hablado en inglés o ha configurado el framework en inglés, usa la versión en inglés del prompt.
20
+
21
+ #### Texto del prompt (Español)
22
+
23
+ ```markdown
24
+ ¡Hola! 👋 Antes de empezar con tu proyecto, una pregunta rápida:
25
+
26
+ 🔧 **Herramienta opcional disponible: markitdown**
27
+
28
+ `markitdown` es una utilidad de Microsoft (open source, MIT) que convierte:
29
+ - 📄 PDF → Markdown
30
+ - 📝 Word (.docx) → Markdown
31
+ - 📊 Excel (.xlsx) / PowerPoint (.pptx) → Markdown
32
+ - 🌐 HTML, CSV, JSON, XML, EPUB → Markdown
33
+
34
+ **¿Por qué te interesa?** Cuando trabajemos con documentos (briefs, requisitos, contratos antiguos en PDF/Word), si los conviertes primero a Markdown con esta herramienta, el consumo de tokens baja entre **20% y 50%** y yo entiendo mejor el contenido.
35
+
36
+ **Requisitos:** Python 3.10+ y `pip` instalados.
37
+
38
+ **¿Quieres instalarlo ahora?** (Sí / No / Ya está instalado)
39
+ ```
40
+
41
+ #### Texto del prompt (English)
42
+
43
+ ```markdown
44
+ Hi! 👋 Before we start with your project, a quick question:
45
+
46
+ 🔧 **Optional tool available: markitdown**
47
+
48
+ `markitdown` is a Microsoft utility (open source, MIT) that converts:
49
+ - 📄 PDF → Markdown
50
+ - 📝 Word (.docx) → Markdown
51
+ - 📊 Excel (.xlsx) / PowerPoint (.pptx) → Markdown
52
+ - 🌐 HTML, CSV, JSON, XML, EPUB → Markdown
53
+
54
+ **Why does this matter?** When we work with documents (briefs, requirements, legacy contracts in PDF/Word), converting them to Markdown first with this tool reduces token consumption by **20%–50%** and I understand the content better.
55
+
56
+ **Requirements:** Python 3.10+ and `pip` installed.
57
+
58
+ **Do you want to install it now?** (Yes / No / Already installed)
59
+ ```
60
+
61
+ #### Acción según respuesta
62
+
63
+ **Si el usuario responde "Sí" / "Yes":**
64
+
65
+ 1. Verificar si ya está instalado ejecutando:
66
+ ```bash
67
+ command -v markitdown
68
+ ```
69
+
70
+ 2. **Si NO está instalado**, mostrar comando de instalación según OS:
71
+
72
+ **Español:**
73
+ ```markdown
74
+ 📦 **Instalación de markitdown**
75
+
76
+ Ejecuta en tu terminal (fuera de Claude Code):
77
+
78
+ ```bash
79
+ pip install 'markitdown[all]'
80
+ ```
81
+
82
+ **Si usas pipx (recomendado para CLIs Python):**
83
+ ```bash
84
+ pipx install 'markitdown[all]'
85
+ ```
86
+
87
+ **Si tienes Python 3.10+ pero no `pip`:**
88
+ - macOS: `brew install python` (incluye pip)
89
+ - Linux: `sudo apt install python3-pip` (Debian/Ubuntu)
90
+ - Windows: descarga desde [python.org](https://www.python.org/downloads/)
91
+
92
+ Una vez instalado, podrás usar:
93
+ ```bash
94
+ bash scripts/convert-docs.sh archivo.pdf
95
+ bash scripts/convert-docs.sh carpeta/
96
+ ```
97
+
98
+ **¿Sigo con la creación del proyecto?** (Sí / Espera, voy a instalarlo primero)
99
+ ```
100
+
101
+ **English:**
102
+ ```markdown
103
+ 📦 **Install markitdown**
104
+
105
+ Run in your terminal (outside Claude Code):
106
+
107
+ ```bash
108
+ pip install 'markitdown[all]'
109
+ ```
110
+
111
+ **If you use pipx (recommended for Python CLIs):**
112
+ ```bash
113
+ pipx install 'markitdown[all]'
114
+ ```
115
+
116
+ **If you have Python 3.10+ but no `pip`:**
117
+ - macOS: `brew install python` (includes pip)
118
+ - Linux: `sudo apt install python3-pip` (Debian/Ubuntu)
119
+ - Windows: download from [python.org](https://www.python.org/downloads/)
120
+
121
+ Once installed, you'll be able to use:
122
+ ```bash
123
+ bash scripts/convert-docs.sh file.pdf
124
+ bash scripts/convert-docs.sh folder/
125
+ ```
126
+
127
+ **Continue with project creation?** (Yes / Wait, I'll install it first)
128
+ ```
129
+
130
+ 3. **Si YA está instalado**, confirmar y seguir:
131
+
132
+ **Español:**
133
+ ```markdown
134
+ ✅ `markitdown` ya está instalado en tu sistema. Perfecto, sigamos con tu proyecto.
135
+ ```
136
+
137
+ **English:**
138
+ ```markdown
139
+ ✅ `markitdown` is already installed on your system. Great, let's continue with your project.
140
+ ```
141
+
142
+ **Si el usuario responde "No":**
143
+
144
+ **Español:**
145
+ ```markdown
146
+ 👍 Sin problema. Si más adelante quieres instalarlo, puedes ejecutar `pip install 'markitdown[all]'` o leer `scripts/convert-docs.sh --help`.
147
+
148
+ Sigamos con tu proyecto.
149
+ ```
150
+
151
+ **English:**
152
+ ```markdown
153
+ 👍 No problem. If you want to install it later, run `pip install 'markitdown[all]'` or read `scripts/convert-docs.sh --help`.
154
+
155
+ Let's continue with your project.
156
+ ```
157
+
158
+ **Si el usuario responde "Ya está instalado" / "Already installed":**
159
+
160
+ Verificar con `command -v markitdown`. Si está → confirmar. Si no → mostrar instrucciones de instalación.
161
+
162
+ #### Después de la respuesta
163
+
164
+ Continúa con **Paso 1** (listar proyectos) sin importar la respuesta. La instalación de markitdown nunca bloquea el flujo principal.
165
+
166
+ ---
167
+
11
168
  ### Paso 1: Listar Proyectos Disponibles
12
169
 
170
+ > **Nota:** Si el usuario va a crear un proyecto nuevo (Flujo A más adelante), antes de empezar el cuestionario lanzaremos el **Paso A0 — Selección de Modo** (MVP / Serio / Creativo). Si va a trabajar en un proyecto existente o adoptar legacy, ese paso se omite.
171
+
13
172
  Ejecuta bash para listar proyectos:
14
173
 
15
174
  ```bash
@@ -19,9 +178,9 @@ ls proyectos/
19
178
  **Output esperado:**
20
179
  ```
21
180
  _template
22
- app-tienda
23
- api-backend
24
- dashboard-analytics
181
+ task-manager
182
+ inventory-app
183
+ crm-suite
25
184
  ...
26
185
  ```
27
186
 
@@ -53,6 +212,44 @@ Usar `AskUserQuestion` (modal interactivo):
53
212
 
54
213
  ## Flujo A: Proyecto Nuevo (Cuestionario Interactivo)
55
214
 
215
+ ### Paso A0: Selección de Modo de Trabajo
216
+
217
+ **ANTES de pedir el nombre del proyecto**, preguntar al usuario qué tipo de proyecto va a montar. Esto determina cuántas preguntas se le harán y por qué carriles.
218
+
219
+ Usar `AskUserQuestion`:
220
+
221
+ ```markdown
222
+ ## Tipo de proyecto que vas a crear
223
+
224
+ ○ **MVP** — proyecto pequeño, prototipo o piloto.
225
+ - 58 preguntas estructuradas (~15-20 min).
226
+ - Ideal para 1 persona o equipo pequeño.
227
+
228
+ ○ **Proyecto serio** — equipo grande, varios departamentos, compliance, SLAs.
229
+ - 93 preguntas estructuradas (~25-35 min).
230
+ - Cubre governance, integraciones empresariales, SLAs, compliance, roadmap por fases, observabilidad, multi-tenant/i18n.
231
+
232
+ ○ **Modo creativo** — describes tu proyecto en un párrafo, yo extraigo y solo te pregunto los huecos.
233
+ - 5-10 minutos.
234
+ - Ideal si ya tienes claro qué quieres construir y prefieres conversar antes que rellenar formulario.
235
+ ```
236
+
237
+ Guardar la elección como variable de sesión `MODE` (valores: `mvp`, `serio`, `creativo`).
238
+
239
+ #### Si elige MVP
240
+
241
+ Continúa con Paso A1 normal. El cuestionario filtra `questions.es.json` por `modes` que contengan `"mvp"` (= 58 preguntas).
242
+
243
+ #### Si elige Proyecto serio
244
+
245
+ Continúa con Paso A1 normal. El cuestionario filtra por `modes` que contengan `"serio"` (= 93 preguntas, las 58 de MVP + 35 nuevas de governance/compliance/SLAs/etc.).
246
+
247
+ #### Si elige Modo creativo
248
+
249
+ **Saltar Paso A1, A2, A3.** Ir directamente al Paso A1.5 (Modo Creativo) descrito más abajo.
250
+
251
+ ---
252
+
56
253
  ### Paso A1: Nombre del Proyecto
57
254
 
58
255
  Usar `AskUserQuestion`:
@@ -63,10 +260,10 @@ Usar `AskUserQuestion`:
63
260
  ¿Cuál es el nombre del nuevo proyecto?
64
261
 
65
262
  ○ **Nombre con guiones** (Recomendado)
66
- Ejemplo: mi-proyecto-web, app-mobile, api-backend
263
+ Ejemplo: task-manager, inventory-app, crm-suite
67
264
 
68
265
  ○ **Nombre simple**
69
- Ejemplo: portfolio, dashboard, ecommerce
266
+ Ejemplo: portfolio, dashboard, analytics
70
267
 
71
268
  ○ **Other**
72
269
  ```
@@ -78,10 +275,10 @@ Luego preguntar:
78
275
  ```markdown
79
276
  ¿Cuál es el nombre exacto del proyecto?
80
277
 
81
- Por ejemplo: `mi-proyecto-web`, `app-tienda`, `api-users`, `landing-corporativa`
278
+ Por ejemplo: `task-manager`, `inventory-app`, `crm-suite`, `landing-corporativa`
82
279
  ```
83
280
 
84
- Esperar nombre (ej: "casa-de-peli")
281
+ Esperar nombre (ej: "task-manager")
85
282
 
86
283
  **Validar nombre:**
87
284
  - Solo minúsculas, números y guiones
@@ -93,7 +290,7 @@ Si es inválido:
93
290
  ```markdown
94
291
  ❌ **Error:** El nombre debe tener solo minúsculas, números y guiones.
95
292
 
96
- Ejemplo válido: `casa-de-peli`, `mi-tienda-online`, `api-rest-v2`
293
+ Ejemplo válido: `task-manager`, `inventory-app`, `crm-suite`
97
294
 
98
295
  Por favor, intenta de nuevo:
99
296
  ```
@@ -102,12 +299,115 @@ Si es válido, continuar.
102
299
 
103
300
  ---
104
301
 
105
- ### Paso A2: Iniciar Cuestionario (58 preguntas)
302
+ ### Paso A1.5: Modo Creativo (solo si `MODE = creativo`)
303
+
304
+ **Si el usuario eligió MVP o Serio en el Paso A0, saltar este paso e ir directamente al Paso A2.**
305
+
306
+ #### A1.5.1 — Pedir descripción libre
307
+
308
+ ```markdown
309
+ 🎨 **Modo Creativo activado.**
310
+
311
+ Cuéntame tu proyecto en un párrafo (o varios). No te preocupes por el orden ni por dejarte cosas — yo extraeré lo que dijiste y te preguntaré solo lo que falte.
312
+
313
+ **Ideas que me ayudan:** qué hace, para quién es, qué stack imaginas, qué prioridades tienes, fechas, presupuesto, qué NO quieres, restricciones legales, integraciones que necesitas, equipo que lo va a usar.
314
+
315
+ **Tu descripción:**
316
+ ```
317
+
318
+ Esperar a que el usuario escriba su párrafo. Aceptar respuestas multi-línea hasta que pulse Enter sobre línea vacía o escriba `FIN` en una línea propia.
319
+
320
+ #### A1.5.2 — Extracción estructurada
321
+
322
+ Sobre el texto del usuario, hacer una pasada de extracción mapeando lo dicho a los IDs de `questions.es.json` (`.en.json`). Llenar un dict interno `extracted = {id: valor}`.
323
+
324
+ **Reglas de extracción:**
325
+
326
+ - **No alucinar.** Si el usuario no mencionó algo, ese ID se queda vacío.
327
+ - **Inferencias seguras**: si dice "una app web React + Laravel", inferir `stack.backend.framework: laravel`, `stack.frontend.framework: react`. Si dice "una app", NO inferir framework.
328
+ - **Para texto libre** (como `identity.objective`, `identity.problem_solved`), usar las frases del usuario lo más literal posible, recortando a los `max_length` permitidos.
329
+ - **Para selects/multiselects**, mapear a las opciones canónicas del JSON. Si el usuario usa sinónimos (ej: "PostgreSQL 16" → `stack.database.engine: postgresql` + `stack.database.version: 16.x`), normalizar.
330
+ - **Confianza**: si una inferencia tiene <70% certeza, NO la rellenes — pregúntala después.
331
+
332
+ #### A1.5.3 — Mostrar resumen extraído al usuario
106
333
 
107
334
  ```markdown
108
- Perfecto, vamos a crear el proyecto **casa-de-peli**.
335
+ **Esto es lo que entendí de tu descripción:**
336
+
337
+ [Renderizar como tabla o lista los IDs extraídos con su valor]
338
+
339
+ | Campo | Valor |
340
+ |-------|-------|
341
+ | Nombre proyecto | [extracted.project.name] |
342
+ | Audiencia | [extracted.identity.target_audience] |
343
+ | Stack backend | [extracted.stack.backend.framework] |
344
+ | ... | ... |
345
+
346
+ **¿Está bien?** Responde:
347
+ - **Sí** — sigamos con las preguntas que faltan
348
+ - **Corregir [ID]** — quiero cambiar X
349
+ - **Reescribir** — déjame describir el proyecto otra vez
350
+ ```
351
+
352
+ Si el usuario corrige, actualizar `extracted` y volver a mostrar.
353
+
354
+ #### A1.5.4 — Pedir solo los huecos críticos
355
+
356
+ Leer `scripts/lib/critical_fields.json` y filtrar:
357
+
358
+ - Si MODE original era `creativo` puro → usar `mvp_critical` (18 campos).
359
+ - Si el usuario después decide subir a serio (ver Paso A6 transiciones) → usar `mvp_critical + serio_critical_extra` (29 campos).
360
+
361
+ Para cada campo crítico que NO esté en `extracted` o esté vacío:
362
+
363
+ 1. Buscar la pregunta correspondiente en `questions.es.json` por su `id`.
364
+ 2. Renderizarla igual que en Paso A3 (con su `text`, `help`, `example`).
365
+ 3. Encabezar con un mensaje contextual explicando POR QUÉ se pregunta:
366
+
367
+ ```markdown
368
+ 🔍 **Falta info clave**: [resumen del por qué importa].
369
+
370
+ [Renderizar pregunta normal con text + help + example]
371
+ ```
372
+
373
+ Ejemplo:
374
+
375
+ ```markdown
376
+ 🔍 **Falta info clave**: no mencionaste si el sistema necesita responsive design. Es importante porque afecta directamente al diseño de los componentes.
377
+
378
+ ### Pregunta — Diseño
379
+
380
+ **¿Diseño responsive (mobile-first)?**
381
+
382
+ ○ sí
383
+ ○ no
384
+
385
+ 💡 **Ayuda:** Si esperas usuarios en móvil, recomendado.
386
+ ```
109
387
 
110
- Para generar el CONTRATO completo, necesito hacerte **58 preguntas** sobre el proyecto.
388
+ #### A1.5.5 Generar CONTRATO con lo extraído + huecos rellenados
389
+
390
+ Continuar con el Paso A4 normal (Generar CONTRATO.md), usando como respuestas la unión `extracted + huecos rellenados`.
391
+
392
+ ---
393
+
394
+ ### Paso A2: Iniciar Cuestionario
395
+
396
+ **Cuántas preguntas:**
397
+
398
+ - Modo `mvp`: 58 preguntas (filtradas por `modes` que contengan `"mvp"`).
399
+ - Modo `serio`: 93 preguntas (filtradas por `modes` que contengan `"serio"`).
400
+ - Modo `creativo`: este paso se salta — ver Paso A1.5.
401
+
402
+ **Tiempo estimado:**
403
+
404
+ - MVP: 15-20 minutos.
405
+ - Serio: 25-35 minutos.
406
+
407
+ ```markdown
408
+ Perfecto, vamos a crear el proyecto **task-manager** en modo **[MODE]**.
409
+
410
+ Para generar el CONTRATO completo, necesito hacerte **[N] preguntas** sobre el proyecto.
111
411
 
112
412
  ⏱️ **Tiempo estimado:** 15-20 minutos
113
413
  💾 **Guardado automático:** Cada 10 preguntas
@@ -122,7 +422,11 @@ Esperar confirmación (usuario responde: "Sí", "Adelante", "Ok", etc.)
122
422
 
123
423
  ### Paso A3: Preguntas (Leer desde questions.json)
124
424
 
125
- **IMPORTANTE:** Leer `scripts/lib/questions.json` y procesar las preguntas en orden.
425
+ **IMPORTANTE:**
426
+
427
+ 1. Leer `scripts/lib/questions.es.json` (o `.en.json` según el idioma elegido en setup) y procesar las preguntas en orden.
428
+ 2. **Filtrar por modo**: solo procesar preguntas cuyo array `modes` contenga el modo elegido por el usuario (`mvp`, `serio`, o `creativo` — aunque creativo no usa este flujo).
429
+ 3. Las preguntas con `modes: ["mvp", "serio"]` aparecen en ambos modos (las 58 base). Las preguntas con `modes: ["serio"]` solo aparecen en modo serio (las 35 nuevas de governance/compliance/SLAs/etc.).
126
430
 
127
431
  #### Estructura de cada pregunta:
128
432
 
@@ -419,7 +723,7 @@ Crear estructura del proyecto:
419
723
 
420
724
  ```bash
421
725
  # Copiar template
422
- cp -r proyectos/_template proyectos/casa-de-peli
726
+ cp -r proyectos/_template proyectos/task-manager
423
727
 
424
728
  # Guardar CONTRATO.md
425
729
  # (Usar Write con el contenido generado)
@@ -431,7 +735,7 @@ Generar archivos adicionales:
431
735
 
432
736
  **context/brief.md:**
433
737
  ```markdown
434
- # Brief — casa-de-peli
738
+ # Brief — task-manager
435
739
 
436
740
  **Proyecto:** [project.display_name]
437
741
  **Responsable:** [project.responsible]
@@ -463,7 +767,7 @@ Generar archivos adicionales:
463
767
 
464
768
  **context/tech-stack.md:**
465
769
  ```markdown
466
- # Tech Stack — casa-de-peli
770
+ # Tech Stack — task-manager
467
771
 
468
772
  ## Backend
469
773
 
@@ -500,7 +804,7 @@ Generar archivos adicionales:
500
804
 
501
805
  **context/architecture.md:**
502
806
  ```markdown
503
- # Arquitectura — casa-de-peli
807
+ # Arquitectura — task-manager
504
808
 
505
809
  ## Patrón Arquitectónico
506
810
 
@@ -527,7 +831,7 @@ Generar archivos adicionales:
527
831
 
528
832
  **context/conventions.md:**
529
833
  ```markdown
530
- # Convenciones — casa-de-peli
834
+ # Convenciones — task-manager
531
835
 
532
836
  ## Nomenclatura
533
837
 
@@ -556,7 +860,7 @@ Generar archivos adicionales:
556
860
 
557
861
  **context/decisions.md:**
558
862
  ```markdown
559
- # Decisiones — casa-de-peli
863
+ # Decisiones — task-manager
560
864
 
561
865
  **Fecha:** [fecha actual]
562
866
 
@@ -621,12 +925,12 @@ Generar archivos adicionales:
621
925
  ### Paso A7: Confirmar Creación
622
926
 
623
927
  ```markdown
624
- ✅ **Proyecto casa-de-peli creado exitosamente**
928
+ ✅ **Proyecto task-manager creado exitosamente**
625
929
 
626
930
  **Estructura creada:**
627
931
 
628
932
  ```
629
- proyectos/casa-de-peli/
933
+ proyectos/task-manager/
630
934
  ├── CONTRATO.md (🔒 inmutable — 58 preguntas procesadas)
631
935
  ├── ANEXOS.md (✏️ editable)
632
936
  ├── README.md
@@ -701,6 +1005,59 @@ cd proyectos/[nombre-proyecto]
701
1005
 
702
1006
  ---
703
1007
 
1008
+ ### Paso A9: Transición a otro modo (opcional, después de generar CONTRATO)
1009
+
1010
+ **Después de que el CONTRATO se haya generado en cualquier modo (MVP, Serio o Creativo)**, ofrecer al usuario la posibilidad de ampliar/refinar mediante otro modo. Esto es opcional — si el usuario ya está conforme, sigue al Paso A8 normal (crear tickets).
1011
+
1012
+ #### A9.1 — Ofrecer transición
1013
+
1014
+ Usar `AskUserQuestion`:
1015
+
1016
+ ```markdown
1017
+ ✅ CONTRATO generado en modo **[MODE]**.
1018
+
1019
+ ¿Quieres ampliarlo o refinarlo?
1020
+
1021
+ ○ **Mantener como está** — ir directo a `crear-tickets`.
1022
+
1023
+ ○ **Pasar a modo Serio** — añadir preguntas de governance, compliance, SLAs, integraciones empresariales, multi-tenant. (~35 preguntas extra, 15-20 min).
1024
+ - Disponible si vienes de MVP o Creativo.
1025
+ - Si vienes de Serio, esta opción no aparece.
1026
+
1027
+ ○ **Pasar a modo Creativo** — describir aspectos extra del proyecto en un párrafo libre. Útil si quieres añadir contexto, decisiones que no estaban en el cuestionario, anotaciones para el equipo.
1028
+ - Disponible siempre.
1029
+ ```
1030
+
1031
+ #### A9.2 — Si el usuario elige "Pasar a modo Serio"
1032
+
1033
+ 1. Mantener todas las respuestas existentes (no preguntar de nuevo).
1034
+ 2. Filtrar las preguntas de `questions.es.json` por `modes` que contengan `"serio"` y que NO tengan respuesta aún en `extracted`.
1035
+ 3. Renderizar y procesar SOLO esas preguntas extra (las 35 nuevas).
1036
+ 4. Regenerar el CONTRATO.md con las respuestas anteriores + las nuevas.
1037
+ 5. Actualizar el campo `meta.mode` en el frontmatter del CONTRATO a `serio`.
1038
+ 6. Mostrar diff resumido al usuario antes de sobrescribir.
1039
+
1040
+ #### A9.3 — Si el usuario elige "Pasar a modo Creativo"
1041
+
1042
+ 1. Pedir párrafo libre con un prompt diferente al inicial:
1043
+
1044
+ ```markdown
1045
+ 🎨 Tu CONTRATO ya tiene la base. Ahora cuéntame en un párrafo cualquier matiz, contexto, decisión o detalle que NO te haya preguntado y quieras dejar registrado. Lo añadiré a una sección **"Contexto Adicional"** del CONTRATO.
1046
+ ```
1047
+
1048
+ 2. Tomar el párrafo del usuario y añadirlo al CONTRATO.md como una sección nueva titulada `## Contexto Adicional`, debajo de `## Restricciones`.
1049
+ 3. Actualizar el campo `meta.mode` del frontmatter a `[modo_anterior]+creativo` (ej: `mvp+creativo`, `serio+creativo`).
1050
+
1051
+ #### A9.4 — Si el usuario elige "Mantener como está"
1052
+
1053
+ Ir al Paso A8 (crear tickets).
1054
+
1055
+ #### A9.5 — Iteración
1056
+
1057
+ El Paso A9 puede repetirse: tras pasar a Serio o añadir Contexto Adicional, volver a ofrecer A9 hasta que el usuario diga "Mantener". Esto permite construir el CONTRATO de forma incremental.
1058
+
1059
+ ---
1060
+
704
1061
  ## Flujo B: Proyecto Existente (Trabajar en proyecto ya creado)
705
1062
 
706
1063
  ### Paso B1: Seleccionar Proyecto
@@ -709,9 +1066,9 @@ cd proyectos/[nombre-proyecto]
709
1066
  **¿En cuál proyecto vas a trabajar?**
710
1067
 
711
1068
  Proyectos disponibles:
712
- 1. app-tienda
713
- 2. api-backend
714
- 3. dashboard-analytics
1069
+ 1. task-manager
1070
+ 2. inventory-app
1071
+ 3. crm-suite
715
1072
 
716
1073
  Responde con el número o el nombre:
717
1074
  ```
@@ -750,7 +1107,7 @@ Responde A o B:
750
1107
  **¿Qué ticket vas a trabajar?**
751
1108
 
752
1109
  Opciones:
753
- - Dime el ID del ticket (ejemplo: app-tienda-23)
1110
+ - Dime el ID del ticket (ejemplo: task-manager-23)
754
1111
  - O describe la tarea que vas a hacer
755
1112
 
756
1113
  **Comandos disponibles:**
@@ -256,8 +256,8 @@ cd /path/to/specleap
256
256
  # Output esperado:
257
257
  # ✅ CONTRATO.md generado exitosamente
258
258
  # 📁 Archivos creados:
259
- # - proyectos/casa-de-peli/CONTRATO.md
260
- # - proyectos/casa-de-peli/context/brief.md
259
+ # - proyectos/task-manager/CONTRATO.md
260
+ # - proyectos/task-manager/context/brief.md
261
261
  # - ...
262
262
  ```
263
263
 
@@ -265,10 +265,10 @@ cd /path/to/specleap
265
265
 
266
266
  ```bash
267
267
  # Ver frontmatter
268
- head -n 100 proyectos/casa-de-peli/CONTRATO.md
268
+ head -n 100 proyectos/task-manager/CONTRATO.md
269
269
 
270
270
  # Ver estructura completa
271
- cat proyectos/casa-de-peli/CONTRATO.md
271
+ cat proyectos/task-manager/CONTRATO.md
272
272
  ```
273
273
 
274
274
  ## 🔧 Próximos Pasos (Fase 2)
@@ -2,12 +2,12 @@
2
2
  # Este archivo muestra cómo se guardan las respuestas del cuestionario
3
3
 
4
4
  # ===== IDENTIDAD =====
5
- project_name: casa-de-peli
6
- project_display_name: Casa de Peli
7
- project_objective: Plataforma web de catálogo y reseñas de películas donde los usuarios pueden descubrir películas, ver detalles y crear listas personalizadas
8
- problem_solved: Los usuarios no tienen un lugar centralizado para llevar registro de películas vistas, escribir reseñas y gestionar listas de películas
9
- target_audience: public
10
- competitors: IMDb, Letterboxd, FilmAffinity
5
+ project_name: task-manager
6
+ project_display_name: Task Manager Pro
7
+ project_objective: Aplicación web para gestionar tareas en equipo con asignación, prioridades y seguimiento de tiempo
8
+ problem_solved: Los equipos pierden tiempo coordinando tareas en herramientas dispersas (email, chat, hojas de cálculo) y no tienen visibilidad clara del progreso
9
+ target_audience: team
10
+ competitors: Notion, Trello, Linear
11
11
 
12
12
  # ===== STACK TECNOLÓGICO =====
13
13
  backend_framework: laravel
@@ -18,17 +18,17 @@ css_framework: tailwind
18
18
 
19
19
  # ===== FUNCIONALIDADES =====
20
20
  core_features:
21
- - Catálogo de películas con búsqueda y filtros
22
- - Sistema de reseñas y calificaciones
23
- - Listas personalizadas (favoritas, por ver, vistas)
24
- - Autenticación de usuarios
25
- - Perfil de usuario
21
+ - Autenticación de usuarios y equipos
22
+ - CRUD de tareas con estados y prioridades
23
+ - Asignación de tareas a miembros
24
+ - Búsqueda y filtros avanzados
25
+ - Notificaciones en-app
26
26
 
27
27
  secondary_features:
28
- - Feed de actividad reciente
29
- - Recomendaciones basadas en gustos
28
+ - Exportar a CSV
30
29
  - Modo oscuro
31
- - Compartir reseñas en redes sociales
30
+ - Atajos de teclado
31
+ - Integraciones con Slack/Email
32
32
 
33
33
  needs_auth: email_password
34
34
  needs_admin_panel: basic
@@ -41,13 +41,13 @@ visual_style: modern
41
41
  # ===== DESPLIEGUE =====
42
42
  hosting: hostinger
43
43
  needs_ssl: true
44
- custom_domain: casadepeli.com
44
+ custom_domain: taskmanager.example.com
45
45
 
46
46
  # ===== RESTRICCIONES =====
47
47
  time_limit: 3 meses
48
48
  budget_limit: 500 USD
49
49
  out_of_scope:
50
- - Streaming de películas (no reproducción)
51
50
  - App móvil nativa
51
+ - Videoconferencia integrada
52
52
  - Sistema de pagos
53
- - Chat entre usuarios
53
+ - Chat entre usuarios en tiempo real