@tacuchi/agent-workflow-cli 12.4.0 → 12.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/application/humanize-es.d.ts +18 -0
  2. package/dist/application/humanize-es.d.ts.map +1 -0
  3. package/dist/application/humanize-es.js +71 -0
  4. package/dist/application/humanize-es.js.map +1 -0
  5. package/dist/application/session-close-service.d.ts.map +1 -1
  6. package/dist/application/session-close-service.js +4 -1
  7. package/dist/application/session-close-service.js.map +1 -1
  8. package/dist/application/status-service.d.ts +74 -0
  9. package/dist/application/status-service.d.ts.map +1 -0
  10. package/dist/application/status-service.js +336 -0
  11. package/dist/application/status-service.js.map +1 -0
  12. package/dist/application/templates/session.d.ts +4 -2
  13. package/dist/application/templates/session.d.ts.map +1 -1
  14. package/dist/application/templates/session.js +15 -11
  15. package/dist/application/templates/session.js.map +1 -1
  16. package/dist/cli/commands/status.d.ts +3 -0
  17. package/dist/cli/commands/status.d.ts.map +1 -0
  18. package/dist/cli/commands/status.js +10 -0
  19. package/dist/cli/commands/status.js.map +1 -0
  20. package/dist/cli/help-groups.js +1 -1
  21. package/dist/cli/help-groups.js.map +1 -1
  22. package/dist/cli/main.js +2 -0
  23. package/dist/cli/main.js.map +1 -1
  24. package/dist/cli/tui/data/workflow-content.d.ts.map +1 -1
  25. package/dist/cli/tui/data/workflow-content.js +2 -1
  26. package/dist/cli/tui/data/workflow-content.js.map +1 -1
  27. package/package.json +1 -1
  28. package/skills/w/README.md +2 -2
  29. package/skills/w/SKILL.md +6 -5
  30. package/skills/w/artifacts/README.md +8 -7
  31. package/skills/w/artifacts/artifacts-core/BACKLOG.md +5 -8
  32. package/skills/w/artifacts/artifacts-core/CHECKPOINT.md +14 -13
  33. package/skills/w/artifacts/artifacts-core/SESSION.md +10 -11
  34. package/skills/w/artifacts/artifacts-core/TASKS.md +4 -4
  35. package/skills/w/artifacts/artifacts-dev/DECISION.md +3 -3
  36. package/skills/w/artifacts/artifacts-dev/TECHNICAL-NOTE.md +14 -14
  37. package/skills/w/artifacts/artifacts-research/ANALYSIS-FILE.md +14 -27
  38. package/skills/w/artifacts/artifacts-research/CONCLUSIONS.md +10 -13
  39. package/skills/w/commands/README.md +9 -6
  40. package/skills/w/commands/plan-exec.md +4 -4
  41. package/skills/w/commands/plan-new.md +8 -6
  42. package/skills/w/commands/spec-new.md +8 -7
  43. package/skills/w/commands/spec-refine.md +7 -5
  44. package/skills/w/commands/status.md +50 -0
  45. package/skills/w/loops/README.md +11 -10
  46. package/skills/w/loops/plan-exec-loop/SKILL.md +53 -53
  47. package/skills/w/loops/plan-new-loop/SKILL.md +28 -24
  48. package/skills/w/loops/quick-loop/SKILL.md +18 -17
  49. package/skills/w/loops/spec-refine-loop/SKILL.md +79 -63
  50. package/skills/w/roles/README.md +1 -1
  51. package/skills/w/roles/research/SKILL.md +21 -81
@@ -3,7 +3,7 @@
3
3
  > This is the **bundle README** for the `/w:` slash-command namespace. Every command listed here is something the **user** invokes directly.
4
4
  > Related layers: [`../loops/`](../loops/) (Layer 2, AI-driven) · artifacts live in `.workflow/sessions/` (Layer 3) · permanent deliverables in `docs/`.
5
5
  >
6
- > **Namespace:** all commands are under `w:` (`w` = *workflow*): `/w:spec-new`, `/w:spec-refine`, `/w:plan-new`, `/w:plan-exec`, `/w:quick`, `/w:workspace-init`, `/w:export-*`.
6
+ > **Namespace:** all commands are under `w:` (`w` = *workflow*): `/w:spec-new`, `/w:spec-refine`, `/w:plan-new`, `/w:plan-exec`, `/w:quick`, `/w:workspace-init`, `/w:status` (transversal), `/w:export-*`.
7
7
 
8
8
  ---
9
9
 
@@ -50,20 +50,22 @@
50
50
 
51
51
  > **Intentional asymmetry:** in SPEC, `spec-new` generates the draft in a **single pass** (no loop) and the loop is in `spec-refine`. In PLANIFICATION, **both** commands start loops. Total: **5 flow commands / 4 loops**.
52
52
 
53
+ > **Transversal (no flow):** [`/w:status`](status.md) is a read-only dashboard of the whole workspace — what's done / pending / discarded, with friendly Spanish dates. It leans on `aw status`, writes nothing, and belongs to no flow.
54
+
53
55
  ## Pipeline
54
56
 
55
57
  ```mermaid
56
58
  flowchart LR
57
59
  prompt(["user prompt"]) --> sn["/w:spec-new"]
58
- sn -->|generates| spec["docs/specs/NNN-spec.md"]
60
+ sn -->|generates| spec["docs/specs/NNN-spec-<slug>.md"]
59
61
  spec -.->|optional manual edit| spec
60
62
  spec --> sr["/w:spec-refine"]
61
63
  sr -->|starts| srl(["spec-refine-loop"])
62
- srl -->|generates| specr["docs/specs/NNN-spec-refined.md"]
64
+ srl -->|refines IN PLACE| spec
63
65
 
64
- specr --> pn["/w:plan-new"]
66
+ spec --> pn["/w:plan-new"]
65
67
  pn -->|starts| pnl(["plan-new-loop"])
66
- pnl -->|generates| plan["docs/plans/PPP-plan.md"]
68
+ pnl -->|generates| plan["docs/plans/PPP-plan-<slug>.md"]
67
69
 
68
70
  plan --> pe["/w:plan-exec"]
69
71
  pe -->|starts| pel(["plan-exec-loop"])
@@ -98,7 +100,7 @@ Each `<command>.md` in this bundle uses this frontmatter + body structure:
98
100
  3. **Spec and plan are documents** (`docs/`), not artifacts.
99
101
  4. **DB scripts-only**: AI **never executes DML/DDL**; migrations live in `SCRIPTS.sql` (type B) and are delivered via `export-scripts`. Only read-only queries via MCP.
100
102
  5. **Git-safe**: verify branch before editing; **propose** commits by source; never `push`/`--amend`/`--no-verify`.
101
- 6. **All loops**: gap-driven convergent · `AskUserQuestion` with ≤3 content tabs + 1 `flow` tab (`Compactar`/`Cerrar`) always · compact/resume · `Cerrar` persists `CHECKPOINT`+`BACKLOG`.
103
+ 6. **All loops**: gap-driven convergent · one session per run (research inline) · `AskUserQuestion` with ≤3 content tabs + 1 `flow` tab (`Compactar`/`Cerrar`) always · compact/resume · artifacts as a live log (`CHECKPOINT` always; `BACKLOG` only when deferring).
102
104
 
103
105
  ## Index
104
106
 
@@ -110,6 +112,7 @@ Each `<command>.md` in this bundle uses this frontmatter + body structure:
110
112
  | `plan-new` | [`plan-new.md`](plan-new.md) | starts `plan-new-loop` |
111
113
  | `plan-exec` | [`plan-exec.md`](plan-exec.md) | starts `plan-exec-loop` |
112
114
  | `quick` | [`quick.md`](quick.md) | starts `quick-loop` |
115
+ | `status` | [`status.md`](status.md) | single-pass, read-only (transversal) |
113
116
  | `export-scripts` | [`export-scripts.md`](export-scripts.md) | single-pass, read-only |
114
117
  | `export-manuals` | [`export-manuals.md`](export-manuals.md) | single-pass, read-only |
115
118
  | `export-diagrams` | [`export-diagrams.md`](export-diagrams.md) | single-pass, read-only |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: Inicia o retoma el loop de ejecución (plan-exec-loop) sobre un plan existente. Aquí ocurre el trabajo real: edición de código, scripts SQL propuestos, herramientas creadas. Git-safe.
3
- argument-hint: <docs/plans/PPP-plan.md>
3
+ argument-hint: <docs/plans/PPP-plan-<slug>.md>
4
4
  allowed-tools:
5
5
  [
6
6
  "Bash",
@@ -12,7 +12,7 @@ allowed-tools:
12
12
 
13
13
  # plan-exec — trampolín al loop de ejecución
14
14
 
15
- Arranca o retoma `plan-exec-loop` (Layer 2), que ejecuta el trabajo real fase por fase. El plan (`docs/plans/PPP-plan.md`) es un documento vivo que el loop mantiene actualizado (estado de fases y tareas).
15
+ Arranca o retoma `plan-exec-loop` (Layer 2), que ejecuta el trabajo real fase por fase. El plan (`docs/plans/PPP-plan-<slug>.md`) es un documento vivo que el loop mantiene actualizado (estado de fases y tareas).
16
16
 
17
17
  ## Ejecutar el loop
18
18
 
@@ -25,8 +25,8 @@ Arranca o retoma `plan-exec-loop` (Layer 2), que ejecuta el trabajo real fase po
25
25
 
26
26
  ## Qué hace el loop (resumen)
27
27
 
28
- - Lee y actualiza `docs/plans/PPP-plan.md` (living doc: estado de fases/tareas).
29
- - Edita código en las fuentes del workspace (una sesión por fase).
28
+ - Lee y actualiza `docs/plans/PPP-plan-<slug>.md` (living doc: estado de fases/tareas).
29
+ - Edita código en las fuentes del workspace (una sola sesión de ejecución para el run; la ejecución sigue siendo fase por fase, solo que no hay sesión por fase).
30
30
  - Escribe herramientas/utilidades reutilizables en `docs/tools/`.
31
31
  - Propone commits por fuente (git-safe: verifica rama, propone, nunca push/--amend/--no-verify).
32
32
  - Genera artefactos de sesión (`DECISION`, `SCRIPTS.sql`) en `.workflow/sessions/`.
@@ -1,6 +1,6 @@
1
1
  ---
2
- description: Inicia o retoma el loop de planificación (plan-new-loop) a partir de un spec refinado. Convierte el "qué" (spec) en el "cómo" (plan). Input ideal: docs/specs/NNN-spec-refined.md.
3
- argument-hint: <docs/specs/NNN-spec-refined.md | docs/specs/NNN-spec.md | prompt>
2
+ description: Inicia o retoma el loop de planificación (plan-new-loop) a partir de un spec. Convierte el "qué" (spec) en el "cómo" (plan). Input ideal: docs/specs/NNN-spec-<slug>.md ya refinado.
3
+ argument-hint: <docs/specs/NNN-spec-<slug>.md | prompt>
4
4
  allowed-tools:
5
5
  [
6
6
  "Bash",
@@ -16,12 +16,14 @@ Puente SPEC → PLANIFICATION. Convierte el "qué" (spec refinado) en el "cómo"
16
16
 
17
17
  ## Resolución de input
18
18
 
19
- El skill evalúa `$ARGUMENTS`:
19
+ El skill evalúa `$ARGUMENTS` (los specs viven in place — `docs/specs/NNN-spec-<slug>.md`; localizar vía glob `docs/specs/NNN-spec-*.md` o la ruta exacta):
20
20
 
21
- 1. **`docs/specs/NNN-spec-refined.md`** → ideal. Procede directamente a `plan-new-loop`.
22
- 2. **`docs/specs/NNN-spec.md`** (borrador sin refinar) → propone correr `/w:spec-refine` primero; planificar sobre un spec sólido produce mejores planes.
21
+ 1. **Spec refinado** (`docs/specs/NNN-spec-<slug>.md` que **ya tiene** `## Refinement decisions` / `## Q&A traceability`) → ideal. Procede directamente a `plan-new-loop`.
22
+ 2. **Spec borrador** (mismo archivo, pero **sin** esas dos secciones) → **soft-suggest** correr `/w:spec-refine` primero; planificar sobre un spec sólido produce mejores planes (el usuario puede proceder igual).
23
23
  3. **prompt** (sin spec referenciado) → propone usar el flujo SPEC; **por default lanza `/w:spec-new`** con ese prompt para crear el borrador, y desde ahí continúa el flujo natural.
24
24
 
25
+ > **Refinado vs borrador** se distingue por la **presencia** de `## Refinement decisions` / `## Q&A traceability` en el spec, no por el nombre del archivo (ya no hay `-refined`).
26
+
25
27
  ## Ejecutar el loop
26
28
 
27
29
  `plan-new-loop` **no** es una skill invocable por nombre — es el manual de operación de este comando (un doc hermano del bundle). **Cargalo y ejecutalo de punta a punta**:
@@ -33,7 +35,7 @@ El skill evalúa `$ARGUMENTS`:
33
35
 
34
36
  ## Notas de numeración
35
37
 
36
- El plan toma su propio número `PPP` en `docs/plans/`. **No hereda el `NNN` del spec**. El vínculo al spec se establece por referencia (`## Origin` / "Derivado de") en el plan, no por número.
38
+ El plan se nombra `docs/plans/PPP-plan-<slug>.md`. El CLI solo devuelve el número `PPP`; el loop arma el nombre completo (slug = kebab-case corto del Requirement: `[a-z0-9-]`, ~5 palabras / ≤ 40 chars). **No hereda el `NNN` del spec**. El vínculo al spec se establece por referencia (`## Origin` / "Derivado de") en el plan, no por número.
37
39
 
38
40
  ## Plan mode
39
41
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Genera un borrador de especificación (docs/specs/NNN-spec.md) a partir de un prompt, en una sola pasada. Paso 1 del flujo SPEC; no arranca loop.
2
+ description: Genera un borrador de especificación (docs/specs/NNN-spec-<slug>.md) a partir de un prompt, en una sola pasada. Paso 1 del flujo SPEC; no arranca loop.
3
3
  argument-hint: <prompt con el requerimiento o idea>
4
4
  allowed-tools:
5
5
  [
@@ -11,7 +11,7 @@ allowed-tools:
11
11
 
12
12
  # spec-new — borrador de especificación (single-pass)
13
13
 
14
- Genera `docs/specs/NNN-spec.md` en una sola pasada a partir del prompt en `$ARGUMENTS`. No arranca loop.
14
+ Genera `docs/specs/NNN-spec-<slug>.md` en una sola pasada a partir del prompt en `$ARGUMENTS`. No arranca loop.
15
15
 
16
16
  > ## ⛔ Single-pass — SIN investigación (regla dura)
17
17
  >
@@ -23,11 +23,12 @@ Genera `docs/specs/NNN-spec.md` en una sola pasada a partir del prompt en `$ARGU
23
23
  >
24
24
  > La investigación a profundidad (cerrar gaps, mapear código, consultar BD, research autónomo) es trabajo de **`spec-refine`**, no de aquí.
25
25
 
26
- 1. Ejecutar `aw next-number docs/specs` para obtener `NNN` (única tool de shell necesaria).
27
- 2. Crear `docs/specs/NNN-spec.md` parafraseando `$ARGUMENTS` en el esquema de borrador (ver abajo). Lectura del repo: opcional y mínima (p. ej. un archivo que el usuario citó) — nunca un barrido ni research.
28
- 3. Mostrar el archivo generado y el próximo paso sugerido (`/w:spec-refine docs/specs/NNN-spec.md`).
26
+ 1. Ejecutar `aw next-number docs/specs` para obtener `NNN` (única tool de shell necesaria). El CLI solo devuelve el número; el slug lo arma este comando.
27
+ 2. Derivar el `<slug>`: kebab-case corto del Requirement solo `[a-z0-9-]`, ~5 palabras / 40 chars.
28
+ 3. Crear `docs/specs/NNN-spec-<slug>.md` parafraseando `$ARGUMENTS` en el esquema de borrador (ver abajo). Lectura del repo: opcional y mínima (p. ej. un archivo que el usuario citó) — nunca un barrido ni research.
29
+ 4. Mostrar el archivo generado y el próximo paso sugerido (`/w:spec-refine docs/specs/NNN-spec-<slug>.md`).
29
30
 
30
- ## Esquema del borrador (`NNN-spec.md`)
31
+ ## Esquema del borrador (`NNN-spec-<slug>.md`)
31
32
 
32
33
  ```markdown
33
34
  # Spec NNN — <slug>
@@ -61,7 +62,7 @@ Supuestos asumidos.
61
62
  - `Scope` siempre lleva `Out` (qué queda fuera).
62
63
  - Los criterios de aceptación deben ser verificables (testeables).
63
64
  - Si hay UI involucrada, mencionarlo en `Requirement`/`Context`; el spec UI se autora en `spec-refine` (via capacidad `ui-design`).
64
- - Alternativa equivalente: el usuario crea el borrador a mano. Ambos caminos producen el mismo `docs/specs/NNN-spec.md`.
65
+ - Alternativa equivalente: el usuario crea el borrador a mano. Ambos caminos producen el mismo `docs/specs/NNN-spec-<slug>.md`.
65
66
 
66
67
  ## Plan mode
67
68
 
@@ -1,6 +1,6 @@
1
1
  ---
2
- description: Inicia o retoma el loop de refinamiento de una especificación (spec-refine-loop). Input: docs/specs/NNN-spec.md (borrador). Output: docs/specs/NNN-spec-refined.md.
3
- argument-hint: <docs/specs/NNN-spec.md>
2
+ description: Inicia o retoma el loop de refinamiento de una especificación (spec-refine-loop). Input: docs/specs/NNN-spec-<slug>.md (borrador). Actualiza docs/specs/NNN-spec-<slug>.md in place.
3
+ argument-hint: <docs/specs/NNN-spec-<slug>.md>
4
4
  allowed-tools:
5
5
  [
6
6
  "Bash",
@@ -25,12 +25,14 @@ Este comando no refina el spec él mismo: delega al loop `spec-refine-loop` (Lay
25
25
 
26
26
  ## Resolución de estado (resumable)
27
27
 
28
- El skill detecta el estado previo antes de arrancar:
28
+ El skill detecta el estado previo antes de arrancar, **keyando off el `CHECKPOINT`** (no la existencia de un archivo "refined"):
29
29
 
30
30
  1. Busca la sesión de refinamiento del spec en `.workflow/sessions/` y su `CHECKPOINT.md`.
31
31
  2. **En curso** (existe CHECKPOINT) → continúa desde el avance previo (gaps resueltos, Q&A).
32
- 3. **Sin avance** (sin CHECKPOINT ni refined) → arranca desde cero leyendo `NNN-spec.md`.
33
- 4. **Ya completado** (existe `NNN-spec-refined.md`, sin CHECKPOINT abierto) → re-refinamiento incremental: lee el **refined** como input (NO el borrador stale); al `Guardar`, sobrescribe con confirmación.
32
+ 3. **Sin avance** (sin CHECKPOINT y el spec **no** tiene `## Refinement decisions`/`## Q&A traceability`) → arranca desde cero leyendo el spec (`NNN-spec*.md`).
33
+ 4. **Ya refinado** (sin CHECKPOINT abierto pero el spec **ya tiene** `## Refinement decisions`/`## Q&A traceability`) → re-refinamiento incremental leyendo el **spec mismo**; al `Guardar`, edita in place con confirmación.
34
+
35
+ > **Compat (legacy):** el glob `NNN-spec*.md` también captura specs viejos `NNN-spec.md` / `NNN-spec-refined.md`. Re-correr spec-refine los edita in place de ahí en adelante.
34
36
 
35
37
  ## Plan mode
36
38
 
@@ -0,0 +1,50 @@
1
+ ---
2
+ description: Dashboard read-only del workspace — qué se hizo / qué falta / qué se descartó, con fechas en español (hace 2 días, ayer en la mañana). Se apoya en `aw status`. Comando transversal (no es un flow); no escribe nada.
3
+ argument-hint: (sin argumentos)
4
+ allowed-tools:
5
+ [
6
+ "Bash",
7
+ "Read",
8
+ ]
9
+ ---
10
+
11
+ # status — estado del workspace (read-only)
12
+
13
+ Muestra, simple y directo, el estado del workspace agrupado en **Hecho / Falta / Descartó**. Single-pass, read-only: no abre loop, no crea sesiones, no escribe en `docs/` ni en `.workflow/`. Comando **transversal** (no pertenece a ningún flow).
14
+
15
+ ## Ejecutar
16
+
17
+ 1. Corré `aw status` (devuelve JSON; se apoya en `status-service`).
18
+ 2. Renderizá un resumen legible a partir del JSON — **no** muestres el JSON crudo. Usá el campo `relative` tal cual (ya viene humanizado en español). Encabezá con `workspace.name`.
19
+ 3. Agrupá en tres bloques:
20
+ - **▸ HECHO** — specs con `refined: true`; plans con su progreso (`tasks_done`/`tasks_total`, `progress_pct`); sesiones `closed`.
21
+ - **▸ FALTA** — sesiones `active`; plans con tareas pendientes (`tasks_total − tasks_done`); specs con `open_questions > 0`.
22
+ - **▸ DESCARTÓ** — cada item de `discarded[]` (`kind: deferred` = diferido en BACKLOG; `kind: excluded` = excluido en CHECKPOINT), con su `text`.
23
+ 4. Cada línea termina con su fecha relativa tras ` · ` (ej. `· ayer en la mañana`). Si una sección queda vacía, mostrá `— (nada)`. No inventes datos que no estén en el JSON.
24
+ 5. Si `workspace.initialized` es `false` y todo está vacío → decí "No es un workspace de agent-workflow (no hay `.workflow/`)" y sugerí `/w:workspace-init`.
25
+
26
+ Formato sugerido (texto plano):
27
+
28
+ ```
29
+ Workspace: <name>
30
+
31
+ ▸ HECHO
32
+ • plan <slug> — <done>/<total> tareas (<pct>%) · <relative>
33
+ • spec <slug> — refinado · <relative>
34
+ • <folder> (<type>) — cerrada · <relative>
35
+
36
+ ▸ FALTA
37
+ • <folder> (<type>) — activa · <relative>
38
+ • plan <slug> — <pendientes> tareas pendientes
39
+ • spec <slug> — <n> preguntas abiertas
40
+
41
+ ▸ DESCARTÓ
42
+ • <text> (<kind>) · <relative>
43
+ ```
44
+
45
+ ## Plan mode
46
+ Igual que en ejecución: corré `aw status` (read-only) y mostrá el resumen. No hay cambios que aplicar.
47
+
48
+ ## Resources
49
+ - CLI: `aw status` (servicio `status-service`; fechas vía `humanize-es`)
50
+ - Design reference: `docs/referencias/workflow-commands/status.md`
@@ -13,7 +13,7 @@ Un loop es una **skill** que le enseña a la IA *cómo iterar* hasta producir un
13
13
  Propiedades comunes a **los 4 loops**:
14
14
 
15
15
  1. **Gap-driven convergente** — cada ciclo: `detect_gaps` → resolver (humano o research) → integrar → repetir hasta que no queden gaps materiales. Los gaps "agotados" (límite `MAX` de intentos) no se re-disparan → garantiza convergencia.
16
- 2. **Puede crear sessions internas** si refinar/planificar/ejecutar requiere trabajo profundo (ej. investigar el código), el loop crea una session en `.workflow/sessions/` que maneja **sus** artefactos, la cierra y reporta de vuelta. **El usuario nunca crea esas sessions.**
16
+ 2. **Una sola session por run + research inline** el loop crea **una** session en `.workflow/sessions/` (la dueña del run) y maneja **sus** artefactos. La **investigación es inline**: una actividad dentro de esa misma session que escribe `ANALYSIS-FILE`/`CONCLUSIONS` (+ `SCRIPTS.sql` read-only si consulta BD) en su propia carpeta — ya no es una session aparte. **El usuario nunca crea sessions.** Los artefactos son el **registro vivo** del run — **ciclo artifact-first**: sembrar `CHECKPOINT.Pending/Next` (la intención) antes de ejecutar, llevar a `Completed`/DECISION después; CHECKPOINT actualizado en cada límite de gap/fase, BACKLOG solo si difiere. El spec/plan es la base guía.
17
17
  3. **AskUserQuestion con dos tipos de tab** (límite host: 4 preguntas/llamada):
18
18
  - **tab(s) de contenido** (≤3) — la(s) pregunta(s) real(es) del momento (resolver una duda, elegir MCP, o en convergencia: `Guardar` / `Preguntar algo más`).
19
19
  - **tab `flow`** (1, SIEMPRE presente) — control de ciclo de vida por un canal lateral. Así el contenido lo maneja la IA y el ciclo de vida lo dirige el humano.
@@ -26,15 +26,15 @@ El tab `flow` es **fijo**: `Compactar` / `Cerrar`, presente en los 4 loops. Resp
26
26
  | Option | What it does |
27
27
  |---|---|
28
28
  | `Compactar` | Escribe `CHECKPOINT` (session dueña del run) + dispara `/compact` del host y reanuda sin perder el hilo. |
29
- | `Cerrar` | `finalize`: persiste lo pendiente (`CHECKPOINT` + `BACKLOG`), cierra sessions internas y termina el loop. |
29
+ | `Cerrar` | `finalize`: persiste lo pendiente (`CHECKPOINT` siempre; `BACKLOG` solo si hay algo diferido), cierra la session y termina el loop. |
30
30
 
31
31
  ## Loops and their flow
32
32
 
33
33
  | Loop (`name:`) | Flow | Started by | Reads | Writes |
34
34
  |---|---|---|---|---|
35
- | [`spec-refine-loop`](spec-refine-loop/SKILL.md) | SPEC | `/w:spec-refine` | `docs/specs/NNN-spec.md` (o `…-spec-refined.md` si ya existe) | `docs/specs/NNN-spec-refined.md` |
36
- | [`plan-new-loop`](plan-new-loop/SKILL.md) | PLANIFICATION | `/w:plan-new` | `docs/specs/NNN-spec-refined.md` | `docs/plans/PPP-plan.md` |
37
- | [`plan-exec-loop`](plan-exec-loop/SKILL.md) | PLANIFICATION | `/w:plan-exec` | `docs/plans/PPP-plan.md` | `docs/plans/PPP-plan.md` (update) + `docs/tools`; resto vía `export-*` |
35
+ | [`spec-refine-loop`](spec-refine-loop/SKILL.md) | SPEC | `/w:spec-refine` | `docs/specs/NNN-spec*.md` (el spec mismo) | `docs/specs/NNN-spec-<slug>.md` (in place) |
36
+ | [`plan-new-loop`](plan-new-loop/SKILL.md) | PLANIFICATION | `/w:plan-new` | `docs/specs/NNN-spec-*.md` | `docs/plans/PPP-plan-<slug>.md` |
37
+ | [`plan-exec-loop`](plan-exec-loop/SKILL.md) | PLANIFICATION | `/w:plan-exec` | `docs/plans/PPP-plan-*.md` | `docs/plans/PPP-plan-<slug>.md` (update) + `docs/tools`; resto vía `export-*` |
38
38
  | [`quick-loop`](quick-loop/SKILL.md) | QUICK | `/w:quick` | — (prompt) | edita código + session ligera; **no** `docs/` |
39
39
 
40
40
  > `/w:spec-new` no tiene loop (es single-pass). Por eso hay **5 comandos / 4 loops**.
@@ -80,12 +80,13 @@ Los **heirs** (`plan-new-loop`, `plan-exec-loop`, `quick-loop`) usan `## Inherit
80
80
  ## Chassis / heirs
81
81
 
82
82
  ```
83
- spec-refine-loop ── CHASIS (patrón de referencia: motor gap-driven, sessions,
84
- │ AskUserQuestion + tab flow, research autónomo + regla BD,
85
- │ compact/resume, Cerrar persiste CHECKPOINT+BACKLOG)
83
+ spec-refine-loop ── CHASIS (patrón de referencia: motor gap-driven, sesión única,
84
+ │ AskUserQuestion + tab flow, research autónomo INLINE + regla BD,
85
+ │ compact/resume, artefactos como log vivo: CHECKPOINT siempre,
86
+ │ BACKLOG solo si difiere)
86
87
  ├── plan-new-loop (heir) → deltas: plan rico, gap taxonomy de plan
87
88
  ├── plan-exec-loop (heir) → deltas: ejecución real (código/BD/git),
88
- │ session por fase, sin auto-export
89
+ una sola session por run, sin auto-export
89
90
  └── quick-loop (heir) → deltas: ceremonia mínima, 1 session,
90
91
  hereda git/BD/no-export de plan-exec
91
92
  ```
@@ -103,7 +104,7 @@ Los loops componen **capacidades por su rol**, no skills concretas; la skill que
103
104
  | `git` | `git` | `plan-exec-loop` · `quick-loop` |
104
105
  | `coding-standards` | `coding-standards` | `plan-exec-loop` · `quick-loop` |
105
106
  | `writing` | `writing` | todos los loops |
106
- | `research` | `research` | todos los loops (research on-demand) |
107
+ | `research` | `research` | todos los loops (research inline) |
107
108
  | `testing` | `testing` | `plan-exec-loop` · `quick-loop` |
108
109
  | `tools` | `tools` | `plan-exec-loop` |
109
110
  | `overview` | `workflow` | cualquiera (orientación) |
@@ -1,26 +1,26 @@
1
1
  ---
2
2
  name: plan-exec-loop
3
3
  description: >-
4
- Ejecuta un plan de implementación (docs/plans/PPP-plan.md) como living doc: lo
5
- lee y actualiza fase a fase mientras edita el código real, gestiona BD y git.
6
- Heir del chasis spec-refine-loop: reusa su motor gap-driven (aplicado dentro
7
- de una tarea ante decisiones/dudas no obvias), research on-demand con regla BD
8
- read-only, AskUserQuestion con ≤3 tabs de contenido + 1 tab flow
9
- (Compactar/Cerrar) siempre, y compact/resume con Cerrar que persiste CHECKPOINT
10
- + BACKLOG. Sus deltas: una exec session por fase (resume intra-fase); git
11
- seguro (verifica rama esperada antes de editar, propone commits por fuente,
12
- nunca push/--amend/--no-verify); la IA NUNCA ejecuta DML/DDL (migraciones se
13
- redactan en SCRIPTS.sql, solo read-only se ejecuta); validación por fase y
14
- final (lo dependiente de migración no aplicada se difiere como handoff a DBA);
15
- y SIN auto-export (escribe solo docs/plans + docs/tools; el resto queda como
16
- artefacto de session para export-*). Compone git, coding-standards, testing,
17
- tools y sql. Lo arranca /w:plan-exec y es reanudable. Invocar para implementar
18
- un plan ya generado.
4
+ Ejecuta un plan de implementación (docs/plans/PPP-plan-<slug>.md) como living
5
+ doc: lo lee y actualiza fase a fase mientras edita el código real, gestiona BD
6
+ y git. Heir del chasis spec-refine-loop: reusa su motor gap-driven (aplicado
7
+ dentro de una tarea ante decisiones/dudas no obvias), research inline con
8
+ regla BD read-only, AskUserQuestion con ≤3 tabs de contenido + 1 tab flow
9
+ (Compactar/Cerrar) siempre, y artefactos como log vivo (CHECKPOINT siempre,
10
+ BACKLOG solo si difiere). Sus deltas: una sola session por run (resume vía
11
+ checkbox del plan-doc + CHECKPOINT); git seguro (verifica rama esperada antes
12
+ de editar, propone commits por fuente, nunca push/--amend/--no-verify); la IA
13
+ NUNCA ejecuta DML/DDL (migraciones se redactan en SCRIPTS.sql, solo read-only
14
+ se ejecuta); validación por fase y final (lo dependiente de migración no
15
+ aplicada se difiere como handoff a DBA); y SIN auto-export (escribe solo
16
+ docs/plans + docs/tools; el resto queda como artefacto de session para
17
+ export-*). Compone git, coding-standards, testing, tools y sql. Lo arranca
18
+ /w:plan-exec y es reanudable. Invocar para implementar un plan ya generado.
19
19
  ---
20
20
 
21
21
  # plan-exec-loop
22
22
 
23
- > **Heir** del chasis [`spec-refine-loop`](../spec-refine-loop/SKILL.md). Aquí los **deltas de ejecución** — el trabajo real: código, BD, git. El motor (gap-driven, research on-demand, AskUserQuestion + tab `flow`, compact/resume, `Cerrar` persiste) vive en el chasis.
23
+ > **Heir** del chasis [`spec-refine-loop`](../spec-refine-loop/SKILL.md). Aquí los **deltas de ejecución** — el trabajo real: código, BD, git. El motor (gap-driven, research inline, AskUserQuestion + tab `flow`, compact/resume, artefactos como log vivo) vive en el chasis.
24
24
 
25
25
  ## Flow
26
26
  PLANIFICATION
@@ -29,15 +29,15 @@ PLANIFICATION
29
29
  2 — la IA lo corre entero.
30
30
 
31
31
  ## Started by
32
- `/w:plan-exec` — **reanudable** (mismo mecanismo de 4 casos del chasis; aquí con resume intra-fase, ver Delta 1).
32
+ `/w:plan-exec` — **reanudable** (mismo mecanismo del chasis; aquí el resume keya off el checkbox del plan-doc + CHECKPOINT, ver Delta 1).
33
33
 
34
34
  ## Reads
35
- `docs/plans/PPP-plan.md`
35
+ `docs/plans/PPP-plan-<slug>.md` (localizar vía glob `docs/plans/PPP-plan-*.md` o la ruta exacta de `$ARGUMENTS`).
36
36
 
37
37
  ## Writes
38
- - `docs/plans/PPP-plan.md` (**read/update**, living doc: estado de fases/tareas, `Open questions`).
38
+ - `docs/plans/PPP-plan-<slug>.md` (**read/update**, living doc: estado de fases/tareas, `Open questions`).
39
39
  - `docs/tools/`: herramientas/utilidades reusables que la IA **crea** durante la ejecución (salida directa, no export).
40
- - Artefactos de exec session en `.workflow/sessions/` (`SCRIPTS.sql`, `DECISION`, …).
40
+ - Artefactos de la plan-exec session en `.workflow/sessions/` (`SCRIPTS.sql`, `DECISION`, `ANALYSIS-FILE`/`CONCLUSIONS`, …).
41
41
  - **NO** escribe en otras carpetas `docs/` ni **gradúa/exporta** otros artefactos automáticamente (ver *Boundary*).
42
42
 
43
43
  ## Boundary — sin auto-export (hard rule)
@@ -48,10 +48,10 @@ Este loop **nunca gradúa/promueve artefactos** a `docs/`. Las únicas carpetas
48
48
 
49
49
  Del chasis [`spec-refine-loop`](../spec-refine-loop/SKILL.md), sin cambios:
50
50
 
51
- - Motor **gap-driven** (aplica *dentro de una tarea* ante una decisión/duda no obvia: research session ó AskUserQuestion).
51
+ - Motor **gap-driven** (aplica *dentro de una tarea* ante una decisión/duda no obvia: research inline ó AskUserQuestion).
52
52
  - **AskUserQuestion**: ≤3 contenido + 1 `flow` (`Compactar`/`Cerrar`) siempre.
53
- - **research session** on-demand + **regla BD** read-only (pregunta MCP si >1 sin default → `SCRIPTS.sql` → ejecuta read-only) + research **inconclusa** (degrada/difiere, límite `MAX`).
54
- - **Compact/resume**; **`Cerrar` persiste** `CHECKPOINT` + `BACKLOG`.
53
+ - **Research INLINE** + **regla BD** read-only (pregunta MCP si >1 sin default → `SCRIPTS.sql` → ejecuta read-only) + research **inconclusa** (degrada/difiere, límite `MAX`).
54
+ - **Compact/resume**; **artefactos como log vivo** (`CHECKPOINT` siempre; `BACKLOG` solo si difiere).
55
55
 
56
56
  ## Composes
57
57
 
@@ -59,25 +59,26 @@ Del chasis [`spec-refine-loop`](../spec-refine-loop/SKILL.md), sin cambios:
59
59
 
60
60
  ## Internal sessions (managed)
61
61
 
62
- - **control session** descriptor `plan-exec` → `NNN-plan-exec`: dueña del run (`SESSION` + `CHECKPOINT` + `BACKLOG` al cerrar; Type = `control`).
63
- - **exec session por fase** descriptor `plan-exec-phase-<N>` → `NNN-plan-exec-phase-<N>`: `SESSION` · `DECISION` · `SCRIPTS.sql` · `CHECKPOINT` (Type = `exec`).
64
- - **research session** descriptor `plan-exec-research-*` → `NNN-plan-exec-research-*`: on-demand (run-and-close), igual que el chasis.
62
+ - **plan-exec session** descriptor `plan-exec` → `NNN-plan-exec`: **una sola session por run** (Type = `exec`). Dueña del run; posee `SESSION` + `CHECKPOINT` + `DECISION` + `SCRIPTS.sql` (+ `BACKLOG` solo si difiere). La investigación es **inline** dentro de esta session: produce `ANALYSIS-FILE`/`CONCLUSIONS` (+ `SCRIPTS.sql` read-only si consulta BD) en su propia carpeta.
65
63
 
66
- > **Numeración**: el caller pasa solo el descriptor; el CLI antepone el `NNN` global y secuencial sobre `.workflow/sessions/` (ver chasis). No reinicia por tipo ni por fase.
64
+ > **Numeración**: el caller pasa solo el descriptor; el CLI antepone el `NNN` global y secuencial sobre `.workflow/sessions/` (ver chasis). No reinicia por tipo.
67
65
 
68
- ## Delta 1 **One exec session per phase** (+ resume intra-fase)
66
+ > **Compat (legacy):** workspaces viejos pueden tener sessions `plan-exec-phase-*` (una por fase) y `*-research-*` — son históricas y se dejan tal cual; los runs nuevos usan una sola session.
69
67
 
70
- - Recorre las `Phases` del plan en orden (respeta deps).
71
- - Por cada Phase no completada → `create_or_resume("plan-exec-phase-<N>")` (**reusa** la session si la fase quedó a medias; no crea una segunda; el CLI antepone el `NNN` global).
68
+ ## Delta 1 One session per run; per-phase progress in the plan-doc
69
+
70
+ - Recorre las `Phases` del plan en orden (respeta deps) **dentro de la única session del run** (no hay session-por-fase).
71
+ - El **avance por fase vive en el plan-doc** (`- [x]`) y en el `CHECKPOINT` único (Completed/Pending/Next): **artifact-first** — `CHECKPOINT.Next` se fija a la fase inminente **antes** de iniciarla; el checkbox `- [x]` del plan-doc se voltea **después** de completar la tarea.
72
72
  - Ejecuta las `Tasks` de la fase; **salta** las ya marcadas `- [x]` en el plan (el plan-doc es la fuente de verdad por tarea). Marca `- [x]` + estado **en el plan** (living doc; no en un `TASKS` aparte).
73
- - Registra `DECISION` solo lo **no obvio**.
73
+ - En **cada límite de fase**: actualiza el `CHECKPOINT` (Completed += Phase N, Next = Phase N+1) y propone commits.
74
+ - Registra `DECISION` solo lo **no obvio**, **a medida que se toma** (los `DECISION` por fase se acumulan en el ÚNICO `DECISION`, etiquetados por fase/tarea — ej. `Origin: T2 (F1)`).
74
75
 
75
76
  ## Delta 2 — Git policy: **rama segura + commits propuestos**
76
77
 
77
78
  - **Antes de editar** archivos de una fuente: verifica rama actual = rama esperada de esa fuente (estilo `branch-check`). Si no coincide → **pausa y resuelve con el humano**; nunca `stash`/`reset --hard`/`checkout -- .`/`clean` sin confirmación por fuente.
78
79
  - **Al cerrar una fase** (o al `Cerrar`): **propone commits por fuente** (propose-then-execute, aprobar antes); nunca `push`/`--amend`/`--no-verify`.
79
80
  - **Commit rechazado**: los cambios **quedan en el working tree** (no se revierten). Se permite reproponer / editar mensaje. Se registra en `CHECKPOINT` + `BACKLOG` que la fase quedó **sin commitear** (reanudable).
80
- - **Precondición entre fases**: `branch-check` valida *identidad* de rama, **no** *limpieza* del working tree. Antes de iniciar la exec session de la siguiente fase, el working tree de cada fuente debe estar **limpio** (committeado) o explícitamente **reconocido** como "cambios sin commitear de la fase N" — para no co-mezclar dos fases en un mismo commit.
81
+ - **Precondición entre fases**: `branch-check` valida *identidad* de rama, **no** *limpieza* del working tree. Antes de iniciar la siguiente fase, el working tree de cada fuente debe estar **limpio** (committeado) o explícitamente **reconocido** como "cambios sin commitear de la fase N" — para no co-mezclar dos fases en un mismo commit.
81
82
 
82
83
  ## Delta 3 — DB policy: **la IA nunca ejecuta DML**
83
84
 
@@ -98,19 +99,19 @@ Distinción por **ejecución**, no por archivo (ver el esquema `SCRIPTS.sql`):
98
99
 
99
100
  - Una fase cierra **done** cuando sus tareas están `- [x]` y su validación pasó **o** quedó diferida (handoff de SQL). Estado posible: **"done — SQL pendiente de aplicar"**.
100
101
  - Todas las fases done → `AskUserQuestion` final (contenido: `Marcar plan done` / `Preguntar algo más`; flow: `Compactar`/`Cerrar`).
101
- - **Sin export automático**: los artefactos (`SCRIPTS.sql`, `DECISION`, …) quedan en sus sessions. Promoverlos a `docs/` (scripts, manuals, …) es un paso aparte vía `export-*`.
102
+ - **Sin export automático**: los artefactos (`SCRIPTS.sql`, `DECISION`, …) quedan en la session. Promoverlos a `docs/` (scripts, manuals, …) es un paso aparte vía `export-*`.
102
103
 
103
104
  ## Sequence
104
105
 
105
106
  ```
106
- plan-exec-loop(PPP-plan.md):
107
- control = create_or_resume("plan-exec") # CLI antepone NNN global; CHECKPOINT, resume
108
- plan = read(PPP-plan.md)
107
+ plan-exec-loop(PPP-plan-<slug>.md):
108
+ session = create_or_resume("plan-exec") # UNA sola session por run; CLI antepone NNN global; CHECKPOINT, resume
109
+ plan = read(PPP-plan-<slug>.md)
109
110
  para cada Phase en plan (en orden, respeta deps):
110
- si Phase done: skip
111
- es = create_or_resume("plan-exec-phase-<N>") # reusa si quedó a medias
111
+ si Phase done (todas sus Tasks - [x] en el plan): skip # resume vía checkbox del plan-doc
112
+ seed CHECKPOINT.Next = Phase N (Pending = sus Tasks) # ANTES de iniciar la fase: sembrar intención (artifact-first)
112
113
  para cada Task de la Phase:
113
- si Task - [x] en el plan: skip # resume intra-fase
114
+ si Task - [x] en el plan: skip # resume intra-fase por checkbox
114
115
  verificar rama esperada por fuente (branch-check)
115
116
  si no coincide → pausar + resolver con humano
116
117
  ejecutar Task:
@@ -118,29 +119,28 @@ plan-exec-loop(PPP-plan.md):
118
119
  si crea herramienta/utilidad reusable → docs/tools (salida directa)
119
120
  si consulta BD read-only → SCRIPTS.sql + ejecutar read-only
120
121
  si cambio BD (DDL/DML) → redactar en SCRIPTS.sql (artefacto session, NO ejecutar)
121
- si decisión no obvia → DECISION
122
- si duda/gap → research session ó AskUserQuestion # chasis
123
- marcar Task - [x] + estado EN EL PLAN
122
+ si decisión no obvia → DECISION (etiquetado por fase/tarea, en el ÚNICO DECISION)
123
+ si duda/gap → research inline ó AskUserQuestion # chasis
124
+ marcar Task - [x] + estado EN EL PLAN # DESPUÉS de completar la Task (el plan-doc es la fuente de verdad por tarea)
124
125
  validación de la fase:
125
126
  la que corre y falla → volver a la tarea
126
127
  la dependiente de migración no aplicada → diferir (Open questions + BACKLOG)
128
+ update CHECKPOINT (Completed += Phase N, Next = Phase N+1) # DESPUÉS: Pending→Completed + Next = fase siguiente (ver ciclo artifact-first)
127
129
  proponer commit(s) por fuente (aprobar antes) # nunca push/amend/--no-verify
128
130
  si rechazado → cambios quedan; registrar "fase sin commitear"
129
131
  precondición siguiente fase: working tree limpio o reconocido
130
- es.close_and_report()
131
132
  validación final (lo que se pueda; lo dependiente de SQL queda como handoff)
132
133
  AskUserQuestion(contenido: [Marcar plan done, Preguntar algo más], flow: [Compactar, Cerrar])
133
134
  marcar plan done (o "done — SQL pendiente de aplicar")
134
- # NO export: los artefactos quedan en sessions; un export-* los promueve aparte
135
- finalize: CHECKPOINT + BACKLOG + cerrar sessions + reportar
135
+ # NO export: los artefactos quedan en la session; un export-* los promueve aparte
136
+ finalize: CHECKPOINT (+ BACKLOG si difiere) + cerrar session + reportar
136
137
  ```
137
138
 
138
139
  ```mermaid
139
140
  flowchart TD
140
- S["create_or_resume control session<br/>read PPP-plan.md"] --> P{"¿más Phases<br/>(no done)?"}
141
+ S["create_or_resume plan-exec session (única)<br/>read PPP-plan-&lt;slug&gt;.md"] --> P{"¿más Phases<br/>(no done)?"}
141
142
  P -->|no| V2["validación final<br/>(dep. de SQL → handoff)"]
142
- P -->|sí| ES["create_or_resume exec session (Phase N)"]
143
- ES --> T{"¿Task pendiente<br/>(no - [x])?"}
143
+ P -->|sí| T{"¿Task pendiente<br/>(no - [x])?"}
144
144
  T -->|sí| G["branch-check por fuente"]
145
145
  G -->|rama ok| DO["editar código · read-only→SCRIPTS.sql<br/>migración DDL/DML→SCRIPTS.sql (no ejecuta) · DECISION"]
146
146
  G -->|rama ≠| PA["pausar + resolver con humano"]
@@ -148,16 +148,16 @@ flowchart TD
148
148
  DO --> MK["marcar Task - [x] en el PLAN"]
149
149
  MK --> T
150
150
  T -->|no| VP["validación de fase<br/>(falla→tarea · dep. SQL→diferir)"]
151
- VP --> CM["proponer commits por fuente"]
152
- CM -->|aprobado| CL["cerrar exec session + reportar"]
151
+ VP --> CK["update CHECKPOINT (Completed/Next)"]
152
+ CK --> CM["proponer commits por fuente"]
153
+ CM -->|aprobado| P
153
154
  CM -->|rechazado| RJ["cambios quedan · registrar 'sin commitear'"]
154
- RJ --> CL
155
- CL --> P
155
+ RJ --> P
156
156
  V2 --> FIN["AskUserQuestion[Marcar plan done · Preguntar más]<br/>plan done (sin auto-export)"]
157
157
  ```
158
158
 
159
159
  ## Convergence / exit
160
160
 
161
161
  - Plan completo + validación OK (o diferida con handoff) → `Marcar plan done`.
162
- - `Cerrar` (tab flow, en cualquier momento) → `finalize` persiste `CHECKPOINT` + `BACKLOG` (qué quedó sin ejecutar / sin commitear / sin aplicar), cierra sessions, reporta.
162
+ - `Cerrar` (tab flow, en cualquier momento) → `finalize` persiste `CHECKPOINT` (y `BACKLOG` solo si quedó algo sin ejecutar / sin commitear / sin aplicar), cierra la session, reporta.
163
163
  - La promoción de artefactos a `docs/` (vía `export-*`) es **siempre** un paso posterior y explícito, fuera de este loop.
@@ -1,23 +1,25 @@
1
1
  ---
2
2
  name: plan-new-loop
3
3
  description: >-
4
- Genera un plan de implementación rico (docs/plans/PPP-plan.md) a partir de un
5
- spec refinado (docs/specs/NNN-spec-refined.md). Heir del chasis
6
- spec-refine-loop: reusa íntegro su motor gap-driven convergente, sus sessions
7
- internas (control + research on-demand), AskUserQuestion con ≤3 tabs de
8
- contenido + 1 tab flow (Compactar/Cerrar) siempre presente, research autónomo
9
- con regla BD read-only, y compact/resume con Cerrar que persiste CHECKPOINT +
10
- BACKLOG. Sus deltas: el plan absorbe inline el nivel TECHNICAL-NOTE
4
+ Genera un plan de implementación rico (docs/plans/PPP-plan-<slug>.md) a partir
5
+ de un spec (docs/specs/NNN-spec-<slug>.md). Heir del chasis spec-refine-loop:
6
+ reusa íntegro su motor gap-driven convergente, su única session por run,
7
+ research INLINE, AskUserQuestion con ≤3 tabs de contenido + 1 tab flow
8
+ (Compactar/Cerrar) siempre presente, research autónomo con regla BD read-only,
9
+ y artefactos como log vivo (CHECKPOINT siempre, BACKLOG solo si difiere). Sus
10
+ deltas: el plan absorbe inline el nivel TECHNICAL-NOTE
11
11
  (Solution/Impacted/AS-IS/TO-BE/Validations…) + Phases/Tasks con estado vivo;
12
12
  el research aquí mapea código/impacto (componentes FE/BE/BD, wiring AS-IS,
13
- dependencias); y una gap taxonomy propia de planificación. Lo arranca el
14
- comando /w:plan-new y es reanudable. Invocar cuando un spec ya refinado deba
15
- convertirse en un plan ejecutable antes de implementar.
13
+ dependencias); y una gap taxonomy propia de planificación. Distingue spec
14
+ refinado de borrador por la presencia de Refinement decisions/Q&A traceability
15
+ (si faltan soft-suggest correr spec-refine antes). Lo arranca el comando
16
+ /w:plan-new y es reanudable. Invocar cuando un spec deba convertirse en un plan
17
+ ejecutable antes de implementar.
16
18
  ---
17
19
 
18
20
  # plan-new-loop
19
21
 
20
- > **Heir** del chasis [`spec-refine-loop`](../spec-refine-loop/SKILL.md). Aquí **solo** los deltas. El motor (gap-driven, sessions, AskUserQuestion + tab `flow`, research autónomo + regla BD, compact/resume, `Cerrar` persiste) vive en el chasis — no se repite.
22
+ > **Heir** del chasis [`spec-refine-loop`](../spec-refine-loop/SKILL.md). Aquí **solo** los deltas. El motor (gap-driven, sesión única, AskUserQuestion + tab `flow`, research inline + regla BD, compact/resume, artefactos como log vivo) vive en el chasis — no se repite.
21
23
 
22
24
  ## Flow
23
25
  PLANIFICATION
@@ -26,33 +28,35 @@ PLANIFICATION
26
28
  2 — la IA lo corre entero.
27
29
 
28
30
  ## Started by
29
- `/w:plan-new` — **reanudable** (mismo mecanismo de 4 casos que el chasis).
31
+ `/w:plan-new` — **reanudable** (mismo mecanismo del chasis, keyado off CHECKPOINT).
30
32
 
31
33
  ## Reads
32
- `docs/specs/NNN-spec-refined.md`
34
+ `docs/specs/NNN-spec-*.md` (glob — localiza el spec por número; o la ruta exacta de `$ARGUMENTS`). **Refinado vs borrador** se distingue por la **presencia** de `## Refinement decisions` / `## Q&A traceability` en el spec: si faltan → **soft-suggest** correr `/w:spec-refine` primero (planificar sobre un spec sólido produce mejores planes), pero el usuario puede proceder.
33
35
 
34
36
  ## Writes
35
- `docs/plans/PPP-plan.md` (`generate`; **sobrescribe con confirmación** si existe). Solo escribe `docs/plans` — nunca otras carpetas `docs/` ni auto-export.
37
+ `docs/plans/PPP-plan-<slug>.md` (`generate`; **sobrescribe con confirmación** si existe). Solo escribe `docs/plans` — nunca otras carpetas `docs/` ni auto-export.
38
+
39
+ > **slug**: kebab-case corto derivado del Requirement del spec — solo `[a-z0-9-]`, ≤ ~5 palabras / ≤ 40 chars. El CLI solo devuelve el número `PPP`; el loop arma el nombre completo. Para localizar planes, glob `docs/plans/PPP-plan-*.md`.
36
40
 
37
41
  ## Inherits
38
42
 
39
43
  Del chasis [`spec-refine-loop`](../spec-refine-loop/SKILL.md), sin cambios:
40
44
 
41
- - Motor **gap-driven convergente** (`detect_gaps` → resolver → integrar → repetir; gaps agotados con límite `MAX` no se re-disparan).
42
- - **Sessions internas**: `control` (descriptor `plan-new` → `NNN-plan-new`: `SESSION` + `CHECKPOINT`, + `BACKLOG` al cerrar; Type = `refine`/`control`) + `research` on-demand (run-and-close, puede cerrar inconclusa).
45
+ - Motor **gap-driven convergente** + **ciclo artifact-first** del chasis (sembrar `CHECKPOINT.Pending/Next` ANTES → `detect_gaps` → resolver → integrar → actualizar `Pending→Completed` DESPUÉS; gaps agotados con límite `MAX` no se re-disparan).
46
+ - **Una sola session por run**: descriptor `plan-new` → `NNN-plan-new` (Type = `refine`): `SESSION` + `CHECKPOINT` (+ `BACKLOG` solo si difiere). La **investigación es inline** dentro de esta session (produce `ANALYSIS-FILE`/`CONCLUSIONS` + `SCRIPTS.sql` read-only en su propia carpeta), no una session aparte.
43
47
  - **AskUserQuestion**: ≤3 tabs de contenido + 1 tab `flow` (`Compactar`/`Cerrar`) siempre.
44
- - **Ask-vs-research rule** + **research autónomo** + **regla BD** (pregunta MCP si >1 sin default → queries a `SCRIPTS.sql` → ejecuta read-only, `sql-mutation-guard`) + manejo de research **inconclusa** (degrada a humano / difiere a `Open questions` + límite `MAX`).
45
- - **Compact / resume** (4 casos) y **`Cerrar` persiste** `CHECKPOINT` + `BACKLOG`.
46
- - **Naming + numeración global** del chasis: `<run>` = descriptor `plan-new`; hijas `--name plan-new-research-<gap>`. El CLI antepone el `NNN` global y secuencial (sin reiniciar por tipo); el caller pasa solo el descriptor.
48
+ - **Ask-vs-research rule** + **research autónomo inline** + **regla BD** (pregunta MCP si >1 sin default → queries a `SCRIPTS.sql` → ejecuta read-only, `sql-mutation-guard`) + manejo de research **inconclusa** (degrada a humano / difiere a `Open questions` + límite `MAX`).
49
+ - **Compact / resume** y **artefactos como log vivo (ciclo artifact-first)** (`CHECKPOINT` siempre; `BACKLOG` solo si difiere).
50
+ - **Naming + numeración global** del chasis: `<run>` = descriptor `plan-new`. El CLI antepone el `NNN` global y secuencial (sin reiniciar por tipo); el caller pasa solo el descriptor.
47
51
 
48
- ## Delta 1 — Deliverable: PLAN RICO (`PPP-plan.md`)
52
+ ## Delta 1 — Deliverable: PLAN RICO (`PPP-plan-<slug>.md`)
49
53
 
50
54
  El plan absorbe el nivel `TECHNICAL-NOTE` **inline** (decisión del usuario) + roadmap:
51
55
 
52
56
  ```markdown
53
57
  # Plan PPP — <slug>
54
58
 
55
- > Derivado de docs/specs/NNN-spec-refined.md · generado por plan-new-loop
59
+ > Derivado de docs/specs/NNN-spec-<slug>.md · generado por plan-new-loop
56
60
 
57
61
  ## Origin spec fuente (o prompt, si se bootstrapeó vía spec-new)
58
62
  ## Summary el cómo, en 1–2 frases
@@ -71,7 +75,7 @@ El plan absorbe el nivel `TECHNICAL-NOTE` **inline** (decisión del usuario) + r
71
75
  ## Open questions pendientes
72
76
  ```
73
77
 
74
- > **Implicación de catálogo:** `TECHNICAL-NOTE` deja de ser artefacto de exec session y se vuelve **secciones del plan-doc**. Reconciliado en [`plan-exec-loop`](../plan-exec-loop/SKILL.md): la exec session por fase **no** lleva `TECHNICAL-NOTE` ni `TASKS` propios; el detalle técnico y el progreso viven inline en el plan-doc (living).
78
+ > **Implicación de catálogo:** `TECHNICAL-NOTE` deja de ser artefacto de session y se vuelve **secciones del plan-doc**. Reconciliado en [`plan-exec-loop`](../plan-exec-loop/SKILL.md): la única plan-exec session **no** lleva `TECHNICAL-NOTE` ni `TASKS` propios; el detalle técnico y el progreso viven inline en el plan-doc (living).
75
79
 
76
80
  ## Delta 2 — Gap taxonomy (de "plan")
77
81
 
@@ -90,8 +94,8 @@ Reemplaza la gap taxonomy de spec por una orientada a planificación:
90
94
 
91
95
  ## Delta 3 — What research investigates here
92
96
 
93
- El research del chasis se especializa: mapear **código/impacto** — componentes FE/BE/BD afectados, wiring AS-IS, dependencias. Alimenta las secciones `Solution`, `Impacted`, `Current state (AS-IS)`. La regla BD del chasis aplica igual (queries read-only a `SCRIPTS.sql`, MCP elegido vía tab de contenido si >1 sin default).
97
+ El research **inline** del chasis se especializa: mapear **código/impacto** — componentes FE/BE/BD afectados, wiring AS-IS, dependencias. Alimenta las secciones `Solution`, `Impacted`, `Current state (AS-IS)`. La regla BD del chasis aplica igual (queries read-only a `SCRIPTS.sql`, MCP elegido vía tab de contenido si >1 sin default).
94
98
 
95
99
  ## Convergence / exit
96
100
 
97
- Sin gaps materiales → `AskUserQuestion` (contenido: `Guardar plan` / `Preguntar algo más`; flow: `Compactar`/`Cerrar`) → al `Guardar`, escribe `docs/plans/PPP-plan.md` (con confirmación si existe) → `finalize` (persiste `CHECKPOINT` + `BACKLOG`, cierra sessions, reporta). `Cerrar` en cualquier momento → `finalize` igual.
101
+ Sin gaps materiales → `AskUserQuestion` (contenido: `Guardar plan` / `Preguntar algo más`; flow: `Compactar`/`Cerrar`) → al `Guardar`, escribe `docs/plans/PPP-plan-<slug>.md` (con confirmación si existe) → `finalize` (persiste `CHECKPOINT`, y `BACKLOG` solo si difiere; cierra la session, reporta). `Cerrar` en cualquier momento → `finalize` igual.