@tacuchi/agent-workflow-cli 12.3.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 (60) 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/session-create-service.d.ts +2 -0
  9. package/dist/application/session-create-service.d.ts.map +1 -1
  10. package/dist/application/session-create-service.js +26 -3
  11. package/dist/application/session-create-service.js.map +1 -1
  12. package/dist/application/status-service.d.ts +74 -0
  13. package/dist/application/status-service.d.ts.map +1 -0
  14. package/dist/application/status-service.js +336 -0
  15. package/dist/application/status-service.js.map +1 -0
  16. package/dist/application/templates/session.d.ts +4 -2
  17. package/dist/application/templates/session.d.ts.map +1 -1
  18. package/dist/application/templates/session.js +15 -11
  19. package/dist/application/templates/session.js.map +1 -1
  20. package/dist/cli/commands/status.d.ts +3 -0
  21. package/dist/cli/commands/status.d.ts.map +1 -0
  22. package/dist/cli/commands/status.js +10 -0
  23. package/dist/cli/commands/status.js.map +1 -0
  24. package/dist/cli/help-groups.js +1 -1
  25. package/dist/cli/help-groups.js.map +1 -1
  26. package/dist/cli/main.js +2 -0
  27. package/dist/cli/main.js.map +1 -1
  28. package/dist/cli/tui/data/workflow-content.d.ts.map +1 -1
  29. package/dist/cli/tui/data/workflow-content.js +2 -1
  30. package/dist/cli/tui/data/workflow-content.js.map +1 -1
  31. package/package.json +1 -1
  32. package/skills/w/README.md +2 -2
  33. package/skills/w/SKILL.md +6 -5
  34. package/skills/w/artifacts/README.md +8 -7
  35. package/skills/w/artifacts/artifacts-core/BACKLOG.md +5 -8
  36. package/skills/w/artifacts/artifacts-core/CHECKPOINT.md +14 -13
  37. package/skills/w/artifacts/artifacts-core/SESSION.md +10 -11
  38. package/skills/w/artifacts/artifacts-core/TASKS.md +4 -4
  39. package/skills/w/artifacts/artifacts-dev/DECISION.md +3 -3
  40. package/skills/w/artifacts/artifacts-dev/TECHNICAL-NOTE.md +14 -14
  41. package/skills/w/artifacts/artifacts-research/ANALYSIS-FILE.md +14 -27
  42. package/skills/w/artifacts/artifacts-research/CONCLUSIONS.md +10 -13
  43. package/skills/w/commands/README.md +9 -6
  44. package/skills/w/commands/export-diagrams.md +2 -6
  45. package/skills/w/commands/export-manuals.md +2 -6
  46. package/skills/w/commands/export-reports.md +2 -6
  47. package/skills/w/commands/export-scripts.md +2 -6
  48. package/skills/w/commands/plan-exec.md +11 -10
  49. package/skills/w/commands/plan-new.md +15 -12
  50. package/skills/w/commands/quick.md +7 -6
  51. package/skills/w/commands/spec-new.md +18 -7
  52. package/skills/w/commands/spec-refine.md +14 -11
  53. package/skills/w/commands/status.md +50 -0
  54. package/skills/w/loops/README.md +12 -11
  55. package/skills/w/loops/plan-exec-loop/SKILL.md +54 -52
  56. package/skills/w/loops/plan-new-loop/SKILL.md +28 -24
  57. package/skills/w/loops/quick-loop/SKILL.md +20 -19
  58. package/skills/w/loops/spec-refine-loop/SKILL.md +85 -63
  59. package/skills/w/roles/README.md +1 -1
  60. package/skills/w/roles/research/SKILL.md +21 -81
@@ -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,23 +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** `<plan>-plan-exec`: dueña del run (`SESSION` + `CHECKPOINT` + `BACKLOG` al cerrar; Type = `control`).
63
- - **exec session por fase** `<plan>-exec-phase-<N>`: `SESSION` · `DECISION` · `SCRIPTS.sql` · `CHECKPOINT` (Type = `exec`).
64
- - **research session** `<plan>-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
- ## Delta 1 **One exec session per phase** (+ resume intra-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
- - Recorre las `Phases` del plan en orden (respeta deps).
69
- - 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).
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.
67
+
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.
70
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).
71
- - 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)`).
72
75
 
73
76
  ## Delta 2 — Git policy: **rama segura + commits propuestos**
74
77
 
75
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.
76
79
  - **Al cerrar una fase** (o al `Cerrar`): **propone commits por fuente** (propose-then-execute, aprobar antes); nunca `push`/`--amend`/`--no-verify`.
77
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).
78
- - **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.
79
82
 
80
83
  ## Delta 3 — DB policy: **la IA nunca ejecuta DML**
81
84
 
@@ -96,19 +99,19 @@ Distinción por **ejecución**, no por archivo (ver el esquema `SCRIPTS.sql`):
96
99
 
97
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"**.
98
101
  - Todas las fases done → `AskUserQuestion` final (contenido: `Marcar plan done` / `Preguntar algo más`; flow: `Compactar`/`Cerrar`).
99
- - **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-*`.
100
103
 
101
104
  ## Sequence
102
105
 
103
106
  ```
104
- plan-exec-loop(PPP-plan.md):
105
- control = create_or_resume(<plan>-plan-exec) # CHECKPOINT, resume
106
- 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)
107
110
  para cada Phase en plan (en orden, respeta deps):
108
- si Phase done: skip
109
- 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)
110
113
  para cada Task de la Phase:
111
- si Task - [x] en el plan: skip # resume intra-fase
114
+ si Task - [x] en el plan: skip # resume intra-fase por checkbox
112
115
  verificar rama esperada por fuente (branch-check)
113
116
  si no coincide → pausar + resolver con humano
114
117
  ejecutar Task:
@@ -116,29 +119,28 @@ plan-exec-loop(PPP-plan.md):
116
119
  si crea herramienta/utilidad reusable → docs/tools (salida directa)
117
120
  si consulta BD read-only → SCRIPTS.sql + ejecutar read-only
118
121
  si cambio BD (DDL/DML) → redactar en SCRIPTS.sql (artefacto session, NO ejecutar)
119
- si decisión no obvia → DECISION
120
- si duda/gap → research session ó AskUserQuestion # chasis
121
- 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)
122
125
  validación de la fase:
123
126
  la que corre y falla → volver a la tarea
124
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)
125
129
  proponer commit(s) por fuente (aprobar antes) # nunca push/amend/--no-verify
126
130
  si rechazado → cambios quedan; registrar "fase sin commitear"
127
131
  precondición siguiente fase: working tree limpio o reconocido
128
- es.close_and_report()
129
132
  validación final (lo que se pueda; lo dependiente de SQL queda como handoff)
130
133
  AskUserQuestion(contenido: [Marcar plan done, Preguntar algo más], flow: [Compactar, Cerrar])
131
134
  marcar plan done (o "done — SQL pendiente de aplicar")
132
- # NO export: los artefactos quedan en sessions; un export-* los promueve aparte
133
- 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
134
137
  ```
135
138
 
136
139
  ```mermaid
137
140
  flowchart TD
138
- 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)?"}
139
142
  P -->|no| V2["validación final<br/>(dep. de SQL → handoff)"]
140
- P -->|sí| ES["create_or_resume exec session (Phase N)"]
141
- ES --> T{"¿Task pendiente<br/>(no - [x])?"}
143
+ P -->|sí| T{"¿Task pendiente<br/>(no - [x])?"}
142
144
  T -->|sí| G["branch-check por fuente"]
143
145
  G -->|rama ok| DO["editar código · read-only→SCRIPTS.sql<br/>migración DDL/DML→SCRIPTS.sql (no ejecuta) · DECISION"]
144
146
  G -->|rama ≠| PA["pausar + resolver con humano"]
@@ -146,16 +148,16 @@ flowchart TD
146
148
  DO --> MK["marcar Task - [x] en el PLAN"]
147
149
  MK --> T
148
150
  T -->|no| VP["validación de fase<br/>(falla→tarea · dep. SQL→diferir)"]
149
- VP --> CM["proponer commits por fuente"]
150
- 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
151
154
  CM -->|rechazado| RJ["cambios quedan · registrar 'sin commitear'"]
152
- RJ --> CL
153
- CL --> P
155
+ RJ --> P
154
156
  V2 --> FIN["AskUserQuestion[Marcar plan done · Preguntar más]<br/>plan done (sin auto-export)"]
155
157
  ```
156
158
 
157
159
  ## Convergence / exit
158
160
 
159
161
  - Plan completo + validación OK (o diferida con handoff) → `Marcar plan done`.
160
- - `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.
161
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` (`<plan>-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** `<run>` para sessions hijas: `<plan>-plan-new` `<plan>-research-*`.
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.
@@ -4,16 +4,16 @@ description: >-
4
4
  El atajo liviano de agent-workflow: resuelve una tarea acotada (un fix, un
5
5
  ajuste pequeño) directamente desde el prompt del usuario, editando código con
6
6
  ceremonia mínima. Heir del chasis spec-refine-loop (motor gap-driven mínimo,
7
- research on-demand con regla BD read-only, AskUserQuestion con ≤3 tabs de
8
- contenido + 1 tab flow Compactar/Cerrar siempre, compact/resume con Cerrar que
9
- persiste CHECKPOINT + BACKLOG) y de plan-exec-loop (git seguro: rama esperada
10
- antes de editar + commit propuesto, nunca push/--amend/--no-verify; la IA
11
- nunca ejecuta DML, migraciones a SCRIPTS.sql; sin auto-export). Sus deltas: sin
12
- fases ni plan-doc (el prompt ES la tarea), una sola session ligera
13
- (<slug>-quick), un solo commit; y escalación con handoff si la tarea crece
14
- (propone subir a SPEC/PLAN dejando el código a medias como contexto). NO toca
15
- docs/. Lo arranca /w:quick y es reanudable. Invocar para cambios pequeños y
16
- directos que no ameritan spec ni plan formal.
7
+ research INLINE con regla BD read-only, AskUserQuestion con ≤3 tabs de
8
+ contenido + 1 tab flow Compactar/Cerrar siempre, compact/resume con artefactos
9
+ como log vivo: CHECKPOINT siempre, BACKLOG solo si difiere) y de plan-exec-loop
10
+ (git seguro: rama esperada antes de editar + commit propuesto, nunca
11
+ push/--amend/--no-verify; la IA nunca ejecuta DML, migraciones a SCRIPTS.sql;
12
+ sin auto-export). Sus deltas: sin fases ni plan-doc (el prompt ES la tarea),
13
+ una sola session ligera (<slug>-quick), un solo commit; y escalación con
14
+ handoff si la tarea crece (propone subir a SPEC/PLAN dejando el código a
15
+ medias como contexto). NO toca docs/. Lo arranca /w:quick y es reanudable.
16
+ Invocar para cambios pequeños y directos que no ameritan spec ni plan formal.
17
17
  ---
18
18
 
19
19
  # quick-loop
@@ -39,21 +39,21 @@ QUICK
39
39
 
40
40
  ## Internal session
41
41
 
42
- - **SIEMPRE** crea una session ligera `<slug>-quick` (Type = `quick`, ≈ `exec`): `SESSION` · `DECISION` · `SCRIPTS.sql` · `CHECKPOINT` (+ `BACKLOG` al cerrar). Una sola session (no exec-por-fase).
42
+ - **SIEMPRE** crea una session ligera con descriptor `<slug>-quick` → `NNN-<slug>-quick` (Type = `quick`, ≈ `exec`): `SESSION` · `DECISION` · `SCRIPTS.sql` · `CHECKPOINT` (+ `BACKLOG` solo si difiere). Una sola session. La investigación es **inline** dentro de ella (`ANALYSIS-FILE`/`CONCLUSIONS` + `SCRIPTS.sql` read-only en su carpeta). El caller pasa solo el descriptor; el CLI antepone el `NNN` global y secuencial (ver chasis).
43
43
 
44
44
  ## Inherits
45
45
 
46
- - del **chasis** [`spec-refine-loop`](../spec-refine-loop/SKILL.md): gap-driven (mínimo), `AskUserQuestion` ≤3 + `flow` (`Compactar`/`Cerrar`), `research` on-demand + regla BD read-only (pregunta MCP si >1 sin default → `SCRIPTS.sql` → ejecuta read-only), compact/resume, `Cerrar` persiste `CHECKPOINT`+`BACKLOG`.
46
+ - del **chasis** [`spec-refine-loop`](../spec-refine-loop/SKILL.md): gap-driven (mínimo), `AskUserQuestion` ≤3 + `flow` (`Compactar`/`Cerrar`), `research` **inline** + regla BD read-only (pregunta MCP si >1 sin default → `SCRIPTS.sql` → ejecuta read-only), compact/resume, **artefactos como log vivo (ciclo artifact-first)** (`CHECKPOINT` siempre; `BACKLOG` solo si difiere).
47
47
  - de [`plan-exec-loop`](../plan-exec-loop/SKILL.md): **git** (rama segura antes de editar + commit propuesto; nunca `push`/`--amend`/`--no-verify`), **BD** (la IA nunca ejecuta DML; migraciones → `SCRIPTS.sql` de la session), **sin auto-export** (no toca otras carpetas `docs/`).
48
48
 
49
49
  ## Composes
50
50
 
51
- `git` · `coding-standards` · `testing` (validación puntual) · `sql` (regla BD) · `writing` · `research`. Resueltas por `.workflow/skills.toml`.
51
+ `git` · `coding-standards` · `testing` (validación puntual) · `sql` (regla BD) · `writing` · `research` (inline). Resueltas por `.workflow/skills.toml`.
52
52
 
53
53
  ## Delta QUICK — minimal ceremony
54
54
 
55
55
  - **Sin fases, sin plan-doc**: el prompt **es** la tarea (una sola unidad). No hay roadmap.
56
- - **Una sola session** (no exec-por-fase). **Un solo commit** propuesto al final.
56
+ - **Una sola session**. **Un solo commit** propuesto al final.
57
57
  - **Escalación + handoff**: si la tarea crece (muchos archivos / ≥2 fuentes / necesita arquitectura) → propone subir a **SPEC/PLAN**. Si el usuario acepta:
58
58
  - el **código ya editado queda** en el working tree (no se revierte) **y se registra** en `CHECKPOINT` + `BACKLOG` ("cambios sin commitear en `<fuente>` — código a medias; decidir commit/descartar al retomar") — reusando **ambas** mitades del patrón "commit rechazado" de plan-exec (no revertir **y** registrar lo sin commitear). Crítico en la rama **SPEC**, que no retoma el working tree;
59
59
  - la session quick va a `finalize`, persistiendo `CHECKPOINT` + `BACKLOG` con un **puntero** al spec/plan sembrado (Followups: "escalado a `docs/specs/NNN` o `docs/plans/PPP` — retomar ahí");
@@ -64,26 +64,27 @@ QUICK
64
64
 
65
65
  ```
66
66
  quick-loop(prompt):
67
- s = create_or_resume(<slug>-quick) # siempre session ligera
67
+ s = create_or_resume("<slug>-quick") # CLI antepone NNN global; siempre session ligera
68
+ seed CHECKPOINT.Pending/Next = la tarea (s) # ANTES: sembrar intención (artifact-first); SESSION.Objective = el prompt
68
69
  trabajar la tarea (loop mínimo):
69
70
  verificar rama esperada por fuente (branch-check); si no → pausar + resolver
70
71
  editar código (cambio mínimo)
71
72
  si consulta BD read-only → SCRIPTS.sql + ejecutar read-only
72
73
  si cambio BD (DDL/DML) → SCRIPTS.sql (artefacto session, NO ejecutar)
73
74
  si decisión no obvia → DECISION
74
- si duda/gap → research session ó AskUserQuestion # chasis
75
+ si duda/gap → research inline ó AskUserQuestion # chasis
75
76
  si la tarea CRECE → proponer escalar a SPEC/PLAN
76
77
  si acepta → handoff (código queda; BACKLOG→spec/plan sembrado) → goto finalize
77
78
  validación puntual (test si aplica)
78
79
  proponer commit (aprobar antes) # nunca push/amend/--no-verify
79
80
  AskUserQuestion(contenido: [Cerrar tarea, Preguntar algo más], flow: [Compactar, Cerrar])
80
- finalize: CHECKPOINT + BACKLOG (si queda algo) + cerrar session + reportar
81
+ finalize: CHECKPOINT (DESPUÉS: Pending→Completed) + BACKLOG (solo si queda algo diferido) + cerrar session + reportar
81
82
  ```
82
83
 
83
84
  ```mermaid
84
85
  flowchart TD
85
- S["create_or_resume session <slug>-quick"] --> G["branch-check por fuente"]
86
- G -->|ok| DO["editar código · BD→SCRIPTS.sql · DECISION<br/>(duda→research/AskUserQuestion)"]
86
+ S["create_or_resume session NNN-&lt;slug&gt;-quick"] --> G["branch-check por fuente"]
87
+ G -->|ok| DO["editar código · BD→SCRIPTS.sql · DECISION<br/>(duda→research inline/AskUserQuestion)"]
87
88
  G -->|rama ≠| PA["pausar + resolver"]
88
89
  PA --> G
89
90
  DO --> GROW{"¿la tarea creció?"}