@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,48 +1,35 @@
1
- # ANALYSIS-FILE.md — research session analysis file
1
+ # ANALYSIS-FILE.md — research analysis scratchpad
2
2
 
3
- > What it is: the working analysis document of a `research` session. Created on-demand by any loop. Not resumable (run-and-close) the owning `refine/control` session's CHECKPOINT tracks open research sessions.
3
+ > What it is: an **optional** working scratchpad for deeper investigations, written inline into the active session (`refine`/`exec`/`quick`). For light research, writing only `CONCLUSIONS` is fine skip this file.
4
4
 
5
- # Case (text):
5
+ ## Case
6
6
  Short title.
7
7
 
8
- ## Question (text)
9
- What needs to be clarified or demonstrated?
8
+ ## Question
9
+ What needs to be clarified or demonstrated? Example: why does endpoint X return stale data after the cache refresh?
10
10
 
11
- Example:
12
- Why does client X appear with a pending balance if they already made the payment?
11
+ ## Context
12
+ Optional one line of scope if useful: system / module + what's in scope.
13
13
 
14
- ## Context (text)
15
- Example:
16
- - Requester:
17
- - Area:
18
- - System / module:
19
- - Case date:
20
- - Known impact:
21
-
22
- ## Initial Hypotheses (text|list)
14
+ ## Initial Hypotheses
23
15
  - H1:
24
16
  - H2:
25
- - H3:
26
17
 
27
- ## Evidences (list|table):
18
+ ## Evidences
19
+ Open-ended — add rows for whatever dev-relevant sources you actually used. Seeded with the common ones:
28
20
  | ID | Source | Finding | Link / file / query |
29
21
  |---|---|---|---|
30
22
  | E1 | DB | | |
31
23
  | E2 | Code | | |
32
24
  | E3 | Logs | | |
33
- | E4 | Email | | |
34
- | E5 | File | | |
35
25
 
36
- ## Findings (text|list)
26
+ ## Findings
37
27
  What do the evidences indicate?
38
28
 
39
- - Evidence E1 shows that...
40
- - Evidence E2 confirms that...
41
- - Evidence E3 rules out that...
29
+ - E1 shows...
30
+ - E2 confirms...
42
31
 
43
- ## Identified Cause (text|list)
32
+ ## Identified Cause
44
33
  - Technical:
45
- - Functional:
46
- - Operational:
47
34
  - Data:
48
35
  - Undetermined:
@@ -1,20 +1,17 @@
1
- # CONCLUSIONS.md — research session conclusions
1
+ # CONCLUSIONS.md — research conclusions
2
2
 
3
- > What it is: the conclusions of a `research` session. Produced when the session closes (success or `inconcluso`). The parent loop reads this to resolve the gap that triggered the research.
3
+ > What it is: the conclusions of an **inline research** activity, written into the active session (`refine`/`exec`/`quick`). Produced when the research concludes (success or `inconcluso`). The parent loop reads this to resolve the gap that triggered the research.
4
4
 
5
- ## Conclusion (text|list)
5
+ ## Conclusion
6
6
  Direct answer to the initial question.
7
7
 
8
- ## Recommended Action (text|list)
9
-
8
+ ## Recommended Action
10
9
  Example:
11
- - [ ] Create bugfix
12
- - [ ] Create requirement
13
- - [ ] Correct data
14
- - [ ] Escalate to business
15
- - [ ] Train user
16
- - [ ] Close without technical action
17
- - [ ] Request more information
10
+ - [ ] Fix code
11
+ - [ ] Open follow-up task
12
+ - [ ] Update docs
13
+ - [ ] Defer (insufficient evidence)
14
+ - [ ] No action
18
15
 
19
- ## Details (text):
16
+ ## Details
20
17
  Supporting detail, evidence references, or additional context.
@@ -3,7 +3,7 @@
3
3
  > This is the **bundle README** for the `/w:` slash-command namespace. Every command listed here is something the **user** invokes directly.
4
4
  > Related layers: [`../loops/`](../loops/) (Layer 2, AI-driven) · artifacts live in `.workflow/sessions/` (Layer 3) · permanent deliverables in `docs/`.
5
5
  >
6
- > **Namespace:** all commands are under `w:` (`w` = *workflow*): `/w:spec-new`, `/w:spec-refine`, `/w:plan-new`, `/w:plan-exec`, `/w:quick`, `/w:workspace-init`, `/w:export-*`.
6
+ > **Namespace:** all commands are under `w:` (`w` = *workflow*): `/w:spec-new`, `/w:spec-refine`, `/w:plan-new`, `/w:plan-exec`, `/w:quick`, `/w:workspace-init`, `/w:status` (transversal), `/w:export-*`.
7
7
 
8
8
  ---
9
9
 
@@ -50,20 +50,22 @@
50
50
 
51
51
  > **Intentional asymmetry:** in SPEC, `spec-new` generates the draft in a **single pass** (no loop) and the loop is in `spec-refine`. In PLANIFICATION, **both** commands start loops. Total: **5 flow commands / 4 loops**.
52
52
 
53
+ > **Transversal (no flow):** [`/w:status`](status.md) is a read-only dashboard of the whole workspace — what's done / pending / discarded, with friendly Spanish dates. It leans on `aw status`, writes nothing, and belongs to no flow.
54
+
53
55
  ## Pipeline
54
56
 
55
57
  ```mermaid
56
58
  flowchart LR
57
59
  prompt(["user prompt"]) --> sn["/w:spec-new"]
58
- sn -->|generates| spec["docs/specs/NNN-spec.md"]
60
+ sn -->|generates| spec["docs/specs/NNN-spec-<slug>.md"]
59
61
  spec -.->|optional manual edit| spec
60
62
  spec --> sr["/w:spec-refine"]
61
63
  sr -->|starts| srl(["spec-refine-loop"])
62
- srl -->|generates| specr["docs/specs/NNN-spec-refined.md"]
64
+ srl -->|refines IN PLACE| spec
63
65
 
64
- specr --> pn["/w:plan-new"]
66
+ spec --> pn["/w:plan-new"]
65
67
  pn -->|starts| pnl(["plan-new-loop"])
66
- pnl -->|generates| plan["docs/plans/PPP-plan.md"]
68
+ pnl -->|generates| plan["docs/plans/PPP-plan-<slug>.md"]
67
69
 
68
70
  plan --> pe["/w:plan-exec"]
69
71
  pe -->|starts| pel(["plan-exec-loop"])
@@ -98,7 +100,7 @@ Each `<command>.md` in this bundle uses this frontmatter + body structure:
98
100
  3. **Spec and plan are documents** (`docs/`), not artifacts.
99
101
  4. **DB scripts-only**: AI **never executes DML/DDL**; migrations live in `SCRIPTS.sql` (type B) and are delivered via `export-scripts`. Only read-only queries via MCP.
100
102
  5. **Git-safe**: verify branch before editing; **propose** commits by source; never `push`/`--amend`/`--no-verify`.
101
- 6. **All loops**: gap-driven convergent · `AskUserQuestion` with ≤3 content tabs + 1 `flow` tab (`Compactar`/`Cerrar`) always · compact/resume · `Cerrar` persists `CHECKPOINT`+`BACKLOG`.
103
+ 6. **All loops**: gap-driven convergent · one session per run (research inline) · `AskUserQuestion` with ≤3 content tabs + 1 `flow` tab (`Compactar`/`Cerrar`) always · compact/resume · artifacts as a live log (`CHECKPOINT` always; `BACKLOG` only when deferring).
102
104
 
103
105
  ## Index
104
106
 
@@ -110,6 +112,7 @@ Each `<command>.md` in this bundle uses this frontmatter + body structure:
110
112
  | `plan-new` | [`plan-new.md`](plan-new.md) | starts `plan-new-loop` |
111
113
  | `plan-exec` | [`plan-exec.md`](plan-exec.md) | starts `plan-exec-loop` |
112
114
  | `quick` | [`quick.md`](quick.md) | starts `quick-loop` |
115
+ | `status` | [`status.md`](status.md) | single-pass, read-only (transversal) |
113
116
  | `export-scripts` | [`export-scripts.md`](export-scripts.md) | single-pass, read-only |
114
117
  | `export-manuals` | [`export-manuals.md`](export-manuals.md) | single-pass, read-only |
115
118
  | `export-diagrams` | [`export-diagrams.md`](export-diagrams.md) | single-pass, read-only |
@@ -6,18 +6,14 @@ allowed-tools:
6
6
  "Bash",
7
7
  "Read",
8
8
  "Write",
9
- "Skill",
10
9
  ]
11
10
  ---
12
11
 
13
12
  # export-diagrams — exportar diagramas
14
13
 
15
- Lee el código de las fuentes del workspace + el plan-doc (secciones `AS-IS`/`TO-BE`) y genera diagramas C4 / mermaid en `docs/diagrams/`. Single-pass, read-only sobre sesiones. Invoca el skill `export-diagrams`.
14
+ Lee el código de las fuentes del workspace + el plan-doc (secciones `AS-IS`/`TO-BE`) y genera diagramas C4 / mermaid en `docs/diagrams/`. Single-pass, read-only sobre sesiones.
16
15
 
17
- ```
18
- Skill: export-diagrams
19
- args: $ARGUMENTS
20
- ```
16
+ Para ejecutar: **leé** `../exports/export-diagrams/SKILL.md` y **seguí** sus instrucciones con `$ARGUMENTS` como input. No intentes `Skill: export-diagrams` (no está registrada por nombre); el SKILL.md hermano es el cuerpo de este export.
21
17
 
22
18
  ## Qué produce
23
19
 
@@ -6,18 +6,14 @@ allowed-tools:
6
6
  "Bash",
7
7
  "Read",
8
8
  "Write",
9
- "Skill",
10
9
  ]
11
10
  ---
12
11
 
13
12
  # export-manuals — exportar manuales
14
13
 
15
- Consolida sesiones + artefactos `DECISION` + plan-doc (`Final behavior`) + código fuente y genera documentación de usuario/operación en `docs/manuals/`. Single-pass, read-only sobre sesiones. Invoca el skill `export-manuals`.
14
+ Consolida sesiones + artefactos `DECISION` + plan-doc (`Final behavior`) + código fuente y genera documentación de usuario/operación en `docs/manuals/`. Single-pass, read-only sobre sesiones.
16
15
 
17
- ```
18
- Skill: export-manuals
19
- args: $ARGUMENTS
20
- ```
16
+ Para ejecutar: **leé** `../exports/export-manuals/SKILL.md` y **seguí** sus instrucciones con `$ARGUMENTS` como input. No intentes `Skill: export-manuals` (no está registrada por nombre); el SKILL.md hermano es el cuerpo de este export.
21
17
 
22
18
  ## Qué produce
23
19
 
@@ -6,18 +6,14 @@ allowed-tools:
6
6
  "Bash",
7
7
  "Read",
8
8
  "Write",
9
- "Skill",
10
9
  ]
11
10
  ---
12
11
 
13
12
  # export-reports — exportar informes
14
13
 
15
- Consolida el corpus completo de sesiones (`CONCLUSIONS`, `DECISION`, spec) + plan-doc (estado) + `docs/` y genera un informe ejecutivo o funcional en `docs/reports/`. Single-pass, read-only sobre sesiones. Invoca el skill `export-reports`.
14
+ Consolida el corpus completo de sesiones (`CONCLUSIONS`, `DECISION`, spec) + plan-doc (estado) + `docs/` y genera un informe ejecutivo o funcional en `docs/reports/`. Single-pass, read-only sobre sesiones.
16
15
 
17
- ```
18
- Skill: export-reports
19
- args: $ARGUMENTS
20
- ```
16
+ Para ejecutar: **leé** `../exports/export-reports/SKILL.md` y **seguí** sus instrucciones con `$ARGUMENTS` como input. No intentes `Skill: export-reports` (no está registrada por nombre); el SKILL.md hermano es el cuerpo de este export.
21
17
 
22
18
  ## Qué produce
23
19
 
@@ -6,18 +6,14 @@ allowed-tools:
6
6
  "Bash",
7
7
  "Read",
8
8
  "Write",
9
- "Skill",
10
9
  ]
11
10
  ---
12
11
 
13
12
  # export-scripts — exportar scripts de BD
14
13
 
15
- Promueve los artefactos `SCRIPTS.sql` (tipo B — migraciones) de N sesiones de `.workflow/sessions/` a `docs/scripts/`. Single-pass, read-only sobre sesiones. Invoca el skill `export-scripts`.
14
+ Promueve los artefactos `SCRIPTS.sql` (tipo B — migraciones) de N sesiones de `.workflow/sessions/` a `docs/scripts/`. Single-pass, read-only sobre sesiones.
16
15
 
17
- ```
18
- Skill: export-scripts
19
- args: $ARGUMENTS
20
- ```
16
+ Para ejecutar: **leé** `../exports/export-scripts/SKILL.md` y **seguí** sus instrucciones con `$ARGUMENTS` como input. No intentes `Skill: export-scripts` (no está registrada por nombre); el SKILL.md hermano es el cuerpo de este export.
21
17
 
22
18
  ## Qué produce
23
19
 
@@ -1,31 +1,32 @@
1
1
  ---
2
2
  description: Inicia o retoma el loop de ejecución (plan-exec-loop) sobre un plan existente. Aquí ocurre el trabajo real: edición de código, scripts SQL propuestos, herramientas creadas. Git-safe.
3
- argument-hint: <docs/plans/PPP-plan.md>
3
+ argument-hint: <docs/plans/PPP-plan-<slug>.md>
4
4
  allowed-tools:
5
5
  [
6
6
  "Bash",
7
7
  "Read",
8
8
  "Write",
9
9
  "Edit",
10
- "Skill",
11
10
  ]
12
11
  ---
13
12
 
14
13
  # plan-exec — trampolín al loop de ejecución
15
14
 
16
- Arranca o retoma `plan-exec-loop` (Layer 2), que ejecuta el trabajo real fase por fase. El plan (`docs/plans/PPP-plan.md`) es un documento vivo que el loop mantiene actualizado (estado de fases y tareas).
15
+ Arranca o retoma `plan-exec-loop` (Layer 2), que ejecuta el trabajo real fase por fase. El plan (`docs/plans/PPP-plan-<slug>.md`) es un documento vivo que el loop mantiene actualizado (estado de fases y tareas).
17
16
 
18
- Invocar el skill:
17
+ ## Ejecutar el loop
19
18
 
20
- ```
21
- Skill: plan-exec-loop
22
- args: $ARGUMENTS
23
- ```
19
+ `plan-exec-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
+
21
+ 1. **Leé** `../loops/plan-exec-loop/SKILL.md` (ruta relativa a este archivo).
22
+ 2. **Seguí** sus instrucciones tomando `$ARGUMENTS` como input: detecta CHECKPOINT/resume, ejecuta fase por fase (git-safe, BD solo-scripts), mantiene el plan vivo y reporta.
23
+
24
+ > No intentes `Skill: plan-exec-loop` — no está registrada como skill. El comando **es** la entrada; el loop es su cuerpo.
24
25
 
25
26
  ## Qué hace el loop (resumen)
26
27
 
27
- - Lee y actualiza `docs/plans/PPP-plan.md` (living doc: estado de fases/tareas).
28
- - Edita código en las fuentes del workspace (una sesión por fase).
28
+ - Lee y actualiza `docs/plans/PPP-plan-<slug>.md` (living doc: estado de fases/tareas).
29
+ - Edita código en las fuentes del workspace (una sola sesión de ejecución para el run; la ejecución sigue siendo fase por fase, solo que no hay sesión por fase).
29
30
  - Escribe herramientas/utilidades reutilizables en `docs/tools/`.
30
31
  - Propone commits por fuente (git-safe: verifica rama, propone, nunca push/--amend/--no-verify).
31
32
  - Genera artefactos de sesión (`DECISION`, `SCRIPTS.sql`) en `.workflow/sessions/`.
@@ -1,13 +1,12 @@
1
1
  ---
2
- description: Inicia o retoma el loop de planificación (plan-new-loop) a partir de un spec refinado. Convierte el "qué" (spec) en el "cómo" (plan). Input ideal: docs/specs/NNN-spec-refined.md.
3
- argument-hint: <docs/specs/NNN-spec-refined.md | docs/specs/NNN-spec.md | prompt>
2
+ description: Inicia o retoma el loop de planificación (plan-new-loop) a partir de un spec. Convierte el "qué" (spec) en el "cómo" (plan). Input ideal: docs/specs/NNN-spec-<slug>.md ya refinado.
3
+ argument-hint: <docs/specs/NNN-spec-<slug>.md | prompt>
4
4
  allowed-tools:
5
5
  [
6
6
  "Bash",
7
7
  "Read",
8
8
  "Write",
9
9
  "Edit",
10
- "Skill",
11
10
  ]
12
11
  ---
13
12
 
@@ -17,22 +16,26 @@ Puente SPEC → PLANIFICATION. Convierte el "qué" (spec refinado) en el "cómo"
17
16
 
18
17
  ## Resolución de input
19
18
 
20
- El skill evalúa `$ARGUMENTS`:
19
+ El skill evalúa `$ARGUMENTS` (los specs viven in place — `docs/specs/NNN-spec-<slug>.md`; localizar vía glob `docs/specs/NNN-spec-*.md` o la ruta exacta):
21
20
 
22
- 1. **`docs/specs/NNN-spec-refined.md`** → ideal. Procede directamente a `plan-new-loop`.
23
- 2. **`docs/specs/NNN-spec.md`** (borrador sin refinar) → propone correr `/w:spec-refine` primero; planificar sobre un spec sólido produce mejores planes.
21
+ 1. **Spec refinado** (`docs/specs/NNN-spec-<slug>.md` que **ya tiene** `## Refinement decisions` / `## Q&A traceability`) → ideal. Procede directamente a `plan-new-loop`.
22
+ 2. **Spec borrador** (mismo archivo, pero **sin** esas dos secciones) → **soft-suggest** correr `/w:spec-refine` primero; planificar sobre un spec sólido produce mejores planes (el usuario puede proceder igual).
24
23
  3. **prompt** (sin spec referenciado) → propone usar el flujo SPEC; **por default lanza `/w:spec-new`** con ese prompt para crear el borrador, y desde ahí continúa el flujo natural.
25
24
 
26
- Invocar el skill:
25
+ > **Refinado vs borrador** se distingue por la **presencia** de `## Refinement decisions` / `## Q&A traceability` en el spec, no por el nombre del archivo (ya no hay `-refined`).
27
26
 
28
- ```
29
- Skill: plan-new-loop
30
- args: $ARGUMENTS
31
- ```
27
+ ## Ejecutar el loop
28
+
29
+ `plan-new-loop` **no** es una skill invocable por nombre — es el manual de operación de este comando (un doc hermano del bundle). **Cargalo y ejecutalo de punta a punta**:
30
+
31
+ 1. **Leé** `../loops/plan-new-loop/SKILL.md` (ruta relativa a este archivo).
32
+ 2. **Seguí** sus instrucciones tomando `$ARGUMENTS` como input (resuelto según las 3 reglas de arriba): detecta estado/resume, corre el motor gap-driven, crea y maneja sessions, converge y reporta.
33
+
34
+ > No intentes `Skill: plan-new-loop` — no está registrada como skill. El comando **es** la entrada; el loop es su cuerpo.
32
35
 
33
36
  ## Notas de numeración
34
37
 
35
- El plan toma su propio número `PPP` en `docs/plans/`. **No hereda el `NNN` del spec**. El vínculo al spec se establece por referencia (`## Origin` / "Derivado de") en el plan, no por número.
38
+ El plan se nombra `docs/plans/PPP-plan-<slug>.md`. El CLI solo devuelve el número `PPP`; el loop arma el nombre completo (slug = kebab-case corto del Requirement: `[a-z0-9-]`, ~5 palabras / ≤ 40 chars). **No hereda el `NNN` del spec**. El vínculo al spec se establece por referencia (`## Origin` / "Derivado de") en el plan, no por número.
36
39
 
37
40
  ## Plan mode
38
41
 
@@ -7,7 +7,6 @@ allowed-tools:
7
7
  "Read",
8
8
  "Write",
9
9
  "Edit",
10
- "Skill",
11
10
  ]
12
11
  ---
13
12
 
@@ -15,12 +14,14 @@ allowed-tools:
15
14
 
16
15
  Para tareas acotadas y directas que no justifican pasar por SPEC ni PLANIFICATION. Siempre crea una sesión ligera (trazabilidad + resume). Delega a `quick-loop` (Layer 2).
17
16
 
18
- Invocar el skill:
17
+ ## Ejecutar el loop
19
18
 
20
- ```
21
- Skill: quick-loop
22
- args: $ARGUMENTS
23
- ```
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
+
21
+ 1. **Leé** `../loops/quick-loop/SKILL.md` (ruta relativa a este archivo).
22
+ 2. **Seguí** sus instrucciones tomando `$ARGUMENTS` como la tarea: crea la session ligera, trabaja con ceremonia mínima (git-safe), escala a SPEC/PLAN si crece, y reporta.
23
+
24
+ > No intentes `Skill: quick-loop` — no está registrada como skill. El comando **es** la entrada; el loop es su cuerpo.
24
25
 
25
26
  ## Qué hace el loop
26
27
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Genera un borrador de especificación (docs/specs/NNN-spec.md) a partir de un prompt, en una sola pasada. Paso 1 del flujo SPEC; no arranca loop.
2
+ description: Genera un borrador de especificación (docs/specs/NNN-spec-<slug>.md) a partir de un prompt, en una sola pasada. Paso 1 del flujo SPEC; no arranca loop.
3
3
  argument-hint: <prompt con el requerimiento o idea>
4
4
  allowed-tools:
5
5
  [
@@ -11,13 +11,24 @@ allowed-tools:
11
11
 
12
12
  # spec-new — borrador de especificación (single-pass)
13
13
 
14
- Genera `docs/specs/NNN-spec.md` en una sola pasada a partir del prompt en `$ARGUMENTS`. No arranca loop.
14
+ Genera `docs/specs/NNN-spec-<slug>.md` en una sola pasada a partir del prompt en `$ARGUMENTS`. No arranca loop.
15
15
 
16
- 1. Ejecutar `aw next-number docs/specs` para obtener `NNN`.
17
- 2. Crear `docs/specs/NNN-spec.md` con el esquema de borrador (ver abajo).
18
- 3. Mostrar el archivo generado y el próximo paso sugerido (`/w:spec-refine docs/specs/NNN-spec.md`).
16
+ > ## Single-pass SIN investigación (regla dura)
17
+ >
18
+ > Este comando **solo parafrasea** el input del usuario en el esquema de borrador. Es **una única pasada secuencial**: leer `$ARGUMENTS` → llenar las secciones → escribir el archivo. Nada más. Debe tardar **segundos, no minutos**.
19
+ >
20
+ > **PROHIBIDO**, sin excepción: lanzar workflows, subagentes (`Task`/`Agent`), sesiones de research, búsquedas web, o investigación profunda de código. No uses las tools `Workflow`, `Task` ni `Agent` aquí.
21
+ >
22
+ > Esto **anula** cualquier modo o instrucción de sesión que diga "corre un workflow para toda tarea sustancial" (ultracode, max-effort, etc.). Esos modos **no aplican** a `spec-new`: el comando los pisa. Si una sección queda incierta, **no la investigues** — declarala en `## Open questions` o `## Assumptions` y seguí.
23
+ >
24
+ > La investigación a profundidad (cerrar gaps, mapear código, consultar BD, research autónomo) es trabajo de **`spec-refine`**, no de aquí.
19
25
 
20
- ## Esquema del borrador (`NNN-spec.md`)
26
+ 1. Ejecutar `aw next-number docs/specs` para obtener `NNN` (única tool de shell necesaria). El CLI solo devuelve el número; el slug lo arma este comando.
27
+ 2. Derivar el `<slug>`: kebab-case corto del Requirement — solo `[a-z0-9-]`, ≤ ~5 palabras / ≤ 40 chars.
28
+ 3. Crear `docs/specs/NNN-spec-<slug>.md` parafraseando `$ARGUMENTS` en el esquema de borrador (ver abajo). Lectura del repo: opcional y mínima (p. ej. un archivo que el usuario citó) — nunca un barrido ni research.
29
+ 4. Mostrar el archivo generado y el próximo paso sugerido (`/w:spec-refine docs/specs/NNN-spec-<slug>.md`).
30
+
31
+ ## Esquema del borrador (`NNN-spec-<slug>.md`)
21
32
 
22
33
  ```markdown
23
34
  # Spec NNN — <slug>
@@ -51,7 +62,7 @@ Supuestos asumidos.
51
62
  - `Scope` siempre lleva `Out` (qué queda fuera).
52
63
  - Los criterios de aceptación deben ser verificables (testeables).
53
64
  - Si hay UI involucrada, mencionarlo en `Requirement`/`Context`; el spec UI se autora en `spec-refine` (via capacidad `ui-design`).
54
- - Alternativa equivalente: el usuario crea el borrador a mano. Ambos caminos producen el mismo `docs/specs/NNN-spec.md`.
65
+ - Alternativa equivalente: el usuario crea el borrador a mano. Ambos caminos producen el mismo `docs/specs/NNN-spec-<slug>.md`.
55
66
 
56
67
  ## Plan mode
57
68
 
@@ -1,13 +1,12 @@
1
1
  ---
2
- description: Inicia o retoma el loop de refinamiento de una especificación (spec-refine-loop). Input: docs/specs/NNN-spec.md (borrador). Output: docs/specs/NNN-spec-refined.md.
3
- argument-hint: <docs/specs/NNN-spec.md>
2
+ description: Inicia o retoma el loop de refinamiento de una especificación (spec-refine-loop). Input: docs/specs/NNN-spec-<slug>.md (borrador). Actualiza docs/specs/NNN-spec-<slug>.md in place.
3
+ argument-hint: <docs/specs/NNN-spec-<slug>.md>
4
4
  allowed-tools:
5
5
  [
6
6
  "Bash",
7
7
  "Read",
8
8
  "Write",
9
9
  "Edit",
10
- "Skill",
11
10
  ]
12
11
  ---
13
12
 
@@ -15,21 +14,25 @@ allowed-tools:
15
14
 
16
15
  Este comando no refina el spec él mismo: delega al loop `spec-refine-loop` (Layer 2), que es quien itera, cierra gaps y produce el spec refinado.
17
16
 
18
- Invocar el skill:
17
+ ## Ejecutar el loop
19
18
 
20
- ```
21
- Skill: spec-refine-loop
22
- args: $ARGUMENTS
23
- ```
19
+ `spec-refine-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
+
21
+ 1. **Leé** `../loops/spec-refine-loop/SKILL.md` (ruta relativa a este archivo).
22
+ 2. **Seguí** sus instrucciones tomando `$ARGUMENTS` como input: detecta estado/resume, corre el motor gap-driven, crea y maneja sessions, converge y reporta.
23
+
24
+ > No intentes `Skill: spec-refine-loop` — no está registrada como skill. El comando **es** la entrada; el loop es su cuerpo.
24
25
 
25
26
  ## Resolución de estado (resumable)
26
27
 
27
- El skill detecta el estado previo antes de arrancar:
28
+ El skill detecta el estado previo antes de arrancar, **keyando off el `CHECKPOINT`** (no la existencia de un archivo "refined"):
28
29
 
29
30
  1. Busca la sesión de refinamiento del spec en `.workflow/sessions/` y su `CHECKPOINT.md`.
30
31
  2. **En curso** (existe CHECKPOINT) → continúa desde el avance previo (gaps resueltos, Q&A).
31
- 3. **Sin avance** (sin CHECKPOINT ni refined) → arranca desde cero leyendo `NNN-spec.md`.
32
- 4. **Ya completado** (existe `NNN-spec-refined.md`, sin CHECKPOINT abierto) → re-refinamiento incremental: lee el **refined** como input (NO el borrador stale); al `Guardar`, sobrescribe con confirmación.
32
+ 3. **Sin avance** (sin CHECKPOINT y el spec **no** tiene `## Refinement decisions`/`## Q&A traceability`) → arranca desde cero leyendo el spec (`NNN-spec*.md`).
33
+ 4. **Ya refinado** (sin CHECKPOINT abierto pero el spec **ya tiene** `## Refinement decisions`/`## Q&A traceability`) → re-refinamiento incremental leyendo el **spec mismo**; al `Guardar`, edita in place con confirmación.
34
+
35
+ > **Compat (legacy):** el glob `NNN-spec*.md` también captura specs viejos `NNN-spec.md` / `NNN-spec-refined.md`. Re-correr spec-refine los edita in place de ahí en adelante.
33
36
 
34
37
  ## Plan mode
35
38
 
@@ -0,0 +1,50 @@
1
+ ---
2
+ description: Dashboard read-only del workspace — qué se hizo / qué falta / qué se descartó, con fechas en español (hace 2 días, ayer en la mañana). Se apoya en `aw status`. Comando transversal (no es un flow); no escribe nada.
3
+ argument-hint: (sin argumentos)
4
+ allowed-tools:
5
+ [
6
+ "Bash",
7
+ "Read",
8
+ ]
9
+ ---
10
+
11
+ # status — estado del workspace (read-only)
12
+
13
+ Muestra, simple y directo, el estado del workspace agrupado en **Hecho / Falta / Descartó**. Single-pass, read-only: no abre loop, no crea sesiones, no escribe en `docs/` ni en `.workflow/`. Comando **transversal** (no pertenece a ningún flow).
14
+
15
+ ## Ejecutar
16
+
17
+ 1. Corré `aw status` (devuelve JSON; se apoya en `status-service`).
18
+ 2. Renderizá un resumen legible a partir del JSON — **no** muestres el JSON crudo. Usá el campo `relative` tal cual (ya viene humanizado en español). Encabezá con `workspace.name`.
19
+ 3. Agrupá en tres bloques:
20
+ - **▸ HECHO** — specs con `refined: true`; plans con su progreso (`tasks_done`/`tasks_total`, `progress_pct`); sesiones `closed`.
21
+ - **▸ FALTA** — sesiones `active`; plans con tareas pendientes (`tasks_total − tasks_done`); specs con `open_questions > 0`.
22
+ - **▸ DESCARTÓ** — cada item de `discarded[]` (`kind: deferred` = diferido en BACKLOG; `kind: excluded` = excluido en CHECKPOINT), con su `text`.
23
+ 4. Cada línea termina con su fecha relativa tras ` · ` (ej. `· ayer en la mañana`). Si una sección queda vacía, mostrá `— (nada)`. No inventes datos que no estén en el JSON.
24
+ 5. Si `workspace.initialized` es `false` y todo está vacío → decí "No es un workspace de agent-workflow (no hay `.workflow/`)" y sugerí `/w:workspace-init`.
25
+
26
+ Formato sugerido (texto plano):
27
+
28
+ ```
29
+ Workspace: <name>
30
+
31
+ ▸ HECHO
32
+ • plan <slug> — <done>/<total> tareas (<pct>%) · <relative>
33
+ • spec <slug> — refinado · <relative>
34
+ • <folder> (<type>) — cerrada · <relative>
35
+
36
+ ▸ FALTA
37
+ • <folder> (<type>) — activa · <relative>
38
+ • plan <slug> — <pendientes> tareas pendientes
39
+ • spec <slug> — <n> preguntas abiertas
40
+
41
+ ▸ DESCARTÓ
42
+ • <text> (<kind>) · <relative>
43
+ ```
44
+
45
+ ## Plan mode
46
+ Igual que en ejecución: corré `aw status` (read-only) y mostrá el resumen. No hay cambios que aplicar.
47
+
48
+ ## Resources
49
+ - CLI: `aw status` (servicio `status-service`; fechas vía `humanize-es`)
50
+ - Design reference: `docs/referencias/workflow-commands/status.md`
@@ -8,12 +8,12 @@
8
8
 
9
9
  ## What a loop is
10
10
 
11
- Un loop es una **skill** que le enseña a la IA *cómo iterar* hasta producir un entregable. Se invoca por su `name:` con el tool `Skill`. La IA lo ejecuta de punta a punta: detecta huecos, los resuelve (preguntando al humano o investigando), integra y repite hasta converger.
11
+ Un loop es una **skill** que le enseña a la IA *cómo iterar* hasta producir un entregable. **No es invocable por nombre** con el tool `Skill` (no se registra como skill suelta): es el cuerpo de su comando `/w:…`, que lo **carga leyendo `<loop>/SKILL.md`** y lo ejecuta inline. La IA lo corre de punta a punta: detecta huecos, los resuelve (preguntando al humano o investigando), integra y repite hasta converger.
12
12
 
13
13
  Propiedades comunes a **los 4 loops**:
14
14
 
15
15
  1. **Gap-driven convergente** — cada ciclo: `detect_gaps` → resolver (humano o research) → integrar → repetir hasta que no queden gaps materiales. Los gaps "agotados" (límite `MAX` de intentos) no se re-disparan → garantiza convergencia.
16
- 2. **Puede crear sessions internas** si refinar/planificar/ejecutar requiere trabajo profundo (ej. investigar el código), el loop crea una session en `.workflow/sessions/` que maneja **sus** artefactos, la cierra y reporta de vuelta. **El usuario nunca crea esas sessions.**
16
+ 2. **Una sola session por run + research inline** el loop crea **una** session en `.workflow/sessions/` (la dueña del run) y maneja **sus** artefactos. La **investigación es inline**: una actividad dentro de esa misma session que escribe `ANALYSIS-FILE`/`CONCLUSIONS` (+ `SCRIPTS.sql` read-only si consulta BD) en su propia carpeta — ya no es una session aparte. **El usuario nunca crea sessions.** Los artefactos son el **registro vivo** del run — **ciclo artifact-first**: sembrar `CHECKPOINT.Pending/Next` (la intención) antes de ejecutar, llevar a `Completed`/DECISION después; CHECKPOINT actualizado en cada límite de gap/fase, BACKLOG solo si difiere. El spec/plan es la base guía.
17
17
  3. **AskUserQuestion con dos tipos de tab** (límite host: 4 preguntas/llamada):
18
18
  - **tab(s) de contenido** (≤3) — la(s) pregunta(s) real(es) del momento (resolver una duda, elegir MCP, o en convergencia: `Guardar` / `Preguntar algo más`).
19
19
  - **tab `flow`** (1, SIEMPRE presente) — control de ciclo de vida por un canal lateral. Así el contenido lo maneja la IA y el ciclo de vida lo dirige el humano.
@@ -26,15 +26,15 @@ El tab `flow` es **fijo**: `Compactar` / `Cerrar`, presente en los 4 loops. Resp
26
26
  | Option | What it does |
27
27
  |---|---|
28
28
  | `Compactar` | Escribe `CHECKPOINT` (session dueña del run) + dispara `/compact` del host y reanuda sin perder el hilo. |
29
- | `Cerrar` | `finalize`: persiste lo pendiente (`CHECKPOINT` + `BACKLOG`), cierra sessions internas y termina el loop. |
29
+ | `Cerrar` | `finalize`: persiste lo pendiente (`CHECKPOINT` siempre; `BACKLOG` solo si hay algo diferido), cierra la session y termina el loop. |
30
30
 
31
31
  ## Loops and their flow
32
32
 
33
33
  | Loop (`name:`) | Flow | Started by | Reads | Writes |
34
34
  |---|---|---|---|---|
35
- | [`spec-refine-loop`](spec-refine-loop/SKILL.md) | SPEC | `/w:spec-refine` | `docs/specs/NNN-spec.md` (o `…-spec-refined.md` si ya existe) | `docs/specs/NNN-spec-refined.md` |
36
- | [`plan-new-loop`](plan-new-loop/SKILL.md) | PLANIFICATION | `/w:plan-new` | `docs/specs/NNN-spec-refined.md` | `docs/plans/PPP-plan.md` |
37
- | [`plan-exec-loop`](plan-exec-loop/SKILL.md) | PLANIFICATION | `/w:plan-exec` | `docs/plans/PPP-plan.md` | `docs/plans/PPP-plan.md` (update) + `docs/tools`; resto vía `export-*` |
35
+ | [`spec-refine-loop`](spec-refine-loop/SKILL.md) | SPEC | `/w:spec-refine` | `docs/specs/NNN-spec*.md` (el spec mismo) | `docs/specs/NNN-spec-<slug>.md` (in place) |
36
+ | [`plan-new-loop`](plan-new-loop/SKILL.md) | PLANIFICATION | `/w:plan-new` | `docs/specs/NNN-spec-*.md` | `docs/plans/PPP-plan-<slug>.md` |
37
+ | [`plan-exec-loop`](plan-exec-loop/SKILL.md) | PLANIFICATION | `/w:plan-exec` | `docs/plans/PPP-plan-*.md` | `docs/plans/PPP-plan-<slug>.md` (update) + `docs/tools`; resto vía `export-*` |
38
38
  | [`quick-loop`](quick-loop/SKILL.md) | QUICK | `/w:quick` | — (prompt) | edita código + session ligera; **no** `docs/` |
39
39
 
40
40
  > `/w:spec-new` no tiene loop (es single-pass). Por eso hay **5 comandos / 4 loops**.
@@ -80,12 +80,13 @@ Los **heirs** (`plan-new-loop`, `plan-exec-loop`, `quick-loop`) usan `## Inherit
80
80
  ## Chassis / heirs
81
81
 
82
82
  ```
83
- spec-refine-loop ── CHASIS (patrón de referencia: motor gap-driven, sessions,
84
- │ AskUserQuestion + tab flow, research autónomo + regla BD,
85
- │ compact/resume, Cerrar persiste CHECKPOINT+BACKLOG)
83
+ spec-refine-loop ── CHASIS (patrón de referencia: motor gap-driven, sesión única,
84
+ │ AskUserQuestion + tab flow, research autónomo INLINE + regla BD,
85
+ │ compact/resume, artefactos como log vivo: CHECKPOINT siempre,
86
+ │ BACKLOG solo si difiere)
86
87
  ├── plan-new-loop (heir) → deltas: plan rico, gap taxonomy de plan
87
88
  ├── plan-exec-loop (heir) → deltas: ejecución real (código/BD/git),
88
- │ session por fase, sin auto-export
89
+ una sola session por run, sin auto-export
89
90
  └── quick-loop (heir) → deltas: ceremonia mínima, 1 session,
90
91
  hereda git/BD/no-export de plan-exec
91
92
  ```
@@ -103,7 +104,7 @@ Los loops componen **capacidades por su rol**, no skills concretas; la skill que
103
104
  | `git` | `git` | `plan-exec-loop` · `quick-loop` |
104
105
  | `coding-standards` | `coding-standards` | `plan-exec-loop` · `quick-loop` |
105
106
  | `writing` | `writing` | todos los loops |
106
- | `research` | `research` | todos los loops (research on-demand) |
107
+ | `research` | `research` | todos los loops (research inline) |
107
108
  | `testing` | `testing` | `plan-exec-loop` · `quick-loop` |
108
109
  | `tools` | `tools` | `plan-exec-loop` |
109
110
  | `overview` | `workflow` | cualquiera (orientación) |