josemoreupeso.es
07-module-tasks.md β€” TLOTP
# πŸ“ MΓ³dulo G7 β€” Tasks.md β€” Desglose con Dependencias

## MisiΓ³n

Generar `tasks.md` con tareas ordenadas por dependencias, cada una con acceptance
criteria concretos y verificables. El mapa del viaje, tarea a tarea.

---

## Paso 1 β€” Inferir tareas automΓ‘ticamente

A partir de requirements.md + design.md + `contexto_rohirrim`, inferir tareas
organizadas por bloques de implementaciΓ³n. El orden es sagrado β€” Gondor no cae
en un dΓ­a.

**Si `contexto_docs` estΓ‘ disponible**: incorporar las tareas de setup/configuraciΓ³n
recomendadas por la documentaciΓ³n oficial del stack (ej: estructura de carpetas
recomendada por Symfony, convenciones de naming de React, etc.).

**Bloques por tipo de aventura** (del G3):

| Tipo | Orden de bloques |
|------|-----------------|
| Nueva feature | Dominio β†’ AplicaciΓ³n β†’ Infraestructura β†’ UI β†’ Tests β†’ E2E |
| Greenfield | Setup β†’ Core Domain β†’ Infraestructura β†’ API/UI β†’ Deploy β†’ Tests |
| Refactoring | AnΓ‘lisis AS-IS β†’ MΓ³dulo por mΓ³dulo β†’ Tests regresiΓ³n β†’ ValidaciΓ³n |
| Spike | Setup experimento β†’ ExploraciΓ³n β†’ MΓ©tricas β†’ Conclusiones |

---

## Paso 2 β€” RevisiΓ³n

```json
{
  "questions": [{
    "header": "Tareas generadas",
    "question": "⚑ ¿Cómo revisamos las tareas?",
    "multiSelect": false,
    "options": [
      {
        "label": "βœ… Aprobar todas β€” el plan estΓ‘ bien",
        "description": "Aceptar todas las tareas inferidas"
      },
      {
        "label": "πŸ” Revisar una a una",
        "description": "PatrΓ³n estΓ‘ndar: aprobar / modificar / saltar / cancelar"
      },
      {
        "label": "✏️  Editar manualmente",
        "description": "Modificar el listado completo de forma libre"
      },
      {
        "label": "πŸ”™ Volver al menΓΊ",
        "description": ""
      }
    ]
  }]
}
```

---

## Paso 3 β€” RevisiΓ³n uno a uno

Si elige revisar una a una, usar el patrΓ³n estΓ‘ndar:

```
══════════════════════════════════════════════════════════════
πŸ“ TAREA [X/N]
══════════════════════════════════════════════════════════════

  🏷️  T[XX] β€” [TΓ­tulo de la tarea]
  πŸ“ TamaΓ±o:   [S / M / L / XL]
  πŸ”— Depende:  [T01, T02 / ninguna]

  [DescripciΓ³n tΓ©cnica de 2-3 frases]

  Criterios de aceptaciΓ³n:
  - [ ] [criterio concreto y verificable 1]
  - [ ] [criterio concreto y verificable 2]
  - [ ] [criterio concreto y verificable 3]

══════════════════════════════════════════════════════════════
```

AskUserQuestion: βœ… Aceptar / ✏️ Modificar / ⏭️ Saltar / 🚫 Cancelar todo

**REGLAS de los acceptance criteria**:
- MΓ­nimo 2 por tarea
- Concretos y verificables: NO usar "funciona correctamente", "se implementa bien"
- SÍ usar: "El endpoint devuelve 201 con el ID creado", "Los tests unitarios cubren los 3 casos edge"
- No predecir horas ni dΓ­as β€” solo S/M/L/XL

**TamaΓ±os**:
- S = tarea simple, un componente, sin dependencias complejas
- M = tarea media, 1-2 componentes interactuando
- L = tarea compleja, mΓΊltiples componentes o incertidumbre tΓ©cnica
- XL = Γ©pica que deberΓ­a descomponerse mΓ‘s (sugerir al usuario)

---

## Paso 4 β€” Grafo de dependencias

Siempre incluir al final del fichero un grafo de dependencias en Mermaid:

```mermaid
graph TD
    T01[T01 β€” Setup] --> T02[T02 β€” Dominio base]
    T02 --> T03[T03 β€” Use Cases]
    T02 --> T04[T04 β€” Repositorio]
    T03 --> T05[T05 β€” Controller]
    T04 --> T05
    T05 --> T06[T06 β€” Tests E2E]
```

---

## Paso 5 β€” Resumen por tamaΓ±o

```
πŸ“Š Resumen del viaje:
  S: [N] tareas  (avance rΓ‘pido)
  M: [N] tareas  (ritmo de La Comunidad)
  L: [N] tareas  (batallas importantes)
  XL: [N] tareas (considera descomponer)

  Total: [N] tareas Β· TamaΓ±o estimado: [suma ponderada]
```

---

## Paso 6 β€” Preview y guardar

AskUserQuestion: βœ… Guardar / ✏️ Ajustar / πŸ”™ Volver sin guardar

**Ruta por defecto**: misma carpeta que requirements.md y design.md

---

## Lore al guardar

```
══════════════════════════════════════════════════════════════
πŸ—ΊοΈ  EL MAPA DEL VIAJE HA SIDO TRAZADO
══════════════════════════════════════════════════════════════

  ⚑ Gandalf despliega el pergamino sobre la mesa del Consejo:
     "Cada tarea es un paso en el camino. Ninguno se salta."

  🏹 Legolas: "‘Y con mi arco!"
     β†’ Cada tarea, una flecha que nunca yerra el destino.

  πŸ“„ Fichero: [ruta]/tasks.md
  πŸ“Š Total:   [N] tareas ([S: x Β· M: x Β· L: x Β· XL: x])

══════════════════════════════════════════════════════════════
```

---

## Post-generaciΓ³n β€” CTA de revisiΓ³n adicional

Si `GANDALF_MODE=fast`: mostrar los 3 lores de guardado (requirements + design + tasks) de forma consecutiva y continuar a G8.
Si `GANDALF_MODE=review` o no definido: AskUserQuestion:
- βœ… Continuar al Consejo Final β†’ G8
- πŸ” Revisar tasks.md generado β†’ abrir el fichero para ajustes adicionales
- πŸ”™ Volver al menΓΊ sin continuar

---

## TransiciΓ³n

β†’ Cargar @prompts/gandalf/sections/08-module-council.md

---

**MΓ³dulo**: `07-module-tasks.md`
**Invocado desde**: `06-module-design.md` / `04-module-continue.md`
**Requiere**: Write, requirements.md (contexto), design.md (contexto)