@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.
- package/dist/application/humanize-es.d.ts +18 -0
- package/dist/application/humanize-es.d.ts.map +1 -0
- package/dist/application/humanize-es.js +71 -0
- package/dist/application/humanize-es.js.map +1 -0
- package/dist/application/session-close-service.d.ts.map +1 -1
- package/dist/application/session-close-service.js +4 -1
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/application/session-create-service.d.ts +2 -0
- package/dist/application/session-create-service.d.ts.map +1 -1
- package/dist/application/session-create-service.js +26 -3
- package/dist/application/session-create-service.js.map +1 -1
- package/dist/application/status-service.d.ts +74 -0
- package/dist/application/status-service.d.ts.map +1 -0
- package/dist/application/status-service.js +336 -0
- package/dist/application/status-service.js.map +1 -0
- package/dist/application/templates/session.d.ts +4 -2
- package/dist/application/templates/session.d.ts.map +1 -1
- package/dist/application/templates/session.js +15 -11
- package/dist/application/templates/session.js.map +1 -1
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +10 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/help-groups.js +1 -1
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/main.js +2 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/tui/data/workflow-content.d.ts.map +1 -1
- package/dist/cli/tui/data/workflow-content.js +2 -1
- package/dist/cli/tui/data/workflow-content.js.map +1 -1
- package/package.json +1 -1
- package/skills/w/README.md +2 -2
- package/skills/w/SKILL.md +6 -5
- package/skills/w/artifacts/README.md +8 -7
- package/skills/w/artifacts/artifacts-core/BACKLOG.md +5 -8
- package/skills/w/artifacts/artifacts-core/CHECKPOINT.md +14 -13
- package/skills/w/artifacts/artifacts-core/SESSION.md +10 -11
- package/skills/w/artifacts/artifacts-core/TASKS.md +4 -4
- package/skills/w/artifacts/artifacts-dev/DECISION.md +3 -3
- package/skills/w/artifacts/artifacts-dev/TECHNICAL-NOTE.md +14 -14
- package/skills/w/artifacts/artifacts-research/ANALYSIS-FILE.md +14 -27
- package/skills/w/artifacts/artifacts-research/CONCLUSIONS.md +10 -13
- package/skills/w/commands/README.md +9 -6
- package/skills/w/commands/export-diagrams.md +2 -6
- package/skills/w/commands/export-manuals.md +2 -6
- package/skills/w/commands/export-reports.md +2 -6
- package/skills/w/commands/export-scripts.md +2 -6
- package/skills/w/commands/plan-exec.md +11 -10
- package/skills/w/commands/plan-new.md +15 -12
- package/skills/w/commands/quick.md +7 -6
- package/skills/w/commands/spec-new.md +18 -7
- package/skills/w/commands/spec-refine.md +14 -11
- package/skills/w/commands/status.md +50 -0
- package/skills/w/loops/README.md +12 -11
- package/skills/w/loops/plan-exec-loop/SKILL.md +54 -52
- package/skills/w/loops/plan-new-loop/SKILL.md +28 -24
- package/skills/w/loops/quick-loop/SKILL.md +20 -19
- package/skills/w/loops/spec-refine-loop/SKILL.md +85 -63
- package/skills/w/roles/README.md +1 -1
- package/skills/w/roles/research/SKILL.md +21 -81
|
@@ -1,48 +1,35 @@
|
|
|
1
|
-
# ANALYSIS-FILE.md — research
|
|
1
|
+
# ANALYSIS-FILE.md — research analysis scratchpad
|
|
2
2
|
|
|
3
|
-
> What it is:
|
|
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
|
-
|
|
5
|
+
## Case
|
|
6
6
|
Short title.
|
|
7
7
|
|
|
8
|
-
## Question
|
|
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
|
-
|
|
12
|
-
|
|
11
|
+
## Context
|
|
12
|
+
Optional — one line of scope if useful: system / module + what's in scope.
|
|
13
13
|
|
|
14
|
-
##
|
|
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
|
|
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
|
|
26
|
+
## Findings
|
|
37
27
|
What do the evidences indicate?
|
|
38
28
|
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
- Evidence E3 rules out that...
|
|
29
|
+
- E1 shows...
|
|
30
|
+
- E2 confirms...
|
|
42
31
|
|
|
43
|
-
## Identified Cause
|
|
32
|
+
## Identified Cause
|
|
44
33
|
- Technical:
|
|
45
|
-
- Functional:
|
|
46
|
-
- Operational:
|
|
47
34
|
- Data:
|
|
48
35
|
- Undetermined:
|
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
# CONCLUSIONS.md — research
|
|
1
|
+
# CONCLUSIONS.md — research conclusions
|
|
2
2
|
|
|
3
|
-
> What it is: the conclusions of
|
|
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
|
|
5
|
+
## Conclusion
|
|
6
6
|
Direct answer to the initial question.
|
|
7
7
|
|
|
8
|
-
## Recommended Action
|
|
9
|
-
|
|
8
|
+
## Recommended Action
|
|
10
9
|
Example:
|
|
11
|
-
- [ ]
|
|
12
|
-
- [ ]
|
|
13
|
-
- [ ]
|
|
14
|
-
- [ ]
|
|
15
|
-
- [ ]
|
|
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
|
|
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
|
|
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 -->|
|
|
64
|
+
srl -->|refines IN PLACE| spec
|
|
63
65
|
|
|
64
|
-
|
|
66
|
+
spec --> pn["/w:plan-new"]
|
|
65
67
|
pn -->|starts| pnl(["plan-new-loop"])
|
|
66
|
-
pnl -->|generates| plan["docs/plans/PPP-plan
|
|
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 · `
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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
|
-
|
|
17
|
+
## Ejecutar el loop
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
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
|
|
3
|
-
argument-hint: <docs/specs/NNN-spec
|
|
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.
|
|
23
|
-
2.
|
|
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
|
-
|
|
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
|
-
|
|
30
|
-
|
|
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
|
|
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
|
-
|
|
17
|
+
## Ejecutar el loop
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
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
|
|
14
|
+
Genera `docs/specs/NNN-spec-<slug>.md` en una sola pasada a partir del prompt en `$ARGUMENTS`. No arranca loop.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
3
|
-
argument-hint: <docs/specs/NNN-spec
|
|
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
|
-
|
|
17
|
+
## Ejecutar el loop
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
32
|
-
4. **Ya
|
|
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`
|
package/skills/w/loops/README.md
CHANGED
|
@@ -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.
|
|
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. **
|
|
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`
|
|
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
|
|
36
|
-
| [`plan-new-loop`](plan-new-loop/SKILL.md) | PLANIFICATION | `/w:plan-new` | `docs/specs/NNN-spec
|
|
37
|
-
| [`plan-exec-loop`](plan-exec-loop/SKILL.md) | PLANIFICATION | `/w:plan-exec` | `docs/plans/PPP-plan
|
|
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,
|
|
84
|
-
│ AskUserQuestion + tab flow, research autónomo + regla BD,
|
|
85
|
-
│ compact/resume,
|
|
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
|
|
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
|
|
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) |
|