@tacuchi/agent-workflow-cli 14.6.0 → 14.9.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 (88) hide show
  1. package/README.md +6 -3
  2. package/dist/adapters/node-process.d.ts.map +1 -1
  3. package/dist/adapters/node-process.js +7 -3
  4. package/dist/adapters/node-process.js.map +1 -1
  5. package/dist/application/plugin-doctor/skills.d.ts +1 -0
  6. package/dist/application/plugin-doctor/skills.d.ts.map +1 -1
  7. package/dist/application/plugin-doctor/skills.js +1 -1
  8. package/dist/application/plugin-doctor/skills.js.map +1 -1
  9. package/dist/application/self/install-plugin-skills-git.js +2 -1
  10. package/dist/application/self/install-plugin-skills-git.js.map +1 -1
  11. package/dist/application/self/install-plugin-skills.d.ts.map +1 -1
  12. package/dist/application/self/install-plugin-skills.js +2 -2
  13. package/dist/application/self/install-plugin-skills.js.map +1 -1
  14. package/dist/application/self/install-skill.d.ts +2 -1
  15. package/dist/application/self/install-skill.d.ts.map +1 -1
  16. package/dist/application/self/install-skill.js +5 -32
  17. package/dist/application/self/install-skill.js.map +1 -1
  18. package/dist/application/self/install-targets.d.ts +10 -0
  19. package/dist/application/self/install-targets.d.ts.map +1 -0
  20. package/dist/application/self/install-targets.js +19 -0
  21. package/dist/application/self/install-targets.js.map +1 -0
  22. package/dist/application/self/plugin-cache-clear.d.ts +2 -1
  23. package/dist/application/self/plugin-cache-clear.d.ts.map +1 -1
  24. package/dist/application/self/plugin-cache-clear.js +5 -2
  25. package/dist/application/self/plugin-cache-clear.js.map +1 -1
  26. package/dist/application/self/plugin-cache-reload.js.map +1 -1
  27. package/dist/application/self/uninstall-skill.d.ts.map +1 -1
  28. package/dist/application/self/uninstall-skill.js +4 -2
  29. package/dist/application/self/uninstall-skill.js.map +1 -1
  30. package/dist/application/source-launch-scripts-service.d.ts +6 -0
  31. package/dist/application/source-launch-scripts-service.d.ts.map +1 -1
  32. package/dist/application/source-launch-scripts-service.js +15 -2
  33. package/dist/application/source-launch-scripts-service.js.map +1 -1
  34. package/dist/application/source-launch-service.d.ts +4 -2
  35. package/dist/application/source-launch-service.d.ts.map +1 -1
  36. package/dist/application/source-launch-service.js +7 -3
  37. package/dist/application/source-launch-service.js.map +1 -1
  38. package/dist/cli/commands/check-branch.js +2 -1
  39. package/dist/cli/commands/check-branch.js.map +1 -1
  40. package/dist/cli/commands/git-flow.d.ts.map +1 -1
  41. package/dist/cli/commands/git-flow.js +3 -7
  42. package/dist/cli/commands/git-flow.js.map +1 -1
  43. package/dist/cli/commands/merge-state.d.ts.map +1 -1
  44. package/dist/cli/commands/merge-state.js +2 -5
  45. package/dist/cli/commands/merge-state.js.map +1 -1
  46. package/dist/cli/commands/release-data.d.ts.map +1 -1
  47. package/dist/cli/commands/release-data.js +6 -2
  48. package/dist/cli/commands/release-data.js.map +1 -1
  49. package/dist/cli/commands/session-artifacts.d.ts.map +1 -1
  50. package/dist/cli/commands/session-artifacts.js +8 -0
  51. package/dist/cli/commands/session-artifacts.js.map +1 -1
  52. package/dist/cli/commands/session-resume.d.ts.map +1 -1
  53. package/dist/cli/commands/session-resume.js +8 -0
  54. package/dist/cli/commands/session-resume.js.map +1 -1
  55. package/dist/cli/parser.d.ts +6 -0
  56. package/dist/cli/parser.d.ts.map +1 -1
  57. package/dist/cli/parser.js +18 -0
  58. package/dist/cli/parser.js.map +1 -1
  59. package/dist/cli/tui/components/logs-section.d.ts.map +1 -1
  60. package/dist/cli/tui/components/logs-section.js +12 -1
  61. package/dist/cli/tui/components/logs-section.js.map +1 -1
  62. package/dist/cli/tui/tabs/skills-tab.d.ts.map +1 -1
  63. package/dist/cli/tui/tabs/skills-tab.js +7 -10
  64. package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
  65. package/package.json +1 -1
  66. package/skills/w/README.md +2 -2
  67. package/skills/w/SKILL.md +5 -3
  68. package/skills/w/artifacts/README.md +6 -3
  69. package/skills/w/artifacts/artifacts-core/SESSION.md +1 -1
  70. package/skills/w/artifacts/artifacts-design/SPEC.md +42 -0
  71. package/skills/w/commands/README.md +1 -1
  72. package/skills/w/commands/plan-exec.md +1 -0
  73. package/skills/w/commands/plan-new.md +4 -0
  74. package/skills/w/commands/plan-refine.md +4 -0
  75. package/skills/w/commands/quick.md +1 -0
  76. package/skills/w/commands/workspace-init.md +1 -1
  77. package/skills/w/exports/export-diagrams/SKILL.md +1 -1
  78. package/skills/w/exports/export-manuals/SKILL.md +1 -1
  79. package/skills/w/exports/export-reports/SKILL.md +1 -1
  80. package/skills/w/exports/export-scripts/SKILL.md +1 -1
  81. package/skills/w/loops/README.md +3 -2
  82. package/skills/w/loops/plan-exec-loop/SKILL.md +32 -20
  83. package/skills/w/loops/plan-new-loop/SKILL.md +17 -16
  84. package/skills/w/loops/plan-refine-loop/SKILL.md +16 -14
  85. package/skills/w/loops/quick-loop/SKILL.md +18 -18
  86. package/skills/w/loops/spec-refine-loop/SKILL.md +2 -0
  87. package/skills/w/roles/README.md +3 -1
  88. package/skills/w/roles/ui-spec/SKILL.md +22 -7
@@ -1,20 +1,16 @@
1
1
  ---
2
2
  name: plan-new-loop
3
3
  description: >-
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, structured-choice con ≤3 preguntas de contenido + 1 control 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
- (Solution/Impacted/AS-IS/TO-BE/Validations…) + Phases/Tasks con estado vivo;
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. 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.
4
+ Genera un plan de implementación rico (docs/plans/PPP-plan-<slug>.md) a
5
+ partir de un spec (docs/specs/NNN-spec-<slug>.md). Heir del chasis spec-
6
+ refine-loop (motor gap-driven convergente, session única, research inline,
7
+ structured-choice, artefactos como log vivo); sus deltas viven en el cuerpo:
8
+ el plan absorbe el nivel TECHNICAL-NOTE + Phases/Tasks con estado vivo,
9
+ research de mapeo código/impacto, gap taxonomy de planificación, y si el
10
+ plan incluye UI compone ui-design para autorar design SPECs por pantalla
11
+ (NNN-SPEC-<SLUG>.md). Si el spec no está refinado sugiere spec-refine antes.
12
+ Lo arranca /w:plan-new y es reanudable. Invocar cuando un spec deba
13
+ convertirse en un plan ejecutable antes de implementar.
18
14
  ---
19
15
 
20
16
  # plan-new-loop
@@ -34,7 +30,7 @@ PLAN
34
30
  `docs/specs/NNN-spec-*.md` (glob — localiza el spec por número; o la ruta exacta del argumento del comando). **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.
35
31
 
36
32
  ## Writes
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.
33
+ `docs/plans/PPP-plan-<slug>.md` (`generate`; **sobrescribe con confirmación** si existe). Solo escribe `docs/plans` — nunca otras carpetas `docs/` ni auto-export. Si el plan **incluye UI**, además produce **design SPECs** (`NNN-SPEC-<SLUG>.md`) como artefactos **de su sesión** (ver *Delta 4* — no son `docs/`, no hay auto-export).
38
34
 
39
35
  > **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`.
40
36
 
@@ -93,13 +89,18 @@ Reemplaza la gap taxonomy de spec por una orientada a planificación:
93
89
  | Deps faltantes | orden no claro | research / humano |
94
90
  | Criterios del spec sin cubrir | tareas no trazan a acceptance criteria | la IA deriva + humano confirma |
95
91
  | Riesgos sin atender | riesgos técnicos sin mitigar/declarar | humano |
92
+ | UI sin design SPEC *(si aplica)* | el plan incluye UI (FE/pantallas en `Impacted`, `## UI spec` en el spec, o tareas UI) sin `NNN-SPEC-*.md` en la sesión | **capacidad `ui-design`** |
96
93
 
97
94
  ## Delta 3 — What research investigates here
98
95
 
99
96
  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 pregunta de contenido si >1 sin default).
100
97
 
98
+ ## Delta 4 — Design SPECs (si el plan incluye UI)
99
+
100
+ El gap **UI sin design SPEC** se resuelve **componiendo** la capacidad **`ui-design`** (default built-in [`ui-spec`](../../roles/ui-spec/SKILL.md); rebindeable vía `.workflow/skills.toml`; `off` → degrada a humano / `Open questions`): autora **un design SPEC por pantalla** como artefacto de la sesión — `NNN-SPEC-<SLUG>.md` (`001-SPEC-MODAL-EXPORT.md`, `002-SPEC-ADMIN-DASHBOARD.md`; numeración local a la sesión, ver [`SPEC.md`](../../artifacts/artifacts-design/SPEC.md)). **Deriva** de la sección `## UI spec` del spec si existe (la parte por pantalla y la eleva a detalle ejecutable); si no, autora desde el `Requirement` (design-system/tema/ambigüedades vía *structured-choice*, cuenta en el batch). Las **Tasks UI del plan referencian** la ruta de su SPEC — esa referencia es la fuente de verdad — y `plan-exec-loop` los lee como referencia de diseño. Es el mismo tercer modo de resolución de gap del chasis (junto a *research* y *humano*).
101
+
101
102
  ## Convergence / exit
102
103
 
103
- Sin gaps materiales → **coherence gate** (read-only) = **`Success criteria` en verde** (*verification-first*; es el "convergence gate" del chasis para PLAN-new): cada `acceptance criterion` del spec **traza** a una fase/tarea, `Final behavior` los cubre, fases XS–S / tareas XS, `deps` sin ciclos, `Impacted` consistente con `Solution`. Lo que falle **vuelve como gap** — la trazabilidad criterio→tarea es una **invariante chequeada**, no una sección aparte. Si pasa → *structured-choice* (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.
104
+ Sin gaps materiales → **coherence gate** (read-only) = **`Success criteria` en verde** (*verification-first*; es el "convergence gate" del chasis para PLAN-new): cada `acceptance criterion` del spec **traza** a una fase/tarea, `Final behavior` los cubre, fases XS–S / tareas XS, `deps` sin ciclos, `Impacted` consistente con `Solution`; y si el plan incluye UI: cada pantalla/tarea UI **traza a su design SPEC** (`NNN-SPEC-*.md`) y los SPECs no contradicen el `## UI spec` del spec (si existe). Lo que falle **vuelve como gap** — la trazabilidad criterio→tarea es una **invariante chequeada**, no una sección aparte. Si pasa → *structured-choice* (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.
104
105
 
105
106
  > **Después de generar:** el plan puede ir directo a `plan-exec`, o —si surgen cambios antes de ejecutar (nuevos requerimientos, ajustes de alcance)— pasar por [`plan-refine-loop`](../plan-refine-loop/SKILL.md) (`/w:plan-refine`, auxiliar y **no obligatorio**), que lo refina in place.
@@ -1,17 +1,15 @@
1
1
  ---
2
2
  name: plan-refine-loop
3
3
  description: >-
4
- Refina un plan existente (docs/plans/PPP-plan-<slug>.md) editándolo IN PLACE,
5
- como paso auxiliar y NO obligatorio del flujo PLAN antes de plan-exec. Heir del
6
- chasis spec-refine-loop: reusa íntegro su motor gap-driven convergente, su única
7
- session por run, research INLINE, structured-choice con ≤3 preguntas de contenido
8
- + 1 control flow (Compactar/Cerrar) siempre, research autónomo con regla BD
9
- read-only, y artefactos como log vivo (CHECKPOINT siempre, BACKLOG solo si
10
- difiere). Es a plan-new lo que spec-refine es a spec-new: edita el plan-doc in
11
- place (no genera uno nuevo). Reusa la gap taxonomy y el coherence gate de
12
- plan-new-loop; agrega Refinement decisions/Q&A traceability al plan (traza, sin
13
- contrato de gating: plan-exec corre cualquier plan). Lo arranca /w:plan-refine y
14
- es reanudable + re-corrible a demanda. Invocar cuando un plan ya generado deba
4
+ Refina un plan existente (docs/plans/PPP-plan-<slug>.md) editándolo IN
5
+ PLACE, como paso auxiliar y NO obligatorio del flujo PLAN antes de plan-
6
+ exec. Es a plan-new lo que spec-refine es a spec-new. Heir del chasis spec-
7
+ refine-loop (motor gap-driven, session única, research inline, structured-
8
+ choice, artefactos como log vivo); reusa la gap taxonomy y el coherence gate
9
+ de plan-new-loop, agrega Refinement decisions/Q&A traceability al plan
10
+ (traza, sin gating), y si el refine toca UI compone ui-design y
11
+ produce/actualiza design SPECs por pantalla. Lo arranca /w:plan-refine;
12
+ reanudable y re-corrible a demanda. Invocar cuando un plan ya generado deba
15
13
  ajustarse antes de ejecutarlo.
16
14
  ---
17
15
 
@@ -37,7 +35,7 @@ PLAN
37
35
  `docs/plans/PPP-plan-*.md` (glob — localiza el plan por número; o la ruta exacta del argumento del comando). **Siempre el plan mismo**: este loop lo edita in place, no hay un archivo "refined" aparte.
38
36
 
39
37
  ## Writes
40
- Actualiza `docs/plans/PPP-plan-<slug>.md` **in place** (cuando el usuario elige `Guardar plan refinado`): completa/ajusta secciones y **agrega** `## Refinement decisions` + `## Q&A traceability`. Como sobrescribe un doc existente, **con confirmación** del usuario. Solo escribe `docs/plans` — nunca otras carpetas `docs/` ni auto-export.
38
+ Actualiza `docs/plans/PPP-plan-<slug>.md` **in place** (cuando el usuario elige `Guardar plan refinado`): completa/ajusta secciones y **agrega** `## Refinement decisions` + `## Q&A traceability`. Como sobrescribe un doc existente, **con confirmación** del usuario. Solo escribe `docs/plans` — nunca otras carpetas `docs/` ni auto-export. Si el refine **toca UI**, además produce/actualiza **design SPECs** (`NNN-SPEC-<SLUG>.md`) como artefactos **de su propia sesión** (ver *Delta 4* — no son `docs/`, no hay auto-export).
41
39
 
42
40
  ## Inherits
43
41
 
@@ -69,7 +67,7 @@ Cada duda preguntada al humano + la respuesta elegida.
69
67
 
70
68
  ## Delta 2 — Gap taxonomy (de "plan")
71
69
 
72
- Reusa **íntegra** la gap taxonomy de [`plan-new-loop`](../plan-new-loop/SKILL.md) (§ *Delta 2*): Approach/Solution vago, componentes sin identificar, wiring AS-IS desconocido, fase muy grande, tarea no atómica, deps faltantes, criterios del spec sin cubrir, riesgos sin atender. **Diferencia de foco:** plan-new **construye** el plan desde cero; plan-refine **detecta qué cambió** respecto del plan ya escrito (o respecto del spec, si el spec se re-refinó) y cierra **esos** gaps — típicamente menos y más localizados. Un gap extra propio del re-refine:
70
+ Reusa **íntegra** la gap taxonomy de [`plan-new-loop`](../plan-new-loop/SKILL.md) (§ *Delta 2*): Approach/Solution vago, componentes sin identificar, wiring AS-IS desconocido, fase muy grande, tarea no atómica, deps faltantes, criterios del spec sin cubrir, riesgos sin atender, UI sin design SPEC. **Diferencia de foco:** plan-new **construye** el plan desde cero; plan-refine **detecta qué cambió** respecto del plan ya escrito (o respecto del spec, si el spec se re-refinó) y cierra **esos** gaps — típicamente menos y más localizados. Un gap extra propio del re-refine:
73
71
 
74
72
  | Gap | Signal | Resolved by |
75
73
  |---|---|---|
@@ -79,6 +77,10 @@ Reusa **íntegra** la gap taxonomy de [`plan-new-loop`](../plan-new-loop/SKILL.m
79
77
 
80
78
  Igual que plan-new (mapea código/impacto: componentes FE/BE/BD, wiring AS-IS, deps), pero **acotado al delta**: re-verifica solo lo que el cambio toca (no re-mapea todo el plan). Regla BD del chasis igual (read-only a `SCRIPTS.sql`, MCP vía pregunta si >1 sin default).
81
79
 
80
+ ## Delta 4 — Design SPECs (si el refine toca UI)
81
+
82
+ Mismo mecanismo que [`plan-new-loop`](../plan-new-loop/SKILL.md) (§ *Delta 4*: capacidad **`ui-design`** → `NNN-SPEC-<SLUG>.md` por pantalla, ver [`SPEC.md`](../../artifacts/artifacts-design/SPEC.md)), **acotado al delta**: solo las pantallas **nuevas o cambiadas** por el refine reciben design SPEC. El SPEC actualizado se escribe en **la sesión propia** del plan-refine (cada loop maneja los artefactos de SU sesión — no edita los de la sesión de plan-new) y el plan **re-apunta** la referencia de la Task UI al SPEC vigente. Pantallas no tocadas conservan su SPEC original.
83
+
82
84
  ## Compact / resume
83
85
 
84
86
  El resume **keya off el `CHECKPOINT`** de la refine session, no de un archivo "refined". Tres casos al ejecutar `/w:plan-refine` sobre un plan:
@@ -91,4 +93,4 @@ El resume **keya off el `CHECKPOINT`** de la refine session, no de un archivo "r
91
93
 
92
94
  ## Convergence / exit
93
95
 
94
- Sin gaps materiales → **coherence gate** (read-only) = **`Success criteria` en verde** (*verification-first*; el "convergence gate" del chasis para PLAN, mismo que plan-new): cada `acceptance criterion` del spec **traza** a una fase/tarea, `Final behavior` los cubre, fases XS–S / tareas XS, `deps` sin ciclos, `Impacted` consistente con `Solution`, y —propio del re-refine— **el plan quedó realineado** con lo que cambió. Lo que falle **vuelve como gap**. Si pasa → *structured-choice* (contenido: `Guardar plan refinado` / `Preguntar algo más`; flow: `Compactar`/`Cerrar`) → al `Guardar`, edita `docs/plans/PPP-plan-<slug>.md` in place (con confirmación) + inserta `Refinement decisions`/`Q&A traceability` → `finalize` (persiste `CHECKPOINT`; `BACKLOG` solo si difiere; cierra la session, reporta). `Cerrar` en cualquier momento → `finalize` igual.
96
+ Sin gaps materiales → **coherence gate** (read-only) = **`Success criteria` en verde** (*verification-first*; el "convergence gate" del chasis para PLAN, mismo que plan-new): cada `acceptance criterion` del spec **traza** a una fase/tarea, `Final behavior` los cubre, fases XS–S / tareas XS, `deps` sin ciclos, `Impacted` consistente con `Solution`, si hay UI cada pantalla/tarea UI **traza a su design SPEC vigente**, y —propio del re-refine— **el plan quedó realineado** con lo que cambió. Lo que falle **vuelve como gap**. Si pasa → *structured-choice* (contenido: `Guardar plan refinado` / `Preguntar algo más`; flow: `Compactar`/`Cerrar`) → al `Guardar`, edita `docs/plans/PPP-plan-<slug>.md` in place (con confirmación) + inserta `Refinement decisions`/`Q&A traceability` → `finalize` (persiste `CHECKPOINT`; `BACKLOG` solo si difiere; cierra la session, reporta). `Cerrar` en cualquier momento → `finalize` igual.
@@ -1,19 +1,15 @@
1
1
  ---
2
2
  name: quick-loop
3
3
  description: >-
4
- El atajo liviano de agent-workflow: resuelve una tarea acotada (un fix, un
5
- ajuste pequeño) directamente desde el prompt del usuario, editando código con
6
- ceremonia mínima. Heir del chasis spec-refine-loop (motor gap-driven mínimo,
7
- research INLINE con regla BD read-only, structured-choice con ≤3 preguntas de
8
- contenido + 1 control 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.
4
+ El atajo liviano de agent-workflow: resuelve una tarea acotada (fix, ajuste
5
+ chico) directamente desde el prompt, editando código con ceremonia mínima.
6
+ Heir del chasis spec-refine-loop y de plan-exec-loop (git seguro, BD solo-
7
+ scripts, gate de revisión de cierre proporcional, sin auto-export); sus
8
+ deltas viven en el cuerpo: sin fases ni plan-doc (el prompt ES la tarea),
9
+ session ligera única (<slug>-quick), un solo commit, y escalación con
10
+ handoff a SPEC/PLAN si la tarea crece. NO toca docs/. Lo arranca /w:quick y
11
+ es reanudable. Invocar para cambios pequeños y directos que no ameritan spec
12
+ ni plan formal.
17
13
  ---
18
14
 
19
15
  # quick-loop
@@ -44,7 +40,7 @@ QUICK
44
40
  ## Inherits
45
41
 
46
42
  - del **chasis** [`spec-refine-loop`](../spec-refine-loop/SKILL.md): **objetivo persistente** (acá el más directo: el prompt *es* el objetivo) + **verification-first** (`SESSION.Success criteria` proporcional), gap-driven (mínimo), *structured-choice* ≤3 preguntas de contenido + 1 control `flow` (`Compactar`/`Cerrar`) (capacidad del arnés — ver [`../../harness/SKILL.md`](../../harness/SKILL.md); en Claude Code es `AskUserQuestion`), `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
- - 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/`).
43
+ - 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/`), y el **gate de revisión de cierre** (§ *Delta 5* de plan-exec) en versión **proporcional**: antes de proponer el único commit, re-lectura del diff aplicando las convenciones ambientes instaladas → corregir o diferir justificado.
48
44
 
49
45
  ## Composes
50
46
 
@@ -56,7 +52,7 @@ QUICK
56
52
 
57
53
  - **Sin fases, sin plan-doc**: el prompt **es** la tarea (una sola unidad). No hay roadmap.
58
54
  - **Verification-first proporcional** (ceremonia mínima): aun acá se **siembra el check antes**, del tamaño de la tarea. Código: un test (repro del bug → fix) o "build/lint/tests existentes siguen verdes" (chore). **Análisis/diseño**: una **rúbrica falsable corta**, *ratificada por el usuario* antes de perseguirla. Es el `SESSION.Success criteria` del run (ver [chasis § Verification-first](../spec-refine-loop/SKILL.md)).
59
- - **Una sola session**. **Un solo commit** propuesto al final (solo si hubo cambios de código).
55
+ - **Una sola session**. **Un solo commit** propuesto al final (solo si hubo cambios de código), **tras el gate de revisión de cierre proporcional** (heredado de plan-exec § *Delta 5*): re-lectura del diff + convenciones ambientes; corregir o diferir; nada llega al commit sin revisar.
60
56
  - **Escalación + handoff**: si la tarea crece (muchos archivos / ≥2 fuentes / necesita arquitectura) → propone subir a **SPEC/PLAN**. Si el usuario acepta:
61
57
  - 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;
62
58
  - 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í");
@@ -91,7 +87,10 @@ quick-loop(prompt):
91
87
  si la tarea CRECE → proponer escalar a SPEC/PLAN
92
88
  si acepta → handoff (avance queda; BACKLOG→spec/plan sembrado) → goto finalize
93
89
  convergence gate: Success criteria en verde # tests verdes si código · rúbrica satisfecha si análisis/diseño
94
- si hubo cambios de código → proponer commit (aprobar antes) # nunca push/amend/--no-verify
90
+ si hubo cambios de código:
91
+ gate de revisión de cierre (proporcional): # re-lectura del diff + convenciones ambientes instaladas
92
+ hallazgos → corregir (re-validar) ó diferir justificado (BACKLOG)
93
+ proponer commit (aprobar antes) # nunca push/amend/--no-verify; solo tras el gate
95
94
  structured_choice(contenido: [Cerrar tarea, Preguntar algo más], flow: [Compactar, Cerrar])
96
95
  finalize: CHECKPOINT (DESPUÉS: Pending→Completed) + BACKLOG (solo si queda algo diferido) + cerrar session + reportar
97
96
  ```
@@ -106,14 +105,15 @@ flowchart TD
106
105
  GROW -->|sí| ESC["escalar a SPEC/PLAN<br/>avance queda · BACKLOG→spec/plan sembrado"]
107
106
  ESC --> FIN
108
107
  GROW -->|no| V["convergence gate:<br/>Success criteria en verde"]
109
- V --> CM["si hubo código → proponer commit (aprobar)"]
108
+ V --> RV["si hubo código → gate de revisión de cierre<br/>(diff + convenciones ambientes → corregir/diferir)"]
109
+ RV --> CM["proponer commit (aprobar)"]
110
110
  CM --> Q["structured-choice[Cerrar · Preguntar más]<br/>flow[Compactar · Cerrar]"]
111
111
  Q --> FIN["finalize: CHECKPOINT + BACKLOG + cerrar"]
112
112
  ```
113
113
 
114
114
  ## Convergence / exit
115
115
 
116
- - **Success criteria en verde** (proporcional) + commit propuesto si hubo código (o aprobado saltarlo) → `Cerrar`.
116
+ - **Success criteria en verde** (proporcional) + gate de revisión de cierre pasado y commit propuesto si hubo código (o aprobado saltarlo) → `Cerrar`.
117
117
  - `Cerrar`/`Compactar` (control `flow`) → persiste `CHECKPOINT` + `BACKLOG` (reanudable).
118
118
  - **Sin export**: nada va a `docs/`. Si algo amerita preservarse → se promueve aparte vía `export-*`, o se escala a SPEC/PLAN.
119
119
 
@@ -123,6 +123,8 @@ El **CLI es dueño del número**: `aw session-create` antepone un `NNN` **global
123
123
 
124
124
  El gap **UI sin especificar** (cuando el requerimiento involucra UI; ver *Gap taxonomy*) se resuelve **componiendo** la capacidad **`ui-design`** (default built-in `ui-spec`; rebindeable vía `.workflow/skills.toml`): autora el UI spec nativamente (estructura, vocabulario, formato Markdown). Es un tercer modo de resolución de gap (junto a *research* y *humano*): el loop aporta la iteración/Q&A que el viejo servicio no tenía (design-system, tema, variantes, desambiguación) **vía la misma structured-choice**, y lo integra como sección `## UI spec` del spec.
125
125
 
126
+ > **Dos niveles de la misma capacidad:** aquí (SPEC) produce la sección `## UI spec` del spec — el *qué* de la UI, grano grueso. En PLAN, `plan-new-loop`/`plan-refine-loop` componen la **misma** capacidad para producir **design SPECs por pantalla** (`NNN-SPEC-<SLUG>.md`, artefactos de su sesión — ver [`SPEC.md`](../../artifacts/artifacts-design/SPEC.md)), derivados de esta sección si existe.
127
+
126
128
  Otras capacidades transversales que el chasis usa siempre: `research` (research **inline**, ver abajo), `sql` (regla BD en research). Todas se resuelven por config; `off` → el loop sigue sin la capacidad y, si era necesaria, lo dice o pregunta. La **prosa del spec** sigue las convenciones de redacción **ambientes** (el host auto-aplica una skill de writing instalada si está presente), no un rol compuesto.
127
129
 
128
130
  > **Convenciones ambientes (no roles).** Los estándares de código, testing, redacción **y la creación de herramientas** (`creating-tools`) **no son roles** del workflow ni se bindean: son **skills standalone que el host auto-descubre por su `description`** y aplica cuando son relevantes. El workflow es **indiferente** (no las lee ni las busca). Familias útiles viven en plugins del marketplace (`dev-conventions`, `tool-builder`), pero el workflow **no depende** de ellos.
@@ -12,7 +12,7 @@ All 6 roles, their built-in defaults, their tier, and which loops/exports compos
12
12
 
13
13
  | Role | Default built-in | Tier | Composed by |
14
14
  |---|---|---|---|
15
- | `ui-design` | [`ui-spec`](ui-spec/SKILL.md) | must | `spec-refine-loop` (when requirement involves UI) |
15
+ | `ui-design` | [`ui-spec`](ui-spec/SKILL.md) | must | `spec-refine-loop` (when requirement involves UI) · `plan-new-loop` / `plan-refine-loop` (per-screen design SPECs) |
16
16
  | `sql` | `sql` | must | inline research · `plan-exec-loop` · `quick-loop` · `export-scripts` |
17
17
  | `git` | `git` | must | `plan-exec-loop` · `quick-loop` |
18
18
  | `research` | [`research`](research/SKILL.md) | should | all loops (on-demand investigation) |
@@ -24,6 +24,8 @@ All 6 roles, their built-in defaults, their tier, and which loops/exports compos
24
24
  - `should` — loaded on-demand; active by default but lower priority to override.
25
25
 
26
26
  > **Convenciones ambientes (no roles).** Los estándares de código, testing, redacción **y la creación de herramientas** (`creating-tools`) **no son roles** del workflow ni se bindean: son **skills standalone que el host auto-descubre por su `description`** y aplica cuando son relevantes. El workflow es **indiferente** (no las lee ni las busca). Familias útiles viven en plugins del marketplace (`dev-conventions`, `tool-builder`), pero el workflow **no depende** de ellos.
27
+ >
28
+ > **La revisión de cierre tampoco es un rol** (decisión deliberada — se evaluó y descartó un rol `conventions`/`rules`/`review`): el **gate de revisión de cierre** de `plan-exec-loop`/`quick-loop` (pre-commit) es un **paso del loop**; el loop crea el **momento** y las convenciones ambientes instaladas lo llenan. Un rol que "señale las skills del marketplace" re-acoplaría lo que esta extracción desacopló.
27
29
 
28
30
  ---
29
31
 
@@ -5,9 +5,12 @@ description: >-
5
5
  requirement, author a structured, framework-agnostic screen specification as
6
6
  **Markdown** (single output format). Knows the conceptual screen structure, the
7
7
  kind/region vocabulary, the authoring rules, design-system / theme / variant
8
- handling, and the exact Markdown render format. Use when a loop is refining a spec
9
- that involves screens, forms, dashboards, modals or any UI surface primarily
10
- `spec-refine-loop`. Recycled from the `ui-spec-generator` service.
8
+ handling, and the exact Markdown render format. Two landing zones, same render:
9
+ in SPEC (`spec-refine-loop`) it authors the `## UI spec` section of the spec doc;
10
+ in PLAN (`plan-new-loop`/`plan-refine-loop`) it authors per-screen **design
11
+ SPECs** (`NNN-SPEC-<SLUG>.md`) as session artifacts. Use when a loop is refining
12
+ a spec or building/refining a plan that involves screens, forms, dashboards,
13
+ modals or any UI surface. Recycled from the `ui-spec-generator` service.
11
14
  ---
12
15
 
13
16
  # ui-spec — UI spec authoring
@@ -22,13 +25,18 @@ Dado un requerimiento de UI, autorar una **descripción estructurada en Markdown
22
25
 
23
26
  ## Composed by
24
27
 
25
- La carga el **`spec-refine-loop`** (ver `../../loops/spec-refine-loop/SKILL.md`) al resolver el gap **UI sin especificar** (cuando el requerimiento involucra UI). El loop aporta lo que el servicio viejo no tenía:
28
+ Dos niveles, misma capacidad:
29
+
30
+ - **`spec-refine-loop`** (ver `../../loops/spec-refine-loop/SKILL.md`) — al resolver el gap **UI sin especificar** (cuando el requerimiento involucra UI): autora la sección `## UI spec` **del spec** (el *qué* de la UI, pantallas a grano grueso).
31
+ - **`plan-new-loop` · `plan-refine-loop`** (ver `../../loops/plan-new-loop/SKILL.md` § *Delta 4*) — al resolver el gap **UI sin design SPEC** (cuando el **plan incluye UI**): autora **design SPECs** por pantalla (`NNN-SPEC-<SLUG>.md`) como **artefactos de la sesión de PLAN** (ver `../../artifacts/artifacts-design/SPEC.md`); derivan de `## UI spec` si existe.
32
+
33
+ En ambos, el loop aporta lo que el servicio viejo no tenía:
26
34
 
27
35
  - **Pregunta al humano** (design-system, tema, ambigüedades de pantalla) vía *structured-choice* (capacidad del arnés — ver `../../harness/SKILL.md`). En **Claude Code** es `AskUserQuestion` (máx 4 preguntas/llamada → **≤3 preguntas de contenido + 1 control `flow`**); en un arnés sin elección estructurada, degrada a **markdown numerado**.
28
36
  - **Itera** gap-driven hasta converger.
29
37
  - Ofrece **variantes** y **cura** el resultado.
30
38
 
31
- Cualquier loop podría componerla; el caso primario es SPEC. La descripción Markdown aterriza como una sección dentro del documento spec (`docs/specs/NNN-spec-<slug>.md`) — nunca como artefacto suelto (invariante 3: el spec es un documento).
39
+ Cualquier loop podría componerla; los casos primarios son SPEC y PLAN. En SPEC, la descripción aterriza como sección del documento spec (`docs/specs/NNN-spec-<slug>.md`) — el spec sigue siendo un documento (invariante 3). En PLAN aterriza como **design SPECs** (artefactos de sesión) — que **no** son el requirement-spec: son el detalle de diseño por pantalla, de proceso.
32
40
 
33
41
  ## Knowledge
34
42
 
@@ -114,9 +122,16 @@ Si el humano no responde, asumir el caso más simple coherente con la descripci
114
122
  - **Registros** (table)
115
123
  ```
116
124
 
117
- ## Output — sección `## UI spec` dentro del spec (`docs/specs/NNN-spec-<slug>.md`)
125
+ ## Output — dos aterrizajes, un solo formato (Markdown)
126
+
127
+ **Salida en un solo formato: Markdown.** La escribe el loop (no esta skill por sí sola). El **render es el mismo** en ambos niveles; cambia dónde aterriza, según el loop que compone:
128
+
129
+ | Loop que compone | Aterriza en | Grano |
130
+ |---|---|---|
131
+ | `spec-refine-loop` | sección `## UI spec` **del spec** (`docs/specs/NNN-spec-<slug>.md`) — documento, in place | todas las pantallas del requerimiento, grano grueso |
132
+ | `plan-new-loop` · `plan-refine-loop` | **design SPECs** `NNN-SPEC-<SLUG>.md` — artefactos en la **sesión de PLAN** (uno **por pantalla**, con encabezado de traza; ver `../../artifacts/artifacts-design/SPEC.md`) | una pantalla por archivo, detalle ejecutable |
118
133
 
119
- **Salida en un solo formato: Markdown.** La escribe el loop (no esta skill por sí sola). Encabezar la sección con las opciones de diseño elegidas (design system, tema, idioma) en una línea. Luego el render Markdown, con estas reglas exactas (recicladas del `MarkdownFormatter`):
134
+ Encabezar la sección (o el encabezado de traza del SPEC) con las opciones de diseño elegidas (design system, tema, idioma) en una línea. Luego el render Markdown, con estas reglas exactas (recicladas del `MarkdownFormatter`):
120
135
 
121
136
  - `# {nombre}`
122
137
  - `**Tipo**: {tipo} | **Plataforma**: {plataforma}`