@tacuchi/agent-workflow-cli 18.0.0 → 19.0.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 +11 -11
- package/dist/application/self/install-skill.d.ts +17 -3
- package/dist/application/self/install-skill.d.ts.map +1 -1
- package/dist/application/self/install-skill.js +206 -109
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/skills-manager.d.ts.map +1 -1
- package/dist/application/self/skills-manager.js +9 -3
- package/dist/application/self/skills-manager.js.map +1 -1
- package/dist/application/self/uninstall.d.ts.map +1 -1
- package/dist/application/self/uninstall.js +23 -12
- package/dist/application/self/uninstall.js.map +1 -1
- package/dist/domain/harnesses.d.ts.map +1 -1
- package/dist/domain/harnesses.js +20 -10
- package/dist/domain/harnesses.js.map +1 -1
- package/dist/domain/skills.js +1 -1
- package/dist/domain/skills.js.map +1 -1
- package/package.json +1 -1
- package/skills/w/README.md +4 -4
- package/skills/w/SKILL.md +7 -7
- package/skills/w/artifacts/artifacts-design/SPEC.md +2 -2
- package/skills/w/commands/README.md +3 -3
- package/skills/w/commands/export-diagrams.md +2 -2
- package/skills/w/commands/export-manuals.md +2 -2
- package/skills/w/commands/export-reports.md +2 -2
- package/skills/w/commands/export-scripts.md +2 -2
- package/skills/w/commands/fix-git.md +2 -2
- package/skills/w/commands/plan-exec.md +3 -3
- package/skills/w/commands/plan-new.md +3 -3
- package/skills/w/commands/plan-refine.md +3 -3
- package/skills/w/commands/quick.md +4 -4
- package/skills/w/commands/spec-new.md +3 -3
- package/skills/w/commands/spec-refine.md +2 -2
- package/skills/w/exports/README.md +11 -11
- package/skills/w/exports/export-diagrams/{SKILL.md → EXPORT.md} +2 -2
- package/skills/w/exports/export-manuals/{SKILL.md → EXPORT.md} +2 -2
- package/skills/w/exports/export-reports/{SKILL.md → EXPORT.md} +2 -2
- package/skills/w/exports/export-scripts/{SKILL.md → EXPORT.md} +2 -2
- package/skills/w/harness/{SKILL.md → HARNESS.md} +15 -4
- package/skills/w/loops/CHASSIS.md +8 -8
- package/skills/w/loops/CODE-POLICIES.md +2 -2
- package/skills/w/loops/README.md +12 -12
- package/skills/w/loops/plan-exec-loop/{SKILL.md → LOOP.md} +1 -1
- package/skills/w/loops/plan-new-loop/{SKILL.md → LOOP.md} +3 -3
- package/skills/w/loops/plan-refine-loop/{SKILL.md → LOOP.md} +3 -3
- package/skills/w/loops/quick-loop/{SKILL.md → LOOP.md} +2 -2
- package/skills/w/loops/spec-refine-loop/{SKILL.md → LOOP.md} +2 -2
- package/skills/w/roles/README.md +9 -9
- package/skills/w/roles/git/{SKILL.md → ROLE.md} +1 -1
- package/skills/w/roles/research/{SKILL.md → ROLE.md} +1 -1
- package/skills/w/roles/ui-spec/{SKILL.md → ROLE.md} +3 -3
- /package/skills/w/roles/diagrams/{SKILL.md → ROLE.md} +0 -0
- /package/skills/w/roles/sql/{SKILL.md → ROLE.md} +0 -0
|
@@ -17,7 +17,7 @@ Single-pass, **no loop, no session**, **never writes `docs/`**. **Transversal**
|
|
|
17
17
|
|
|
18
18
|
1. **Detect + identify** — run `aw merge-state [<source>]` (read-only; `--source <alias>` or `--all` when a workspace exists; a direct path otherwise). From the JSON, per repo: `is_merging`, `current_branch` (**destination / ours**), `merge_origin` (**origin / theirs**), `conflicted_files`.
|
|
19
19
|
- If **no merge is in progress** (`is_merging:false`) and the user named a **target** (e.g. "merge `<branch>`"): that is an explicit request → `git -C <path> merge <branch>` and continue. No target → report there is no merge to resolve and stop.
|
|
20
|
-
2. **Resolve** — **read and follow** the ***Merge-conflict resolution*** section of the `git` role (`../roles/git/
|
|
20
|
+
2. **Resolve** — **read and follow** the ***Merge-conflict resolution*** section of the `git` role (`../roles/git/ROLE.md`): analyze each conflict's intent (3 versions `git show :1:/:2:/:3:<file>`, `git log --merge`), resolve (ours / theirs / combine / rewrite) and `git add` what is resolved. On **ambiguity or incoherence**, ask via *structured-choice* (never invent the resolution).
|
|
21
21
|
3. **Close** — **propose** the merge commit (propose-then-execute, canonical format, git-safe). Escape hatch: `git merge --abort` after user confirmation.
|
|
22
22
|
|
|
23
23
|
> Do not try `Skill: git` — the role is **read and followed** (it is the capability this command composes). The command **is** the entry; the conflict doctrine lives in the `git` role.
|
|
@@ -28,6 +28,6 @@ Run `aw merge-state` (read-only), report **origin ↔ destination** and the per-
|
|
|
28
28
|
|
|
29
29
|
## Resources
|
|
30
30
|
|
|
31
|
-
- Capability: `../roles/git/
|
|
31
|
+
- Capability: `../roles/git/ROLE.md` (section *Merge-conflict resolution*)
|
|
32
32
|
- CLI: `aw merge-state` (read-only merge-state inspector)
|
|
33
33
|
- Design reference: `docs/referencias/workflow-skills/fix-git.md`
|
|
@@ -25,7 +25,7 @@ Starts or resumes `plan-exec-loop` (Layer 2), which executes the real work phase
|
|
|
25
25
|
|
|
26
26
|
`plan-exec-loop` is **not** a skill invocable by name — it is this command's operating manual (a sibling doc in the bundle). **Load it and execute it end to end**:
|
|
27
27
|
|
|
28
|
-
1. **Read** `../loops/plan-exec-loop/
|
|
28
|
+
1. **Read** `../loops/plan-exec-loop/LOOP.md` (inside the installed `w` skill — e.g. `~/.claude/skills/w/loops/…`).
|
|
29
29
|
2. **Follow** its instructions taking `$ARGUMENTS` as input: it detects CHECKPOINT/resume, executes phase by phase (git-safe, DB scripts-only), keeps the plan alive and reports.
|
|
30
30
|
|
|
31
31
|
> Do not try `Skill: plan-exec-loop` — it is not registered as a skill. The command **is** the entry; the loop is its body.
|
|
@@ -35,7 +35,7 @@ Starts or resumes `plan-exec-loop` (Layer 2), which executes the real work phase
|
|
|
35
35
|
- Reads and updates `docs/plans/PPP-plan-<slug>.md` (living doc: phase/task state).
|
|
36
36
|
- Edits code in the workspace sources (a single execution session per run; execution is still phase by phase, there is just no session per phase).
|
|
37
37
|
- If it creates a tool/utility, the ambient `creating-tools` skill documents it in `docs/tools/` (auto-discovered; the workflow does not bind it).
|
|
38
|
-
- **Closing review gate** at every phase boundary, **before proposing the commits**: re-reads the diff (independent pass) applying the **installed ambient conventions** and fixes or defers findings — nothing reaches a commit unreviewed (see `../loops/plan-exec-loop/
|
|
38
|
+
- **Closing review gate** at every phase boundary, **before proposing the commits**: re-reads the diff (independent pass) applying the **installed ambient conventions** and fixes or defers findings — nothing reaches a commit unreviewed (see `../loops/plan-exec-loop/LOOP.md` § *Delta 5*).
|
|
39
39
|
- Proposes commits per source (git-safe: verifies the branch, proposes, never push/--amend/--no-verify).
|
|
40
40
|
- Generates session artifacts (`DECISION`, `SCRIPTS.sql`) under `.workflow/sessions/`.
|
|
41
41
|
- **Never exports** to `docs/scripts`, `docs/manuals`, `docs/diagrams`, `docs/reports` — the `export-*` do that as a separate step.
|
|
@@ -51,5 +51,5 @@ The skill describes, phase by phase, what it would execute, which files it would
|
|
|
51
51
|
|
|
52
52
|
## Resources
|
|
53
53
|
|
|
54
|
-
- Loop
|
|
54
|
+
- Loop manual: `../loops/plan-exec-loop/LOOP.md`
|
|
55
55
|
- Design reference: `docs/referencias/workflow-commands/plan-exec.md`
|
|
@@ -35,7 +35,7 @@ The skill evaluates `$ARGUMENTS` (specs live in place — `docs/specs/NNN-spec-<
|
|
|
35
35
|
|
|
36
36
|
`plan-new-loop` is **not** a skill invocable by name — it is this command's operating manual (a sibling doc in the bundle). **Load it and execute it end to end**:
|
|
37
37
|
|
|
38
|
-
1. **Read** `../loops/plan-new-loop/
|
|
38
|
+
1. **Read** `../loops/plan-new-loop/LOOP.md` (inside the installed `w` skill — e.g. `~/.claude/skills/w/loops/…`).
|
|
39
39
|
2. **Follow** its instructions taking `$ARGUMENTS` as input (resolved per the 3 rules above): it detects state/resume, runs the gap-driven engine, creates and manages sessions, converges and reports.
|
|
40
40
|
|
|
41
41
|
> Do not try `Skill: plan-new-loop` — it is not registered as a skill. The command **is** the entry; the loop is its body.
|
|
@@ -46,7 +46,7 @@ The plan is named `docs/plans/PPP-plan-<slug>.md`. `aw next-number docs/plans` r
|
|
|
46
46
|
|
|
47
47
|
## UI → design SPECs
|
|
48
48
|
|
|
49
|
-
If the plan **includes UI**, the loop composes the `ui-design` capability and produces per-screen **design SPECs** (`NNN-SPEC-<SLUG>.md`) as artifacts of its session — the plan's UI Tasks reference them (see `../loops/plan-new-loop/
|
|
49
|
+
If the plan **includes UI**, the loop composes the `ui-design` capability and produces per-screen **design SPECs** (`NNN-SPEC-<SLUG>.md`) as artifacts of its session — the plan's UI Tasks reference them (see `../loops/plan-new-loop/LOOP.md` § *Delta 4* and `../artifacts/artifacts-design/SPEC.md`).
|
|
50
50
|
|
|
51
51
|
## Plan mode
|
|
52
52
|
|
|
@@ -54,5 +54,5 @@ The skill resolves the input per the 3 rules above and describes the loop action
|
|
|
54
54
|
|
|
55
55
|
## Resources
|
|
56
56
|
|
|
57
|
-
- Loop
|
|
57
|
+
- Loop manual: `../loops/plan-new-loop/LOOP.md`
|
|
58
58
|
- Design reference: `docs/referencias/workflow-commands/plan-new.md`
|
|
@@ -36,7 +36,7 @@ The skill evaluates `$ARGUMENTS` (plans live in place — `docs/plans/PPP-plan-<
|
|
|
36
36
|
|
|
37
37
|
`plan-refine-loop` is **not** a skill invocable by name — it is this command's operating manual (a sibling doc in the bundle). **Load it and execute it end to end**:
|
|
38
38
|
|
|
39
|
-
1. **Read** `../loops/plan-refine-loop/
|
|
39
|
+
1. **Read** `../loops/plan-refine-loop/LOOP.md` (inside the installed `w` skill — e.g. `~/.claude/skills/w/loops/…`).
|
|
40
40
|
2. **Follow** its instructions taking `$ARGUMENTS` as input: it detects state/resume, runs the gap-driven engine, creates and manages sessions, converges and reports.
|
|
41
41
|
|
|
42
42
|
> Do not try `Skill: plan-refine-loop` — it is not registered as a skill. The command **is** the entry; the loop is its body.
|
|
@@ -52,7 +52,7 @@ The skill detects prior state before starting, **keying off the `CHECKPOINT`** (
|
|
|
52
52
|
|
|
53
53
|
## UI → design SPECs
|
|
54
54
|
|
|
55
|
-
If the refine **touches UI**, the loop composes `ui-design` and produces/updates **design SPECs** (`NNN-SPEC-<SLUG>.md`) in its own session — scoped to the new/changed screens — and re-points the plan references (see `../loops/plan-refine-loop/
|
|
55
|
+
If the refine **touches UI**, the loop composes `ui-design` and produces/updates **design SPECs** (`NNN-SPEC-<SLUG>.md`) in its own session — scoped to the new/changed screens — and re-points the plan references (see `../loops/plan-refine-loop/LOOP.md` § *Delta 4*).
|
|
56
56
|
|
|
57
57
|
## Plan mode
|
|
58
58
|
|
|
@@ -60,5 +60,5 @@ The skill resolves the state and describes the actions the loop would run (gaps
|
|
|
60
60
|
|
|
61
61
|
## Resources
|
|
62
62
|
|
|
63
|
-
- Loop
|
|
63
|
+
- Loop manual: `../loops/plan-refine-loop/LOOP.md`
|
|
64
64
|
- Design reference: `docs/referencias/workflow-commands/plan-refine.md`
|
|
@@ -25,7 +25,7 @@ For scoped, direct tasks that do not justify going through SPEC or PLAN. Creates
|
|
|
25
25
|
|
|
26
26
|
`quick-loop` is **not** a skill invocable by name — it is this command's operating manual (a sibling doc in the bundle). **Load it and execute it end to end**:
|
|
27
27
|
|
|
28
|
-
1. **Read** `../loops/quick-loop/
|
|
28
|
+
1. **Read** `../loops/quick-loop/LOOP.md` (inside the installed `w` skill — e.g. `~/.claude/skills/w/loops/…`).
|
|
29
29
|
2. **Follow** its instructions taking `$ARGUMENTS` as the task: it evaluates the size gate, creates the light session, works with minimal ceremony (git-safe), escalates if the task exceeds or grows (SPEC live / PLAN deferred), and reports.
|
|
30
30
|
|
|
31
31
|
> Do not try `Skill: quick-loop` — it is not registered as a skill. The command **is** the entry; the loop is its body.
|
|
@@ -34,9 +34,9 @@ For scoped, direct tasks that do not justify going through SPEC or PLAN. Creates
|
|
|
34
34
|
|
|
35
35
|
- Edits code in the workspace sources.
|
|
36
36
|
- Minimal session artifacts (lazy DECISION, proposed commit).
|
|
37
|
-
- **Proportional closing review gate** before proposing the single commit: re-reads the diff applying the installed ambient conventions and fixes or defers (see `../loops/quick-loop/
|
|
37
|
+
- **Proportional closing review gate** before proposing the single commit: re-reads the diff applying the installed ambient conventions and fixes or defers (see `../loops/quick-loop/LOOP.md` § *Sequence*).
|
|
38
38
|
- **Never touches `docs/`** and exports nothing.
|
|
39
|
-
- **Escalates** when complexity emerges — **entry size gate** (before creating the session) and mid-loop (many files, ≥2 sources, needs architecture, or the change is a feature/refactor). Accepting **SPEC** = **live** transition into the SPEC flow (draft via the spec-new procedure + spec-refine-loop); **PLAN** stays seeded for later. See `../loops/quick-loop/
|
|
39
|
+
- **Escalates** when complexity emerges — **entry size gate** (before creating the session) and mid-loop (many files, ≥2 sources, needs architecture, or the change is a feature/refactor). Accepting **SPEC** = **live** transition into the SPEC flow (draft via the spec-new procedure + spec-refine-loop); **PLAN** stays seeded for later. See `../loops/quick-loop/LOOP.md` § *QUICK delta*.
|
|
40
40
|
|
|
41
41
|
## Plan mode
|
|
42
42
|
|
|
@@ -44,5 +44,5 @@ The skill describes the changes it would apply and the files it would touch, wit
|
|
|
44
44
|
|
|
45
45
|
## Resources
|
|
46
46
|
|
|
47
|
-
- Loop
|
|
47
|
+
- Loop manual: `../loops/quick-loop/LOOP.md`
|
|
48
48
|
- Design reference: `docs/referencias/workflow-commands/quick.md`
|
|
@@ -57,7 +57,7 @@ Assumed facts.
|
|
|
57
57
|
Pending doubts. ← the spec-refine-loop closes them.
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
> **`Open questions` goes last** — the refined spec **inserts before `Open questions`** `## UI spec` (if there is UI) + `## Refinement decisions` + `## Q&A traceability` (refined schema in the [`spec-refine-loop`](../loops/spec-refine-loop/
|
|
60
|
+
> **`Open questions` goes last** — the refined spec **inserts before `Open questions`** `## UI spec` (if there is UI) + `## Refinement decisions` + `## Q&A traceability` (refined schema in the [`spec-refine-loop`](../loops/spec-refine-loop/LOOP.md)). Same skeleton: the draft and the refined spec share the order.
|
|
61
61
|
|
|
62
62
|
**Filling notes:**
|
|
63
63
|
|
|
@@ -69,7 +69,7 @@ Pending doubts. ← the spec-refine-loop closes them.
|
|
|
69
69
|
- The **gaps** the loop detects = weak sections of the schema (vague Requirement, Scope without `Out`, untestable criteria, open questions, undeclared assumptions, contradictions) **+ UI unspecified** when the requirement involves UI.
|
|
70
70
|
- Equivalent alternative: the user creates the draft by hand. Both paths produce the same `docs/specs/NNN-spec-<slug>.md`.
|
|
71
71
|
|
|
72
|
-
> **Reuse by escalation:** the live escalation from `/w:quick` (see [`../loops/quick-loop/
|
|
72
|
+
> **Reuse by escalation:** the live escalation from `/w:quick` (see [`../loops/quick-loop/LOOP.md`](../loops/quick-loop/LOOP.md) § *QUICK delta*) materializes its draft following **this same procedure** (steps 1-3: same schema, same NO RESEARCH single-pass hard rule), with `## Origin` = "escalated from `/w:quick`" + the original prompt. No need to type `/w:spec-new`: the consent in the structured-choice equals invoking it.
|
|
73
73
|
|
|
74
74
|
## Plan mode
|
|
75
75
|
|
|
@@ -78,4 +78,4 @@ Resolves `NNN` by reading `docs/specs/`, describes the draft it would generate w
|
|
|
78
78
|
## Resources
|
|
79
79
|
|
|
80
80
|
- Design reference: `docs/referencias/workflow-commands/spec-new.md`
|
|
81
|
-
- Loop that refines this draft: `../loops/spec-refine-loop/
|
|
81
|
+
- Loop that refines this draft: `../loops/spec-refine-loop/LOOP.md`
|
|
@@ -25,7 +25,7 @@ This command does not refine the spec itself: it delegates to `spec-refine-loop`
|
|
|
25
25
|
|
|
26
26
|
`spec-refine-loop` is **not** a skill invocable by name — it is this command's operating manual (a sibling doc in the bundle). **Load it and execute it end to end**:
|
|
27
27
|
|
|
28
|
-
1. **Read** `../loops/spec-refine-loop/
|
|
28
|
+
1. **Read** `../loops/spec-refine-loop/LOOP.md` (inside the installed `w` skill — e.g. `~/.claude/skills/w/loops/…`).
|
|
29
29
|
2. **Follow** its instructions taking `$ARGUMENTS` as input: it detects state/resume, runs the gap-driven engine, creates and manages sessions, converges and reports.
|
|
30
30
|
|
|
31
31
|
> Do not try `Skill: spec-refine-loop` — it is not registered as a skill. The command **is** the entry; the loop is its body.
|
|
@@ -47,5 +47,5 @@ The skill resolves the state and describes the actions the loop would run (gaps
|
|
|
47
47
|
|
|
48
48
|
## Resources
|
|
49
49
|
|
|
50
|
-
- Loop
|
|
50
|
+
- Loop manual: `../loops/spec-refine-loop/LOOP.md`
|
|
51
51
|
- Design reference: `docs/referencias/workflow-commands/spec-refine.md`
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> This is the **bundle README** for the `export-*` family: the **only** path that promotes session artifacts to permanent `docs/` documents. Each export is invoked by the **user** (never by a loop) as a separate, explicit step.
|
|
4
4
|
> Related layers: [`../commands/`](../commands/) (Layer 1 flows) · [`../loops/`](../loops/) (Layer 2, AI-driven) · artifacts live in `.workflow/sessions/` (Layer 3). Design reference: `docs/referencias/workflow-exports/`.
|
|
5
5
|
>
|
|
6
|
-
> **Namespace:**
|
|
6
|
+
> **Namespace:** each export body is an **operating manual** (`EXPORT.md` — deliberately not a `SKILL.md`, so no host indexes it as a standalone skill). The user-invocable surface is the `/w:export-*` commands authored under [`../commands/`](../commands/), which read-and-follow the sibling `EXPORT.md` (per-host wrapper: see [`../harness/HARNESS.md`](../harness/HARNESS.md) § *Command packaging*).
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
|
|
25
25
|
| Export | Composes | Reads (artifacts / sessions + corpus) | Writes (its ONLY category) |
|
|
26
26
|
|---|---|---|---|
|
|
27
|
-
| [`export-scripts`](export-scripts/
|
|
28
|
-
| [`export-manuals`](export-manuals/
|
|
29
|
-
| [`export-diagrams`](export-diagrams/
|
|
30
|
-
| [`export-reports`](export-reports/
|
|
27
|
+
| [`export-scripts`](export-scripts/EXPORT.md) | `sql` | type-B `SCRIPTS.sql` (DDL/DML migrations) across N sessions + standalone `docs/scripts/*.sql` | `docs/scripts/NNN-export-scripts-<date>/` (numbered forwards + `00-ROLLBACK.sql`) |
|
|
28
|
+
| [`export-manuals`](export-manuals/EXPORT.md) | — (prose: ambient conventions) | sessions + `DECISION` + plan-doc (`Solution`, `Final behavior`, `Validations`) + touched code | `docs/manuals/` |
|
|
29
|
+
| [`export-diagrams`](export-diagrams/EXPORT.md) | `diagrams` | source code of the sources + plan-doc (`AS-IS` / `TO-BE`, `Impacted`) | `docs/diagrams/` (C4 / mermaid) |
|
|
30
|
+
| [`export-reports`](export-reports/EXPORT.md) | — (prose: ambient conventions) | corpus of sessions (spec, `CONCLUSIONS`, `DECISION`) + plan-doc state + `docs/` | `docs/reports/` (executive / functional report) |
|
|
31
31
|
|
|
32
32
|
> **Composition over ownership:** an export that owns a derived artifact does **not** own its authoring logic — it **composes a capability role** from [`../roles/`](../roles/) (resolved through `.workflow/skills.toml`): `export-scripts` composes `sql`; `export-diagrams` composes `diagrams`. Swapping the implementation is a one-line config change; it never touches the export. `export-manuals` and `export-reports` produce **prose**, which follows **ambient writing conventions** (the host auto-applies an installed writing skill if present) — they do **not** compose or bind a `writing` role.
|
|
33
33
|
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
1. **Layer 1, explicit** — the **user** invokes them (`/w:export-<cat>`). **Never** automatic (no loop fires them).
|
|
37
37
|
2. **Single-pass, read-only over sessions** — they read artifacts/sessions and `docs/`, **synthesize**, and write **only** their own `docs/<category>/` folder. They do **not** mutate sessions and do **not** open/close loops.
|
|
38
38
|
3. **Cross-session** — they consolidate **N** sessions + the `docs/` corpus (dedup, roadmap, continuous numbering).
|
|
39
|
-
4. **No loop, no internal sessions** — options come from **args** (no lifecycle *structured-choice*; harness capability — see [`../harness/
|
|
39
|
+
4. **No loop, no internal sessions** — options come from **args** (no lifecycle *structured-choice*; harness capability — see [`../harness/HARNESS.md`](../harness/HARNESS.md)).
|
|
40
40
|
5. **Git-safe** — they **never** commit, merge, push, `--amend`, or `--no-verify`. The output is a written document the user reviews and commits when ready.
|
|
41
41
|
6. **DB scripts-only** — `export-scripts` ships migration SCRIPTS as a bundle; it **never executes** DDL/DML (a human/DBA applies them).
|
|
42
42
|
|
|
43
|
-
## Section schema of each `export-*/
|
|
43
|
+
## Section schema of each `export-*/EXPORT.md`
|
|
44
44
|
|
|
45
45
|
Mirrors `docs/referencias/workflow-exports/` and the old export SKILLs. Frontmatter: `name:` (kebab — exactly `export-scripts` / `export-manuals` / `export-diagrams` / `export-reports`) + rich `description:` (what + when, drives selection). Body:
|
|
46
46
|
|
|
@@ -82,7 +82,7 @@ Exports read the corpus through the CLI — **never hard-coded paths**:
|
|
|
82
82
|
|
|
83
83
|
| Export | File | Category | Composes |
|
|
84
84
|
|---|---|---|---|
|
|
85
|
-
| `export-scripts` | [`export-scripts/
|
|
86
|
-
| `export-manuals` | [`export-manuals/
|
|
87
|
-
| `export-diagrams` | [`export-diagrams/
|
|
88
|
-
| `export-reports` | [`export-reports/
|
|
85
|
+
| `export-scripts` | [`export-scripts/EXPORT.md`](export-scripts/EXPORT.md) | `docs/scripts` | `sql` |
|
|
86
|
+
| `export-manuals` | [`export-manuals/EXPORT.md`](export-manuals/EXPORT.md) | `docs/manuals` | — (prose: ambient conventions) |
|
|
87
|
+
| `export-diagrams` | [`export-diagrams/EXPORT.md`](export-diagrams/EXPORT.md) | `docs/diagrams` | `diagrams` |
|
|
88
|
+
| `export-reports` | [`export-reports/EXPORT.md`](export-reports/EXPORT.md) | `docs/reports` | — (prose: ambient conventions) |
|
|
@@ -60,7 +60,7 @@ In plan mode it **describes**, never writes: the resolved engine, the levels/sec
|
|
|
60
60
|
|
|
61
61
|
**Read-only MCP** (optional, only with a data-model request and configuration): `\d <table>`, `SELECT count(*)`, FK relations for the `erDiagram`. With the cost guard.
|
|
62
62
|
|
|
63
|
-
**Args** (no lifecycle *structured-choice*; harness capability — see [`../../harness/
|
|
63
|
+
**Args** (no lifecycle *structured-choice*; harness capability — see [`../../harness/HARNESS.md`](../../harness/HARNESS.md)):
|
|
64
64
|
|
|
65
65
|
```
|
|
66
66
|
/w:export-diagrams [--sessions NNN[,NNN]] [--since sessionNNN] [--source <alias>]
|
|
@@ -122,4 +122,4 @@ Functionally idempotent: each invocation takes the next `NNN`; it never overwrit
|
|
|
122
122
|
- Design: `docs/referencias/workflow-exports/export-diagrams.md` · family: [`../README.md`](../README.md).
|
|
123
123
|
- Composed capability: `diagrams` (built-in default; see `docs/referencias/workflow-roles/`).
|
|
124
124
|
- Input: plan-doc `AS-IS`/`TO-BE`/`Impacted` (see `docs/plans`).
|
|
125
|
-
- Siblings: [`../export-scripts/
|
|
125
|
+
- Siblings: [`../export-scripts/EXPORT.md`](../export-scripts/EXPORT.md) · [`../export-manuals/EXPORT.md`](../export-manuals/EXPORT.md) · [`../export-reports/EXPORT.md`](../export-reports/EXPORT.md).
|
|
@@ -60,7 +60,7 @@ In plan mode it **describes**, never writes: the resolved mode, the detected top
|
|
|
60
60
|
- `docs/manuals/INDEX.md` — re-generable (overwritable) in `complement` mode.
|
|
61
61
|
- The declared sources' code — read to describe behavior.
|
|
62
62
|
|
|
63
|
-
**Args** (no lifecycle *structured-choice*; harness capability — see [`../../harness/
|
|
63
|
+
**Args** (no lifecycle *structured-choice*; harness capability — see [`../../harness/HARNESS.md`](../../harness/HARNESS.md)):
|
|
64
64
|
|
|
65
65
|
```
|
|
66
66
|
/w:export-manuals [--sessions NNN[,NNN]] [--since sessionNNN] [--source <alias>]
|
|
@@ -124,4 +124,4 @@ With `--dry-run`: print the report; write nothing. Otherwise: `complement` → `
|
|
|
124
124
|
- Design: `docs/referencias/workflow-exports/export-manuals.md` · family: [`../README.md`](../README.md).
|
|
125
125
|
- Writing: **ambient** convention (not a role) — the host auto-applies an installed writing skill when present.
|
|
126
126
|
- Source artifacts: `DECISION` + plan-doc (see `docs/referencias/workflow-artifacts/artifacts-exec/` and `docs/specs`/`docs/plans`).
|
|
127
|
-
- Siblings: [`../export-scripts/
|
|
127
|
+
- Siblings: [`../export-scripts/EXPORT.md`](../export-scripts/EXPORT.md) · [`../export-diagrams/EXPORT.md`](../export-diagrams/EXPORT.md) · [`../export-reports/EXPORT.md`](../export-reports/EXPORT.md).
|
|
@@ -57,7 +57,7 @@ In plan mode it **describes**, never writes: the resolved audience/length, the c
|
|
|
57
57
|
|
|
58
58
|
- `docs/specs`, `docs/plans`, `docs/reports/*` — context + collision avoidance.
|
|
59
59
|
|
|
60
|
-
**Args** (no lifecycle *structured-choice*; harness capability — see [`../../harness/
|
|
60
|
+
**Args** (no lifecycle *structured-choice*; harness capability — see [`../../harness/HARNESS.md`](../../harness/HARNESS.md)):
|
|
61
61
|
|
|
62
62
|
```
|
|
63
63
|
/w:export-reports [--sessions NNN[,NNN]] [--since sessionNNN] [--source <alias>]
|
|
@@ -110,4 +110,4 @@ Functionally idempotent: each invocation takes the next `NNN`; it never overwrit
|
|
|
110
110
|
- Design: `docs/referencias/workflow-exports/export-reports.md` · family: [`../README.md`](../README.md).
|
|
111
111
|
- Writing: **ambient** convention (not a role) — the host auto-applies an installed writing skill when present.
|
|
112
112
|
- Inputs: spec (`docs/specs`), `CONCLUSIONS`/`DECISION` (see `docs/referencias/workflow-artifacts/`), plan-doc (`docs/plans`).
|
|
113
|
-
- Siblings: [`../export-scripts/
|
|
113
|
+
- Siblings: [`../export-scripts/EXPORT.md`](../export-scripts/EXPORT.md) · [`../export-manuals/EXPORT.md`](../export-manuals/EXPORT.md) · [`../export-diagrams/EXPORT.md`](../export-diagrams/EXPORT.md).
|
|
@@ -59,7 +59,7 @@ In plan mode it **describes**, never writes: the resolved `NNN`, the detected so
|
|
|
59
59
|
|
|
60
60
|
- Standalone `docs/scripts/*.sql` (top-level only, via `--standalone-sql`), **excluding** any `docs/scripts/NNN-export-scripts-*/` (previous outputs of this export).
|
|
61
61
|
|
|
62
|
-
**Args** (no lifecycle *structured-choice*; harness capability — see [`../../harness/
|
|
62
|
+
**Args** (no lifecycle *structured-choice*; harness capability — see [`../../harness/HARNESS.md`](../../harness/HARNESS.md)):
|
|
63
63
|
|
|
64
64
|
```
|
|
65
65
|
/w:export-scripts [--sessions NNN[,NNN]] [--since sessionNNN] [--source <alias>]
|
|
@@ -133,4 +133,4 @@ Functionally idempotent: each invocation takes the next `NNN` and **never overwr
|
|
|
133
133
|
- Design: `docs/referencias/workflow-exports/export-scripts.md` · family: [`../README.md`](../README.md).
|
|
134
134
|
- Composed capability: `sql` (built-in default; see `docs/referencias/workflow-roles/`).
|
|
135
135
|
- Source artifact: `SCRIPTS.sql` (see `docs/referencias/workflow-artifacts/artifacts-core/`).
|
|
136
|
-
- Siblings: [`../export-manuals/
|
|
136
|
+
- Siblings: [`../export-manuals/EXPORT.md`](../export-manuals/EXPORT.md) · [`../export-diagrams/EXPORT.md`](../export-diagrams/EXPORT.md) · [`../export-reports/EXPORT.md`](../export-reports/EXPORT.md).
|
|
@@ -49,7 +49,7 @@ Concrete mechanism per harness (**Jul-2026**, verified against official docs; `~
|
|
|
49
49
|
|
|
50
50
|
| Capability | Claude Code | Codex | Gemini / Antigravity | OpenCode | Crush | Warp / Oz | Generic |
|
|
51
51
|
|---|---|---|---|---|---|---|---|
|
|
52
|
-
| command-invocation | `.claude/commands/` (slash) |
|
|
52
|
+
| command-invocation | `.claude/commands/` (slash) | skills only (`$` mention; no commands dir, prompts removed) | skills only in agy (system slash commands; `.gemini/commands/*.toml` = legacy Gemini CLI) | `.opencode/command/` | `.crush/commands` (palette) + user-invocable skills | skills as `/name` | text |
|
|
53
53
|
| procedure-loading (skills) | `SKILL.md` `.claude/skills` | `SKILL.md` `.agents/skills` | `SKILL.md` (agentskills) | `SKILL.md` `.opencode`+`.claude`+`.agents` | `SKILL.md` `.agents`+`.crush`+`.claude` | `SKILL.md` `.agents`+`.warp`+`.claude` | read-and-follow `.md` |
|
|
54
54
|
| structured-choice | `AskUserQuestion` (**main-agent only**) | — | — | — | — | — | numbered markdown |
|
|
55
55
|
| compaction | `/compact` | Pre/PostCompact hooks | ~ | `session.compacted` | ~ | ~ | CHECKPOINT + resume |
|
|
@@ -61,7 +61,7 @@ Concrete mechanism per harness (**Jul-2026**, verified against official docs; `~
|
|
|
61
61
|
|
|
62
62
|
> **Notes (field research Jul-2026):** **`SKILL.md` skills** are the **universal** portable unit — **all six** harnesses support them (Codex added them Dec-2025; **`.agents/skills` is the cross-host anchor**, read by Codex/OpenCode/Crush/Warp). **Structured choice** (`AskUserQuestion`) remains **Claude Code / main-agent only** → elsewhere `structured-choice` degrades to numbered markdown. The **enforcement layer** (new row) is **NO longer Claude-exclusive**: Codex + Gemini use a near-identical protocol (`permissionDecision:deny` / exit 2) and OpenCode blocks via `throw` in a JS plugin; Crush/Warp only offer **coarse** allow/deny (no custom per-command logic) → there, conventions stay **advisory** + allow/deny lists. Enforced **plan mode** is never trusted for safety; git-safe (invariant #5) is our own. **MCP** is universal (each host its file/key). The **guaranteed floor** (last column) runs the full model.
|
|
63
63
|
|
|
64
|
-
> **Oz (Warp's cloud sibling).** `oz agent run` is a cloud agent orchestrator that **reuses Warp's surfaces**: same skills (`.agents/skills`,
|
|
64
|
+
> **Oz (Warp's cloud sibling).** `oz agent run` is a cloud agent orchestrator that **reuses Warp's surfaces**: same skills (`.agents/skills`, top-level dirs like Warp) and `AGENTS.md`, with `structured-choice` equally degraded to numbered markdown. It differs in three points: **detection** via `OZ_RUN_ID` (takes priority over Warp when both markers coexist); **MCP without a config file** — the JSON is passed via the `--mcp` flag of `oz agent run` (or the `OZ_MCP_CONFIG` env), it never writes `.warp/.mcp.json`; and **no plugin or hooks** (advisory enforcement, like Warp). Hence it shares the **Warp / Oz** column with that MCP caveat.
|
|
65
65
|
|
|
66
66
|
## Leverage installed skills
|
|
67
67
|
|
|
@@ -72,7 +72,7 @@ Concrete mechanism per harness (**Jul-2026**, verified against official docs; `~
|
|
|
72
72
|
|
|
73
73
|
## Convention for the rest of the corpus
|
|
74
74
|
|
|
75
|
-
- Loops/commands reference the **capability** by name (e.g. "*structured-choice* (see `harness/
|
|
75
|
+
- Loops/commands reference the **capability** by name (e.g. "*structured-choice* (see `harness/HARNESS.md`)"), **never** the concrete tool.
|
|
76
76
|
- The historical name `AskUserQuestion` survives **only** as the Claude-Code binding of `structured-choice` (this table), never as doctrine vocabulary.
|
|
77
77
|
- The `flow` lifecycle control (`Compactar`/`Cerrar`) belongs to the `structured-choice` capability, not to a tool: on harnesses without structured choice it is offered as one more textual option.
|
|
78
78
|
|
|
@@ -82,7 +82,18 @@ Proven pattern (Spec Kit, 30+ agents): **one canonical source** + generate/symli
|
|
|
82
82
|
|
|
83
83
|
## Command packaging (harness-specific)
|
|
84
84
|
|
|
85
|
-
Each command's **contract** (Flow, Trigger, Input, Mode, …) is agnostic. The **file** the harness executes wraps that contract in its native format
|
|
85
|
+
Each command's **contract** (Flow, Trigger, Input, Mode, …) is agnostic. The **file** the harness executes wraps that contract in its native format — the installer (`aw self install-skill`) emits the right wrapper per host:
|
|
86
|
+
|
|
87
|
+
| Host | Wrapper installed | Invoked as |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| Claude Code | `~/.claude/commands/w/<cmd>.md` (frontmatter `description`/`argument-hint`/`allowed-tools`) | `/w:<cmd>` |
|
|
90
|
+
| Codex | synthesized skill `~/.codex/skills/w-<cmd>/SKILL.md` (Codex reads no commands dir; custom prompts deprecated/removed since 0.14x) | `$w-<cmd>` mention |
|
|
91
|
+
| Gemini/Antigravity | synthesized skill `~/.gemini/skills/w-<cmd>/SKILL.md` (agy reads NO commands dir — slash commands are system-only; verified vs agy 1.0.16 binary) + `~/.gemini/commands/w/<cmd>.toml` kept for legacy Gemini CLI | skill (agy) · `/w:<cmd>` (legacy CLI) |
|
|
92
|
+
| OpenCode | `~/.opencode/command/w/<cmd>.md` | `/w/<cmd>` |
|
|
93
|
+
| Crush | `~/.crush/commands/w/<cmd>.md` (plain body — Crush parses no frontmatter) | palette `user:w:<cmd>` |
|
|
94
|
+
| Warp/Oz | synthesized skill `w-<cmd>/SKILL.md` next to the bundle (Warp lists skills as `/name`) | `/w-<cmd>` |
|
|
95
|
+
|
|
96
|
+
*Skill-as-command* (a synthesized `w-<cmd>` skill whose body is the command, with bundle references rewritten to `../w/…`) is the **universal fallback** for any host without a native commands surface. The loop/role/export manuals are deliberately **not** `SKILL.md` files (`LOOP.md`/`ROLE.md`/`EXPORT.md`/`HARNESS.md`): hosts that scan skill roots **recursively** (Codex ≤6 levels; OpenCode and Crush — which also cross-read `~/.claude/skills` and `~/.agents/skills`) must never index the internals as invocable skills. The contract never changes; the wrapper does (another column).
|
|
86
97
|
|
|
87
98
|
## Status
|
|
88
99
|
|
|
@@ -6,11 +6,11 @@ This document is the **common engine** of the agent-workflow loops: the doctrine
|
|
|
6
6
|
|
|
7
7
|
The **5 loops** run this engine; each adds only its deltas:
|
|
8
8
|
|
|
9
|
-
- [`spec-refine-loop`](spec-refine-loop/
|
|
10
|
-
- [`plan-new-loop`](plan-new-loop/
|
|
11
|
-
- [`plan-refine-loop`](plan-refine-loop/
|
|
12
|
-
- [`plan-exec-loop`](plan-exec-loop/
|
|
13
|
-
- [`quick-loop`](quick-loop/
|
|
9
|
+
- [`spec-refine-loop`](spec-refine-loop/LOOP.md) — refines the **spec** in place; deltas: spec gap taxonomy, analyze gate, `## UI spec` via the `ui-design` capability.
|
|
10
|
+
- [`plan-new-loop`](plan-new-loop/LOOP.md) — generates the **plan** from the spec; deltas: rich plan + plan gap taxonomy (+ per-screen design SPECs when the plan includes UI).
|
|
11
|
+
- [`plan-refine-loop`](plan-refine-loop/LOOP.md) — refines the **plan** in place (auxiliary, not mandatory); reuses the gap taxonomy + coherence gate of `plan-new-loop`. It is to `plan-new` what `spec-refine` is to `spec-new`.
|
|
12
|
+
- [`plan-exec-loop`](plan-exec-loop/LOOP.md) — **executes** the plan: code/DB/git, a single session per run, per-phase progress in the plan-doc, no auto-export. Applies the policies in [`CODE-POLICIES.md`](CODE-POLICIES.md).
|
|
13
|
+
- [`quick-loop`](quick-loop/LOOP.md) — the engine with **minimal ceremony** (the prompt *is* the objective); also applies [`CODE-POLICIES.md`](CODE-POLICIES.md) (proportional gate).
|
|
14
14
|
|
|
15
15
|
## Persistent objective
|
|
16
16
|
|
|
@@ -119,7 +119,7 @@ Investigation is **inline**: an activity **inside the run's current session**, n
|
|
|
119
119
|
|
|
120
120
|
## Structured-choice (design & batching)
|
|
121
121
|
|
|
122
|
-
**Canonical rule (single source — the rest of the corpus only references it):** *structured-choice* = **≤3 content questions + 1 `flow` control**, always. Per-harness binding in [`../harness/
|
|
122
|
+
**Canonical rule (single source — the rest of the corpus only references it):** *structured-choice* = **≤3 content questions + 1 `flow` control**, always. Per-harness binding in [`../harness/HARNESS.md`](../harness/HARNESS.md) (Claude Code: `AskUserQuestion`, max 4 questions/call; without structured choice it degrades to **numbered markdown**).
|
|
123
123
|
|
|
124
124
|
- Since the `flow` control is **always** present → **≤3 content questions + 1 `flow` control**.
|
|
125
125
|
- **`flow` control** (lifecycle, always present): `Compactar` | `Cerrar`. Answering only the content questions (not touching `flow`) = keep iterating.
|
|
@@ -142,7 +142,7 @@ Resume **keys off the `CHECKPOINT`** of the run's session, not the existence of
|
|
|
142
142
|
|
|
143
143
|
> Each heir defines its **prior-work mark**: in the refine loops, the presence of `## Refinement decisions` + `## Q&A traceability` in the doc; in plan-exec, the plan-doc's `- [x]` checkboxes; quick has no doc (resume by CHECKPOINT only).
|
|
144
144
|
|
|
145
|
-
> **`Compactar`** (the `flow` control, across all 3 cases) → write `CHECKPOINT.md` in the session (in-flight progress, remaining gaps, Q&A, `attempts`) → trigger the harness **compaction** (Claude Code: `/compact`; see [`../harness/
|
|
145
|
+
> **`Compactar`** (the `flow` control, across all 3 cases) → write `CHECKPOINT.md` in the session (in-flight progress, remaining gaps, Q&A, `attempts`) → trigger the harness **compaction** (Claude Code: `/compact`; see [`../harness/HARNESS.md`](../harness/HARNESS.md)) → resume by reading the checkpoint.
|
|
146
146
|
|
|
147
147
|
## Convergence / exit
|
|
148
148
|
|
|
@@ -162,7 +162,7 @@ The loops that **edit code** (`plan-exec-loop`, `quick-loop`) additionally run t
|
|
|
162
162
|
Applies to **every** relative reference in the doctrine — never repeated per link:
|
|
163
163
|
|
|
164
164
|
1. **Normal install** (the `w/` tree): the relative path resolves as-is (`../CHASSIS.md`, `../../commands/spec-new.md`).
|
|
165
|
-
2. **
|
|
165
|
+
2. **Synthesized command skills** (hosts without a commands dir — Codex/Warp/Oz): each command installs as a **sibling** skill `w-<command>/` with its references rewritten into the bundle (`../loops/…` → `../w/loops/…`); the `w/` tree stays intact, so loop-to-loop references resolve as a normal install.
|
|
166
166
|
3. A reference that does not resolve = **optional deep-dive** — this engine's doctrine is self-contained.
|
|
167
167
|
|
|
168
168
|
The chassis **is not a skill** (no frontmatter; never invoked nor bound via `.workflow/skills.toml`): it enters the context only because a loop orders it read from its `## Inherits`. It does not define flow, deliverable or gap taxonomy — that belongs to each heir.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CODE-POLICIES — policies for code-editing loops
|
|
2
2
|
|
|
3
|
-
They apply to **`plan-exec-loop`** (per plan phase) and **`quick-loop`** (the single task; **proportional** gate): each orders this doc read from its `## Inherits`, **together with the chassis** ([`CHASSIS.md`](CHASSIS.md)). The document loops (spec-refine, plan-new, plan-refine) edit no code and do **not** load this doc — that is why it lives apart from the chassis. These policies materialize the **DB scripts-only** and **safe git** invariants — which also stay summarized **inline** (1-2 lines) in each code-editing loop's `
|
|
3
|
+
They apply to **`plan-exec-loop`** (per plan phase) and **`quick-loop`** (the single task; **proportional** gate): each orders this doc read from its `## Inherits`, **together with the chassis** ([`CHASSIS.md`](CHASSIS.md)). The document loops (spec-refine, plan-new, plan-refine) edit no code and do **not** load this doc — that is why it lives apart from the chassis. These policies materialize the **DB scripts-only** and **safe git** invariants — which also stay summarized **inline** (1-2 lines) in each code-editing loop's `LOOP.md`, because advisory hosts do not follow Reads; the full normative text lives here.
|
|
4
4
|
|
|
5
5
|
## Safe git — verified branch + proposed commits
|
|
6
6
|
|
|
@@ -31,4 +31,4 @@ Only with the gate green are the commits proposed.
|
|
|
31
31
|
|
|
32
32
|
## Location
|
|
33
33
|
|
|
34
|
-
Same as the chassis: code-editing loops reference it as `../CODE-POLICIES.md`
|
|
34
|
+
Same as the chassis: code-editing loops reference it as `../CODE-POLICIES.md` — the `w/loops/` tree is installed intact on every host (chassis § *Reference resolution*).
|
package/skills/w/loops/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
## What a loop is
|
|
10
10
|
|
|
11
|
-
A loop is
|
|
11
|
+
A loop is an **operating manual** that teaches the AI *how to iterate* until it produces a deliverable. **It is not invocable by name** as a standalone skill — its file is deliberately named `LOOP.md`, **not** `SKILL.md`, so no harness indexes it as a user-facing skill (several scan skill roots recursively): it is the body of its `/w:…` command, which **loads it by reading `<loop>/LOOP.md`** and executes it inline.
|
|
12
12
|
|
|
13
13
|
The 5 loops run the same **common engine**, whose canon lives in [`CHASSIS.md`](CHASSIS.md): persistent objective + verification-first, gap-driven convergent, single session per run with inline research, structured-choice + `flow` control (`Compactar`/`Cerrar`, always present), compact/resume, artifacts as a live log, convergence gate and the `docs/` boundary. Each loop is an **heir**: its `## Inherits` orders the chassis read before its deltas — nothing of the engine is repeated here.
|
|
14
14
|
|
|
@@ -16,11 +16,11 @@ The 5 loops run the same **common engine**, whose canon lives in [`CHASSIS.md`](
|
|
|
16
16
|
|
|
17
17
|
| Loop (`name:`) | Flow | Started by | Reads | Writes |
|
|
18
18
|
|---|---|---|---|---|
|
|
19
|
-
| [`spec-refine-loop`](spec-refine-loop/
|
|
20
|
-
| [`plan-new-loop`](plan-new-loop/
|
|
21
|
-
| [`plan-refine-loop`](plan-refine-loop/
|
|
22
|
-
| [`plan-exec-loop`](plan-exec-loop/
|
|
23
|
-
| [`quick-loop`](quick-loop/
|
|
19
|
+
| [`spec-refine-loop`](spec-refine-loop/LOOP.md) | SPEC | `/w:spec-refine` | `docs/specs/NNN-spec*.md` (the spec itself) | `docs/specs/NNN-spec-<slug>.md` (in place) |
|
|
20
|
+
| [`plan-new-loop`](plan-new-loop/LOOP.md) | PLAN | `/w:plan-new` | `docs/specs/NNN-spec-*.md` | `docs/plans/PPP-plan-<slug>.md` |
|
|
21
|
+
| [`plan-refine-loop`](plan-refine-loop/LOOP.md) | PLAN | `/w:plan-refine` *(aux, optional)* | `docs/plans/PPP-plan-*.md` (the plan itself) | `docs/plans/PPP-plan-<slug>.md` (in place) |
|
|
22
|
+
| [`plan-exec-loop`](plan-exec-loop/LOOP.md) | PLAN | `/w:plan-exec` | `docs/plans/PPP-plan-*.md` | `docs/plans/PPP-plan-<slug>.md` (update); the rest via `export-*` |
|
|
23
|
+
| [`quick-loop`](quick-loop/LOOP.md) | QUICK | `/w:quick` | — (prompt) | edits code + light session; **no** `docs/` |
|
|
24
24
|
|
|
25
25
|
> `/w:spec-new` has no loop (single-pass). Hence **6 commands / 5 loops**.
|
|
26
26
|
|
|
@@ -57,7 +57,7 @@ Loops compose **capabilities by role**, never concrete skills; the skill fulfill
|
|
|
57
57
|
| `sql` | `sql` | research · `plan-exec-loop` · `quick-loop` |
|
|
58
58
|
| `git` | `git` | `plan-exec-loop` · `quick-loop` |
|
|
59
59
|
| `research` | `research` | every loop (inline research) |
|
|
60
|
-
| `overview` | `
|
|
60
|
+
| `overview` | `w` | anyone (orientation) |
|
|
61
61
|
|
|
62
62
|
> **Ambient conventions (not roles):** code/testing/writing standards and `creating-tools` are standalone skills the host auto-discovers by `description` — the workflow neither binds nor depends on them. Full doctrine: [../roles/README.md](../roles/README.md).
|
|
63
63
|
|
|
@@ -67,8 +67,8 @@ Loops compose **capabilities by role**, never concrete skills; the skill fulfill
|
|
|
67
67
|
|
|
68
68
|
- [`CHASSIS.md`](CHASSIS.md) — the common engine of the 5 loops (referenced doc; not a skill)
|
|
69
69
|
- [`CODE-POLICIES.md`](CODE-POLICIES.md) — the code-editing loop policies (loaded only by plan-exec and quick)
|
|
70
|
-
- [`spec-refine-loop/
|
|
71
|
-
- [`plan-new-loop/
|
|
72
|
-
- [`plan-refine-loop/
|
|
73
|
-
- [`plan-exec-loop/
|
|
74
|
-
- [`quick-loop/
|
|
70
|
+
- [`spec-refine-loop/LOOP.md`](spec-refine-loop/LOOP.md)
|
|
71
|
+
- [`plan-new-loop/LOOP.md`](plan-new-loop/LOOP.md)
|
|
72
|
+
- [`plan-refine-loop/LOOP.md`](plan-refine-loop/LOOP.md) — aux, optional (refines the plan in place)
|
|
73
|
+
- [`plan-exec-loop/LOOP.md`](plan-exec-loop/LOOP.md)
|
|
74
|
+
- [`quick-loop/LOOP.md`](quick-loop/LOOP.md)
|
|
@@ -25,7 +25,7 @@ PLAN
|
|
|
25
25
|
`/w:plan-exec` — **resumable** (same chassis mechanism; here resume keys off the plan-doc checkboxes + CHECKPOINT, see Delta 1).
|
|
26
26
|
|
|
27
27
|
## Reads
|
|
28
|
-
`docs/plans/PPP-plan-<slug>.md` (locate via the `docs/plans/PPP-plan-*.md` glob or the exact path from the command argument). It runs **any** plan, whether or not it passed through [`plan-refine-loop`](../plan-refine-loop/
|
|
28
|
+
`docs/plans/PPP-plan-<slug>.md` (locate via the `docs/plans/PPP-plan-*.md` glob or the exact path from the command argument). It runs **any** plan, whether or not it passed through [`plan-refine-loop`](../plan-refine-loop/LOOP.md) — plan-refine is auxiliary, not mandatory; no gate requires it. If the plan includes UI, it also reads the **design SPECs** (`NNN-SPEC-<SLUG>.md`) its Tasks reference — artifacts of the plan-new/plan-refine session, read **read-only** as the design reference while implementing (see [`SPEC.md`](../../artifacts/artifacts-design/SPEC.md)).
|
|
29
29
|
|
|
30
30
|
## Writes
|
|
31
31
|
- `docs/plans/PPP-plan-<slug>.md` (**read/update**, living doc: phase/task state, `Open questions`).
|
|
@@ -71,7 +71,7 @@ The plan absorbs the `TECHNICAL-NOTE` level **inline** (user decision) + the roa
|
|
|
71
71
|
|
|
72
72
|
> **Scales with complexity:** the `(core)` sections go **always**; the `(opt.)` ones only when the plan warrants them — a small plan may omit `Dependencies`, AS-IS/TO-BE, `Risks`, `Assumptions`, `Estimated time`. Concise > exhaustive.
|
|
73
73
|
|
|
74
|
-
> **Catalog implication:** `TECHNICAL-NOTE` stops being a session artifact and becomes **sections of the plan-doc**. Reconciled in [`plan-exec-loop`](../plan-exec-loop/
|
|
74
|
+
> **Catalog implication:** `TECHNICAL-NOTE` stops being a session artifact and becomes **sections of the plan-doc**. Reconciled in [`plan-exec-loop`](../plan-exec-loop/LOOP.md): the single plan-exec session carries **no** `TECHNICAL-NOTE` nor its own `TASKS`; the technical detail and the progress live inline in the plan-doc (living).
|
|
75
75
|
|
|
76
76
|
## Delta 2 — Gap taxonomy (of "plan")
|
|
77
77
|
|
|
@@ -95,7 +95,7 @@ The chassis' **inline** research specializes: mapping **code/impact** — affect
|
|
|
95
95
|
|
|
96
96
|
## Delta 4 — Design SPECs (when the plan includes UI)
|
|
97
97
|
|
|
98
|
-
The **UI without design SPEC** gap is resolved by **composing** the **`ui-design`** capability (built-in default [`ui-spec`](../../roles/ui-spec/
|
|
98
|
+
The **UI without design SPEC** gap is resolved by **composing** the **`ui-design`** capability (built-in default [`ui-spec`](../../roles/ui-spec/ROLE.md); rebindable via `.workflow/skills.toml`; `off` → degrades to human / `Open questions`):
|
|
99
99
|
|
|
100
100
|
- It authors **one design SPEC per screen** as a session artifact: `NNN-SPEC-<SLUG>.md` (numbering local to the session — see [`SPEC.md`](../../artifacts/artifacts-design/SPEC.md)).
|
|
101
101
|
- It **derives** from the spec's `## UI spec` section when present (splits it per screen and raises it to executable detail); otherwise it authors from the `Requirement` (design system/theme/ambiguities via *structured-choice*, counts in the batch).
|
|
@@ -135,4 +135,4 @@ finalize: CHECKPOINT persisted (+ BACKLOG only if something is deferred) + close
|
|
|
135
135
|
- Passes → `Guardar plan` (writes with confirmation if it exists) → `finalize`.
|
|
136
136
|
- `Cerrar` at any time → `finalize` (persists `CHECKPOINT`; `BACKLOG` only if something is deferred; closes the session, reports).
|
|
137
137
|
|
|
138
|
-
> **After generating:** the plan can go straight to `plan-exec`, or — if changes arise before executing (new requirements, scope adjustments) — pass through [`plan-refine-loop`](../plan-refine-loop/
|
|
138
|
+
> **After generating:** the plan can go straight to `plan-exec`, or — if changes arise before executing (new requirements, scope adjustments) — pass through [`plan-refine-loop`](../plan-refine-loop/LOOP.md) (`/w:plan-refine`, auxiliary and **not mandatory**), which refines it in place.
|
|
@@ -48,7 +48,7 @@ Full doctrine in the chassis (§ *Internal sessions* + *Numbering*). This loop's
|
|
|
48
48
|
|
|
49
49
|
## Delta 1 — Deliverable: the PLAN, edited in place
|
|
50
50
|
|
|
51
|
-
The plan uses the **same skeleton** [`plan-new-loop`](../plan-new-loop/
|
|
51
|
+
The plan uses the **same skeleton** [`plan-new-loop`](../plan-new-loop/LOOP.md) produces (§ *Delta 1 — RICH PLAN*: `Summary`/`Solution`/`Impacted`/`Phases`/`Tasks`/`Validations`/`Final behavior`/… with `(core)` sections always and `(opt.)` by complexity). plan-refine does **not** change the schema: it **completes/adjusts** the existing sections **in place** and **adds** two trace sections:
|
|
52
52
|
|
|
53
53
|
```markdown
|
|
54
54
|
## Refinement decisions ← NEW (ADDED)
|
|
@@ -66,7 +66,7 @@ Every doubt asked to the human + the chosen answer.
|
|
|
66
66
|
|
|
67
67
|
## Delta 2 — Gap taxonomy (of "plan")
|
|
68
68
|
|
|
69
|
-
Reuses plan-new-loop's gap taxonomy **in full** ([`plan-new-loop`](../plan-new-loop/
|
|
69
|
+
Reuses plan-new-loop's gap taxonomy **in full** ([`plan-new-loop`](../plan-new-loop/LOOP.md) § *Delta 2*): vague Approach/Solution, components unidentified, AS-IS wiring unknown, phase too large, task not atomic, missing deps, spec criteria uncovered, unaddressed risks, UI without design SPEC. **Focus difference:** plan-new **builds** the plan from scratch; plan-refine **detects what changed** against the written plan (or against the spec, if the spec was re-refined) and closes **those** gaps — typically fewer and more localized. One extra re-refine gap:
|
|
70
70
|
|
|
71
71
|
| Gap | Signal | Resolved by |
|
|
72
72
|
|---|---|---|
|
|
@@ -78,7 +78,7 @@ Same as plan-new (maps code/impact: FE/BE/DB components, AS-IS wiring, deps), bu
|
|
|
78
78
|
|
|
79
79
|
## Delta 4 — Design SPECs (when the refine touches UI)
|
|
80
80
|
|
|
81
|
-
Same mechanism as [`plan-new-loop`](../plan-new-loop/
|
|
81
|
+
Same mechanism as [`plan-new-loop`](../plan-new-loop/LOOP.md) (§ *Delta 4*: the **`ui-design`** capability → per-screen `NNN-SPEC-<SLUG>.md`, see [`SPEC.md`](../../artifacts/artifacts-design/SPEC.md)), **scoped to the delta**: only the screens **new or changed** by the refine get a design SPEC. The updated SPEC is written in **plan-refine's own session** (each loop manages ITS session's artifacts — it never edits plan-new's) and the plan **re-points** the UI Task reference to the current SPEC. Untouched screens keep their original SPEC.
|
|
82
82
|
|
|
83
83
|
## Compact / resume
|
|
84
84
|
|
|
@@ -59,7 +59,7 @@ Read **[`../CHASSIS.md`](../CHASSIS.md)** — the loop's **full engine** — **a
|
|
|
59
59
|
- **Anti-duplicate** (the `create_or_resume` spirit): if a spec whose `## Origin` references this same objective already exists (or an equivalent `*-spec-refine` session), the recommended option becomes **resuming that spec** (`/w:spec-refine` semantics) — never a second draft.
|
|
60
60
|
- **Live transition to SPEC** (shared by the gate and mid-loop escalation). On acceptance, the work line **moves to the SPEC flow**: the explicit consent in the structured-choice **equals invoking the destination command** (*consented exception* — rule 3 of the *Continuity rule*, [`../../SKILL.md`](../../SKILL.md) § *Operating context*). On the SPEC side:
|
|
61
61
|
1. **Materialize the draft** via the [`../../commands/spec-new.md`](../../commands/spec-new.md) procedure: `aw next-number docs/specs`, slug, schema, single-pass **NO RESEARCH**. `## Origin` = "escalated from `/w:quick`" + the original prompt (+ the origin quick session if it exists).
|
|
62
|
-
2. **Load and execute** [`../spec-refine-loop/
|
|
62
|
+
2. **Load and execute** [`../spec-refine-loop/LOOP.md`](../spec-refine-loop/LOOP.md) — over that spec (trampoline pattern).
|
|
63
63
|
3. The run's session is that loop's **normal** `NNN-<slug>-spec-refine` (the CLI numbers it; its `## Origin` records the escalation). **Invariant 2 intact**: quick, while it is quick, never writes `docs/` — the draft is written by the SPEC flow, post-consent.
|
|
64
64
|
- **Mid-loop escalation + handoff**: if the task grows (same gate signals) → propose moving up to **SPEC/PLAN** (structured-choice, recommendation first). If the user accepts:
|
|
65
65
|
1. The **already-edited code stays** in the working tree (never reverted) and is **recorded** in `CHECKPOINT` + `BACKLOG`: "uncommitted changes in `<source>` — decide commit/discard on resume" (the "rejected commit" pattern, [`../CODE-POLICIES.md`](../CODE-POLICIES.md) § *Safe git*).
|
|
@@ -87,7 +87,7 @@ quick-loop(prompt):
|
|
|
87
87
|
structured_choice(content: [Cambiar a SPEC (recommended), Seguir en quick, Recortar alcance],
|
|
88
88
|
flow: [Compactar, Cerrar]) # Cerrar here = abort (nothing created yet)
|
|
89
89
|
Cambiar a SPEC → live transition (see delta): draft (spec-new procedure) +
|
|
90
|
-
load and execute ../spec-refine-loop/
|
|
90
|
+
load and execute ../spec-refine-loop/LOOP.md → END (no quick session)
|
|
91
91
|
Recortar alcance → objective = the proposed sub-task; the rest → BACKLOG when the session is created
|
|
92
92
|
Seguir en quick → continue
|
|
93
93
|
s = create_or_resume("<slug>-quick") # CLI prepends global NNN; always a light session
|
|
@@ -27,7 +27,7 @@ SPEC
|
|
|
27
27
|
## Started by
|
|
28
28
|
`/w:spec-refine` — **resumable**. Detects prior state (via CHECKPOINT) and starts accordingly (see *Compact / resume — SPEC keys*).
|
|
29
29
|
|
|
30
|
-
It is also started by the **live escalation from `quick-loop`** (entry gate or mid-loop — see [`../quick-loop/
|
|
30
|
+
It is also started by the **live escalation from `quick-loop`** (entry gate or mid-loop — see [`../quick-loop/LOOP.md`](../quick-loop/LOOP.md) § *QUICK delta*): quick materializes the draft (`spec-new` procedure) and **loads this loop** over that spec — same semantics as if the user had run `/w:spec-refine`.
|
|
31
31
|
|
|
32
32
|
## Reads
|
|
33
33
|
- `docs/specs/NNN-spec*.md` (glob — locates the spec by number; also catches the legacy `NNN-spec.md`), **or** the exact path passed as the command argument. **Always the spec itself**: this loop edits it in place; there is no separate "refined" file.
|
|
@@ -76,7 +76,7 @@ The spec is completed **in place**: the draft's sections get **completed** + two
|
|
|
76
76
|
## Assumptions (declared)
|
|
77
77
|
|
|
78
78
|
## UI spec (opt. — if UI is involved; via the ui-design capability / ui-spec skill)
|
|
79
|
-
Structured Markdown description (screens → regions/components). See [`ui-spec`](../../roles/ui-spec/
|
|
79
|
+
Structured Markdown description (screens → regions/components). See [`ui-spec`](../../roles/ui-spec/ROLE.md).
|
|
80
80
|
|
|
81
81
|
## Refinement decisions ← NEW (ADDED)
|
|
82
82
|
What was defined while refining and why. Includes what inline research
|