@tacuchi/agent-workflow-cli 15.0.0 → 15.1.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.
- package/README.md +1 -1
- package/dist/cli/tui/data/workflow-content.js +1 -1
- package/dist/cli/tui/data/workflow-content.js.map +1 -1
- package/package.json +1 -1
- package/skills/w/SKILL.md +4 -2
- package/skills/w/commands/quick.md +5 -5
- package/skills/w/commands/spec-new.md +2 -0
- package/skills/w/commands/spec-refine.md +1 -1
- package/skills/w/loops/quick-loop/SKILL.md +30 -12
- package/skills/w/loops/spec-refine-loop/SKILL.md +6 -2
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ The harness has three layers plus a permanent `docs/` zone:
|
|
|
17
17
|
- **Layer 1 · Commands** (`/w:*`) — the only thing the user invokes:
|
|
18
18
|
- **SPEC** — `/w:spec-new` (single-pass draft) → `/w:spec-refine` (gap-driven loop) → `docs/specs/`.
|
|
19
19
|
- **PLAN** — `/w:plan-new` → (`/w:plan-refine` — aux, optional) → `/w:plan-exec` → `docs/plans/`.
|
|
20
|
-
- **QUICK** — `/w:quick` — lightweight shortcut.
|
|
20
|
+
- **QUICK** — `/w:quick` — lightweight shortcut; escalates live to SPEC when the goal outgrows a quick.
|
|
21
21
|
- **EXPORTS** — `/w:export-scripts` · `export-manuals` · `export-diagrams` · `export-reports` (the only path that promotes artifacts to `docs/`).
|
|
22
22
|
- **Bootstrap** — `/w:workspace-init` turns any folder into a workspace (1+ sources; no project/hub distinction).
|
|
23
23
|
- **Layer 2 · Loops** — the AI runs them whole: `spec-refine-loop` · `plan-new-loop` · `plan-refine-loop` · `plan-exec-loop` · `quick-loop` — all heirs of the shared engine `skills/w/loops/CHASSIS.md` (+ `CODE-POLICIES.md` for the code-editing loops). Each loop is a **persistent goal** that runs until its success criteria are green (verification-first); gap-driven, with **structured-choice** lifecycle control (compact/close — `AskUserQuestion` on Claude Code, numbered markdown elsewhere) and resumable `CHECKPOINT`.
|
|
@@ -44,7 +44,7 @@ export const WORKFLOW_CONTENT = {
|
|
|
44
44
|
id: "quick",
|
|
45
45
|
n: 4,
|
|
46
46
|
title: "QUICK — the shortcut",
|
|
47
|
-
desc: "Lightweight one-command loop for small tasks — code or a scoped analysis/design. Proportional verification-first; owns no docs/ folder.",
|
|
47
|
+
desc: "Lightweight one-command loop for small tasks — code or a scoped analysis/design. Proportional verification-first; owns no docs/ folder. Escalates live to SPEC when the task outgrows it.",
|
|
48
48
|
commands: ["quick"],
|
|
49
49
|
slash: "/w:quick",
|
|
50
50
|
hook: "SessionEnd",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-content.js","sourceRoot":"","sources":["../../../../src/cli/tui/data/workflow-content.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,2HAA2H;AAC3H,oEAAoE;AACpE,qEAAqE;AACrE,mEAAmE;AACnE,qDAAqD;AACrD,EAAE;AACF,0EAA0E;AAC1E,gFAAgF;AAChF,0EAA0E;AAmB1E,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,QAAQ,EACN,uRAAuR;IAEzR,0EAA0E;IAC1E,sEAAsE;IACtE,MAAM,EAAE;QACN;YACE,EAAE,EAAE,gBAAgB;YACpB,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,mGAAmG;YACzG,QAAQ,EAAE,CAAC,gBAAgB,CAAC;YAC5B,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,cAAc;SACrB;QACD;YACE,EAAE,EAAE,MAAM;YACV,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,4FAA4F;YAClG,QAAQ,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC;YACrC,KAAK,EAAE,8BAA8B;YACrC,IAAI,EAAE,GAAG;SACV;QACD;YACE,EAAE,EAAE,MAAM;YACV,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,iHAAiH;YACvH,QAAQ,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC;YAClD,KAAK,EAAE,6CAA6C;YACpD,IAAI,EAAE,0BAA0B;SACjC;QACD;YACE,EAAE,EAAE,OAAO;YACX,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"workflow-content.js","sourceRoot":"","sources":["../../../../src/cli/tui/data/workflow-content.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tacuchi/agent-workflow-cli",
|
|
3
|
-
"version": "15.
|
|
3
|
+
"version": "15.1.0",
|
|
4
4
|
"description": "Agnostic runtime CLI for AI development workflows — a stages + loops + artifacts harness. Bundles the universal `w` skill set under `skills/w/` (slash commands `/w:*`: spec-new/spec-refine, plan-new/plan-exec, quick, workspace-init, export-*); `self install --target <host>` copies SKILL + commands + hooks into the host. Pluggable capability skills via `.workflow/skills.toml`. Multi-empresa parametrization via `profile.json` cascade. Namespace auto-detected from any `.<ns>/sessions/` dir in CWD; default `workflow`.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/skills/w/SKILL.md
CHANGED
|
@@ -65,6 +65,8 @@ USUARIO invoca
|
|
|
65
65
|
|
|
66
66
|
Cadena típica: prompt → `spec-new` genera `docs/specs/NNN-spec-<slug>.md` → `spec-refine` corre el loop y refina **ese mismo spec in place** → `plan-new` → `docs/plans/PPP-plan-<slug>.md` → *(opcional)* `plan-refine` ajusta **ese mismo plan in place** si hay cambios antes de ejecutar → `plan-exec` ejecuta y actualiza el plan (living doc) + artefactos en sesiones. La promoción del resto a `docs/` es **siempre** un paso aparte vía `export-*`.
|
|
67
67
|
|
|
68
|
+
QUICK puede **escalar en vivo a SPEC** si el objetivo excede un quick (gate de tamaño a la entrada) o la tarea crece mid-loop: con consentimiento vía structured-choice, la línea de trabajo pasa al flujo SPEC (borrador por procedimiento `spec-new` + `spec-refine-loop` directo); a PLAN la escalación queda **diferida** (siembra + puntero). Ver `loops/quick-loop/SKILL.md` § *Delta QUICK*.
|
|
69
|
+
|
|
68
70
|
### Contexto operativo — dónde aterriza cada cosa
|
|
69
71
|
|
|
70
72
|
Antes de cualquier loop, la IA resuelve su **contexto operativo** en **cada prompt** con dos detecciones: **¿workspace?** (existe `.<ns>/sessions/`) + **¿sesión a continuar?** (una activa, o una reciente que este prompt continúa). Eso decide el comportamiento y **dónde aterrizan los artefactos** (SQL, scripts, decisiones, …):
|
|
@@ -76,7 +78,7 @@ Antes de cualquier loop, la IA resuelve su **contexto operativo** en **cada prom
|
|
|
76
78
|
| **Sí** | **prompt sin comando** (no-relacionado / sin sesión) | **sin flujo**: trabajo directo → escribe en `docs/` por convención + numeración (`aw next-number`) |
|
|
77
79
|
| **No** | cualquiera | **vanilla** — sin workspace ni flujo, la IA es libre (nativo) |
|
|
78
80
|
|
|
79
|
-
**Regla de continuidad:** el **comando** señala "nueva línea de trabajo" (sesión nueva) — **salvo re-correr el mismo comando sobre la misma entrada** (ej. `/w:spec-refine` sobre el mismo spec), que **no** abre otra línea: `create_or_resume` localiza la sesión de ese flujo (por descriptor + `## Origin`) y la **reanuda o reabre** (quita `.closed`), sin duplicarla; un **prompt sin comando** es "sigo en la misma" → por default continúa/reabre la más reciente (la *última iniciada*); solo si es claramente no-relacionado ofrece elegir (`continuar NNN` | `trabajo nuevo`) o cae a "sin flujo". Convergencia cierra la sesión; un prompt relacionado posterior la **reabre** (el resume quita `.closed`). Es la cara **inter-turno** del *objetivo persistente* (mismo `CHECKPOINT`+resume, aplicado al próximo prompt) — **doctrina agnóstica**, no un hook del host. Aplica a **todo artefacto** (`SCRIPTS.sql` es el ejemplo trabajado); ver `loops/quick-loop/SKILL.md` para el caso QUICK.
|
|
81
|
+
**Regla de continuidad:** el **comando** señala "nueva línea de trabajo" (sesión nueva) — **salvo re-correr el mismo comando sobre la misma entrada** (ej. `/w:spec-refine` sobre el mismo spec), que **no** abre otra línea: `create_or_resume` localiza la sesión de ese flujo (por descriptor + `## Origin`) y la **reanuda o reabre** (quita `.closed`), sin duplicarla; un **prompt sin comando** es "sigo en la misma" → por default continúa/reabre la más reciente (la *última iniciada*); solo si es claramente no-relacionado ofrece elegir (`continuar NNN` | `trabajo nuevo`) o cae a "sin flujo". Convergencia cierra la sesión; un prompt relacionado posterior la **reabre** (el resume quita `.closed`). Es la cara **inter-turno** del *objetivo persistente* (mismo `CHECKPOINT`+resume, aplicado al próximo prompt) — **doctrina agnóstica**, no un hook del host. Aplica a **todo artefacto** (`SCRIPTS.sql` es el ejemplo trabajado); ver `loops/quick-loop/SKILL.md` para el caso QUICK. **Excepción consentida:** la **escalación aceptada** dentro de un loop (ej. quick → SPEC) también abre una **nueva línea de trabajo** sin comando — la señal es el **consentimiento explícito** del usuario en la structured-choice, equivalente a haber invocado el comando del flujo destino.
|
|
80
82
|
|
|
81
83
|
### The commands (`/w:` namespace)
|
|
82
84
|
|
|
@@ -86,7 +88,7 @@ Antes de cualquier loop, la IA resuelve su **contexto operativo** en **cada prom
|
|
|
86
88
|
- `/w:plan-new` — arranca `plan-new-loop` para derivar un plan ejecutable del spec refinado.
|
|
87
89
|
- `/w:plan-refine` — arranca `plan-refine-loop` para refinar el plan in place (auxiliar, **no obligatorio**) antes de ejecutar.
|
|
88
90
|
- `/w:plan-exec` — arranca `plan-exec-loop` para ejecutar y mantener el plan.
|
|
89
|
-
- `/w:quick` — arranca `quick-loop` (atajo, sin `docs
|
|
91
|
+
- `/w:quick` — arranca `quick-loop` (atajo, sin `docs/`; escala en vivo a SPEC si el objetivo excede un quick).
|
|
90
92
|
- `/w:export-scripts` · `/w:export-manuals` · `/w:export-diagrams` · `/w:export-reports` — promueven artefactos a `docs/`.
|
|
91
93
|
|
|
92
94
|
### Transversal skills (no flow) — `/w:status` · `/w:fix-git`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Atajo liviano para trabajo acotado (fix, ajuste, chore) que no amerita spec ni plan. Inicia quick-loop. No toca docs/.
|
|
2
|
+
description: Atajo liviano para trabajo acotado (fix, ajuste, chore) que no amerita spec ni plan. Inicia quick-loop. No toca docs/. Si el objetivo excede un quick o la tarea crece, escala: a SPEC en vivo (con consentimiento), a PLAN diferido.
|
|
3
3
|
argument-hint: <prompt con la tarea acotada>
|
|
4
4
|
allowed-tools:
|
|
5
5
|
[
|
|
@@ -12,14 +12,14 @@ allowed-tools:
|
|
|
12
12
|
|
|
13
13
|
# quick — trampolín al loop liviano
|
|
14
14
|
|
|
15
|
-
Para tareas acotadas y directas que no justifican pasar por SPEC ni PLAN.
|
|
15
|
+
Para tareas acotadas y directas que no justifican pasar por SPEC ni PLAN. Crea una sesión ligera (trazabilidad + resume) — salvo que el **gate de tamaño a la entrada** escale a SPEC antes de empezar. Delega a `quick-loop` (Layer 2).
|
|
16
16
|
|
|
17
17
|
## Ejecutar el loop
|
|
18
18
|
|
|
19
19
|
`quick-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**:
|
|
20
20
|
|
|
21
21
|
1. **Leé** `../loops/quick-loop/SKILL.md` (dentro de la skill `w` instalada — p. ej. `~/.claude/skills/w/loops/…`).
|
|
22
|
-
2. **Seguí** sus instrucciones tomando `$ARGUMENTS` como la tarea: crea la session ligera, trabaja con ceremonia mínima (git-safe), escala
|
|
22
|
+
2. **Seguí** sus instrucciones tomando `$ARGUMENTS` como la tarea: evalúa el gate de tamaño, crea la session ligera, trabaja con ceremonia mínima (git-safe), escala si excede o crece (SPEC en vivo / PLAN diferido), y reporta.
|
|
23
23
|
|
|
24
24
|
> No intentes `Skill: quick-loop` — no está registrada como skill. El comando **es** la entrada; el loop es su cuerpo.
|
|
25
25
|
|
|
@@ -29,11 +29,11 @@ Para tareas acotadas y directas que no justifican pasar por SPEC ni PLAN. Siempr
|
|
|
29
29
|
- Artefactos mínimos en la sesión (DECISION lazy, commit propuesto).
|
|
30
30
|
- **Gate de revisión de cierre proporcional** antes de proponer el único commit: re-lee el diff aplicando las convenciones ambientes instaladas y corrige o difiere (ver `../loops/quick-loop/SKILL.md` § *Sequence*).
|
|
31
31
|
- **No toca `docs/`** ni exporta nada.
|
|
32
|
-
- **Escala**
|
|
32
|
+
- **Escala** si emerge complejidad — **gate de tamaño a la entrada** (antes de crear la session) y mid-loop (muchos archivos, ≥2 fuentes, necesita arquitectura, o el cambio es feature/refactor). Aceptar **SPEC** = transición **en vivo** al flujo SPEC (borrador vía procedimiento spec-new + spec-refine-loop); **PLAN** queda sembrado para retomar. Ver `../loops/quick-loop/SKILL.md` § *Delta QUICK*.
|
|
33
33
|
|
|
34
34
|
## Plan mode
|
|
35
35
|
|
|
36
|
-
El skill describe los cambios que aplicaría y los archivos que tocaría, sin ejecutarlos.
|
|
36
|
+
El skill describe los cambios que aplicaría y los archivos que tocaría, sin ejecutarlos. Incluye la escalación: si el gate (de entrada o mid-loop) dispararía, la describe (opciones + spec que materializaría) sin escribir `docs/` ni arrancar loops.
|
|
37
37
|
|
|
38
38
|
## Resources
|
|
39
39
|
|
|
@@ -67,6 +67,8 @@ Dudas pendientes. ← el spec-refine-loop las va cerrando.
|
|
|
67
67
|
- Los **gaps** que detecta el loop = secciones débiles del esquema (Requirement vago, Scope sin `Out`, criterios no testables, Open questions abiertas, supuestos no declarados, contradicciones) **+ UI sin especificar** si el requerimiento involucra UI.
|
|
68
68
|
- Alternativa equivalente: el usuario crea el borrador a mano. Ambos caminos producen el mismo `docs/specs/NNN-spec-<slug>.md`.
|
|
69
69
|
|
|
70
|
+
> **Reuso por escalación:** la escalación en vivo de `/w:quick` (ver [`../loops/quick-loop/SKILL.md`](../loops/quick-loop/SKILL.md) § *Delta QUICK*) materializa su borrador siguiendo **este mismo procedimiento** (pasos 1-3: mismo esquema, misma regla dura single-pass **SIN investigación**), con `## Origin` = "escalado desde `/w:quick`" + el prompt original. No hace falta tipear `/w:spec-new`: el consentimiento en la structured-choice equivale a invocarlo.
|
|
71
|
+
|
|
70
72
|
## Plan mode
|
|
71
73
|
|
|
72
74
|
Resuelve `NNN` leyendo `docs/specs/`, describe el borrador que generaría sin escribir el archivo.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
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.
|
|
2
|
+
description: Inicia o retoma el loop de refinamiento de una especificación (spec-refine-loop). Input: docs/specs/NNN-spec-<slug>.md (borrador — de spec-new, a mano, o materializado por la escalación de quick). Actualiza docs/specs/NNN-spec-<slug>.md in place.
|
|
3
3
|
argument-hint: <docs/specs/NNN-spec-<slug>.md>
|
|
4
4
|
allowed-tools:
|
|
5
5
|
[
|
|
@@ -7,10 +7,11 @@ description: >-
|
|
|
7
7
|
las políticas de loops que editan código: git seguro, BD solo-scripts, gate
|
|
8
8
|
de revisión de cierre proporcional, sin auto-export); sus deltas viven en
|
|
9
9
|
el cuerpo: sin fases ni plan-doc (el prompt ES la tarea),
|
|
10
|
-
session ligera única (<slug>-quick), un solo commit,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
session ligera única (<slug>-quick), un solo commit, gate de tamaño a la
|
|
11
|
+
entrada y escalación EN VIVO a SPEC (handoff + spec-refine directo; a PLAN
|
|
12
|
+
queda diferida) si el objetivo excede un quick o la tarea crece. NO toca
|
|
13
|
+
docs/. Lo arranca /w:quick y es reanudable. Invocar para cambios pequeños y
|
|
14
|
+
directos que no ameritan spec ni plan formal.
|
|
14
15
|
---
|
|
15
16
|
|
|
16
17
|
# quick-loop
|
|
@@ -32,11 +33,11 @@ QUICK
|
|
|
32
33
|
## Writes
|
|
33
34
|
- **Deliverable según la tarea:** edita código en las fuentes (cambio mínimo) **o** produce un **análisis/diseño** acotado (deliverable no-código, vive en los artefactos de la session — no en `docs/`).
|
|
34
35
|
- Artefactos de la session en `.workflow/sessions/`.
|
|
35
|
-
- **NO toca `docs/`** (sin doc, sin auto-export). Un análisis/diseño que amerite preservarse se promueve aparte (`export-*`) o se escala a SPEC/PLAN.
|
|
36
|
+
- **NO toca `docs/`** (sin doc, sin auto-export). Un análisis/diseño que amerite preservarse se promueve aparte (`export-*`) o se escala a SPEC/PLAN (SPEC: en vivo — ver *Delta QUICK*).
|
|
36
37
|
|
|
37
38
|
## Internal session
|
|
38
39
|
|
|
39
|
-
- **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).
|
|
40
|
+
- **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). **Excepción:** si el **gate de tamaño** de la entrada escala a SPEC, el run quick no llega a existir — no se crea session quick; la session es la del `spec-refine-loop`.
|
|
40
41
|
|
|
41
42
|
## Inherits
|
|
42
43
|
|
|
@@ -54,11 +55,17 @@ Leé **[`../CHASSIS.md`](../CHASSIS.md)** (instalación normal) **o** `CHASSIS.m
|
|
|
54
55
|
- **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*](../CHASSIS.md)).
|
|
55
56
|
- **Git y BD inline** (políticas completas en [`../CODE-POLICIES.md`](../CODE-POLICIES.md)): antes de editar, verificar rama esperada por fuente (`aw check-branch`); commit **propuesto** (aprobar antes) — nunca `push`/`--amend`/`--no-verify`. La IA **nunca ejecuta DML/DDL**: las migraciones se redactan en el `SCRIPTS.sql` de la session (consultas read-only sí, vía MCP).
|
|
56
57
|
- **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** ([`../CODE-POLICIES.md`](../CODE-POLICIES.md) § *Gate de revisión de cierre*): re-lectura del diff + convenciones ambientes; corregir o diferir; nada llega al commit sin revisar.
|
|
57
|
-
- **
|
|
58
|
+
- **Gate de tamaño a la ENTRADA** (antes de crear la session): al recibir el objetivo, evaluar si **excede un quick**. Dispara **solo con señales claras** (≥2 de: necesita arquitectura · ≥2 fuentes · varios entregables · feature/refactor grande · requisitos ambiguos que piden elicitación); borderline → **sigue en quick sin preguntar** (si después crece, lo cubre la escalación mid-loop). Un **resume** de una quick existente **no** re-dispara el gate. Si dispara → **structured-choice** (1 pregunta de contenido, recomendación primera + control `flow`; `Cerrar` acá = abortar, nada creado aún):
|
|
59
|
+
- **Cambiar a SPEC** (recomendada) → **no se crea la session quick**: corre la *Transición en vivo a SPEC* (bullet siguiente).
|
|
60
|
+
- **Seguir en quick** → continúa normal (`create_or_resume` + loop).
|
|
61
|
+
- **Recortar alcance** → la IA propone la **sub-tarea que SÍ cabe** en un quick; el loop sigue con ella (`SESSION.Objective` = la sub-tarea; el prompt original queda en el `## Origin` de la session) y el resto se difiere al `BACKLOG` ("recortado en el gate — puede ameritar spec aparte, `/w:spec-new`").
|
|
62
|
+
- **Anti-duplicado** (espíritu `create_or_resume`): si ya existe un spec cuyo `## Origin` referencia este mismo objetivo (o una session `*-spec-refine` equivalente), la recomendada pasa a ser **retomar ese spec** (semántica `/w:spec-refine`) — nunca materializar un segundo borrador.
|
|
63
|
+
- **Transición en vivo a SPEC** (compartida por el gate y la escalación mid-loop): al aceptar, la línea de trabajo **deja de ser QUICK y pasa a ser flujo SPEC** — el consentimiento explícito en la structured-choice **equivale a invocar el comando** del flujo destino (excepción consentida a la regla de continuidad; ver [`../../SKILL.md`](../../SKILL.md) § *Contexto operativo*). Ya **del lado SPEC**: (1) materializar el **borrador** siguiendo el procedimiento de [`../../commands/spec-new.md`](../../commands/spec-new.md) — o `commands/spec-new.md` dentro de la skill `w` instalada (instalación aplanada) — `aw next-number docs/specs`, slug, esquema, single-pass **SIN investigación**; `## Origin` = "escalado desde `/w:quick`" + el prompt original (+ la session quick de origen si existe); (2) **cargar y ejecutar** [`../spec-refine-loop/SKILL.md`](../spec-refine-loop/SKILL.md) — o `../w-spec-refine-loop/SKILL.md` (instalación aplanada, skill hermana) — sobre ese spec, mismo patrón "cargalo y ejecutalo" de los comandos trampolín. La session del run es la `NNN-<slug>-spec-refine` **normal** de ese loop (el CLI numera; su `## Origin` registra la escalación). El **invariante 2 queda intacto**: quick, mientras es quick, no escribe `docs/` — el borrador lo escribe el flujo SPEC, post-consentimiento.
|
|
64
|
+
- **Escalación mid-loop + handoff**: si la tarea crece (mismas señales del gate) → propone subir a **SPEC/PLAN** (structured-choice, recomendación primera). Si el usuario acepta:
|
|
58
65
|
- 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" ([`../CODE-POLICIES.md`](../CODE-POLICIES.md) § *Git seguro*: no revertir **y** registrar lo sin commitear). Crítico en la rama **SPEC**, que no retoma el working tree;
|
|
59
|
-
- la session quick va a `finalize`, persistiendo `CHECKPOINT` + `BACKLOG` con
|
|
66
|
+
- la session quick va a `finalize`, persistiendo `CHECKPOINT` + `BACKLOG` con el **puntero**: a **PLAN**, "escalado a `docs/plans/PPP` — retomar ahí" (**diferido como hoy**: siembra + puntero, sin entrar en vivo); a **SPEC**, "escalado a `docs/specs/NNN` — **continuado en vivo** (session `NNN-<slug>-spec-refine`)";
|
|
60
67
|
- los artefactos (`DECISION`, `SCRIPTS.sql`) **quedan en la session quick** como contexto referenciable por la nueva session (no se migran);
|
|
61
|
-
- **
|
|
68
|
+
- **SPEC entra en vivo**: tras el `finalize`, corre la *Transición en vivo a SPEC* (borrador vía procedimiento spec-new **solo si no existe** spec para este objetivo; luego el loop). **Asimetría** intacta: escalar a **PLAN** puede **absorber** el avance (plan-exec retoma el working tree existente); escalar a **SPEC** **reinicia** el ciclo de diseño y trata el código a medias como **contexto/referencia**, no como trabajo ya ingerido.
|
|
62
69
|
|
|
63
70
|
## Continuidad entre prompts (contexto operativo)
|
|
64
71
|
|
|
@@ -74,6 +81,15 @@ Leé **[`../CHASSIS.md`](../CHASSIS.md)** (instalación normal) **o** `CHASSIS.m
|
|
|
74
81
|
|
|
75
82
|
```
|
|
76
83
|
quick-loop(prompt):
|
|
84
|
+
# GATE DE TAMAÑO — ANTES de crear session; solo línea de trabajo nueva (un resume no lo re-dispara)
|
|
85
|
+
si el objetivo excede un quick (≥2 señales claras — ver Delta):
|
|
86
|
+
si ya hay spec / session spec-refine de este objetivo → recomendar RETOMAR (/w:spec-refine) # anti-duplicado
|
|
87
|
+
structured_choice(contenido: [Cambiar a SPEC (recomendada), Seguir en quick, Recortar alcance],
|
|
88
|
+
flow: [Compactar, Cerrar]) # Cerrar acá = abortar (nada creado aún)
|
|
89
|
+
Cambiar a SPEC → transición en vivo (ver Delta): borrador (procedimiento spec-new) +
|
|
90
|
+
cargar y ejecutar ../spec-refine-loop/SKILL.md → FIN (sin session quick)
|
|
91
|
+
Recortar alcance → objetivo = la sub-tarea propuesta; el resto → BACKLOG al crear la session
|
|
92
|
+
Seguir en quick → continuar
|
|
77
93
|
s = create_or_resume("<slug>-quick") # CLI antepone NNN global; siempre session ligera
|
|
78
94
|
seed SESSION.Objective = el prompt
|
|
79
95
|
seed SESSION.Success criteria = check del deliverable # verification-first, ANTES: test(s) si código · rúbrica corta RATIFICADA si análisis/diseño
|
|
@@ -85,8 +101,10 @@ quick-loop(prompt):
|
|
|
85
101
|
si cambio BD (DDL/DML) → SCRIPTS.sql (artefacto session, NO ejecutar)
|
|
86
102
|
si decisión no obvia → DECISION
|
|
87
103
|
si duda/gap → research inline ó structured-choice # chasis
|
|
88
|
-
si la tarea CRECE → proponer escalar a SPEC/PLAN
|
|
89
|
-
|
|
104
|
+
si la tarea CRECE → proponer escalar a SPEC/PLAN # structured-choice, recomendación primera
|
|
105
|
+
acepta PLAN → handoff (avance queda; BACKLOG→plan sembrado — retomar ahí) → goto finalize
|
|
106
|
+
acepta SPEC → handoff (avance queda; BACKLOG→"continuado en vivo") → finalize →
|
|
107
|
+
transición en vivo (ver Delta): borrador si falta + spec-refine-loop
|
|
90
108
|
convergence gate: Success criteria en verde # tests verdes si código · rúbrica satisfecha si análisis/diseño
|
|
91
109
|
si hubo cambios de código:
|
|
92
110
|
gate de revisión de cierre (proporcional): # re-lectura del diff + convenciones ambientes instaladas
|
|
@@ -100,6 +118,6 @@ finalize: CHECKPOINT (DESPUÉS: Pending→Completed) + BACKLOG (solo si queda al
|
|
|
100
118
|
|
|
101
119
|
- **Success criteria en verde** (proporcional) + gate de revisión de cierre pasado y commit propuesto si hubo código (o aprobado saltarlo) → `Cerrar`.
|
|
102
120
|
- `Cerrar`/`Compactar` (control `flow`) → persiste `CHECKPOINT` + `BACKLOG` (reanudable).
|
|
103
|
-
- **Sin export**: nada va a `docs/`. Si algo amerita preservarse → se promueve aparte vía `export-*`, o se escala a SPEC
|
|
121
|
+
- **Sin export**: nada va a `docs/`. Si algo amerita preservarse → se promueve aparte vía `export-*`, o se escala (a SPEC **en vivo** — la línea continúa en spec-refine ya como flujo SPEC; a PLAN **diferido**, sembrado + puntero).
|
|
104
122
|
|
|
105
123
|
> El *convergence gate* de QUICK es **verification-first proporcional**: un `Success criteria` **corto** sembrado al inicio (no la *ausencia* de checklist, sino su versión mínima) — para código, "el cambio hace lo que pedía el prompt + tests/build verdes"; para análisis/diseño, una rúbrica corta ratificada. Mínima ceremonia por diseño, pero **siempre con el check declarado antes**.
|
|
@@ -9,8 +9,8 @@ description: >-
|
|
|
9
9
|
gap taxonomy de spec, analyze gate, sección ## UI spec vía la capacidad
|
|
10
10
|
ui-design cuando el requerimiento involucra UI, y agrega Refinement
|
|
11
11
|
decisions + Q&A traceability al spec — la marca de refinado que plan-new
|
|
12
|
-
detecta. Lo arranca /w:spec-refine
|
|
13
|
-
a demanda. Invocar cuando haya que refinar/desambiguar una especificación
|
|
12
|
+
detecta. Lo arranca /w:spec-refine (o la escalación en vivo desde
|
|
13
|
+
quick-loop); reanudable vía CHECKPOINT y re-corrible a demanda. Invocar cuando haya que refinar/desambiguar una especificación
|
|
14
14
|
antes de planificar.
|
|
15
15
|
---
|
|
16
16
|
|
|
@@ -31,6 +31,8 @@ SPEC
|
|
|
31
31
|
## Started by
|
|
32
32
|
`/w:spec-refine` — **reanudable**. Detecta el estado previo (vía CHECKPOINT) y arranca según corresponda (ver *Compact / resume — claves SPEC*).
|
|
33
33
|
|
|
34
|
+
También lo arranca la **escalación en vivo desde `quick-loop`** (gate de entrada o mid-loop — ver [`../quick-loop/SKILL.md`](../quick-loop/SKILL.md) § *Delta QUICK*): quick materializa el borrador (procedimiento de `spec-new`) y **carga este loop** sobre ese spec — misma semántica que si el usuario hubiera corrido `/w:spec-refine`.
|
|
35
|
+
|
|
34
36
|
## Reads
|
|
35
37
|
- `docs/specs/NNN-spec*.md` (glob — localiza el spec por número, también captura el legacy `NNN-spec.md`), **o** la ruta exacta pasada en el argumento del comando. **Siempre el spec mismo**: este loop lo edita in place, no hay un archivo "refined" aparte.
|
|
36
38
|
|
|
@@ -47,6 +49,8 @@ Doctrina completa en el chasis (§ *Internal sessions* + *Numeración*). La inst
|
|
|
47
49
|
|---|---|---|---|
|
|
48
50
|
| **refine session** `NNN-<slug>-spec-refine/` | al arrancar el loop (o se reanuda) | `SESSION.md` · `CHECKPOINT.md` (· `BACKLOG.md` solo si difiere) | Dueña del run. Type = `refine`; descriptor `<slug>-spec-refine` (el `<slug>` sale del spec de entrada). |
|
|
49
51
|
|
|
52
|
+
> **Origin por escalación:** si el run nace de la escalación en vivo de `quick-loop`, el `## Origin` de la session registra "escalado desde `/w:quick`" + la session quick de origen si existe (sus `DECISION`/`SCRIPTS.sql` son contexto referenciable — no se migran).
|
|
53
|
+
|
|
50
54
|
> **Compat (legacy):** workspaces viejos pueden tener `NNN-spec.md` / `NNN-spec-refined.md` y sessions `*-research-*` aparte — son históricos y se dejan tal cual. El glob `NNN-spec*.md` igual encuentra el spec base, y re-correr spec-refine lo edita in place de ahí en adelante.
|
|
51
55
|
|
|
52
56
|
## Composes
|