@tacuchi/agent-workflow-cli 14.5.1 → 14.8.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 +6 -3
- package/dist/application/mcp-host-reader.d.ts.map +1 -1
- package/dist/application/mcp-host-reader.js +67 -2
- package/dist/application/mcp-host-reader.js.map +1 -1
- package/dist/application/self/mcp-config.d.ts +4 -7
- package/dist/application/self/mcp-config.d.ts.map +1 -1
- package/dist/application/self/mcp-config.js +51 -46
- package/dist/application/self/mcp-config.js.map +1 -1
- package/dist/cli/tui/tabs/mcp-tab.js +2 -2
- package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
- package/package.json +1 -1
- package/skills/w/README.md +1 -1
- package/skills/w/SKILL.md +4 -2
- package/skills/w/artifacts/README.md +6 -3
- package/skills/w/artifacts/artifacts-core/SESSION.md +1 -1
- package/skills/w/artifacts/artifacts-design/SPEC.md +42 -0
- package/skills/w/commands/README.md +1 -1
- package/skills/w/commands/plan-exec.md +1 -0
- package/skills/w/commands/plan-new.md +4 -0
- package/skills/w/commands/plan-refine.md +4 -0
- package/skills/w/commands/quick.md +1 -0
- package/skills/w/commands/workspace-init.md +1 -1
- package/skills/w/loops/README.md +3 -2
- package/skills/w/loops/plan-exec-loop/SKILL.md +26 -8
- package/skills/w/loops/plan-new-loop/SKILL.md +10 -3
- package/skills/w/loops/plan-refine-loop/SKILL.md +10 -4
- package/skills/w/loops/quick-loop/SKILL.md +12 -6
- package/skills/w/loops/spec-refine-loop/SKILL.md +2 -0
- package/skills/w/roles/README.md +3 -1
- package/skills/w/roles/ui-spec/SKILL.md +22 -7
package/skills/w/README.md
CHANGED
|
@@ -58,7 +58,7 @@ Run [`/w:workspace-init`](commands/workspace-init.md) once to turn a folder into
|
|
|
58
58
|
|
|
59
59
|
1. **No auto-export** — loops never promote artifacts to `docs/`; only `export-*` does, explicitly.
|
|
60
60
|
2. **Folder ownership** — SPEC→`specs`; PLAN→`plans`; QUICK→none; the rest→`export-*`. (`docs/tools` is ambient — written by the `creating-tools` skill, not a flow.)
|
|
61
|
-
3. **spec & plan are documents** (`docs/`), not artifacts.
|
|
61
|
+
3. **spec & plan are documents** (`docs/`), not artifacts. *(Not to be confused with the **design SPECs** `NNN-SPEC-<SLUG>.md`: per-screen UI design artifacts of PLAN sessions — see [`artifacts/artifacts-design/`](artifacts/artifacts-design/).)*
|
|
62
62
|
4. **DB scripts-only** — the AI never executes DML/DDL; migrations land in `SCRIPTS.sql` and ship via `export-scripts`; reads are read-only via MCP.
|
|
63
63
|
5. **Git-safe** — verify the expected branch before editing; propose commits per source; never `push`/`--amend`/`--no-verify`.
|
|
64
64
|
6. **All loops** — gap-driven convergent; one session per run (research inline); **structured-choice** (capability — see [`harness/`](harness/SKILL.md); on Claude Code: `AskUserQuestion`) with ≤3 content questions + 1 always-present `flow` control (`Compactar`/`Cerrar`); a **convergence gate** before saving; compact/resume; artifacts as a live log (`CHECKPOINT` always; `BACKLOG` only when deferring).
|
package/skills/w/SKILL.md
CHANGED
|
@@ -112,6 +112,8 @@ Un loop es una skill que enseña a la IA **cómo iterar** hasta un entregable. P
|
|
|
112
112
|
|
|
113
113
|
Cada loop tiene un **convergence gate** read-only antes de ofrecer `Guardar`/`done`, que es operacionalmente **"todos los `SESSION.Success criteria` en verde"** (*verification-first*): chequea invariantes propios del entregable y lo que falle vuelve como gap (en `spec-refine-loop` es el *analyze gate*; en `plan-new-loop` —y en `plan-refine-loop`— la coherencia del plan; en `plan-exec-loop`, la validación final; en `quick-loop`, una validación puntual proporcional). El detalle vive en cada loop.
|
|
114
114
|
|
|
115
|
+
Los loops que **editan código** (`plan-exec-loop` por fase, `quick-loop` proporcional) corren además un **gate de revisión de cierre** ANTES de proponer cada commit: re-lectura **independiente** del diff aplicando las **convenciones ambientes instaladas** (el host las auto-descubre; el workflow crea el momento, no las bindea — no es un rol); los hallazgos se corrigen (re-validando) o se difieren justificados. Nada llega a un commit propuesto sin revisar. Ver `loops/plan-exec-loop/SKILL.md` § *Delta 5*.
|
|
116
|
+
|
|
115
117
|
`spec-new` no tiene loop (single-pass): **6 comandos / 5 loops**.
|
|
116
118
|
|
|
117
119
|
### The `export-*` family (única vía artefacto → `docs/`)
|
|
@@ -145,7 +147,7 @@ Catálogo de roles y su default:
|
|
|
145
147
|
|
|
146
148
|
| Role | Default | Tier | Composed by |
|
|
147
149
|
|---|---|---|---|
|
|
148
|
-
| `ui-design` | `ui-spec` | must | `spec-refine-loop` (UI) |
|
|
150
|
+
| `ui-design` | `ui-spec` | must | `spec-refine-loop` (UI) · `plan-new-loop` / `plan-refine-loop` (design SPECs) |
|
|
149
151
|
| `sql` | `sql` | must | research · `plan-exec-loop` · `quick-loop` · `export-scripts` |
|
|
150
152
|
| `git` | `git` | must | `plan-exec-loop` · `quick-loop` |
|
|
151
153
|
| `research` | `research` | should | todos los loops (capacidad inline) |
|
|
@@ -172,7 +174,7 @@ Las únicas `must` para el ciclo de un loop son **structured-choice** y **compac
|
|
|
172
174
|
|
|
173
175
|
1. **Sin auto-export** — los loops nunca graduan/exportan a `docs/`. Solo `export-*` lo hace, explícito.
|
|
174
176
|
2. **Cada flujo toca solo sus carpetas `docs/`** — SPEC→`specs` · PLAN→`plans` · QUICK→ninguna · resto→`export-*`. (`docs/tools` no es de un flujo: lo escribe la skill ambiente `creating-tools`.)
|
|
175
|
-
3. **El spec y el plan son documentos** (`docs/`), no artefactos de sesión.
|
|
177
|
+
3. **El spec y el plan son documentos** (`docs/`), no artefactos de sesión. *(No confundir con los **design SPECs** `NNN-SPEC-<SLUG>.md`: artefactos de diseño de UI **por pantalla** que las sesiones de PLAN producen vía la capacidad `ui-design` cuando el plan incluye UI — ver `artifacts/artifacts-design/` — no son el requirement-spec.)*
|
|
176
178
|
4. **BD solo-scripts** — la IA nunca ejecuta DML/DDL; las migraciones quedan en `SCRIPTS.sql` y las aplica el usuario. Solo lecturas read-only vía MCP.
|
|
177
179
|
5. **Git seguro** — rama esperada verificada antes de editar; commits propuestos por fuente; nunca `push`/`--amend`/`--no-verify`.
|
|
178
180
|
6. **Chasis de loops** — **objetivo persistente + verification-first** (persigue `SESSION.Objective` hasta que sus `SESSION.Success criteria` —sembrados al inicio, TDD generalizado— están en verde) · gap-driven convergente · una sola session por run (research inline) · **structured-choice** con ≤3 preguntas de contenido + 1 control `flow` (`Compactar`/`Cerrar`) siempre · compactación/resume · artefactos como log vivo **artifact-first** (sembrar `Pending`/`Next` antes, `Completed` después; `CHECKPOINT` siempre; `BACKLOG` solo si difiere).
|
|
@@ -15,7 +15,7 @@ Central distinction of the model:
|
|
|
15
15
|
| Location | `.workflow/sessions/NNN-…/` | `docs/<category>/` |
|
|
16
16
|
| Who manages it | a **loop**, through a **session** | produced by a loop/command at "save" time |
|
|
17
17
|
| User-facing | No (internal) | Yes |
|
|
18
|
-
| Examples | `CHECKPOINT`, `ANALYSIS-FILE`, `CONCLUSIONS`, `SCRIPTS.sql`, `TASKS`, `DECISION` | `specs`, `plans`, `manuals`, `scripts`, `diagrams`, `reports` |
|
|
18
|
+
| Examples | `CHECKPOINT`, `ANALYSIS-FILE`, `CONCLUSIONS`, `SCRIPTS.sql`, `TASKS`, `DECISION`, `NNN-SPEC-<SLUG>.md` | `specs`, `plans`, `manuals`, `scripts`, `diagrams`, `reports` |
|
|
19
19
|
|
|
20
20
|
> An artifact may be **promoted** to a `docs/` document (e.g. `SCRIPTS.sql` → `docs/scripts/`) — but **only via dedicated `export-*` skills**, **never** automatically by the loops. The spec and the plan **are not** artifacts: they are documents.
|
|
21
21
|
|
|
@@ -29,12 +29,14 @@ Sessions are created by the loops as needed — **one session per run**. The ses
|
|
|
29
29
|
|
|
30
30
|
| Session type | Created by | Artifacts | Notes |
|
|
31
31
|
|---|---|---|---|
|
|
32
|
-
| **refine** | `spec-refine-loop` · `plan-new-loop` | `SESSION` · `CHECKPOINT` · `BACKLOG` (on close, if any) | Owns the loop run (spec-refine, plan-new). |
|
|
32
|
+
| **refine** | `spec-refine-loop` · `plan-new-loop` · `plan-refine-loop` | `SESSION` · `CHECKPOINT` · `BACKLOG` (on close, if any) · `NNN-SPEC-<SLUG>.md` (PLAN sessions with UI) | Owns the loop run (spec-refine, plan-new, plan-refine). |
|
|
33
33
|
| **exec** | `plan-exec-loop` | `SESSION` · `CHECKPOINT` · `BACKLOG` (on close, if any) · `DECISION` · `SCRIPTS.sql` | A single per-run exec session (**not** one per phase). No `TECHNICAL-NOTE` or own `TASKS` — detail lives in the plan-doc (living). `TASKS` is optional for internal breakdown. |
|
|
34
34
|
| **quick** | `quick-loop` | `SESSION` · `CHECKPOINT` · `BACKLOG` (on close, if any) · `DECISION` · `SCRIPTS.sql` | Single session, single commit. |
|
|
35
35
|
|
|
36
36
|
> **Inline research (any session):** research is **not** a session type. When any session (`refine`/`exec`/`quick`) needs to investigate, it produces research artifacts **inline**: `ANALYSIS-FILE` (optional scratchpad), `CONCLUSIONS`, and read-only `SCRIPTS.sql` (if DB). These are written into the active session — there is no separate research session.
|
|
37
37
|
|
|
38
|
+
> **Inline design (PLAN sessions):** when the plan **includes UI**, `plan-new-loop`/`plan-refine-loop` compose the **`ui-design`** capability and produce **design SPECs** — `NNN-SPEC-<SLUG>.md`, one **per screen** (`001-SPEC-MODAL-EXPORT.md`, `002-SPEC-ADMIN-DASHBOARD.md`), numbering local to the session — inside their own session. The plan-doc **references** them (UI Tasks) and `plan-exec-loop` reads them as the design reference. They are **not** the requirement-spec (invariant 3): they are process artifacts. See [`artifacts-design/`](artifacts-design/).
|
|
39
|
+
|
|
38
40
|
> **PLAN note (rich plan):** the plan-doc (`docs/plans/PPP-plan.md`) absorbs inline the `TECHNICAL-NOTE` level (Solution/Impacted/AS-IS/TO-BE/Validations…) **and** the `Phases`/`Tasks`. Therefore exec sessions do **not** carry a `TECHNICAL-NOTE` or own `TASKS` artifact: the technical detail and progress live in the plan-doc (living). `TASKS` remains as an optional artifact for sessions that need their own internal breakdown.
|
|
39
41
|
|
|
40
42
|
---
|
|
@@ -51,6 +53,7 @@ Sessions are created by the loops as needed — **one session per run**. The ses
|
|
|
51
53
|
|---|---|---|
|
|
52
54
|
| [`artifacts-core/`](artifacts-core/) | common to any session | `SESSION` · `TASKS` · `CHECKPOINT` · `BACKLOG` · `SCRIPTS.sql` |
|
|
53
55
|
| [`artifacts-research/`](artifacts-research/) | inline research (any session) | `ANALYSIS-FILE` · `CONCLUSIONS` |
|
|
56
|
+
| [`artifacts-design/`](artifacts-design/) | inline design (PLAN sessions with UI) | `NNN-SPEC-<SLUG>.md` (design SPEC, one per screen) |
|
|
54
57
|
| [`artifacts-exec/`](artifacts-exec/) | `exec` / `quick` session | `DECISION` · `TECHNICAL-NOTE` (schema reference; absorbed by the plan-doc) |
|
|
55
58
|
|
|
56
59
|
---
|
|
@@ -59,5 +62,5 @@ Sessions are created by the loops as needed — **one session per run**. The ses
|
|
|
59
62
|
|
|
60
63
|
1. **No auto-export**: loops **never** graduate/export to `docs/`. Only `export-*` does, explicitly.
|
|
61
64
|
2. **Each flow touches only its `docs/` folders**: SPEC→`specs` · PLAN→`plans` · QUICK→none · rest→`export-*`. (`docs/tools` is ambient — `creating-tools`, not a flow.)
|
|
62
|
-
3. **Spec and plan are documents** (`docs/`), not artifacts — they never live inside a session.
|
|
65
|
+
3. **Spec and plan are documents** (`docs/`), not artifacts — they never live inside a session. *(Do not confuse with the **design SPECs** `NNN-SPEC-<SLUG>.md`: per-screen UI design artifacts of PLAN sessions — see [`artifacts-design/`](artifacts-design/) — which are not the requirement-spec.)*
|
|
63
66
|
4. **DB scripts-only**: the AI **never executes DML/DDL**; migrations stay in `SCRIPTS.sql` (type B) and are delivered via `export-scripts`. Only read-only queries (type A) are executed via MCP.
|
|
@@ -14,7 +14,7 @@ Who created it and from where:
|
|
|
14
14
|
|
|
15
15
|
## Type
|
|
16
16
|
Session type, **set by the parent loop** (not the user). Authoritative catalog: `../README.md`.
|
|
17
|
-
- `refine` — owns a spec-refine / plan-new loop run (SESSION + CHECKPOINT; + BACKLOG on close)
|
|
17
|
+
- `refine` — owns a spec-refine / plan-new / plan-refine loop run (SESSION + CHECKPOINT; + BACKLOG on close; + `NNN-SPEC-<SLUG>.md` in PLAN sessions with UI — see [`../artifacts-design/`](../artifacts-design/))
|
|
18
18
|
- `exec` — execute work; a single per-run session (PLAN), not one per phase
|
|
19
19
|
- `quick` — lightweight execution (≈ `exec`: single session, single commit) (QUICK)
|
|
20
20
|
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# NNN-SPEC-<SLUG>.md — design SPEC (UI)
|
|
2
|
+
|
|
3
|
+
> What it is: the **design specification of ONE screen** (modal, dashboard, form, …), produced by composing the **`ui-design`** capability (built-in default [`ui-spec`](../../roles/ui-spec/SKILL.md)) when the **plan includes UI**. It is a **session artifact** of the PLAN loops (`plan-new-loop` · `plan-refine-loop`) — process-facing, internal — and `plan-exec-loop` reads it as the **design reference** when implementing the UI tasks.
|
|
4
|
+
>
|
|
5
|
+
> **It is NOT the spec.** The requirement-spec (`docs/specs/NNN-spec-<slug>.md`) and the plan remain **documents** (invariant 3). The design SPEC is a different thing: the per-screen UI design detail, ephemeral and process-facing, living inside the session. Spelling disambiguates: `SPEC` (UPPERCASE, artifact) vs `spec` (lowercase, document).
|
|
6
|
+
|
|
7
|
+
## Naming
|
|
8
|
+
|
|
9
|
+
`NNN-SPEC-<SLUG>.md`, all UPPERCASE (session-artifact convention):
|
|
10
|
+
|
|
11
|
+
- `NNN` — sequence **local to the session** (001, 002, … in creation order). Numbered by **the loop**; the CLI is not involved (do not confuse with the global session `NNN` from `aw session-create`, nor with `aw next-number` for `docs/`).
|
|
12
|
+
- `SLUG` — short screen name in UPPER-KEBAB (`[A-Z0-9-]`, ≤ ~4 words).
|
|
13
|
+
- **One screen per file.** Several screens = several SPECs.
|
|
14
|
+
|
|
15
|
+
Examples: `001-SPEC-MODAL-EXPORT.md` · `002-SPEC-ADMIN-DASHBOARD.md`.
|
|
16
|
+
|
|
17
|
+
## Schema
|
|
18
|
+
|
|
19
|
+
Trace header (blockquote) + the [`ui-spec`](../../roles/ui-spec/SKILL.md) Markdown render (same structure, vocabulary and exact render rules; **a single screen**):
|
|
20
|
+
|
|
21
|
+
```markdown
|
|
22
|
+
> Design SPEC · generated via the ui-design capability
|
|
23
|
+
> Origin: docs/plans/PPP-plan-<slug>.md (· docs/specs/NNN-spec-<slug>.md § UI spec, if present)
|
|
24
|
+
> Design options: material3 · light · es
|
|
25
|
+
> Tasks: T3.2 · T3.3
|
|
26
|
+
|
|
27
|
+
# Modal Export
|
|
28
|
+
**Tipo**: modal | **Plataforma**: web
|
|
29
|
+
|
|
30
|
+
## Componentes
|
|
31
|
+
- **Formato** (select)
|
|
32
|
+
- **Rango de fechas** (datePicker)
|
|
33
|
+
- **Exportar** (button)
|
|
34
|
+
- **Cancelar** (link)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Rules
|
|
38
|
+
|
|
39
|
+
1. Authored by the **`ui-design`** capability (rebindable via `.workflow/skills.toml`; `off` → the UI gap degrades to human / `Open questions`, like any disabled capability).
|
|
40
|
+
2. The **plan-doc references** the path of the governing SPEC (in its UI Tasks / `Solution`): that reference is the **source of truth** for which SPEC governs each screen. A re-refine that changes a screen produces the updated SPEC **in its own session** (each loop manages the artifacts of ITS session) and re-points the plan reference.
|
|
41
|
+
3. **Derives** from the spec's `## UI spec` section when present: splits it per screen and elevates it to executable detail; a SPEC↔`## UI spec` contradiction is a **gap** (plan↔spec drift). If the spec has no `## UI spec`, it is authored from the `Requirement` via structured-choice (design system, theme, screen ambiguities).
|
|
42
|
+
4. Ephemeral and internal like every artifact: promotion to `docs/` happens **only** via `export-*` (never automatically by the loop).
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
▼
|
|
29
29
|
┌─ LAYER 3 · SESSIONS + ARTIFACTS (.workflow/sessions/) ─────────────────┐
|
|
30
30
|
│ Ephemeral, internal. No one invokes this by hand. Process-only. │
|
|
31
|
-
│ (schema in ../
|
|
31
|
+
│ (schema in ../artifacts/) │
|
|
32
32
|
└────────────────────────────────────────────────────────────────────────┘
|
|
33
33
|
|
|
34
34
|
╔═ docs/ ZONE — PERMANENT documents, user-facing ════════════════════════╗
|
|
@@ -28,6 +28,7 @@ Arranca o retoma `plan-exec-loop` (Layer 2), que ejecuta el trabajo real fase po
|
|
|
28
28
|
- Lee y actualiza `docs/plans/PPP-plan-<slug>.md` (living doc: estado de fases/tareas).
|
|
29
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).
|
|
30
30
|
- Si crea una herramienta/utilidad, la documenta la skill ambiente `creating-tools` en `docs/tools/` (auto-descubierta; el workflow no la bindea).
|
|
31
|
+
- **Gate de revisión de cierre** en cada límite de fase, **antes de proponer los commits**: re-lee el diff (pasada independiente) aplicando las **convenciones ambientes instaladas** y corrige o difiere hallazgos — nada llega a un commit sin revisar (ver `../loops/plan-exec-loop/SKILL.md` § *Delta 5*).
|
|
31
32
|
- Propone commits por fuente (git-safe: verifica rama, propone, nunca push/--amend/--no-verify).
|
|
32
33
|
- Genera artefactos de sesión (`DECISION`, `SCRIPTS.sql`) en `.workflow/sessions/`.
|
|
33
34
|
- **No exporta** a `docs/scripts`, `docs/manuals`, `docs/diagrams`, `docs/reports` — eso lo hacen los `export-*` como paso aparte.
|
|
@@ -37,6 +37,10 @@ El skill evalúa `$ARGUMENTS` (los specs viven in place — `docs/specs/NNN-spec
|
|
|
37
37
|
|
|
38
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.
|
|
39
39
|
|
|
40
|
+
## UI → design SPECs
|
|
41
|
+
|
|
42
|
+
Si el plan **incluye UI**, el loop compone la capacidad `ui-design` y produce **design SPECs** por pantalla (`NNN-SPEC-<SLUG>.md`) como artefactos de su sesión — las Tasks UI del plan los referencian (ver `../loops/plan-new-loop/SKILL.md` § *Delta 4* y `../artifacts/artifacts-design/SPEC.md`).
|
|
43
|
+
|
|
40
44
|
## Plan mode
|
|
41
45
|
|
|
42
46
|
El skill resuelve el input según las 3 reglas de arriba y describe las acciones del loop que ejecutaría, sin arrancar la iteración.
|
|
@@ -43,6 +43,10 @@ El skill detecta el estado previo antes de arrancar, **keyando off el `CHECKPOIN
|
|
|
43
43
|
3. **Sin avance** (sin CHECKPOINT y el plan **no** tiene `## Refinement decisions`/`## Q&A traceability`) → arranca desde cero leyendo el plan (`PPP-plan-*.md`).
|
|
44
44
|
4. **Ya refinado / re-refine a demanda** (sin CHECKPOINT abierto pero el plan **ya tiene** `## Refinement decisions`/`## Q&A traceability`) → **soportado de primera clase**: mientras el flujo siga en PLAN podés re-correr `/w:plan-refine` sobre el mismo plan **las veces que haga falta** (nuevos requerimientos, cambios de scope, re-lectura). El loop hace `create_or_resume` — localiza la refine session existente (aunque esté cerrada) y la **reabre** en vez de duplicarla — y re-refina leyendo el **plan mismo**; al `Guardar`, edita in place con confirmación.
|
|
45
45
|
|
|
46
|
+
## UI → design SPECs
|
|
47
|
+
|
|
48
|
+
Si el refine **toca UI**, el loop compone `ui-design` y produce/actualiza **design SPECs** (`NNN-SPEC-<SLUG>.md`) en su propia sesión — acotado a las pantallas nuevas/cambiadas — y re-apunta las referencias del plan (ver `../loops/plan-refine-loop/SKILL.md` § *Delta 4*).
|
|
49
|
+
|
|
46
50
|
## Plan mode
|
|
47
51
|
|
|
48
52
|
El skill resuelve el estado y describe las acciones que ejecutaría el loop (gaps que cerraría, preguntas que haría), sin arrancar la iteración.
|
|
@@ -27,6 +27,7 @@ Para tareas acotadas y directas que no justifican pasar por SPEC ni PLAN. Siempr
|
|
|
27
27
|
|
|
28
28
|
- Edita código en las fuentes del workspace.
|
|
29
29
|
- Artefactos mínimos en la sesión (DECISION lazy, commit propuesto).
|
|
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*).
|
|
30
31
|
- **No toca `docs/`** ni exporta nada.
|
|
31
32
|
- **Escala** a SPEC/PLAN si emerge complejidad (muchos archivos, ≥2 fuentes, necesita arquitectura, o el cambio es feature/refactor).
|
|
32
33
|
|
|
@@ -35,5 +35,5 @@ Resuelve las fuentes y describe el scaffolding que crearía, sin escribir archiv
|
|
|
35
35
|
|
|
36
36
|
## Resources
|
|
37
37
|
|
|
38
|
-
- Design reference: `docs/referencias/workflow-commands/workspace-init.md`
|
|
38
|
+
- Design reference: `docs/referencias/workflow-commands/workspace-init.md`
|
|
39
39
|
- Skills config: `docs/referencias/workflow-roles/` (capacidades/roles disponibles y cascada de binding)
|
package/skills/w/loops/README.md
CHANGED
|
@@ -91,7 +91,8 @@ spec-refine-loop ── CHASIS (patrón de referencia: objetivo persistente + v
|
|
|
91
91
|
├── plan-refine-loop (heir) → deltas: refina el plan in place (aux, opcional);
|
|
92
92
|
│ reusa gap taxonomy + coherence gate de plan-new
|
|
93
93
|
├── plan-exec-loop (heir) → deltas: ejecución real (código/BD/git),
|
|
94
|
-
│ una sola session por run,
|
|
94
|
+
│ una sola session por run, gate de revisión
|
|
95
|
+
│ de cierre pre-commit, sin auto-export
|
|
95
96
|
└── quick-loop (heir) → deltas: ceremonia mínima, 1 session,
|
|
96
97
|
hereda git/BD/no-export de plan-exec
|
|
97
98
|
```
|
|
@@ -104,7 +105,7 @@ Los loops componen **capacidades por su rol**, no skills concretas; la skill que
|
|
|
104
105
|
|
|
105
106
|
| Role | Default built-in | Composed by |
|
|
106
107
|
|---|---|---|
|
|
107
|
-
| `ui-design` | `ui-spec` | `spec-refine-loop` (cuando hay UI) |
|
|
108
|
+
| `ui-design` | `ui-spec` | `spec-refine-loop` (cuando hay UI) · `plan-new-loop` / `plan-refine-loop` (design SPECs `NNN-SPEC-<SLUG>.md`) |
|
|
108
109
|
| `sql` | `sql` | research · `plan-exec-loop` · `quick-loop` |
|
|
109
110
|
| `git` | `git` | `plan-exec-loop` · `quick-loop` |
|
|
110
111
|
| `research` | `research` | todos los loops (research inline) |
|
|
@@ -10,7 +10,10 @@ description: >-
|
|
|
10
10
|
+ CHECKPOINT); git seguro (verifica la rama antes de editar, propone commits por
|
|
11
11
|
fuente, nunca push/--amend/--no-verify); la IA NUNCA ejecuta DML/DDL (las
|
|
12
12
|
migraciones se redactan en SCRIPTS.sql, solo read-only se ejecuta); validación
|
|
13
|
-
por fase y final (lo dependiente de migración no aplicada se difiere a DBA);
|
|
13
|
+
por fase y final (lo dependiente de migración no aplicada se difiere a DBA);
|
|
14
|
+
gate de revisión de cierre por fase ANTES de proponer commits (re-lectura
|
|
15
|
+
independiente del diff aplicando las convenciones ambientes instaladas —
|
|
16
|
+
corrige o difiere; nada llega a un commit sin revisar); y
|
|
14
17
|
SIN auto-export (escribe solo docs/plans; el resto queda como artefacto para
|
|
15
18
|
export-*). Compone git y sql. Lo arranca /w:plan-exec, es reanudable. Invocar
|
|
16
19
|
para implementar un plan ya generado.
|
|
@@ -30,7 +33,7 @@ PLAN
|
|
|
30
33
|
`/w:plan-exec` — **reanudable** (mismo mecanismo del chasis; aquí el resume keya off el checkbox del plan-doc + CHECKPOINT, ver Delta 1).
|
|
31
34
|
|
|
32
35
|
## Reads
|
|
33
|
-
`docs/plans/PPP-plan-<slug>.md` (localizar vía glob `docs/plans/PPP-plan-*.md` o la ruta exacta del argumento del comando). Corre **cualquier** plan, haya pasado o no por [`plan-refine-loop`](../plan-refine-loop/SKILL.md) — plan-refine es auxiliar y no obligatorio; no hay gate que lo exija.
|
|
36
|
+
`docs/plans/PPP-plan-<slug>.md` (localizar vía glob `docs/plans/PPP-plan-*.md` o la ruta exacta del argumento del comando). Corre **cualquier** plan, haya pasado o no por [`plan-refine-loop`](../plan-refine-loop/SKILL.md) — plan-refine es auxiliar y no obligatorio; no hay gate que lo exija. Si el plan incluye UI, también los **design SPECs** (`NNN-SPEC-<SLUG>.md`) que sus Tasks referencian — artefactos de la sesión de plan-new/plan-refine, leídos **read-only** como referencia de diseño al implementar (ver [`SPEC.md`](../../artifacts/artifacts-design/SPEC.md)).
|
|
34
37
|
|
|
35
38
|
## Writes
|
|
36
39
|
- `docs/plans/PPP-plan-<slug>.md` (**read/update**, living doc: estado de fases/tareas, `Open questions`).
|
|
@@ -69,13 +72,13 @@ Del chasis [`spec-refine-loop`](../spec-refine-loop/SKILL.md), sin cambios:
|
|
|
69
72
|
- Recorre las `Phases` del plan en orden (respeta deps) **dentro de la única session del run** (no hay session-por-fase).
|
|
70
73
|
- El **avance por fase vive en el plan-doc** (`- [x]`) y en el `CHECKPOINT` único (Completed/Pending/Next): **artifact-first** — `CHECKPOINT.Next` se fija a la fase inminente **antes** de iniciarla; el checkbox `- [x]` del plan-doc se voltea **después** de completar la tarea.
|
|
71
74
|
- Ejecuta las `Tasks` de la fase; **salta** las ya marcadas `- [x]` en el plan (el plan-doc es la fuente de verdad por tarea). Marca `- [x]` + estado **en el plan** (living doc; no en un `TASKS` aparte).
|
|
72
|
-
- En **cada límite de fase**: actualiza el `CHECKPOINT` (Completed += Phase N, Next = Phase N+1) y propone commits.
|
|
75
|
+
- En **cada límite de fase**: valida, corre el **gate de revisión de cierre** (Delta 5), actualiza el `CHECKPOINT` (Completed += Phase N, Next = Phase N+1) y propone commits.
|
|
73
76
|
- Registra `DECISION` solo lo **no obvio**, **a medida que se toma** (los `DECISION` por fase se acumulan en el ÚNICO `DECISION`, etiquetados por fase/tarea — ej. `Origin: T2 (F1)`).
|
|
74
77
|
|
|
75
78
|
## Delta 2 — Git policy: **rama segura + commits propuestos**
|
|
76
79
|
|
|
77
80
|
- **Antes de editar** archivos de una fuente: verifica rama actual = rama esperada de esa fuente (estilo `branch-check`). Si no coincide → **pausa y resuelve con el humano**; nunca `stash`/`reset --hard`/`checkout -- .`/`clean` sin confirmación por fuente.
|
|
78
|
-
- **Al cerrar una fase** (o al `Cerrar`): **propone commits por fuente** (propose-then-execute, aprobar antes); nunca `push`/`--amend`/`--no-verify`.
|
|
81
|
+
- **Al cerrar una fase** (o al `Cerrar`): **tras pasar el gate de revisión de cierre** (Delta 5), **propone commits por fuente** (propose-then-execute, aprobar antes); nunca `push`/`--amend`/`--no-verify`. Nada llega a un commit propuesto sin revisar.
|
|
79
82
|
- **Commit rechazado**: los cambios **quedan en el working tree** (no se revierten). Se permite reproponer / editar mensaje. Se registra en `CHECKPOINT` + `BACKLOG` que la fase quedó **sin commitear** (reanudable).
|
|
80
83
|
- **Precondición entre fases**: `branch-check` valida *identidad* de rama, **no** *limpieza* del working tree. Antes de iniciar la siguiente fase, el working tree de cada fuente debe estar **limpio** (committeado) o explícitamente **reconocido** como "cambios sin commitear de la fase N" — para no co-mezclar dos fases en un mismo commit.
|
|
81
84
|
|
|
@@ -96,7 +99,18 @@ Distinción por **ejecución**, no por archivo (ver el esquema `SCRIPTS.sql`):
|
|
|
96
99
|
|
|
97
100
|
> La **validación final** es el **convergence gate** de PLAN-exec = **`Success criteria` en verde** (*verification-first*; análogo al *analyze gate* de SPEC y al *coherence gate* de `plan-new`): el plan no se marca *done* hasta que pasa o queda explícitamente diferida (handoff de SQL). Para código son **tests ejecutables** (TDD); para migraciones BD no ejecutables, **rúbrica** (SCRIPTS.sql válido + revisado).
|
|
98
101
|
|
|
99
|
-
## Delta 5 —
|
|
102
|
+
## Delta 5 — Gate de revisión de cierre (convenciones, pre-commit)
|
|
103
|
+
|
|
104
|
+
Tras la validación de la fase y **antes de proponer sus commits** (también en un `Cerrar` anticipado, antes de proponer los commits pendientes), el diff de la fase pasa un **gate de revisión de cierre**:
|
|
105
|
+
|
|
106
|
+
- **Re-lectura independiente** del diff (subagente o re-lectura limpia — la *verificación independiente* del chasis: no asume correcta la implementación; *only command output counts*).
|
|
107
|
+
- **Aplica las convenciones ambientes instaladas** relevantes al stack tocado (estándares de código/stack, seguridad, revisión de diffs, familias propias del workspace) — el host las **auto-descubre por su `description`**. El workflow **no nombra ni bindea** skills concretas: **crea el momento; las skills instaladas lo llenan** (por eso la revisión **no es un rol** — ver [`../../roles/README.md`](../../roles/README.md)). Sin skills de convenciones instaladas → checklist genérico mínimo: SOLID/early-return, nombres claros, DRY, errores no silenciados, sin secrets/PII, SQL parametrizado, sin código muerto, + las `Validations` del plan.
|
|
108
|
+
- **Hallazgos**: se **corrigen** en el working tree y se **re-corre la validación de la fase** (el gate no reemplaza los tests: los re-verifica tras corregir), o se **difieren justificados** (→ `Open questions` del plan + `BACKLOG`); lo no obvio → `DECISION`. Integridad del gate (chasis): nunca se debilita un check ni se baja una convención para pasar.
|
|
109
|
+
- **Artifact-first + verification-first**: `CHECKPOINT.Next = "review fase N"` antes de la pasada; `SESSION.Success criteria` incluye desde el inicio "cada fase pasó el gate de revisión antes de sus commits".
|
|
110
|
+
|
|
111
|
+
Recién con el gate en verde se proponen los commits de la fase (Delta 2).
|
|
112
|
+
|
|
113
|
+
## Delta 6 — Completitud / cierre
|
|
100
114
|
|
|
101
115
|
- Una fase cierra **done** cuando sus tareas están `- [x]` y su validación pasó **o** quedó diferida (handoff de SQL). Estado posible: **"done — SQL pendiente de aplicar"**.
|
|
102
116
|
- Todas las fases done → *structured-choice* final (contenido: `Marcar plan done` / `Preguntar algo más`; flow: `Compactar`/`Cerrar`).
|
|
@@ -126,8 +140,11 @@ plan-exec-loop(PPP-plan-<slug>.md):
|
|
|
126
140
|
validación de la fase:
|
|
127
141
|
la que corre y falla → volver a la tarea
|
|
128
142
|
la dependiente de migración no aplicada → diferir (Open questions + BACKLOG)
|
|
143
|
+
gate de revisión de cierre (pre-commit): # Delta 5: CHECKPOINT.Next = "review fase N"
|
|
144
|
+
re-lectura INDEPENDIENTE del diff de la fase + convenciones ambientes instaladas
|
|
145
|
+
hallazgos → corregir (y re-validar la fase) ó diferir justificado (Open questions + BACKLOG)
|
|
129
146
|
update CHECKPOINT (Completed += Phase N, Next = Phase N+1) # DESPUÉS: Pending→Completed + Next = fase siguiente (ver ciclo artifact-first)
|
|
130
|
-
proponer commit(s) por fuente (aprobar antes) # nunca push/amend/--no-verify
|
|
147
|
+
proponer commit(s) por fuente (aprobar antes) # nunca push/amend/--no-verify; solo tras el gate en verde
|
|
131
148
|
si rechazado → cambios quedan; registrar "fase sin commitear"
|
|
132
149
|
precondición siguiente fase: working tree limpio o reconocido
|
|
133
150
|
validación final (lo que se pueda; lo dependiente de SQL queda como handoff)
|
|
@@ -149,7 +166,8 @@ flowchart TD
|
|
|
149
166
|
DO --> MK["marcar Task - [x] en el PLAN"]
|
|
150
167
|
MK --> T
|
|
151
168
|
T -->|no| VP["validación de fase<br/>(falla→tarea · dep. SQL→diferir)"]
|
|
152
|
-
VP -->
|
|
169
|
+
VP --> RV["gate de revisión de cierre<br/>(diff + convenciones ambientes → corregir/diferir)"]
|
|
170
|
+
RV --> CK["update CHECKPOINT (Completed/Next)"]
|
|
153
171
|
CK --> CM["proponer commits por fuente"]
|
|
154
172
|
CM -->|aprobado| P
|
|
155
173
|
CM -->|rechazado| RJ["cambios quedan · registrar 'sin commitear'"]
|
|
@@ -159,6 +177,6 @@ flowchart TD
|
|
|
159
177
|
|
|
160
178
|
## Convergence / exit
|
|
161
179
|
|
|
162
|
-
- Plan completo + validación OK (o diferida con handoff) → `Marcar plan done`.
|
|
180
|
+
- Plan completo + validación OK (o diferida con handoff) + **cada fase pasó su gate de revisión de cierre** antes de commitear → `Marcar plan done`.
|
|
163
181
|
- `Cerrar` (control `flow`, en cualquier momento) → `finalize` persiste `CHECKPOINT` (y `BACKLOG` solo si quedó algo sin ejecutar / sin commitear / sin aplicar), cierra la session, reporta.
|
|
164
182
|
- La promoción de artefactos a `docs/` (vía `export-*`) es **siempre** un paso posterior y explícito, fuera de este loop.
|
|
@@ -10,7 +10,9 @@ description: >-
|
|
|
10
10
|
deltas: el plan absorbe inline el nivel TECHNICAL-NOTE
|
|
11
11
|
(Solution/Impacted/AS-IS/TO-BE/Validations…) + Phases/Tasks con estado vivo;
|
|
12
12
|
el research aquí mapea código/impacto (componentes FE/BE/BD, wiring AS-IS,
|
|
13
|
-
dependencias);
|
|
13
|
+
dependencias); una gap taxonomy propia de planificación; y si el plan incluye
|
|
14
|
+
UI compone la capacidad ui-design para autorar design SPECs por pantalla
|
|
15
|
+
(NNN-SPEC-<SLUG>.md) como artefactos de su sesión. Distingue spec
|
|
14
16
|
refinado de borrador por la presencia de Refinement decisions/Q&A traceability
|
|
15
17
|
(si faltan → soft-suggest correr spec-refine antes). Lo arranca el comando
|
|
16
18
|
/w:plan-new y es reanudable. Invocar cuando un spec deba convertirse en un plan
|
|
@@ -34,7 +36,7 @@ PLAN
|
|
|
34
36
|
`docs/specs/NNN-spec-*.md` (glob — localiza el spec por número; o la ruta exacta del argumento del comando). **Refinado vs borrador** se distingue por la **presencia** de `## Refinement decisions` / `## Q&A traceability` en el spec: si faltan → **soft-suggest** correr `/w:spec-refine` primero (planificar sobre un spec sólido produce mejores planes), pero el usuario puede proceder.
|
|
35
37
|
|
|
36
38
|
## Writes
|
|
37
|
-
`docs/plans/PPP-plan-<slug>.md` (`generate`; **sobrescribe con confirmación** si existe). Solo escribe `docs/plans` — nunca otras carpetas `docs/` ni auto-export.
|
|
39
|
+
`docs/plans/PPP-plan-<slug>.md` (`generate`; **sobrescribe con confirmación** si existe). Solo escribe `docs/plans` — nunca otras carpetas `docs/` ni auto-export. Si el plan **incluye UI**, además produce **design SPECs** (`NNN-SPEC-<SLUG>.md`) como artefactos **de su sesión** (ver *Delta 4* — no son `docs/`, no hay auto-export).
|
|
38
40
|
|
|
39
41
|
> **slug**: kebab-case corto derivado del Requirement del spec — solo `[a-z0-9-]`, ≤ ~5 palabras / ≤ 40 chars. El CLI solo devuelve el número `PPP`; el loop arma el nombre completo. Para localizar planes, glob `docs/plans/PPP-plan-*.md`.
|
|
40
42
|
|
|
@@ -93,13 +95,18 @@ Reemplaza la gap taxonomy de spec por una orientada a planificación:
|
|
|
93
95
|
| Deps faltantes | orden no claro | research / humano |
|
|
94
96
|
| Criterios del spec sin cubrir | tareas no trazan a acceptance criteria | la IA deriva + humano confirma |
|
|
95
97
|
| Riesgos sin atender | riesgos técnicos sin mitigar/declarar | humano |
|
|
98
|
+
| UI sin design SPEC *(si aplica)* | el plan incluye UI (FE/pantallas en `Impacted`, `## UI spec` en el spec, o tareas UI) sin `NNN-SPEC-*.md` en la sesión | **capacidad `ui-design`** |
|
|
96
99
|
|
|
97
100
|
## Delta 3 — What research investigates here
|
|
98
101
|
|
|
99
102
|
El research **inline** del chasis se especializa: mapear **código/impacto** — componentes FE/BE/BD afectados, wiring AS-IS, dependencias. Alimenta las secciones `Solution`, `Impacted`, `Current state (AS-IS)`. La regla BD del chasis aplica igual (queries read-only a `SCRIPTS.sql`, MCP elegido vía pregunta de contenido si >1 sin default).
|
|
100
103
|
|
|
104
|
+
## Delta 4 — Design SPECs (si el plan incluye UI)
|
|
105
|
+
|
|
106
|
+
El gap **UI sin design SPEC** se resuelve **componiendo** la capacidad **`ui-design`** (default built-in [`ui-spec`](../../roles/ui-spec/SKILL.md); rebindeable vía `.workflow/skills.toml`; `off` → degrada a humano / `Open questions`): autora **un design SPEC por pantalla** como artefacto de la sesión — `NNN-SPEC-<SLUG>.md` (`001-SPEC-MODAL-EXPORT.md`, `002-SPEC-ADMIN-DASHBOARD.md`; numeración local a la sesión, ver [`SPEC.md`](../../artifacts/artifacts-design/SPEC.md)). **Deriva** de la sección `## UI spec` del spec si existe (la parte por pantalla y la eleva a detalle ejecutable); si no, autora desde el `Requirement` (design-system/tema/ambigüedades vía *structured-choice*, cuenta en el batch). Las **Tasks UI del plan referencian** la ruta de su SPEC — esa referencia es la fuente de verdad — y `plan-exec-loop` los lee como referencia de diseño. Es el mismo tercer modo de resolución de gap del chasis (junto a *research* y *humano*).
|
|
107
|
+
|
|
101
108
|
## Convergence / exit
|
|
102
109
|
|
|
103
|
-
Sin gaps materiales → **coherence gate** (read-only) = **`Success criteria` en verde** (*verification-first*; es el "convergence gate" del chasis para PLAN-new): cada `acceptance criterion` del spec **traza** a una fase/tarea, `Final behavior` los cubre, fases XS–S / tareas XS, `deps` sin ciclos, `Impacted` consistente con `Solution
|
|
110
|
+
Sin gaps materiales → **coherence gate** (read-only) = **`Success criteria` en verde** (*verification-first*; es el "convergence gate" del chasis para PLAN-new): cada `acceptance criterion` del spec **traza** a una fase/tarea, `Final behavior` los cubre, fases XS–S / tareas XS, `deps` sin ciclos, `Impacted` consistente con `Solution`; y si el plan incluye UI: cada pantalla/tarea UI **traza a su design SPEC** (`NNN-SPEC-*.md`) y los SPECs no contradicen el `## UI spec` del spec (si existe). Lo que falle **vuelve como gap** — la trazabilidad criterio→tarea es una **invariante chequeada**, no una sección aparte. Si pasa → *structured-choice* (contenido: `Guardar plan` / `Preguntar algo más`; flow: `Compactar`/`Cerrar`) → al `Guardar`, escribe `docs/plans/PPP-plan-<slug>.md` (con confirmación si existe) → `finalize` (persiste `CHECKPOINT`, y `BACKLOG` solo si difiere; cierra la session, reporta). `Cerrar` en cualquier momento → `finalize` igual.
|
|
104
111
|
|
|
105
112
|
> **Después de generar:** el plan puede ir directo a `plan-exec`, o —si surgen cambios antes de ejecutar (nuevos requerimientos, ajustes de alcance)— pasar por [`plan-refine-loop`](../plan-refine-loop/SKILL.md) (`/w:plan-refine`, auxiliar y **no obligatorio**), que lo refina in place.
|
|
@@ -10,7 +10,9 @@ description: >-
|
|
|
10
10
|
difiere). Es a plan-new lo que spec-refine es a spec-new: edita el plan-doc in
|
|
11
11
|
place (no genera uno nuevo). Reusa la gap taxonomy y el coherence gate de
|
|
12
12
|
plan-new-loop; agrega Refinement decisions/Q&A traceability al plan (traza, sin
|
|
13
|
-
contrato de gating: plan-exec corre cualquier plan).
|
|
13
|
+
contrato de gating: plan-exec corre cualquier plan). Si el refine toca UI,
|
|
14
|
+
compone la capacidad ui-design y produce/actualiza design SPECs por pantalla
|
|
15
|
+
(NNN-SPEC-<SLUG>.md) en su propia sesión. Lo arranca /w:plan-refine y
|
|
14
16
|
es reanudable + re-corrible a demanda. Invocar cuando un plan ya generado deba
|
|
15
17
|
ajustarse antes de ejecutarlo.
|
|
16
18
|
---
|
|
@@ -37,7 +39,7 @@ PLAN
|
|
|
37
39
|
`docs/plans/PPP-plan-*.md` (glob — localiza el plan por número; o la ruta exacta del argumento del comando). **Siempre el plan mismo**: este loop lo edita in place, no hay un archivo "refined" aparte.
|
|
38
40
|
|
|
39
41
|
## Writes
|
|
40
|
-
Actualiza `docs/plans/PPP-plan-<slug>.md` **in place** (cuando el usuario elige `Guardar plan refinado`): completa/ajusta secciones y **agrega** `## Refinement decisions` + `## Q&A traceability`. Como sobrescribe un doc existente, **con confirmación** del usuario. Solo escribe `docs/plans` — nunca otras carpetas `docs/` ni auto-export.
|
|
42
|
+
Actualiza `docs/plans/PPP-plan-<slug>.md` **in place** (cuando el usuario elige `Guardar plan refinado`): completa/ajusta secciones y **agrega** `## Refinement decisions` + `## Q&A traceability`. Como sobrescribe un doc existente, **con confirmación** del usuario. Solo escribe `docs/plans` — nunca otras carpetas `docs/` ni auto-export. Si el refine **toca UI**, además produce/actualiza **design SPECs** (`NNN-SPEC-<SLUG>.md`) como artefactos **de su propia sesión** (ver *Delta 4* — no son `docs/`, no hay auto-export).
|
|
41
43
|
|
|
42
44
|
## Inherits
|
|
43
45
|
|
|
@@ -69,7 +71,7 @@ Cada duda preguntada al humano + la respuesta elegida.
|
|
|
69
71
|
|
|
70
72
|
## Delta 2 — Gap taxonomy (de "plan")
|
|
71
73
|
|
|
72
|
-
Reusa **íntegra** la gap taxonomy de [`plan-new-loop`](../plan-new-loop/SKILL.md) (§ *Delta 2*): Approach/Solution vago, componentes sin identificar, wiring AS-IS desconocido, fase muy grande, tarea no atómica, deps faltantes, criterios del spec sin cubrir, riesgos sin atender. **Diferencia de foco:** plan-new **construye** el plan desde cero; plan-refine **detecta qué cambió** respecto del plan ya escrito (o respecto del spec, si el spec se re-refinó) y cierra **esos** gaps — típicamente menos y más localizados. Un gap extra propio del re-refine:
|
|
74
|
+
Reusa **íntegra** la gap taxonomy de [`plan-new-loop`](../plan-new-loop/SKILL.md) (§ *Delta 2*): Approach/Solution vago, componentes sin identificar, wiring AS-IS desconocido, fase muy grande, tarea no atómica, deps faltantes, criterios del spec sin cubrir, riesgos sin atender, UI sin design SPEC. **Diferencia de foco:** plan-new **construye** el plan desde cero; plan-refine **detecta qué cambió** respecto del plan ya escrito (o respecto del spec, si el spec se re-refinó) y cierra **esos** gaps — típicamente menos y más localizados. Un gap extra propio del re-refine:
|
|
73
75
|
|
|
74
76
|
| Gap | Signal | Resolved by |
|
|
75
77
|
|---|---|---|
|
|
@@ -79,6 +81,10 @@ Reusa **íntegra** la gap taxonomy de [`plan-new-loop`](../plan-new-loop/SKILL.m
|
|
|
79
81
|
|
|
80
82
|
Igual que plan-new (mapea código/impacto: componentes FE/BE/BD, wiring AS-IS, deps), pero **acotado al delta**: re-verifica solo lo que el cambio toca (no re-mapea todo el plan). Regla BD del chasis igual (read-only a `SCRIPTS.sql`, MCP vía pregunta si >1 sin default).
|
|
81
83
|
|
|
84
|
+
## Delta 4 — Design SPECs (si el refine toca UI)
|
|
85
|
+
|
|
86
|
+
Mismo mecanismo que [`plan-new-loop`](../plan-new-loop/SKILL.md) (§ *Delta 4*: capacidad **`ui-design`** → `NNN-SPEC-<SLUG>.md` por pantalla, ver [`SPEC.md`](../../artifacts/artifacts-design/SPEC.md)), **acotado al delta**: solo las pantallas **nuevas o cambiadas** por el refine reciben design SPEC. El SPEC actualizado se escribe en **la sesión propia** del plan-refine (cada loop maneja los artefactos de SU sesión — no edita los de la sesión de plan-new) y el plan **re-apunta** la referencia de la Task UI al SPEC vigente. Pantallas no tocadas conservan su SPEC original.
|
|
87
|
+
|
|
82
88
|
## Compact / resume
|
|
83
89
|
|
|
84
90
|
El resume **keya off el `CHECKPOINT`** de la refine session, no de un archivo "refined". Tres casos al ejecutar `/w:plan-refine` sobre un plan:
|
|
@@ -91,4 +97,4 @@ El resume **keya off el `CHECKPOINT`** de la refine session, no de un archivo "r
|
|
|
91
97
|
|
|
92
98
|
## Convergence / exit
|
|
93
99
|
|
|
94
|
-
Sin gaps materiales → **coherence gate** (read-only) = **`Success criteria` en verde** (*verification-first*; el "convergence gate" del chasis para PLAN, mismo que plan-new): cada `acceptance criterion` del spec **traza** a una fase/tarea, `Final behavior` los cubre, fases XS–S / tareas XS, `deps` sin ciclos, `Impacted` consistente con `Solution`, y —propio del re-refine— **el plan quedó realineado** con lo que cambió. Lo que falle **vuelve como gap**. Si pasa → *structured-choice* (contenido: `Guardar plan refinado` / `Preguntar algo más`; flow: `Compactar`/`Cerrar`) → al `Guardar`, edita `docs/plans/PPP-plan-<slug>.md` in place (con confirmación) + inserta `Refinement decisions`/`Q&A traceability` → `finalize` (persiste `CHECKPOINT`; `BACKLOG` solo si difiere; cierra la session, reporta). `Cerrar` en cualquier momento → `finalize` igual.
|
|
100
|
+
Sin gaps materiales → **coherence gate** (read-only) = **`Success criteria` en verde** (*verification-first*; el "convergence gate" del chasis para PLAN, mismo que plan-new): cada `acceptance criterion` del spec **traza** a una fase/tarea, `Final behavior` los cubre, fases XS–S / tareas XS, `deps` sin ciclos, `Impacted` consistente con `Solution`, si hay UI cada pantalla/tarea UI **traza a su design SPEC vigente**, y —propio del re-refine— **el plan quedó realineado** con lo que cambió. Lo que falle **vuelve como gap**. Si pasa → *structured-choice* (contenido: `Guardar plan refinado` / `Preguntar algo más`; flow: `Compactar`/`Cerrar`) → al `Guardar`, edita `docs/plans/PPP-plan-<slug>.md` in place (con confirmación) + inserta `Refinement decisions`/`Q&A traceability` → `finalize` (persiste `CHECKPOINT`; `BACKLOG` solo si difiere; cierra la session, reporta). `Cerrar` en cualquier momento → `finalize` igual.
|
|
@@ -9,7 +9,9 @@ description: >-
|
|
|
9
9
|
como log vivo: CHECKPOINT siempre, BACKLOG solo si difiere) y de plan-exec-loop
|
|
10
10
|
(git seguro: rama esperada antes de editar + commit propuesto, nunca
|
|
11
11
|
push/--amend/--no-verify; la IA nunca ejecuta DML, migraciones a SCRIPTS.sql;
|
|
12
|
-
sin auto-export
|
|
12
|
+
sin auto-export; gate de revisión de cierre proporcional: re-lee el diff con
|
|
13
|
+
las convenciones ambientes instaladas y corrige antes de proponer el commit).
|
|
14
|
+
Sus deltas: sin fases ni plan-doc (el prompt ES la tarea),
|
|
13
15
|
una sola session ligera (<slug>-quick), un solo commit; y escalación con
|
|
14
16
|
handoff si la tarea crece (propone subir a SPEC/PLAN dejando el código a
|
|
15
17
|
medias como contexto). NO toca docs/. Lo arranca /w:quick y es reanudable.
|
|
@@ -44,7 +46,7 @@ QUICK
|
|
|
44
46
|
## Inherits
|
|
45
47
|
|
|
46
48
|
- del **chasis** [`spec-refine-loop`](../spec-refine-loop/SKILL.md): **objetivo persistente** (acá el más directo: el prompt *es* el objetivo) + **verification-first** (`SESSION.Success criteria` proporcional), gap-driven (mínimo), *structured-choice* ≤3 preguntas de contenido + 1 control `flow` (`Compactar`/`Cerrar`) (capacidad del arnés — ver [`../../harness/SKILL.md`](../../harness/SKILL.md); en Claude Code es `AskUserQuestion`), `research` **inline** + regla BD read-only (pregunta MCP si >1 sin default → `SCRIPTS.sql` → ejecuta read-only), compact/resume, **artefactos como log vivo (ciclo artifact-first)** (`CHECKPOINT` siempre; `BACKLOG` solo si difiere).
|
|
47
|
-
- de [`plan-exec-loop`](../plan-exec-loop/SKILL.md): **git** (rama segura antes de editar + commit propuesto; nunca `push`/`--amend`/`--no-verify`), **BD** (la IA nunca ejecuta DML; migraciones → `SCRIPTS.sql` de la session), **sin auto-export** (no toca otras carpetas `docs/`).
|
|
49
|
+
- de [`plan-exec-loop`](../plan-exec-loop/SKILL.md): **git** (rama segura antes de editar + commit propuesto; nunca `push`/`--amend`/`--no-verify`), **BD** (la IA nunca ejecuta DML; migraciones → `SCRIPTS.sql` de la session), **sin auto-export** (no toca otras carpetas `docs/`), y el **gate de revisión de cierre** (§ *Delta 5* de plan-exec) en versión **proporcional**: antes de proponer el único commit, re-lectura del diff aplicando las convenciones ambientes instaladas → corregir o diferir justificado.
|
|
48
50
|
|
|
49
51
|
## Composes
|
|
50
52
|
|
|
@@ -56,7 +58,7 @@ QUICK
|
|
|
56
58
|
|
|
57
59
|
- **Sin fases, sin plan-doc**: el prompt **es** la tarea (una sola unidad). No hay roadmap.
|
|
58
60
|
- **Verification-first proporcional** (ceremonia mínima): aun acá se **siembra el check antes**, del tamaño de la tarea. Código: un test (repro del bug → fix) o "build/lint/tests existentes siguen verdes" (chore). **Análisis/diseño**: una **rúbrica falsable corta**, *ratificada por el usuario* antes de perseguirla. Es el `SESSION.Success criteria` del run (ver [chasis § Verification-first](../spec-refine-loop/SKILL.md)).
|
|
59
|
-
- **Una sola session**. **Un solo commit** propuesto al final (solo si hubo cambios de código).
|
|
61
|
+
- **Una sola session**. **Un solo commit** propuesto al final (solo si hubo cambios de código), **tras el gate de revisión de cierre proporcional** (heredado de plan-exec § *Delta 5*): re-lectura del diff + convenciones ambientes; corregir o diferir; nada llega al commit sin revisar.
|
|
60
62
|
- **Escalación + handoff**: si la tarea crece (muchos archivos / ≥2 fuentes / necesita arquitectura) → propone subir a **SPEC/PLAN**. Si el usuario acepta:
|
|
61
63
|
- el **código ya editado queda** en el working tree (no se revierte) **y se registra** en `CHECKPOINT` + `BACKLOG` ("cambios sin commitear en `<fuente>` — código a medias; decidir commit/descartar al retomar") — reusando **ambas** mitades del patrón "commit rechazado" de plan-exec (no revertir **y** registrar lo sin commitear). Crítico en la rama **SPEC**, que no retoma el working tree;
|
|
62
64
|
- la session quick va a `finalize`, persistiendo `CHECKPOINT` + `BACKLOG` con un **puntero** al spec/plan sembrado (Followups: "escalado a `docs/specs/NNN` o `docs/plans/PPP` — retomar ahí");
|
|
@@ -91,7 +93,10 @@ quick-loop(prompt):
|
|
|
91
93
|
si la tarea CRECE → proponer escalar a SPEC/PLAN
|
|
92
94
|
si acepta → handoff (avance queda; BACKLOG→spec/plan sembrado) → goto finalize
|
|
93
95
|
convergence gate: Success criteria en verde # tests verdes si código · rúbrica satisfecha si análisis/diseño
|
|
94
|
-
si hubo cambios de código
|
|
96
|
+
si hubo cambios de código:
|
|
97
|
+
gate de revisión de cierre (proporcional): # re-lectura del diff + convenciones ambientes instaladas
|
|
98
|
+
hallazgos → corregir (re-validar) ó diferir justificado (BACKLOG)
|
|
99
|
+
proponer commit (aprobar antes) # nunca push/amend/--no-verify; solo tras el gate
|
|
95
100
|
structured_choice(contenido: [Cerrar tarea, Preguntar algo más], flow: [Compactar, Cerrar])
|
|
96
101
|
finalize: CHECKPOINT (DESPUÉS: Pending→Completed) + BACKLOG (solo si queda algo diferido) + cerrar session + reportar
|
|
97
102
|
```
|
|
@@ -106,14 +111,15 @@ flowchart TD
|
|
|
106
111
|
GROW -->|sí| ESC["escalar a SPEC/PLAN<br/>avance queda · BACKLOG→spec/plan sembrado"]
|
|
107
112
|
ESC --> FIN
|
|
108
113
|
GROW -->|no| V["convergence gate:<br/>Success criteria en verde"]
|
|
109
|
-
V -->
|
|
114
|
+
V --> RV["si hubo código → gate de revisión de cierre<br/>(diff + convenciones ambientes → corregir/diferir)"]
|
|
115
|
+
RV --> CM["proponer commit (aprobar)"]
|
|
110
116
|
CM --> Q["structured-choice[Cerrar · Preguntar más]<br/>flow[Compactar · Cerrar]"]
|
|
111
117
|
Q --> FIN["finalize: CHECKPOINT + BACKLOG + cerrar"]
|
|
112
118
|
```
|
|
113
119
|
|
|
114
120
|
## Convergence / exit
|
|
115
121
|
|
|
116
|
-
- **Success criteria en verde** (proporcional) + commit propuesto si hubo código (o aprobado saltarlo) → `Cerrar`.
|
|
122
|
+
- **Success criteria en verde** (proporcional) + gate de revisión de cierre pasado y commit propuesto si hubo código (o aprobado saltarlo) → `Cerrar`.
|
|
117
123
|
- `Cerrar`/`Compactar` (control `flow`) → persiste `CHECKPOINT` + `BACKLOG` (reanudable).
|
|
118
124
|
- **Sin export**: nada va a `docs/`. Si algo amerita preservarse → se promueve aparte vía `export-*`, o se escala a SPEC/PLAN.
|
|
119
125
|
|
|
@@ -123,6 +123,8 @@ El **CLI es dueño del número**: `aw session-create` antepone un `NNN` **global
|
|
|
123
123
|
|
|
124
124
|
El gap **UI sin especificar** (cuando el requerimiento involucra UI; ver *Gap taxonomy*) se resuelve **componiendo** la capacidad **`ui-design`** (default built-in `ui-spec`; rebindeable vía `.workflow/skills.toml`): autora el UI spec nativamente (estructura, vocabulario, formato Markdown). Es un tercer modo de resolución de gap (junto a *research* y *humano*): el loop aporta la iteración/Q&A que el viejo servicio no tenía (design-system, tema, variantes, desambiguación) **vía la misma structured-choice**, y lo integra como sección `## UI spec` del spec.
|
|
125
125
|
|
|
126
|
+
> **Dos niveles de la misma capacidad:** aquí (SPEC) produce la sección `## UI spec` del spec — el *qué* de la UI, grano grueso. En PLAN, `plan-new-loop`/`plan-refine-loop` componen la **misma** capacidad para producir **design SPECs por pantalla** (`NNN-SPEC-<SLUG>.md`, artefactos de su sesión — ver [`SPEC.md`](../../artifacts/artifacts-design/SPEC.md)), derivados de esta sección si existe.
|
|
127
|
+
|
|
126
128
|
Otras capacidades transversales que el chasis usa siempre: `research` (research **inline**, ver abajo), `sql` (regla BD en research). Todas se resuelven por config; `off` → el loop sigue sin la capacidad y, si era necesaria, lo dice o pregunta. La **prosa del spec** sigue las convenciones de redacción **ambientes** (el host auto-aplica una skill de writing instalada si está presente), no un rol compuesto.
|
|
127
129
|
|
|
128
130
|
> **Convenciones ambientes (no roles).** Los estándares de código, testing, redacción **y la creación de herramientas** (`creating-tools`) **no son roles** del workflow ni se bindean: son **skills standalone que el host auto-descubre por su `description`** y aplica cuando son relevantes. El workflow es **indiferente** (no las lee ni las busca). Familias útiles viven en plugins del marketplace (`dev-conventions`, `tool-builder`), pero el workflow **no depende** de ellos.
|
package/skills/w/roles/README.md
CHANGED
|
@@ -12,7 +12,7 @@ All 6 roles, their built-in defaults, their tier, and which loops/exports compos
|
|
|
12
12
|
|
|
13
13
|
| Role | Default built-in | Tier | Composed by |
|
|
14
14
|
|---|---|---|---|
|
|
15
|
-
| `ui-design` | [`ui-spec`](ui-spec/SKILL.md) | must | `spec-refine-loop` (when requirement involves UI) |
|
|
15
|
+
| `ui-design` | [`ui-spec`](ui-spec/SKILL.md) | must | `spec-refine-loop` (when requirement involves UI) · `plan-new-loop` / `plan-refine-loop` (per-screen design SPECs) |
|
|
16
16
|
| `sql` | `sql` | must | inline research · `plan-exec-loop` · `quick-loop` · `export-scripts` |
|
|
17
17
|
| `git` | `git` | must | `plan-exec-loop` · `quick-loop` |
|
|
18
18
|
| `research` | [`research`](research/SKILL.md) | should | all loops (on-demand investigation) |
|
|
@@ -24,6 +24,8 @@ All 6 roles, their built-in defaults, their tier, and which loops/exports compos
|
|
|
24
24
|
- `should` — loaded on-demand; active by default but lower priority to override.
|
|
25
25
|
|
|
26
26
|
> **Convenciones ambientes (no roles).** Los estándares de código, testing, redacción **y la creación de herramientas** (`creating-tools`) **no son roles** del workflow ni se bindean: son **skills standalone que el host auto-descubre por su `description`** y aplica cuando son relevantes. El workflow es **indiferente** (no las lee ni las busca). Familias útiles viven en plugins del marketplace (`dev-conventions`, `tool-builder`), pero el workflow **no depende** de ellos.
|
|
27
|
+
>
|
|
28
|
+
> **La revisión de cierre tampoco es un rol** (decisión deliberada — se evaluó y descartó un rol `conventions`/`rules`/`review`): el **gate de revisión de cierre** de `plan-exec-loop`/`quick-loop` (pre-commit) es un **paso del loop**; el loop crea el **momento** y las convenciones ambientes instaladas lo llenan. Un rol que "señale las skills del marketplace" re-acoplaría lo que esta extracción desacopló.
|
|
27
29
|
|
|
28
30
|
---
|
|
29
31
|
|
|
@@ -5,9 +5,12 @@ description: >-
|
|
|
5
5
|
requirement, author a structured, framework-agnostic screen specification as
|
|
6
6
|
**Markdown** (single output format). Knows the conceptual screen structure, the
|
|
7
7
|
kind/region vocabulary, the authoring rules, design-system / theme / variant
|
|
8
|
-
handling, and the exact Markdown render format.
|
|
9
|
-
|
|
10
|
-
`
|
|
8
|
+
handling, and the exact Markdown render format. Two landing zones, same render:
|
|
9
|
+
in SPEC (`spec-refine-loop`) it authors the `## UI spec` section of the spec doc;
|
|
10
|
+
in PLAN (`plan-new-loop`/`plan-refine-loop`) it authors per-screen **design
|
|
11
|
+
SPECs** (`NNN-SPEC-<SLUG>.md`) as session artifacts. Use when a loop is refining
|
|
12
|
+
a spec or building/refining a plan that involves screens, forms, dashboards,
|
|
13
|
+
modals or any UI surface. Recycled from the `ui-spec-generator` service.
|
|
11
14
|
---
|
|
12
15
|
|
|
13
16
|
# ui-spec — UI spec authoring
|
|
@@ -22,13 +25,18 @@ Dado un requerimiento de UI, autorar una **descripción estructurada en Markdown
|
|
|
22
25
|
|
|
23
26
|
## Composed by
|
|
24
27
|
|
|
25
|
-
|
|
28
|
+
Dos niveles, misma capacidad:
|
|
29
|
+
|
|
30
|
+
- **`spec-refine-loop`** (ver `../../loops/spec-refine-loop/SKILL.md`) — al resolver el gap **UI sin especificar** (cuando el requerimiento involucra UI): autora la sección `## UI spec` **del spec** (el *qué* de la UI, pantallas a grano grueso).
|
|
31
|
+
- **`plan-new-loop` · `plan-refine-loop`** (ver `../../loops/plan-new-loop/SKILL.md` § *Delta 4*) — al resolver el gap **UI sin design SPEC** (cuando el **plan incluye UI**): autora **design SPECs** por pantalla (`NNN-SPEC-<SLUG>.md`) como **artefactos de la sesión de PLAN** (ver `../../artifacts/artifacts-design/SPEC.md`); derivan de `## UI spec` si existe.
|
|
32
|
+
|
|
33
|
+
En ambos, el loop aporta lo que el servicio viejo no tenía:
|
|
26
34
|
|
|
27
35
|
- **Pregunta al humano** (design-system, tema, ambigüedades de pantalla) vía *structured-choice* (capacidad del arnés — ver `../../harness/SKILL.md`). En **Claude Code** es `AskUserQuestion` (máx 4 preguntas/llamada → **≤3 preguntas de contenido + 1 control `flow`**); en un arnés sin elección estructurada, degrada a **markdown numerado**.
|
|
28
36
|
- **Itera** gap-driven hasta converger.
|
|
29
37
|
- Ofrece **variantes** y **cura** el resultado.
|
|
30
38
|
|
|
31
|
-
Cualquier loop podría componerla;
|
|
39
|
+
Cualquier loop podría componerla; los casos primarios son SPEC y PLAN. En SPEC, la descripción aterriza como sección del documento spec (`docs/specs/NNN-spec-<slug>.md`) — el spec sigue siendo un documento (invariante 3). En PLAN aterriza como **design SPECs** (artefactos de sesión) — que **no** son el requirement-spec: son el detalle de diseño por pantalla, de proceso.
|
|
32
40
|
|
|
33
41
|
## Knowledge
|
|
34
42
|
|
|
@@ -114,9 +122,16 @@ Si el humano no responde, asumir el caso más simple coherente con la descripci
|
|
|
114
122
|
- **Registros** (table)
|
|
115
123
|
```
|
|
116
124
|
|
|
117
|
-
## Output —
|
|
125
|
+
## Output — dos aterrizajes, un solo formato (Markdown)
|
|
126
|
+
|
|
127
|
+
**Salida en un solo formato: Markdown.** La escribe el loop (no esta skill por sí sola). El **render es el mismo** en ambos niveles; cambia dónde aterriza, según el loop que compone:
|
|
128
|
+
|
|
129
|
+
| Loop que compone | Aterriza en | Grano |
|
|
130
|
+
|---|---|---|
|
|
131
|
+
| `spec-refine-loop` | sección `## UI spec` **del spec** (`docs/specs/NNN-spec-<slug>.md`) — documento, in place | todas las pantallas del requerimiento, grano grueso |
|
|
132
|
+
| `plan-new-loop` · `plan-refine-loop` | **design SPECs** `NNN-SPEC-<SLUG>.md` — artefactos en la **sesión de PLAN** (uno **por pantalla**, con encabezado de traza; ver `../../artifacts/artifacts-design/SPEC.md`) | una pantalla por archivo, detalle ejecutable |
|
|
118
133
|
|
|
119
|
-
|
|
134
|
+
Encabezar la sección (o el encabezado de traza del SPEC) con las opciones de diseño elegidas (design system, tema, idioma) en una línea. Luego el render Markdown, con estas reglas exactas (recicladas del `MarkdownFormatter`):
|
|
120
135
|
|
|
121
136
|
- `# {nombre}`
|
|
122
137
|
- `**Tipo**: {tipo} | **Plataforma**: {plataforma}`
|