@tacuchi/agent-workflow-cli 20.6.0 → 20.8.1
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 -5
- package/dist/application/paths-service.js +1 -1
- package/dist/application/self/skills-manager.js +1 -1
- package/dist/application/self/skills-manager.js.map +1 -1
- package/dist/application/workspace-init-service.js +1 -1
- package/dist/cli/main.js +1 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/tui/components/focus-row.js +1 -1
- package/dist/cli/tui/components/home-header.js +1 -1
- package/dist/cli/tui/components/home-header.js.map +1 -1
- package/dist/cli/tui/components/host-admin-section.js +1 -1
- package/dist/cli/tui/components/host-admin-section.js.map +1 -1
- package/dist/cli/tui/components/tabs-config.js +1 -1
- package/dist/cli/tui/components/tabs-config.js.map +1 -1
- package/dist/cli/tui/data/workflow-content.js +3 -2
- package/dist/cli/tui/data/workflow-content.js.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.js +1 -1
- package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
- package/dist/cli/tui/tabs/status-tab.js +1 -1
- package/dist/cli/tui/tabs/status-tab.js.map +1 -1
- package/dist/cli/tui/tabs/workflow-tab.js +3 -3
- package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
- package/package.json +2 -2
- package/skills/w/README.md +2 -2
- package/skills/w/SKILL.md +15 -10
- package/skills/w/artifacts/README.md +3 -3
- package/skills/w/commands/README.md +3 -2
- package/skills/w/commands/fix-git.md +1 -1
- package/skills/w/commands/persist.md +101 -0
- package/skills/w/commands/plan-exec.md +3 -2
- package/skills/w/commands/plan-new.md +10 -3
- package/skills/w/commands/plan-refine.md +4 -2
- package/skills/w/commands/quick.md +2 -1
- package/skills/w/commands/spec-new.md +17 -3
- package/skills/w/commands/spec-refine.md +1 -1
- package/skills/w/commands/status.md +1 -1
- package/skills/w/commands/workspace-init.md +2 -2
- package/skills/w/exports/README.md +1 -1
- package/skills/w/harness/HARNESS.md +6 -6
- package/skills/w/loops/CHASSIS.md +25 -5
- package/skills/w/loops/CODE-POLICIES.md +1 -1
- package/skills/w/loops/plan-exec-loop/LOOP.md +14 -4
- package/skills/w/loops/plan-new-loop/LOOP.md +13 -4
- package/skills/w/loops/plan-refine-loop/LOOP.md +5 -2
- package/skills/w/loops/quick-loop/LOOP.md +7 -5
- package/skills/w/loops/spec-refine-loop/LOOP.md +8 -6
- package/skills/w/roles/README.md +2 -2
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tacuchi/agent-workflow-cli",
|
|
3
|
-
"version": "20.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "20.8.1",
|
|
4
|
+
"description": "Runtime CLI for Workline — the stages + loops + artifacts system for agent work. Bundles the universal `w` skill set under `skills/w/` (slash commands `/w:*`: spec-new/spec-refine, plan-new/plan-exec, quick, persist, workspace-init, export-*); `self install --target <host>` copies SKILL + commands + hooks into the host. Pluggable capability skills via `.workflow/skills.toml`. Multi-empresa parametrization via `profile.json` cascade. Namespace auto-detected from any `.<ns>/sessions/` dir in CWD; default `workflow`.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"agent-workflow": "dist/cli/main.js",
|
package/skills/w/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# w —
|
|
1
|
+
# w — Workline skill bundle
|
|
2
2
|
|
|
3
|
-
> The `w` bundle (`w` = *
|
|
3
|
+
> The `w` bundle (`w` = *workline*) packages **Workline** — the stages + loops + artifacts system for agent work — as Claude Code skills + `/w:` slash commands. Runtime: [`@tacuchi/agent-workflow-cli`](../../README.md) (`agent-workflow` / `aw`).
|
|
4
4
|
|
|
5
5
|
It implements the **stages + loops + artifacts** model. The design source lives under `docs/referencias/` in the agent-workflow hub. This README is the bundle index; the normative text lives in its canonical docs:
|
|
6
6
|
|
package/skills/w/SKILL.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: w
|
|
3
3
|
description: >-
|
|
4
|
-
Orientation skill for the whole
|
|
5
|
-
`overview` role. Load this to understand the model end-to-end: the 3-layer
|
|
4
|
+
Orientation skill for Workline (`w` = *workline*), the whole system — built-in
|
|
5
|
+
default for the `overview` role. Load this to understand the model end-to-end: the 3-layer
|
|
6
6
|
architecture (commands → loops → sessions/artifacts) plus the docs/ zone, the 3
|
|
7
7
|
flows (SPEC / PLAN / QUICK), the `/w:` commands, the 5 loops and their chassis, the
|
|
8
8
|
`export-*` family, the composable capability skills + `.workflow/skills.toml`
|
|
@@ -11,7 +11,7 @@ description: >-
|
|
|
11
11
|
skill to reach for.
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
# w —
|
|
14
|
+
# w — Workline overview
|
|
15
15
|
|
|
16
16
|
## Role
|
|
17
17
|
|
|
@@ -19,7 +19,7 @@ description: >-
|
|
|
19
19
|
|
|
20
20
|
## Purpose
|
|
21
21
|
|
|
22
|
-
Explain the **complete model** of
|
|
22
|
+
Explain the **complete model** of Workline so an agent knows: what the user invokes, what the AI runs, where every deliverable lands, and which rules never break. This is the map; the fine detail lives in each loop/command/export/role.
|
|
23
23
|
|
|
24
24
|
## Composed by
|
|
25
25
|
|
|
@@ -48,7 +48,7 @@ USER invokes
|
|
|
48
48
|
│ the export-* read the artifacts
|
|
49
49
|
▼
|
|
50
50
|
docs/ ZONE — permanent, user-facing documents
|
|
51
|
-
specs · plans (flows) · scripts · manuals · diagrams · reports (export-*) · tools (ambient)
|
|
51
|
+
specs · plans (flows) · research (persist / no-flow) · scripts · manuals · diagrams · reports (export-*) · tools (ambient)
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
- **Layer 1** — high level. Single-pass or starts a loop. No iteration logic.
|
|
@@ -75,7 +75,7 @@ Before any loop, the AI resolves its **operating context** on **every prompt** w
|
|
|
75
75
|
|---|---|---|
|
|
76
76
|
| **Yes** | **flow command** (`quick`·`spec-*`·`plan-*`) | **new work line** → creates a **new** session (except re-running the same flow over the same input: `create_or_resume` reopens the existing one), starts the loop → artifacts go to **that** session (`SCRIPTS.sql`, …) |
|
|
77
77
|
| **Yes** | **prompt with no command** (related) | **continues/reopens the most recent session** → scripts edit **its** `SCRIPTS.sql` (no new session) |
|
|
78
|
-
| **Yes** | **prompt with no command** (unrelated / no session) | **no flow**: direct work → writes into `docs/` by convention + numbering (`aw next-number`) |
|
|
78
|
+
| **Yes** | **prompt with no command** (unrelated / no session) | **no flow**: direct work → writes into `docs/` by convention + numbering (`aw next-number`). To persist work already done in this conversation, `/w:persist` classifies and routes it (`docs/research` · spec draft · plan adoption) |
|
|
79
79
|
| **No** | anything | **vanilla** — no workspace, no flow; the AI is free (native) |
|
|
80
80
|
|
|
81
81
|
**Continuity rule** (single source — the chassis and the loops reference here):
|
|
@@ -89,6 +89,10 @@ Before any loop, the AI resolves its **operating context** on **every prompt** w
|
|
|
89
89
|
|
|
90
90
|
It is the **inter-turn** face of the *persistent objective* (same `CHECKPOINT`+resume, applied to the next prompt) — agnostic doctrine, not a host hook. It applies to **every artifact** (`SCRIPTS.sql` is the worked example; QUICK case: `loops/quick-loop/LOOP.md`).
|
|
91
91
|
|
|
92
|
+
### Host as producer — adopted context
|
|
93
|
+
|
|
94
|
+
The flows are **composable with host-native work, never exclusive**. The host is not only the executor of the loops: it is a legitimate **producer** of input. Work products born in the host conversation — an analysis reached with a host feature, a plan built in the host's plan mode, settled conclusions — are first-class flow input via **adoption**: transcribe with provenance (`## Origin` = adopted from the host conversation), verify like any other input (gate integrity), and never re-derive or re-ask what is already settled. Entry points: any loop start (adopted context — `loops/CHASSIS.md` § *Adopted context*), `plan-new` input mode 4 (adopt an external plan), and `/w:persist` (classify + persist finished work into `docs/`).
|
|
95
|
+
|
|
92
96
|
### The commands (`/w:` namespace)
|
|
93
97
|
|
|
94
98
|
- `/w:workspace-init` — initializes the workspace.
|
|
@@ -100,17 +104,18 @@ It is the **inter-turn** face of the *persistent objective* (same `CHECKPOINT`+r
|
|
|
100
104
|
- `/w:quick` — starts `quick-loop` (shortcut, no `docs/`; escalates live to SPEC when the objective exceeds a quick).
|
|
101
105
|
- `/w:export-scripts` · `/w:export-manuals` · `/w:export-diagrams` · `/w:export-reports` — promote artifacts to `docs/`.
|
|
102
106
|
|
|
103
|
-
### Transversal skills (no flow) — `/w:status` · `/w:fix-git` · `/w:generate-launch`
|
|
107
|
+
### Transversal skills (no flow) — `/w:status` · `/w:fix-git` · `/w:generate-launch` · `/w:persist`
|
|
104
108
|
|
|
105
109
|
**Flow-independent invocable** skills: triggered with `/w:` like any command, but they do **not** belong to SPEC/PLAN/QUICK, do **not** manage `docs/`, and do **not** count in **6 flow commands / 5 loops**. *(In the bundle they are packaged under `commands/` so `/w:` can invoke them; in the design they are the `workflow-skills/` category.)*
|
|
106
110
|
|
|
107
111
|
- `/w:status` — read-only workspace dashboard (Done/Missing/Discarded, dates humanized in the user's language). Writes nothing; backed by `aw status`.
|
|
108
112
|
- `/w:fix-git` — resolves an in-progress merge's conflicts in any repo (identifies origin↔destination, analyzes intent, *structured-choice* on ambiguity). No session, never touches `docs/`; git-safe; backed by `aw merge-state`.
|
|
109
113
|
- `/w:generate-launch` — (re)generates the per-source launch scripts (`.workflow/launch/<alias>/`) by detecting each source's stack; idempotent (preserves hand-edited scripts, `--force` overwrites). Complements the launch flow's on-demand generation. No session, never touches `docs/`; backed by `aw generate-launch`.
|
|
114
|
+
- `/w:persist` — persists work **already done in this conversation** (an analysis, conclusions, a plan) into `docs/`: classifies its shape and routes it — analysis/conclusions → `docs/research/` · requirement-shaped → spec draft (`spec-new` procedure) · plan-shaped → plan adoption (`plan-new` mode 4) — with `## Origin` + attribution (host · model · date) and the anti-duplicate check. Never creates sessions; the host→`docs/` counterpart of `export-*` (which stays the only session→`docs/` path).
|
|
110
115
|
|
|
111
116
|
### The loops (Layer 2)
|
|
112
117
|
|
|
113
|
-
A loop is a skill that teaches the AI **how to iterate** to a deliverable: detect gaps, resolve them (human via structured-choice, inline research or a composed capability), integrate and repeat until convergence. The 5 loops run the same **common engine** — persistent objective + verification-first, gap-driven convergent, single session per run, structured-choice + `flow` control (`Compactar`/`Cerrar`), compact/resume, artifacts as a live log, convergence gate — whose canon lives in [`loops/CHASSIS.md`](loops/CHASSIS.md); each loop is an **heir** adding only its deltas.
|
|
118
|
+
A loop is a skill that teaches the AI **how to iterate** to a deliverable: detect gaps, resolve them (human via structured-choice, inline research, a small probe/PoC or a composed capability), integrate and repeat until convergence. The 5 loops run the same **common engine** — persistent objective + verification-first, gap-driven convergent, single session per run, structured-choice + `flow` control (`Compactar`/`Cerrar`), compact/resume, artifacts as a live log, convergence gate — whose canon lives in [`loops/CHASSIS.md`](loops/CHASSIS.md); each loop is an **heir** adding only its deltas.
|
|
114
119
|
|
|
115
120
|
The **code-editing** loops (`plan-exec-loop`, `quick-loop`) additionally apply the *code-editing loop policies*: safe git, DB scripts-only and the pre-commit **closing review gate** (nothing reaches a proposed commit unreviewed) — see [`loops/CODE-POLICIES.md`](loops/CODE-POLICIES.md) (the chassis' sibling doc; document loops do not load it).
|
|
116
121
|
|
|
@@ -154,7 +159,7 @@ Role catalog and defaults:
|
|
|
154
159
|
| `diagrams` | `diagrams` | should | `export-diagrams` |
|
|
155
160
|
| `overview` | `w` | should | anyone (orientation) |
|
|
156
161
|
|
|
157
|
-
> **Ambient conventions (not roles):** code/testing/writing standards and `creating-tools` are standalone skills the host auto-discovers by `description` —
|
|
162
|
+
> **Ambient conventions (not roles):** code/testing/writing standards and `creating-tools` are standalone skills the host auto-discovers by `description` — Workline neither binds nor depends on them. Full doctrine: [roles/README.md](roles/README.md).
|
|
158
163
|
|
|
159
164
|
The **loop chassis** is NOT bound: it is the common engine of the 5 loops ([`loops/CHASSIS.md`](loops/CHASSIS.md), a referenced doc), not a pluggable capability.
|
|
160
165
|
|
|
@@ -185,7 +190,7 @@ One language per plane — never mix them:
|
|
|
185
190
|
### The 6 hard invariants
|
|
186
191
|
|
|
187
192
|
1. **No auto-export** — loops never graduate/export to `docs/`. Only `export-*` does, explicitly.
|
|
188
|
-
2. **Each flow touches only its `docs/` folders** — SPEC→`specs` · PLAN→`plans` · QUICK→none · rest→`export-*`. (`docs/tools`
|
|
193
|
+
2. **Each flow touches only its `docs/` folders** — SPEC→`specs` · PLAN→`plans` · QUICK→none · rest→`export-*`. (`docs/tools` and `docs/research` belong to no flow: `docs/tools` is written by the ambient skill `creating-tools`; `docs/research` by `/w:persist` or direct no-flow authoring.)
|
|
189
194
|
3. **The spec and the plan are documents** (`docs/`), not session artifacts. *(Not to be confused with the **design SPECs** `NNN-SPEC-<SLUG>.md`: **per-screen** UI design artifacts that PLAN sessions produce via the `ui-design` capability when the plan includes UI — see `artifacts/artifacts-design/` — they are not the requirement-spec.)*
|
|
190
195
|
4. **DB scripts-only** — the AI never executes DML/DDL; migrations stay in `SCRIPTS.sql` and the user applies them. Only read-only reads via MCP.
|
|
191
196
|
5. **Safe git** — expected branch verified before editing; proposed commits per source; never `push`/`--amend`/`--no-verify`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# workflow-artifacts — Artifact catalog (Layer 3)
|
|
2
2
|
|
|
3
|
-
> Reference for the
|
|
3
|
+
> Reference for the Workline model (current, deployed). This folder contains the **artifact templates**: process files managed by **sessions** inside `.workflow/sessions/`.
|
|
4
4
|
> Siblings: [`../commands/`](../commands/) (Layer 1) · [`../loops/`](../loops/) (Layer 2) · [`../roles/`](../roles/) (pluggable skills).
|
|
5
5
|
|
|
6
6
|
---
|
|
@@ -15,11 +15,11 @@ 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`, `NNN-SPEC-<SLUG>.md` | `specs`, `plans`, `manuals`, `scripts`, `diagrams`, `reports` |
|
|
18
|
+
| Examples | `CHECKPOINT`, `ANALYSIS-FILE`, `CONCLUSIONS`, `SCRIPTS.sql`, `TASKS`, `DECISION`, `NNN-SPEC-<SLUG>.md` | `specs`, `plans`, `research`, `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
|
|
|
22
|
-
> **Routing by operating context** (canonical rules: [`../SKILL.md`](../SKILL.md) § *Operating context*): inside a flow → the **active/continued** session (a prompt with no command edits the most recent session's artifacts); workspace without flow → `docs/` by convention + numbering; no workspace → vanilla. Session→`docs/` promotion is still **only** via `export
|
|
22
|
+
> **Routing by operating context** (canonical rules: [`../SKILL.md`](../SKILL.md) § *Operating context*): inside a flow → the **active/continued** session (a prompt with no command edits the most recent session's artifacts); workspace without flow → `docs/` by convention + numbering (or explicitly via [`/w:persist`](../commands/persist.md), which classifies in-conversation work and routes it — `docs/research` · spec draft · plan adoption); no workspace → vanilla. Session→`docs/` promotion is still **only** via `export-*`; persist is the **host→`docs/`** path (it never reads sessions).
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# w — Command map (Layer 1)
|
|
2
2
|
|
|
3
|
-
> README of the `/w:` namespace (`w` = *
|
|
3
|
+
> README of the `/w:` namespace (`w` = *workline*): everything listed here is the **only thing the user invokes** directly. Commands are **Layer 1** — single-pass or they start a loop; no iteration logic.
|
|
4
4
|
>
|
|
5
5
|
> **Canon**: the full model (3 layers + `docs/` zone, the 3 flows, hard invariants) lives in [`../SKILL.md`](../SKILL.md); the **loop engine** in [`../loops/CHASSIS.md`](../loops/CHASSIS.md). This README is only the folder index.
|
|
6
6
|
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
| [`status`](status.md) | Read-only workspace dashboard | single-pass (transversal) |
|
|
25
25
|
| [`fix-git`](fix-git.md) | Resolves an in-progress merge, git-safe | single-pass (transversal) |
|
|
26
26
|
| [`generate-launch`](generate-launch.md) | (Re)generates the per-source launch scripts (`.workflow/launch/<alias>/`) | single-pass (transversal) |
|
|
27
|
+
| [`persist`](persist.md) | Persists in-conversation work into `docs/` (classify → `research` · spec draft · plan adoption) | single-pass (transversal) |
|
|
27
28
|
| [`export-scripts`](export-scripts.md) | Promotes session SQL migrations to `docs/scripts/` | single-pass, read-only |
|
|
28
29
|
| [`export-manuals`](export-manuals.md) | Generates manuals in `docs/manuals/` | single-pass, read-only |
|
|
29
30
|
| [`export-diagrams`](export-diagrams.md) | Generates C4/mermaid diagrams in `docs/diagrams/` | single-pass, read-only |
|
|
@@ -31,7 +32,7 @@
|
|
|
31
32
|
|
|
32
33
|
> **Intentional asymmetry:** in SPEC, `spec-new` generates the draft single-pass (no loop) and the loop lives in `spec-refine`; in PLAN, all 3 commands start loops. Total: **6 flow commands / 5 loops**.
|
|
33
34
|
>
|
|
34
|
-
> **Transversal (no flow):** `status`, `fix-git
|
|
35
|
+
> **Transversal (no flow):** `status`, `fix-git`, `generate-launch` and `persist` belong to no SPEC/PLAN/QUICK flow and do not count in 6/5. In the design they are their own category (`workflow-skills/`); here they are packaged under `commands/` so `/w:` can invoke them — see [`../harness/HARNESS.md`](../harness/HARNESS.md) § *Command packaging*.
|
|
35
36
|
|
|
36
37
|
## Schema of each command file
|
|
37
38
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Resolves the conflicts of an in-progress merge for a given or detected source. Identifies origin (theirs) and destination (ours), analyzes both sides' intent and resolves; asks (structured-choice) on ambiguity or incoherence. Git-safe — proposes the merge commit, never push/--amend/--no-verify. Transversal (not a flow), no loop, no session, never touches docs/. Works in any git repo, no initialized workspace required.
|
|
2
|
+
description: Use when a merge or rebase left conflicts to resolve. Resolves the conflicts of an in-progress merge for a given or detected source. Identifies origin (theirs) and destination (ours), analyzes both sides' intent and resolves; asks (structured-choice) on ambiguity or incoherence. Git-safe — proposes the merge commit, never push/--amend/--no-verify. Transversal (not a flow), no loop, no session, never touches docs/. Works in any git repo, no initialized workspace required.
|
|
3
3
|
argument-hint: "[<source path | alias>]"
|
|
4
4
|
allowed-tools:
|
|
5
5
|
[
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Use when work already produced in this conversation (analysis, conclusions, a plan) should be saved into docs/ — classifies its shape and routes it. analysis → docs/research/ · requirement → spec draft (docs/specs) · plan → plan adoption (docs/plans). Transversal (no flow, no loop, no session); records ## Origin + attribution (host · model · date); anti-duplicate aware (update vs sibling perspective). The host→docs/ counterpart of export-*.
|
|
3
|
+
argument-hint: [what to persist — empty = the conversation's latest finished deliverable]
|
|
4
|
+
allowed-tools:
|
|
5
|
+
[
|
|
6
|
+
"Bash",
|
|
7
|
+
"Read",
|
|
8
|
+
"Write",
|
|
9
|
+
"Edit",
|
|
10
|
+
]
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# persist — persist in-conversation work into `docs/`
|
|
14
|
+
|
|
15
|
+
Captures **work already produced in this conversation** — with or without host-native features (a `/goal` run, plan mode, plain chat analysis) — and persists it into `docs/`, classified by shape. It is the explicit form of *direct no-flow authoring* (`../SKILL.md` § *Operating context*, row 3) and the doctrinal entry for **host as producer** (`../loops/CHASSIS.md` § *Adopted context*).
|
|
16
|
+
|
|
17
|
+
> **Hard floor — applies even if you read nothing beyond this file:**
|
|
18
|
+
>
|
|
19
|
+
> 1. **Adopt, don't re-derive** — single pass, **NO RESEARCH**: transcribe/organize what the conversation already established. New investigation is flow work (`spec-refine`, `quick`), never this command's.
|
|
20
|
+
> 2. **Confirm before writing** — classification and destination go through **structured-choice** (recommendation first). Never write `docs/` silently.
|
|
21
|
+
> 3. **Numbering via `aw next-number docs/<category>`** (it creates the folder when missing) — never invent numbers. **Never creates sessions** (sessions are loop-created only).
|
|
22
|
+
> 4. **Language** — headings in English (parse contract); content in the **user's language**.
|
|
23
|
+
|
|
24
|
+
## Input
|
|
25
|
+
|
|
26
|
+
`$ARGUMENTS` names what to persist (or is empty → the conversation's most recent finished deliverable). The **source is the conversation itself**: what was analyzed, concluded, designed or planned up to this point. If nothing persistable exists yet, say so and stop — do not manufacture content.
|
|
27
|
+
|
|
28
|
+
## Classification → routing
|
|
29
|
+
|
|
30
|
+
Classify the content by **shape**, recommend the route, confirm via structured-choice:
|
|
31
|
+
|
|
32
|
+
| Shape | Signals | Route |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| **Analysis / conclusions / design notes** | findings, comparisons, diagnoses, adjudications, recommendations | `docs/research/NNN-research-<slug>.md` (schema below) |
|
|
35
|
+
| **Requirement** | describes a *wish*: what should exist/change, acceptance criteria derivable | **spec draft** via the [`spec-new`](spec-new.md) procedure (same schema, same NO RESEARCH), `## Origin` = "adopted from host conversation" → offer `/w:spec-refine` |
|
|
36
|
+
| **Plan** | already answers the *how*: phases/tasks/solution — e.g. the host plan-mode output | **plan adoption** via [`plan-new`](plan-new.md) § *Input resolution* mode 4 (`docs/plans/PPP-plan-<slug>.md`) → offer `/w:plan-refine` / `/w:plan-exec` |
|
|
37
|
+
| Mixed / ambiguous | e.g. analysis that ends in a requirement | structured-choice between the candidate routes (split is a valid option: research doc + spec draft referencing it) |
|
|
38
|
+
|
|
39
|
+
Requires a **workspace** (`docs/` is the managed surface). Without one → degrade: propose `/w:workspace-init` or ask for an explicit destination path.
|
|
40
|
+
|
|
41
|
+
## `docs/research/` — the analysis home (owned by this command)
|
|
42
|
+
|
|
43
|
+
`docs/research` hosts standalone analyses: neither spec nor plan, but worth keeping. Written by this command (or by direct no-flow authoring following this same schema). Belongs to **no flow**; `export-*` never writes it; loops never read it implicitly (a flow uses it by **reference** — e.g. cited in a spec's `## Origin` or a quick prompt).
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
# Research NNN — <slug>
|
|
47
|
+
|
|
48
|
+
## Origin
|
|
49
|
+
adopted from host conversation — <host> · <model> · <YYYY-MM-DD>
|
|
50
|
+
(what prompted the analysis: goal, prior doc, question)
|
|
51
|
+
|
|
52
|
+
## Objective
|
|
53
|
+
The question/situation the analysis addresses. In the user's language.
|
|
54
|
+
|
|
55
|
+
## Analysis
|
|
56
|
+
The analysis, transcribed/organized (not re-derived).
|
|
57
|
+
|
|
58
|
+
## Conclusions
|
|
59
|
+
The settled conclusions — actionable, falsifiable where possible.
|
|
60
|
+
|
|
61
|
+
## Perspectives (opt. — multi-agent)
|
|
62
|
+
### <host · model · YYYY-MM-DD>
|
|
63
|
+
An additional agent's view on the same objective (see below).
|
|
64
|
+
|
|
65
|
+
## Sources (opt.)
|
|
66
|
+
Docs / repos / prior research docs referenced (for a synthesis: the N crossed docs).
|
|
67
|
+
|
|
68
|
+
## Open questions (opt.)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Anti-duplicate → update vs sibling perspective
|
|
72
|
+
|
|
73
|
+
Before writing, scan `docs/research/*-research-*.md` for a doc whose `## Origin`/`## Objective` matches this objective. If one exists, **never** silently create a second: structured-choice —
|
|
74
|
+
|
|
75
|
+
- **`Actualizar`** *(recommended when it is the same line of thought)* — correct/extend the existing doc in place (confirmation to overwrite).
|
|
76
|
+
- **`Agregar perspectiva`** — append a `### <host · model · date>` subsection under `## Perspectives`: same objective, **different agent's view** (this is intentional and legitimate — the multi-host pattern below).
|
|
77
|
+
- **`Documento nuevo`** — only if the objective genuinely differs.
|
|
78
|
+
|
|
79
|
+
## Multi-host cross-analysis (the docs-mediated pattern)
|
|
80
|
+
|
|
81
|
+
`docs/research` is git-shareable — unlike sessions (gitignored, machine-local, loop-owned). That makes it the exchange surface for **N agents analyzing the same situation**:
|
|
82
|
+
|
|
83
|
+
1. **Each host** analyzes in-conversation, then runs `/w:persist` → first agent creates the research doc; the rest **add perspectives** (or sibling docs), always attributed (host · model · date).
|
|
84
|
+
2. **The final cross**: the user picks the strongest host; its input is the N research docs/perspectives (referenced explicitly in the prompt or via this command's argument). The synthesis persists as a **new research doc** whose `## Origin` states "synthesis" and whose `## Sources` lists every doc/perspective crossed — attribution lets it weigh who concluded what.
|
|
85
|
+
3. Sessions stay **out** of the exchange path — no concurrent-session doctrine is needed; hosts meet only in `docs/`.
|
|
86
|
+
|
|
87
|
+
## What this command is NOT
|
|
88
|
+
|
|
89
|
+
- **Not export-*** — it never reads sessions; `export-*` remains the only session→`docs/` path.
|
|
90
|
+
- **Not a flow** — no loop, no session, no `CHECKPOINT`; single pass.
|
|
91
|
+
- **Not research** — it investigates nothing (NO RESEARCH); it persists what already exists.
|
|
92
|
+
|
|
93
|
+
## Plan mode
|
|
94
|
+
|
|
95
|
+
Classifies the content, resolves `NNN`/destination (`aw next-number --dry-run`) and describes the doc it would write (or the update/perspective it would append) without writing anything.
|
|
96
|
+
|
|
97
|
+
## Resources
|
|
98
|
+
|
|
99
|
+
- Adopted-context doctrine: `../loops/CHASSIS.md` § *Adopted context* · `../SKILL.md` § *Host as producer*
|
|
100
|
+
- Spec-draft procedure: [`spec-new.md`](spec-new.md) · Plan adoption: [`plan-new.md`](plan-new.md) § *Input resolution* (mode 4)
|
|
101
|
+
- Session→docs counterpart: [`../exports/README.md`](../exports/README.md)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Starts or resumes the execution loop (plan-exec-loop) over an existing plan.
|
|
2
|
+
description: Use when a plan is ready to implement — this is where the real work happens: code edits, proposed SQL scripts, created tools. Starts or resumes the execution loop (plan-exec-loop) over an existing plan. Git-safe (proposes commits, never push/--amend/--no-verify). Not for creating or refining the plan (plan-new / plan-refine).
|
|
3
3
|
argument-hint: <docs/plans/PPP-plan-<slug>.md>
|
|
4
4
|
allowed-tools:
|
|
5
5
|
[
|
|
@@ -34,8 +34,9 @@ Starts or resumes `plan-exec-loop` (Layer 2), which executes the real work phase
|
|
|
34
34
|
|
|
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
|
-
- If it creates a tool/utility, the ambient `creating-tools` skill documents it in `docs/tools/` (auto-discovered;
|
|
37
|
+
- If it creates a tool/utility, the ambient `creating-tools` skill documents it in `docs/tools/` (auto-discovered; Workline does not bind it).
|
|
38
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
|
+
- **Probe (PoC) tasks** run as throwaway code in the session folder — never committed; verdict recorded (`CONCLUSIONS`/`DECISION`), failed probes surface to the human (see `../loops/plan-exec-loop/LOOP.md` § *Delta 7*).
|
|
39
40
|
- Proposes commits per source (git-safe: verifies the branch, proposes, never push/--amend/--no-verify).
|
|
40
41
|
- Generates session artifacts (`DECISION`, `SCRIPTS.sql`) under `.workflow/sessions/`.
|
|
41
42
|
- **Never exports** to `docs/scripts`, `docs/manuals`, `docs/diagrams`, `docs/reports` — the `export-*` do that as a separate step.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Starts or resumes the planning loop (plan-new-loop) from a spec. Turns the "what" (spec) into the "how" (plan). Ideal input: an already refined docs/specs/NNN-spec-<slug>.md.
|
|
2
|
+
description: Use when a spec is ready to become an executable plan — not to refine an existing plan (plan-refine) nor execute one (plan-exec). Starts or resumes the planning loop (plan-new-loop) from a spec. Turns the "what" (spec) into the "how" (plan). Ideal input: an already refined docs/specs/NNN-spec-<slug>.md. Also adopts an externally-built plan (host plan mode, hand-written, another agent) as the plan-doc — mode 4 of its input resolution.
|
|
3
3
|
argument-hint: <docs/specs/NNN-spec-<slug>.md | prompt>
|
|
4
4
|
allowed-tools:
|
|
5
5
|
[
|
|
@@ -28,6 +28,9 @@ The skill evaluates `$ARGUMENTS` (specs live in place — `docs/specs/NNN-spec-<
|
|
|
28
28
|
1. **Refined spec** (`docs/specs/NNN-spec-<slug>.md` that **already has** `## Refinement decisions` / `## Q&A traceability`) → ideal. Proceed straight to `plan-new-loop`.
|
|
29
29
|
2. **Draft spec** (same file, but **without** those two sections) → **soft-suggest** running `/w:spec-refine` first; planning over a solid spec produces better plans (the user may proceed anyway).
|
|
30
30
|
3. **prompt** (no spec referenced) → propose using the SPEC flow; **by default launch `/w:spec-new`** with that prompt to create the draft, and continue the natural flow from there.
|
|
31
|
+
4. **External plan content** — the argument/conversation carries an **already-built plan** (host plan mode output, hand-written, another agent's) → **adopt it**. Single pass, **NO RESEARCH**: materialize as `docs/plans/PPP-plan-<slug>.md` (`aw next-number docs/plans`), normalized to the rich-plan schema (`../loops/plan-new-loop/LOOP.md` § *Delta 1*) with only what the source provides. `## Origin` = "adopted from <source>" + attribution (host · model · date). Then offer `/w:plan-refine` (closes schema gaps) or `/w:plan-exec`. Anti-duplicate: a plan whose `## Origin` matches this objective → recommend resuming it, never a second one. Adoption **never regenerates over** an existing plan-doc.
|
|
32
|
+
|
|
33
|
+
> **Mode 3 vs 4:** a prompt that *describes a wish* → SPEC (mode 3); content that *already is a plan* → adopt (mode 4). Doctrine: `../loops/CHASSIS.md` § *Adopted context*.
|
|
31
34
|
|
|
32
35
|
> **Refined vs draft** is distinguished by the **presence** of `## Refinement decisions` / `## Q&A traceability` in the spec, never by the filename (there is no `-refined` anymore).
|
|
33
36
|
|
|
@@ -36,7 +39,7 @@ The skill evaluates `$ARGUMENTS` (specs live in place — `docs/specs/NNN-spec-<
|
|
|
36
39
|
`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
40
|
|
|
38
41
|
1. **Read** `../loops/plan-new-loop/LOOP.md` (inside the installed `w` skill — e.g. `~/.claude/skills/w/loops/…`).
|
|
39
|
-
2. **Follow** its instructions taking `$ARGUMENTS` as input (resolved per the
|
|
42
|
+
2. **Follow** its instructions taking `$ARGUMENTS` as input (resolved per the 4 rules above): it detects state/resume, runs the gap-driven engine, creates and manages sessions, converges and reports. *(Mode 4 — adoption — is single-pass: materialize + offer the next step; no loop is started.)*
|
|
40
43
|
|
|
41
44
|
> Do not try `Skill: plan-new-loop` — it is not registered as a skill. The command **is** the entry; the loop is its body.
|
|
42
45
|
|
|
@@ -48,9 +51,13 @@ The plan is named `docs/plans/PPP-plan-<slug>.md`. `aw next-number docs/plans` r
|
|
|
48
51
|
|
|
49
52
|
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
53
|
|
|
54
|
+
## Risky assumptions → probe (PoC) tasks
|
|
55
|
+
|
|
56
|
+
When the plan rests on a runnable unknown (external connection, SDK, UI behavior), the loop encodes an **early probe task** — or runs an inline probe if the solution itself depends on the answer (see `../loops/plan-new-loop/LOOP.md` § *Delta 5*; doctrine: `../loops/CHASSIS.md` § *Proof of concept*).
|
|
57
|
+
|
|
51
58
|
## Plan mode
|
|
52
59
|
|
|
53
|
-
The skill resolves the input per the
|
|
60
|
+
The skill resolves the input per the 4 rules above and describes the loop actions it would run (mode 4: the plan-doc it would materialize), without starting the iteration or writing files.
|
|
54
61
|
|
|
55
62
|
## Resources
|
|
56
63
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Starts or resumes the plan refinement loop (plan-refine-loop). An auxiliary, NOT mandatory step of the PLAN flow — refines an existing plan in place
|
|
2
|
+
description: Use when an existing plan needs changes before executing — new requirements, scope tweaks — not to generate one (plan-new) nor execute it (plan-exec). Starts or resumes the plan refinement loop (plan-refine-loop). An auxiliary, NOT mandatory step of the PLAN flow — refines an existing plan in place. Input: a docs/plans/PPP-plan-<slug>.md — generated by plan-new, hand-written, or adopted from a host planner (plan-new mode 4 / persist).
|
|
3
3
|
argument-hint: <docs/plans/PPP-plan-<slug>.md>
|
|
4
4
|
allowed-tools:
|
|
5
5
|
[
|
|
@@ -24,12 +24,14 @@ This command does not refine the plan itself: it delegates to `plan-refine-loop`
|
|
|
24
24
|
> 4. **Language** — everything user-facing (questions, option labels, the plan's content) goes in the **user's language**.
|
|
25
25
|
|
|
26
26
|
> **Not mandatory.** `plan-exec` runs **any** plan, refined or not — no gate requires passing through here. Use it only when the plan needs adjustments before executing.
|
|
27
|
+
>
|
|
28
|
+
> **Spec-less plans (hand-written / adopted).** A plan with no source spec is legitimate input. The coherence gate **degrades gracefully**: criteria trace to the plan's own `## Final behavior` / acceptance criteria instead of spec criteria — the "spec criteria uncovered" gap does not apply (see `../loops/plan-refine-loop/LOOP.md`).
|
|
27
29
|
|
|
28
30
|
## Input resolution
|
|
29
31
|
|
|
30
32
|
The skill evaluates `$ARGUMENTS` (plans live in place — `docs/plans/PPP-plan-<slug>.md`; locate via the `docs/plans/PPP-plan-*.md` glob or the exact path):
|
|
31
33
|
|
|
32
|
-
1. **Existing plan** (`docs/plans/PPP-plan-<slug>.md`) → proceed to `plan-refine-loop
|
|
34
|
+
1. **Existing plan** (`docs/plans/PPP-plan-<slug>.md`) → proceed to `plan-refine-loop` — **regardless of provenance**: generated by `plan-new`, hand-written, or adopted from a host planner (existence is the only requirement).
|
|
33
35
|
2. **No plan** (the arg references no plan, or none exists) → **soft-suggest** running `/w:plan-new` first (there is nothing to refine yet); the user decides.
|
|
34
36
|
|
|
35
37
|
## Run the loop
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Use when the user asks for a scoped, direct task — a fix, tweak, chore or small change that warrants no spec or plan (e.g. "fix this bug", "rename X", "tidy up Y"). Starts quick-loop with minimal ceremony; never touches docs/. If the objective exceeds a quick or the task grows, it escalates — to SPEC live (with consent), to PLAN deferred.
|
|
3
3
|
argument-hint: <prompt with the scoped task>
|
|
4
4
|
allowed-tools:
|
|
5
5
|
[
|
|
@@ -33,6 +33,7 @@ For scoped, direct tasks that do not justify going through SPEC or PLAN. Creates
|
|
|
33
33
|
## What the loop does
|
|
34
34
|
|
|
35
35
|
- Edits code in the workspace sources.
|
|
36
|
+
- **Adopts prior context**: analysis/conclusions already established in this conversation (e.g. via a host-native feature) are **input** — seeded into the session with `## Origin` = adopted, never re-derived or re-asked (chassis § *Adopted context*).
|
|
36
37
|
- Minimal session artifacts (lazy DECISION, proposed commit).
|
|
37
38
|
- **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
39
|
- **Never touches `docs/`** and exports nothing.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Generates a specification draft (docs/specs/NNN-spec-<slug>.md) from a prompt, in a single pass. Step 1 of the SPEC flow; starts no loop.
|
|
2
|
+
description: Use when the user wants to capture a NEW requirement, idea or wish as a spec — not to refine an existing draft (that's spec-refine). Generates a specification draft (docs/specs/NNN-spec-<slug>.md) from a prompt, in a single pass. Step 1 of the SPEC flow; starts no loop.
|
|
3
3
|
argument-hint: <prompt with the requirement or idea>
|
|
4
4
|
allowed-tools:
|
|
5
5
|
[
|
|
@@ -34,7 +34,8 @@ Generates `docs/specs/NNN-spec-<slug>.md` in a single pass from the prompt in `$
|
|
|
34
34
|
# Spec NNN — <slug>
|
|
35
35
|
|
|
36
36
|
## Origin (opt.)
|
|
37
|
-
Original prompt / prior doc / reference that originated the spec
|
|
37
|
+
Original prompt / prior doc / reference that originated the spec
|
|
38
|
+
(e.g. "adopted from host conversation" when it captures an analysis already established there).
|
|
38
39
|
|
|
39
40
|
## Requirement
|
|
40
41
|
The what + why (brief). In the user's language.
|
|
@@ -47,9 +48,19 @@ Systems / components / sources involved. Known constraints.
|
|
|
47
48
|
- Out: what is NOT included
|
|
48
49
|
|
|
49
50
|
## Acceptance criteria
|
|
50
|
-
- [ ] verifiable criterion 1 (EARS
|
|
51
|
+
- [ ] verifiable criterion 1 (EARS style recommended; behavioral ones expand in ## Scenarios)
|
|
51
52
|
- [ ] verifiable criterion 2
|
|
52
53
|
|
|
54
|
+
## Scenarios (opt.)
|
|
55
|
+
Behavior made concrete — GIVEN/WHEN/THEN/AND blocks; each traces to ≥1 acceptance criterion.
|
|
56
|
+
|
|
57
|
+
### Scenario: <name>
|
|
58
|
+
GIVEN <precondition>
|
|
59
|
+
AND <precondition>
|
|
60
|
+
WHEN <action>
|
|
61
|
+
THEN <observable outcome>
|
|
62
|
+
AND <outcome>
|
|
63
|
+
|
|
53
64
|
## Assumptions (opt.)
|
|
54
65
|
Assumed facts.
|
|
55
66
|
|
|
@@ -65,11 +76,14 @@ Pending doubts. ← the spec-refine-loop closes them.
|
|
|
65
76
|
- No `Type` field — `plan-new` infers the how.
|
|
66
77
|
- `Scope` always carries `Out` (what stays out).
|
|
67
78
|
- **Acceptance criteria = static testable criteria** (the "what"): `plan-exec` validates them, but progress is tracked in the PLAN (its Tasks), never by ticking these `- [ ]` in the spec; the spec never mutates by execution, only by a re-refine.
|
|
79
|
+
- **Scenarios = behavior made concrete** (uppercase GIVEN/WHEN/THEN/AND): draft them only when the prompt already describes behavior — deriving the rest is spec-refine work, not this command's.
|
|
68
80
|
- If **UI** is involved, mention it in `Requirement`/`Context`; the `## UI spec` is authored in `spec-refine` (via the `ui-design` capability). "UI unspecified" is a first-class refinement gap.
|
|
69
81
|
- 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
82
|
- Equivalent alternative: the user creates the draft by hand. Both paths produce the same `docs/specs/NNN-spec-<slug>.md`.
|
|
71
83
|
|
|
72
84
|
> **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.
|
|
85
|
+
>
|
|
86
|
+
> **Reuse by adoption:** [`/w:persist`](persist.md) (requirement-shaped content) materializes its spec draft with this same procedure, with `## Origin` = "adopted from host conversation" + attribution. Paraphrasing conclusions **already established in this conversation** is still single-pass — adoption is transcription, not investigation (chassis § *Adopted context*).
|
|
73
87
|
|
|
74
88
|
## Plan mode
|
|
75
89
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Starts or resumes the specification refinement loop (spec-refine-loop). Input: docs/specs/NNN-spec-<slug>.md (
|
|
2
|
+
description: Use when a spec draft exists and needs disambiguating or completing before planning (close open questions, sharpen criteria) — not for the first draft (that's spec-new). Starts or resumes the specification refinement loop (spec-refine-loop). Input: docs/specs/NNN-spec-<slug>.md (from spec-new, hand-written, or the quick escalation). Updates it in place.
|
|
3
3
|
argument-hint: <docs/specs/NNN-spec-<slug>.md>
|
|
4
4
|
allowed-tools:
|
|
5
5
|
[
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Read-only workspace dashboard — what got done / what is missing / what was discarded, with dates humanized in the user's language. Backed by `aw status`. Transversal command (not a flow); writes nothing.
|
|
2
|
+
description: Use when the user asks "what's the state", "what got done", or "where are we". Read-only workspace dashboard — what got done / what is missing / what was discarded, with dates humanized in the user's language. Backed by `aw status`. Transversal command (not a flow); writes nothing.
|
|
3
3
|
argument-hint: (no arguments)
|
|
4
4
|
allowed-tools:
|
|
5
5
|
[
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Turns the current folder into an agent-workflow workspace (minimal scaffold — .workflow/sessions + skills.toml + WORKSPACE block + CLI-owned .gitignore; docs/ folders are born on demand). Replaces hub-init + project-init — no project/hub distinction. Run once before any flow; idempotent, re-running reconciles (prunes legacy empty scaffold).
|
|
2
|
+
description: Use when starting Workline in a folder that has no workspace yet. Turns the current folder into an agent-workflow workspace (minimal scaffold — .workflow/sessions + skills.toml + WORKSPACE block + CLI-owned .gitignore; docs/ folders are born on demand). Replaces hub-init + project-init — no project/hub distinction. Run once before any flow; idempotent, re-running reconciles (prunes legacy empty scaffold).
|
|
3
3
|
argument-hint: --source alias:path[:branch] [--proyecto <name>] [--main-branch <branch>] [--dry-run]
|
|
4
4
|
allowed-tools:
|
|
5
5
|
[
|
|
@@ -12,7 +12,7 @@ allowed-tools:
|
|
|
12
12
|
|
|
13
13
|
# workspace-init — workspace bootstrap
|
|
14
14
|
|
|
15
|
-
Runs `aw workspace-init` to turn the current folder into
|
|
15
|
+
Runs `aw workspace-init` to turn the current folder into a Workline workspace. A workspace has **1+ sources** (repos); "standalone" = a single source. There are no project/hub modes — the model is unified.
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
18
|
aw workspace-init --source alias:path[:branch] [--proyecto <name>] [--main-branch <branch>] [--dry-run]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# exports — `export-*` family (Layer 1)
|
|
2
2
|
|
|
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.
|
|
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. *(Host→`docs/` ingestion is a different plane: [`/w:persist`](../commands/persist.md) persists in-conversation work — it reads the conversation, never sessions, and owns `docs/research`.)*
|
|
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
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*).
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: harness
|
|
3
3
|
description: >-
|
|
4
|
-
Harness-agnostic capability layer for
|
|
4
|
+
Harness-agnostic capability layer for Workline. Read-and-follow doc (not
|
|
5
5
|
invocable by name): defines the contract that keeps the tool harness-agnostic
|
|
6
6
|
(Claude Code, Codex, Gemini/Antigravity, OpenCode, Crush, Warp/Oz, generic) without
|
|
7
|
-
giving up each harness's rich capabilities. Catalogs the capabilities
|
|
7
|
+
giving up each harness's rich capabilities. Catalogs the capabilities Workline
|
|
8
8
|
depends on, binds each to the concrete mechanism of every harness (binding matrix),
|
|
9
9
|
and fixes the two principles (capability-not-tool · progressive-enhancement).
|
|
10
10
|
Referenced from SKILL.md (overview) and the loops when they name structured-choice /
|
|
@@ -13,7 +13,7 @@ description: >-
|
|
|
13
13
|
|
|
14
14
|
# harness — harness-agnostic capability layer (cross-cutting)
|
|
15
15
|
|
|
16
|
-
**Read-and-follow** doc (never invoked by name). Here lives the contract that keeps
|
|
16
|
+
**Read-and-follow** doc (never invoked by name). Here lives the contract that keeps Workline **harness-agnostic** (Claude Code, Codex, opencode, Gemini CLI, …) without giving up each harness's rich capabilities. Referenced from `../SKILL.md` (overview) and from the loops when they name a capability (`structured-choice`, `compaction`, …).
|
|
17
17
|
|
|
18
18
|
## The problem
|
|
19
19
|
|
|
@@ -30,7 +30,7 @@ The doctrine (commands + loops + artifacts) describes **what** the AI does, neve
|
|
|
30
30
|
|
|
31
31
|
The capabilities the harness layer depends on, with their universal fallback (what is used when the harness offers nothing better):
|
|
32
32
|
|
|
33
|
-
| Capability | What
|
|
33
|
+
| Capability | What Workline needs | Universal fallback (lowest common) |
|
|
34
34
|
|---|---|---|
|
|
35
35
|
| **command-invocation** | the user triggers a flow by name (`spec-new`, `plan-exec`, …) | the user writes "run the `<cmd>` procedure" and the AI reads its doc |
|
|
36
36
|
| **procedure-loading** | load a loop's/command's doctrine | the AI **reads the `.md`** of the loop and follows it (read-and-follow) |
|
|
@@ -59,7 +59,7 @@ Concrete mechanism per harness (**Jul-2026**, verified against official docs; `~
|
|
|
59
59
|
| **enforcement (deny tool)** | `PreToolUse` → `permissionDecision:deny` / exit 2 | `PreToolUse` (**≈same protocol**) | `BeforeTool` → `decision:deny` / exit 2 | plugin `tool.execute.before` (`throw`) | `allowed_tools` (+ preliminary hooks) | allow/deny lists (**coarse**) | doctrine (git-safe #5) |
|
|
60
60
|
| plugin / dist | `.claude-plugin` + marketplace | `.codex-plugin` + `/plugins` marketplace | Extension `gemini-extension.json` | JS/TS plugin (npm) | MCP + skills + config | Warp Drive | — |
|
|
61
61
|
|
|
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.
|
|
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 — though a host-planner's *output* (the plan it built) is adoptable input (`../commands/plan-new.md` § *Input resolution*, mode 4). **MCP** is universal (each host its file/key). The **guaranteed floor** (last column) runs the full model.
|
|
63
63
|
|
|
64
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
|
|
|
@@ -78,7 +78,7 @@ Concrete mechanism per harness (**Jul-2026**, verified against official docs; `~
|
|
|
78
78
|
|
|
79
79
|
## Distribution (install-time)
|
|
80
80
|
|
|
81
|
-
Proven pattern (Spec Kit, 30+ agents): **one canonical source** + generate/symlink into the per-harness dirs at install (`.claude/`, `.codex/`, `.gemini/`, …).
|
|
81
|
+
Proven pattern (Spec Kit, 30+ agents): **one canonical source** + generate/symlink into the per-harness dirs at install (`.claude/`, `.codex/`, `.gemini/`, …). Workline already does this via `aw self install-skill`. Recommended convention: **canonical `AGENTS.md` + `CLAUDE.md` symlink** (Claude Code does not read `AGENTS.md` natively; the rest do).
|
|
82
82
|
|
|
83
83
|
## Command packaging (harness-specific)
|
|
84
84
|
|