@tacuchi/agent-workflow-cli 20.24.0 → 20.26.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 +34 -11
- package/dist/application/dev-only-services.js +17 -14
- package/dist/application/dev-only-services.js.map +1 -1
- package/dist/application/mcp-host-reader.js +3 -1
- package/dist/application/mcp-host-reader.js.map +1 -1
- package/dist/application/mcp-host-writer.js +86 -41
- package/dist/application/mcp-host-writer.js.map +1 -1
- package/dist/application/plugin-doctor/hooks.js +7 -1
- package/dist/application/plugin-doctor/hooks.js.map +1 -1
- package/dist/application/self/bootstrap.js +30 -16
- package/dist/application/self/bootstrap.js.map +1 -1
- package/dist/application/self/clean-legacy.js +5 -0
- package/dist/application/self/clean-legacy.js.map +1 -1
- package/dist/application/self/detect-hosts.js +31 -45
- package/dist/application/self/detect-hosts.js.map +1 -1
- package/dist/application/self/doctor-self.js +7 -2
- package/dist/application/self/doctor-self.js.map +1 -1
- package/dist/application/self/hooks-toml.js +232 -0
- package/dist/application/self/hooks-toml.js.map +1 -0
- package/dist/application/self/host-states.js +290 -0
- package/dist/application/self/host-states.js.map +1 -0
- package/dist/application/self/install-hooks.js +98 -4
- package/dist/application/self/install-hooks.js.map +1 -1
- package/dist/application/self/install-skill.js +53 -24
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/install-targets.js +23 -0
- package/dist/application/self/install-targets.js.map +1 -1
- package/dist/application/self/mcp-config.js +13 -19
- package/dist/application/self/mcp-config.js.map +1 -1
- package/dist/application/self/skills-manager.js +9 -0
- package/dist/application/self/skills-manager.js.map +1 -1
- package/dist/application/self/uninstall.js +162 -26
- package/dist/application/self/uninstall.js.map +1 -1
- package/dist/cli/commands/dev-only.js +4 -1
- package/dist/cli/commands/dev-only.js.map +1 -1
- package/dist/cli/commands/mcp.js +16 -8
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/tui/components/host-admin-section.js +69 -60
- package/dist/cli/tui/components/host-admin-section.js.map +1 -1
- package/dist/cli/tui/data/workflow-content.js +6 -0
- package/dist/cli/tui/data/workflow-content.js.map +1 -1
- package/dist/cli/tui/hosts.js +39 -17
- package/dist/cli/tui/hosts.js.map +1 -1
- package/dist/cli/tui/tabs/config-tab.js +3 -3
- package/dist/cli/tui/tabs/config-tab.js.map +1 -1
- package/dist/cli/tui/tabs/mcp-tab-helpers.js +7 -1
- package/dist/cli/tui/tabs/mcp-tab-helpers.js.map +1 -1
- package/dist/cli/tui/tabs/mcp-tab.js +32 -10
- package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.js +13 -4
- package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
- package/dist/cli/tui/tabs/status-tab.js +11 -17
- package/dist/cli/tui/tabs/status-tab.js.map +1 -1
- package/dist/cli/tui/tabs/workflow-tab.js +7 -3
- package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
- package/dist/cli/tui/tui-prefs.js +7 -1
- package/dist/cli/tui/tui-prefs.js.map +1 -1
- package/dist/domain/harnesses.js +129 -0
- package/dist/domain/harnesses.js.map +1 -1
- package/dist/domain/host-verification.js +20 -0
- package/dist/domain/host-verification.js.map +1 -0
- package/package.json +3 -2
- package/skills/w/SKILL.md +3 -3
- package/skills/w/commands/README.md +2 -0
- package/skills/w/commands/export-diagrams.md +1 -1
- package/skills/w/commands/export-manuals.md +1 -1
- package/skills/w/commands/export-reports.md +1 -1
- package/skills/w/commands/export-scripts.md +1 -1
- package/skills/w/commands/fix-git.md +1 -1
- package/skills/w/commands/generate-launch.md +2 -2
- package/skills/w/commands/persist.md +2 -2
- package/skills/w/commands/plan-exec.md +2 -2
- package/skills/w/commands/plan-new.md +2 -2
- package/skills/w/commands/plan-refine.md +2 -2
- package/skills/w/commands/quick.md +2 -2
- package/skills/w/commands/resume.md +2 -2
- package/skills/w/commands/spec-new.md +2 -2
- package/skills/w/commands/spec-refine.md +2 -2
- package/skills/w/commands/status.md +1 -1
- package/skills/w/commands/workspace-init.md +1 -1
- package/skills/w/harness/HARNESS.md +32 -21
- package/skills/w/loops/CHASSIS.md +7 -6
package/dist/domain/harnesses.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
import { HOST_VERIFICATIONS } from "./host-verification.js";
|
|
1
2
|
export const HARNESSES = [
|
|
2
3
|
{
|
|
3
4
|
id: "claude-code",
|
|
5
|
+
label: "Claude Code",
|
|
6
|
+
glyph: "C",
|
|
7
|
+
support: { tier: "official" },
|
|
8
|
+
runtime: { bins: ["claude"], versionArgs: ["--version"] },
|
|
9
|
+
configDir: { kind: "dir", path: "~/.claude" },
|
|
10
|
+
hooks: { mechanism: "~/.claude/settings.json → hooks{}", managed: true },
|
|
4
11
|
envMarkers: ["CLAUDECODE", "CLAUDE_PLUGIN_ROOT", "CLAUDE_AGENT_ID"],
|
|
5
12
|
mcpHostId: "claude",
|
|
6
13
|
globalMcpPaths: {
|
|
@@ -16,6 +23,15 @@ export const HARNESSES = [
|
|
|
16
23
|
},
|
|
17
24
|
{
|
|
18
25
|
id: "codex",
|
|
26
|
+
label: "Codex",
|
|
27
|
+
glyph: "X",
|
|
28
|
+
support: { tier: "official" },
|
|
29
|
+
runtime: { bins: ["codex"], versionArgs: ["--version"] },
|
|
30
|
+
configDir: { kind: "dir", path: "~/.codex" },
|
|
31
|
+
// Codex HAS hooks, in a different format (TOML) with no settled user-level
|
|
32
|
+
// syntax — declared, not managed: the surfaces say "available, not armed"
|
|
33
|
+
// instead of pretending the host has none.
|
|
34
|
+
hooks: { mechanism: "~/.codex/config.toml (plugin hooks/hooks.json)", managed: false },
|
|
19
35
|
envMarkers: ["CODEX_HOME", "CODEX_CLI", "CODEX_RUNTIME"],
|
|
20
36
|
mcpHostId: "codex",
|
|
21
37
|
globalMcpPaths: {
|
|
@@ -40,6 +56,17 @@ export const HARNESSES = [
|
|
|
40
56
|
// Keep oz before warp in the array so first-match detection picks oz first
|
|
41
57
|
// when both OZ_RUN_ID and TERM_PROGRAM=WarpTerminal are set.
|
|
42
58
|
id: "oz",
|
|
59
|
+
label: "Oz",
|
|
60
|
+
glyph: "Z",
|
|
61
|
+
support: { tier: "best-effort", unstableSurface: true },
|
|
62
|
+
// Oz ships inside Warp.app (…/Contents/Resources/bin/oz) and Warp puts that
|
|
63
|
+
// dir on PATH — so the binary IS probe-able even though ~/.oz never exists.
|
|
64
|
+
runtime: { bins: ["oz"], versionArgs: ["--version"] },
|
|
65
|
+
configDir: {
|
|
66
|
+
kind: "none",
|
|
67
|
+
reason: "Oz runs inside Warp's environment and keeps no config dir of its own",
|
|
68
|
+
},
|
|
69
|
+
hooks: null, // DEC-W4: no hook system.
|
|
43
70
|
envMarkers: ["OZ_RUN_ID"],
|
|
44
71
|
mcpHostId: null, // Oz does not write a config file; emits JSON for --mcp flag
|
|
45
72
|
pluginManifest: null,
|
|
@@ -49,6 +76,14 @@ export const HARNESSES = [
|
|
|
49
76
|
},
|
|
50
77
|
{
|
|
51
78
|
id: "warp",
|
|
79
|
+
label: "Warp Terminal",
|
|
80
|
+
glyph: "W",
|
|
81
|
+
support: { tier: "official" },
|
|
82
|
+
// No `warp` CLI exists: it is a GUI terminal. Runtime availability is
|
|
83
|
+
// therefore not probe-able — the detection reports that, it does not guess.
|
|
84
|
+
runtime: { bins: [], versionArgs: [] },
|
|
85
|
+
configDir: { kind: "mcp-parent" },
|
|
86
|
+
hooks: null, // DEC-W4: no hook system.
|
|
52
87
|
envMarkers: ["WARP_IS_LOCAL_SHELL_SESSION"],
|
|
53
88
|
termProgramMatch: "WarpTerminal",
|
|
54
89
|
mcpHostId: "warp",
|
|
@@ -81,6 +116,14 @@ export const HARNESSES = [
|
|
|
81
116
|
// ANTIGRAVITY_* markers are the env vars agy exports to subprocesses.
|
|
82
117
|
// MCP in settings.json (mcpServers, Claude-compatible shape).
|
|
83
118
|
id: "gemini",
|
|
119
|
+
label: "Gemini CLI / Antigravity",
|
|
120
|
+
glyph: "G",
|
|
121
|
+
support: { tier: "official" },
|
|
122
|
+
// `agy` is the live binary; `gemini` is the deprecated CLI that shares
|
|
123
|
+
// ~/.gemini. Probed in that order so the successor wins.
|
|
124
|
+
runtime: { bins: ["agy", "gemini"], versionArgs: ["--version"] },
|
|
125
|
+
configDir: { kind: "dir", path: "~/.gemini" },
|
|
126
|
+
hooks: { mechanism: "extension-bundled (BeforeTool)", managed: false },
|
|
84
127
|
envMarkers: [
|
|
85
128
|
"GEMINI_CLI",
|
|
86
129
|
"GEMINI_SANDBOX",
|
|
@@ -106,6 +149,12 @@ export const HARNESSES = [
|
|
|
106
149
|
// (type "local", command as array, `environment`). Reads .claude/skills and
|
|
107
150
|
// .agents/skills directly. Enforcement via JS plugins (tool.execute.before) — Phase 2.
|
|
108
151
|
id: "opencode",
|
|
152
|
+
label: "OpenCode",
|
|
153
|
+
glyph: "O",
|
|
154
|
+
support: { tier: "best-effort" },
|
|
155
|
+
runtime: { bins: ["opencode"], versionArgs: ["--version"] },
|
|
156
|
+
configDir: { kind: "mcp-parent" },
|
|
157
|
+
hooks: { mechanism: "JS/TS plugins (tool.execute.before)", managed: false },
|
|
109
158
|
envMarkers: ["OPENCODE", "OPENCODE_BIN", "OPENCODE_CONFIG"],
|
|
110
159
|
mcpHostId: "opencode",
|
|
111
160
|
globalMcpPaths: {
|
|
@@ -126,6 +175,12 @@ export const HARNESSES = [
|
|
|
126
175
|
// Global config verified 2026-07 (README charmbracelet/crush): Unix XDG,
|
|
127
176
|
// Windows %LOCALAPPDATA%\crush\crush.json (override CRUSH_GLOBAL_CONFIG).
|
|
128
177
|
id: "crush",
|
|
178
|
+
label: "Crush",
|
|
179
|
+
glyph: "R",
|
|
180
|
+
support: { tier: "best-effort", unstableSurface: true },
|
|
181
|
+
runtime: { bins: ["crush"], versionArgs: ["--version"] },
|
|
182
|
+
configDir: { kind: "mcp-parent" },
|
|
183
|
+
hooks: { mechanism: "preliminary; enforcement via allowed_tools allowlist", managed: false },
|
|
129
184
|
envMarkers: ["CRUSH", "CRUSH_CONFIG"],
|
|
130
185
|
mcpHostId: "crush",
|
|
131
186
|
globalMcpPaths: {
|
|
@@ -148,7 +203,81 @@ export const HARNESSES = [
|
|
|
148
203
|
],
|
|
149
204
|
installTarget: "crush",
|
|
150
205
|
},
|
|
206
|
+
{
|
|
207
|
+
// Kimi Code (MoonshotAI) — successor of the Python `kimi-cli`, shipped as a
|
|
208
|
+
// single Node SEA binary. Everything below was verified 2026-07-29 against
|
|
209
|
+
// the shipped v0.29.2 binary (its JS is readable) plus live probes:
|
|
210
|
+
// · skills, 4 tiers: user `<KIMI_CODE_HOME>/skills` + `~/.agents/skills`,
|
|
211
|
+
// project `.kimi-code/skills` + `.agents/skills`. Probe: a skill dropped
|
|
212
|
+
// in ~/.agents/skills was listed AND invoked as `/skill:<name>`.
|
|
213
|
+
// · hooks in `[[hooks]]` of the USER-GLOBAL config.toml only — there is no
|
|
214
|
+
// project-level config.toml (probe: a project hook never fired). Schema
|
|
215
|
+
// is event/matcher/command/timeout, strict — NOT Claude's shape.
|
|
216
|
+
// · MCP `mcp.json` with the Claude-compatible `mcpServers` wrapper: global
|
|
217
|
+
// `~/.kimi-code/mcp.json`, project `<cwd>/.kimi-code/mcp.json`.
|
|
218
|
+
// · NO env markers reach subprocesses (probe: `env | grep ^KIMI` is empty
|
|
219
|
+
// inside its own shell tool), hence the empty envMarkers and the binary
|
|
220
|
+
// probe below — the installer lives in ~/.kimi-code/bin, a dir only
|
|
221
|
+
// interactive shells put on PATH.
|
|
222
|
+
id: "kimi",
|
|
223
|
+
label: "Kimi Code",
|
|
224
|
+
glyph: "K",
|
|
225
|
+
support: { tier: "official", unstableSurface: true },
|
|
226
|
+
runtime: {
|
|
227
|
+
bins: ["kimi"],
|
|
228
|
+
fallbackBinPaths: ["~/.kimi-code/bin/kimi"],
|
|
229
|
+
versionArgs: ["--version"],
|
|
230
|
+
},
|
|
231
|
+
configDir: { kind: "dir", path: "~/.kimi-code" },
|
|
232
|
+
hooks: { mechanism: "~/.kimi-code/config.toml → [[hooks]]", managed: true },
|
|
233
|
+
envMarkers: [],
|
|
234
|
+
mcpHostId: "kimi",
|
|
235
|
+
globalMcpPaths: {
|
|
236
|
+
darwin: "~/.kimi-code/mcp.json",
|
|
237
|
+
linux: "~/.kimi-code/mcp.json",
|
|
238
|
+
win32: "~/.kimi-code/mcp.json",
|
|
239
|
+
},
|
|
240
|
+
projectMcpPath: ".kimi-code/mcp.json",
|
|
241
|
+
pluginManifest: null, // Kimi has plugins, but no manifest convention we ship.
|
|
242
|
+
pluginHooksDir: null, // Its hooks live in config.toml, not in a plugin dir.
|
|
243
|
+
skillsDirs: [".kimi-code/skills", ".agents/skills"],
|
|
244
|
+
installTarget: "kimi",
|
|
245
|
+
},
|
|
246
|
+
];
|
|
247
|
+
/** Hosts that auto-discover skills from the open-standard `~/.agents/skills`. */
|
|
248
|
+
function hostsReading(dir) {
|
|
249
|
+
return HARNESSES.filter((h) => h.skillsDirs.includes(dir)).map((h) => h.id);
|
|
250
|
+
}
|
|
251
|
+
export const SHARED_SKILL_DESTINATIONS = [
|
|
252
|
+
{
|
|
253
|
+
id: "agents",
|
|
254
|
+
label: "Agents (shared skills dir)",
|
|
255
|
+
glyph: "A",
|
|
256
|
+
dir: "~/.agents/skills",
|
|
257
|
+
readBy: hostsReading(".agents/skills"),
|
|
258
|
+
},
|
|
151
259
|
];
|
|
260
|
+
/** One install target per host, in catalog order. THE host set. */
|
|
261
|
+
export const HOST_INSTALL_TARGETS = HARNESSES.map((h) => h.installTarget);
|
|
262
|
+
/**
|
|
263
|
+
* Hosts that write an MCP config FILE. Oz is out on purpose: it takes servers
|
|
264
|
+
* through a `--mcp` launch flag, so there is nothing to write for it.
|
|
265
|
+
*/
|
|
266
|
+
export const MCP_FILE_HOSTS = HARNESSES.filter((h) => h.mcpHostId !== null).map((h) => h.mcpHostId);
|
|
267
|
+
/** Install targets that are shared destinations, not hosts. */
|
|
268
|
+
export const SHARED_INSTALL_TARGETS = SHARED_SKILL_DESTINATIONS.map((d) => d.id);
|
|
269
|
+
/** The HarnessSpec owning an install target, or null for a shared destination. */
|
|
270
|
+
export function harnessByInstallTarget(target) {
|
|
271
|
+
return HARNESSES.find((h) => h.installTarget === target) ?? null;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* What a verification RUN proved about this host, or null when no run ever
|
|
275
|
+
* covered it. Read it instead of asserting support from the tier alone: the
|
|
276
|
+
* tier is what we promise, this is what was actually checked.
|
|
277
|
+
*/
|
|
278
|
+
export function verificationFor(id) {
|
|
279
|
+
return HOST_VERIFICATIONS[id] ?? null;
|
|
280
|
+
}
|
|
152
281
|
/**
|
|
153
282
|
* Resolves the global MCP config path template for a harness spec. Does NOT
|
|
154
283
|
* expand `~` nor %LOCALAPPDATA% — expansion is the caller's job (see
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harnesses.js","sourceRoot":"","sources":["../../src/domain/harnesses.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"harnesses.js","sourceRoot":"","sources":["../../src/domain/harnesses.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// VERIFICATION LEDGER — written by `npm run smoke:hosts`, never by hand.
|
|
2
|
+
//
|
|
3
|
+
// It is deliberately a separate module from the catalog: `harnesses.ts` is
|
|
4
|
+
// hand-authored (ids, dirs, tiers — what we DECIDE), this file records what a
|
|
5
|
+
// run actually PROVED. Keeping the two apart is what lets every projection say
|
|
6
|
+
// "verified against X on date Y" without a surface ever claiming a verification
|
|
7
|
+
// that no run backs (spec 010, criterion 10).
|
|
8
|
+
//
|
|
9
|
+
// A host absent from this record has simply never been verified by a run.
|
|
10
|
+
export const HOST_VERIFICATIONS = {
|
|
11
|
+
"claude-code": { version: "2.1.220", at: "2026-07-29", depth: "install" },
|
|
12
|
+
codex: { version: "0.145.0", at: "2026-07-29", depth: "install" },
|
|
13
|
+
oz: { version: "0.2026.07.22.09.01.stable_01", at: "2026-07-29", depth: "invocation" },
|
|
14
|
+
warp: { version: null, at: "2026-07-29", depth: "install" },
|
|
15
|
+
gemini: { version: "1.0.16", at: "2026-07-29", depth: "install" },
|
|
16
|
+
opencode: { version: "1.18.0", at: "2026-07-29", depth: "invocation" },
|
|
17
|
+
crush: { version: "0.87.0", at: "2026-07-29", depth: "invocation" },
|
|
18
|
+
kimi: { version: "0.29.2", at: "2026-07-29", depth: "install" },
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=host-verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-verification.js","sourceRoot":"","sources":["../../src/domain/host-verification.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,8CAA8C;AAC9C,EAAE;AACF,0EAA0E;AAiB1E,MAAM,CAAC,MAAM,kBAAkB,GAAoD;IACjF,aAAa,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE;IACzE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE;IACjE,EAAE,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;IACtF,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE;IAC3D,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE;IACjE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;IACtE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;IACnE,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE;CAChE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tacuchi/agent-workflow-cli",
|
|
3
|
-
"version": "20.
|
|
3
|
+
"version": "20.26.0",
|
|
4
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": {
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"lint:fix": "biome check --write .",
|
|
19
19
|
"format": "biome format --write .",
|
|
20
20
|
"typecheck": "tsc --noEmit",
|
|
21
|
-
"prepublishOnly": "npm run lint && npm run typecheck && npm run test && npm run build"
|
|
21
|
+
"prepublishOnly": "npm run lint && npm run typecheck && npm run test && npm run build",
|
|
22
|
+
"smoke:hosts": "npm run build && node scripts/smoke-hosts.mjs"
|
|
22
23
|
},
|
|
23
24
|
"keywords": [
|
|
24
25
|
"cli",
|
package/skills/w/SKILL.md
CHANGED
|
@@ -174,11 +174,11 @@ The **loop chassis** is NOT bound: it is the common engine of the 5 loops ([`loo
|
|
|
174
174
|
|
|
175
175
|
### Harness (harness-agnostic)
|
|
176
176
|
|
|
177
|
-
The doctrine names abstract **capabilities**, never a concrete harness tool. A single doc —`harness/HARNESS.md`— binds each capability to each harness's mechanism (Claude Code, Codex, Gemini/Antigravity, OpenCode, Crush, Warp, generic). Two principles: **capability-not-tool** (loops/commands reference the capability by name) and **progressive-enhancement** (use the harness's richest mechanism; degrade to a universal fallback when it does not exist).
|
|
177
|
+
The doctrine names abstract **capabilities**, never a concrete harness tool. A single doc —`harness/HARNESS.md`— binds each capability to each harness's mechanism (Claude Code, Codex, Kimi Code, Gemini/Antigravity, OpenCode, Crush, Warp/Oz, generic). Two principles: **capability-not-tool** (loops/commands reference the capability by name) and **progressive-enhancement** (use the harness's richest mechanism; degrade to a universal fallback when it does not exist).
|
|
178
178
|
|
|
179
179
|
Key capabilities:
|
|
180
180
|
|
|
181
|
-
- **structured-choice** — ask the human ≤3 content questions + 1 `flow` control.
|
|
181
|
+
- **structured-choice** — ask the human ≤3 content questions + 1 `flow` control; each option has a short label and a one-sentence functional explanation/example. Use the native binding in `HARNESS.md` when the current client exposes it; otherwise use labeled markdown with `Aceptar recomendaciones`, never positional codes.
|
|
182
182
|
- **compaction** — shrink the context without losing the thread; its context-pressure signal feeds the loops' self-regulation (chassis § *Compact / resume*). Claude Code: `/compact`. Fallback: `CHECKPOINT` + resume.
|
|
183
183
|
- **command-invocation** · **procedure-loading** · **subagent-dispatch** (opt.) · **persistent-context** · **external-data** (MCP) · **dry-run/preview**.
|
|
184
184
|
|
|
@@ -193,7 +193,7 @@ One language per plane — never mix them:
|
|
|
193
193
|
| Doctrine (this bundle: chassis, loops, commands, roles, exports, harness) | **English** |
|
|
194
194
|
| **Section headings** of artifacts and docs (`## Requirement`, `## Completed`, …) | **English** (parse contract) |
|
|
195
195
|
| Everything **user-facing**: structured-choice questions, reports, dashboards, the **content** the AI writes into artifacts and `docs/` deliverables, commit messages | **the user's language** (this product: Spanish) |
|
|
196
|
-
| Literal option labels (`Compactar`, `Cerrar`, `Guardar plan`, …) | canonical product strings — use them **verbatim** |
|
|
196
|
+
| Literal option labels (`Continuar`, `Compactar`, `Cerrar`, `Aceptar recomendaciones`, `Guardar plan`, …) | canonical product strings — use them **verbatim** |
|
|
197
197
|
| Domain terms (class/route/table names, e.g. the QTC fleet) | the domain's ubiquitous language (Spanish) — never translated |
|
|
198
198
|
|
|
199
199
|
### The 6 hard invariants
|
|
@@ -45,3 +45,5 @@ Every `<command>.md` in this folder uses this frontmatter + body structure — t
|
|
|
45
45
|
| `argument-hint:` | Argument signature for the user |
|
|
46
46
|
| `allowed-tools:` | YAML list (typically `Bash`/`Read`/`Write`/`Edit`). Loops/exports are **read-and-followed**, not invoked with `Skill:` — so `Skill` is **not** in `allowed-tools`. |
|
|
47
47
|
| Body | 1-3 orienting lines, then the invocation: **read-and-follow** the sibling loop/export doc (`LOOP.md` / `EXPORT.md`), or call the `aw` CLI; then `## Plan mode`, `## Resources` |
|
|
48
|
+
|
|
49
|
+
Every `aw context-plan` call pins `--root "${CLAUDE_PLUGIN_ROOT}/skills/w"`. Claude expands that official plugin placeholder in command content; `aw self install-skill` replaces it with the absolute installed bundle path in native and synthesized wrappers. A receipt therefore describes the same tree the host command reads, even when the globally installed CLI is a different version.
|
|
@@ -18,6 +18,6 @@ allowed-tools: ["Bash", "Read"]
|
|
|
18
18
|
|
|
19
19
|
## More context
|
|
20
20
|
|
|
21
|
-
`aw context-plan --command export-diagrams --signal <s
|
|
21
|
+
`aw context-plan --command export-diagrams --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists:
|
|
22
22
|
|
|
23
23
|
- `authoring` — the notation or the `--engine` choice is not obvious from the material → [`../exports/export-diagrams/EXPORT.md`](../exports/export-diagrams/EXPORT.md), no longer loaded on the normal path
|
|
@@ -20,6 +20,6 @@ allowed-tools: ["Bash", "Read"]
|
|
|
20
20
|
|
|
21
21
|
## More context
|
|
22
22
|
|
|
23
|
-
`aw context-plan --command export-manuals --signal <s
|
|
23
|
+
`aw context-plan --command export-manuals --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists:
|
|
24
24
|
|
|
25
25
|
- `authoring` — the manual's structure or audience is not obvious from the material → [`../exports/export-manuals/EXPORT.md`](../exports/export-manuals/EXPORT.md), no longer loaded on the normal path
|
|
@@ -19,6 +19,6 @@ allowed-tools: ["Bash", "Read"]
|
|
|
19
19
|
|
|
20
20
|
## More context
|
|
21
21
|
|
|
22
|
-
`aw context-plan --command export-reports --signal <s
|
|
22
|
+
`aw context-plan --command export-reports --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists:
|
|
23
23
|
|
|
24
24
|
- `authoring` — the report's structure or audience is not obvious from the material → [`../exports/export-reports/EXPORT.md`](../exports/export-reports/EXPORT.md), no longer loaded on the normal path
|
|
@@ -19,6 +19,6 @@ allowed-tools: ["Bash", "Read"]
|
|
|
19
19
|
|
|
20
20
|
## More context
|
|
21
21
|
|
|
22
|
-
`aw context-plan --command export-scripts --signal <s
|
|
22
|
+
`aw context-plan --command export-scripts --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists:
|
|
23
23
|
|
|
24
24
|
- `authoring` — the rollback derivation or the ordering is not obvious from the material → [`../exports/export-scripts/EXPORT.md`](../exports/export-scripts/EXPORT.md), no longer loaded on the normal path
|
|
@@ -38,4 +38,4 @@ No loop, no session, never writes `docs/`. Any git repo, workspace or not. Outpu
|
|
|
38
38
|
|
|
39
39
|
## More context
|
|
40
40
|
|
|
41
|
-
`aw context-plan --command fix-git --signal <s
|
|
41
|
+
`aw context-plan --command fix-git --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` lists the case-specific documents to read.
|
|
@@ -15,7 +15,7 @@ Single-pass, no loop, no session, **never writes `docs/`**. **Transversal** (no
|
|
|
15
15
|
## Run
|
|
16
16
|
|
|
17
17
|
1. **Detect** — `aw generate-launch --dry-run [--source <alias>]`. Per source: `stack`, `launchable`, the detected `run` and `mode` (`interactive` | `server`).
|
|
18
|
-
2. **Confirm (structured-choice)** — per **launchable** source; recommended = the detected mode.
|
|
18
|
+
2. **Confirm (structured-choice)** — per **launchable** source; recommended = the detected mode. Use the canonical [option shape](../loops/CHASSIS.md#structured-choice-design--batching) and [per-host binding](../harness/HARNESS.md#harness-binding-matrix).
|
|
19
19
|
- **Interactive** — foreground, owns a real TTY. TUIs / REPLs / interactive CLIs.
|
|
20
20
|
- **Server** — background + log window (close-to-stop). Dev servers, services.
|
|
21
21
|
- **Custom command** — the user gives the exact run command (optional).
|
|
@@ -26,6 +26,6 @@ Single-pass, no loop, no session, **never writes `docs/`**. **Transversal** (no
|
|
|
26
26
|
|
|
27
27
|
## More context
|
|
28
28
|
|
|
29
|
-
`aw context-plan --command generate-launch --signal <s
|
|
29
|
+
`aw context-plan --command generate-launch --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists:
|
|
30
30
|
|
|
31
31
|
- `detection` — the CLI's automatic detection of how to run the project was wrong or ambiguous → [`../modules/LAUNCH-DETECTION.md`](../modules/LAUNCH-DETECTION.md)
|
|
@@ -17,7 +17,7 @@ Captures **work already produced in this conversation** — with or without host
|
|
|
17
17
|
> 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.
|
|
18
18
|
> 2. **You classify and write; the CLI decides everything else** — inventory, anti-duplicate, numbering, destination, authorization and the write itself belong to `aw persist`. Never write into `docs/` with a file tool here; `Write`/`Edit` are deliberately not in `allowed-tools`.
|
|
19
19
|
> 3. **Never invent the number** — the `NNN` you put in the path is consultative; `apply` reassigns it inside the lock. Do not renumber it.
|
|
20
|
-
> 4. **Confirm before writing** — classification and destination go through **structured-choice
|
|
20
|
+
> 4. **Confirm before writing** — classification and destination go through **structured-choice** (canonical [option shape](../loops/CHASSIS.md#structured-choice-design--batching) + [per-host binding](../harness/HARNESS.md#harness-binding-matrix)); `apply` refuses without the digest `validate` returned. **Never creates sessions** (sessions are loop-created only).
|
|
21
21
|
> 5. **Language** — headings in English (parse contract); content in the **user's language**.
|
|
22
22
|
|
|
23
23
|
## Input
|
|
@@ -42,4 +42,4 @@ Requires a **workspace** (`docs/` is the managed surface). Without one → degra
|
|
|
42
42
|
|
|
43
43
|
## More context
|
|
44
44
|
|
|
45
|
-
`aw context-plan --command persist --signal classification` returns the routing table — which shape goes to `docs/research/`, which becomes a spec draft, which is a plan adoption — plus the anti-duplicate rule: [`../modules/PERSIST-ROUTING.md`](../modules/PERSIST-ROUTING.md). Read exactly what it lists.
|
|
45
|
+
`aw context-plan --command persist --signal classification --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the routing table — which shape goes to `docs/research/`, which becomes a spec draft, which is a plan adoption — plus the anti-duplicate rule: [`../modules/PERSIST-ROUTING.md`](../modules/PERSIST-ROUTING.md). Read exactly what it lists.
|
|
@@ -23,7 +23,7 @@ Starts or resumes `plan-exec-loop` (Layer 2), which executes the real work phase
|
|
|
23
23
|
|
|
24
24
|
## Run the loop
|
|
25
25
|
|
|
26
|
-
1. `aw context-plan --command plan-exec` — read exactly the documents it lists, in order.
|
|
26
|
+
1. `aw context-plan --command plan-exec --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` — read exactly the documents it lists, in order.
|
|
27
27
|
2. Follow the loop manual end to end, taking `$ARGUMENTS` as input: it checks executability on entry, executes phase by phase (git-safe, DB scripts-only), keeps the plan alive and reports.
|
|
28
28
|
|
|
29
29
|
> `plan-exec-loop` is **not** a skill invocable by name — it is this command's operating manual. The command **is** the entry; the loop is its body. It is **resumable**: an existing CHECKPOINT continues from there.
|
|
@@ -35,7 +35,7 @@ Starts or resumes `plan-exec-loop` (Layer 2), which executes the real work phase
|
|
|
35
35
|
|
|
36
36
|
## More context
|
|
37
37
|
|
|
38
|
-
`aw context-plan --command plan-exec --signal <s
|
|
38
|
+
`aw context-plan --command plan-exec --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists:
|
|
39
39
|
|
|
40
40
|
- `db` — the plan touches a database → [`../modules/EXEC-DB-POLICY.md`](../modules/EXEC-DB-POLICY.md)
|
|
41
41
|
- `probe` — a task is a PoC → [`../modules/EXEC-PROBE-TASKS.md`](../modules/EXEC-PROBE-TASKS.md)
|
|
@@ -23,7 +23,7 @@ SPEC → PLAN bridge. Turns the "what" (refined spec) into the "how" (plan). Del
|
|
|
23
23
|
|
|
24
24
|
## Run the loop
|
|
25
25
|
|
|
26
|
-
1. `aw context-plan --command plan-new` — read exactly the documents it lists, in order.
|
|
26
|
+
1. `aw context-plan --command plan-new --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` — read exactly the documents it lists, in order.
|
|
27
27
|
2. Follow the loop manual end to end, taking `$ARGUMENTS` as input (resolved per the module below): it detects state/resume, runs the gap-driven engine, manages sessions, converges and reports.
|
|
28
28
|
|
|
29
29
|
> `plan-new-loop` is **not** a skill invocable by name — it is this command's operating manual. The command **is** the entry; the loop is its body.
|
|
@@ -34,7 +34,7 @@ The plan is born with `### Fn` phases that each leave a **verifiable state of th
|
|
|
34
34
|
|
|
35
35
|
## More context
|
|
36
36
|
|
|
37
|
-
`aw context-plan --command plan-new --signal <s
|
|
37
|
+
`aw context-plan --command plan-new --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists:
|
|
38
38
|
|
|
39
39
|
- `input` — the argument is not plainly a `ready-for-plan` spec → [`../modules/PLAN-INPUT.md`](../modules/PLAN-INPUT.md)
|
|
40
40
|
- `split` — the spec may need more than one plan → [`../modules/PLAN-SPLIT-GATE.md`](../modules/PLAN-SPLIT-GATE.md)
|
|
@@ -23,7 +23,7 @@ allowed-tools:
|
|
|
23
23
|
|
|
24
24
|
## Run the loop
|
|
25
25
|
|
|
26
|
-
1. `aw context-plan --command plan-refine` — read exactly the documents it lists, in order.
|
|
26
|
+
1. `aw context-plan --command plan-refine --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` — read exactly the documents it lists, in order.
|
|
27
27
|
2. Follow the loop manual end to end, taking `$ARGUMENTS` as input: it detects state/resume, runs the gap-driven engine, manages sessions, converges and reports.
|
|
28
28
|
|
|
29
29
|
> `plan-refine-loop` is **not** a skill invocable by name — it is this command's operating manual. The command **is** the entry; the loop is its body.
|
|
@@ -32,7 +32,7 @@ allowed-tools:
|
|
|
32
32
|
|
|
33
33
|
## More context
|
|
34
34
|
|
|
35
|
-
`aw context-plan --command plan-refine --signal <s
|
|
35
|
+
`aw context-plan --command plan-refine --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists:
|
|
36
36
|
|
|
37
37
|
- `input` — where this plan came from, and what a plan returned by `plan-exec` means → [`../modules/PLAN-INPUT.md`](../modules/PLAN-INPUT.md)
|
|
38
38
|
- `resume` — a prior refinement of this plan may exist → [`../modules/PLAN-REFINE-KEYS.md`](../modules/PLAN-REFINE-KEYS.md)
|
|
@@ -23,7 +23,7 @@ Delegates to `quick-loop` (Layer 2). Creates a light session (traceability + res
|
|
|
23
23
|
|
|
24
24
|
## Run the loop
|
|
25
25
|
|
|
26
|
-
1. `aw context-plan --command quick` — read exactly the documents it lists, in order.
|
|
26
|
+
1. `aw context-plan --command quick --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` — read exactly the documents it lists, in order.
|
|
27
27
|
2. Follow the loop manual end to end, taking `$ARGUMENTS` as the task: it evaluates the size gate, creates the light session, works with minimal ceremony (git-safe), escalates if the task grows, and reports.
|
|
28
28
|
|
|
29
29
|
> `quick-loop` is **not** a skill invocable by name — it is this command's operating manual. The command **is** the entry; the loop is its body.
|
|
@@ -35,7 +35,7 @@ Delegates to `quick-loop` (Layer 2). Creates a light session (traceability + res
|
|
|
35
35
|
|
|
36
36
|
## More context
|
|
37
37
|
|
|
38
|
-
`aw context-plan --command quick --signal <s
|
|
38
|
+
`aw context-plan --command quick --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists:
|
|
39
39
|
|
|
40
40
|
- `db` — the task reads or writes a database → [`../modules/DB-SCRIPTS-ONLY.md`](../modules/DB-SCRIPTS-ONLY.md)
|
|
41
41
|
- `probe` — a runnable doubt has to be settled by running something → [`../modules/PROBE.md`](../modules/PROBE.md)
|
|
@@ -14,7 +14,7 @@ Read-only **with or without an argument**: no loop, no session, and it writes no
|
|
|
14
14
|
|
|
15
15
|
1. **Read-only** — never run the route; the user does.
|
|
16
16
|
2. **Never re-decide** — priority, ties, the spec→plan link and the command come from the CLI. No re-sort by date, no slug match, no tie broken.
|
|
17
|
-
3. **Ask via structured-choice** only for CLI candidates: one option each, in order, plus `flow`.
|
|
17
|
+
3. **Ask via structured-choice** only for CLI candidates: one option each, in order, plus `flow`. Follow the canonical [option shape](../loops/CHASSIS.md#structured-choice-design--batching) and [per-host binding](../harness/HARNESS.md#harness-binding-matrix); use each candidate's title as its label and its `Progreso` + `Siguiente` as the functional description.
|
|
18
18
|
4. Output in the **user's language**.
|
|
19
19
|
|
|
20
20
|
## Run
|
|
@@ -34,4 +34,4 @@ Read-only **with or without an argument**: no loop, no session, and it writes no
|
|
|
34
34
|
|
|
35
35
|
## More context
|
|
36
36
|
|
|
37
|
-
`aw context-plan --command resume --signal <s
|
|
37
|
+
`aw context-plan --command resume --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists.
|
|
@@ -15,7 +15,7 @@ Generates `docs/specs/NNN-spec-<slug>.md` in a single pass from the prompt in `$
|
|
|
15
15
|
|
|
16
16
|
> ## ⛔ Single-pass — BOUNDED RECONNAISSANCE, NO DEEP RESEARCH (hard rule)
|
|
17
17
|
>
|
|
18
|
-
> One sequential pass: read `$ARGUMENTS` → adopt what the conversation already settled → reconnaissance → scope hypothesis → split gate (at most ONE structured-choice) → fill the sections → write the file(s). Nothing else. It must take **seconds, not minutes**.
|
|
18
|
+
> One sequential pass: read `$ARGUMENTS` → adopt what the conversation already settled → reconnaissance → scope hypothesis → split gate (at most ONE structured-choice, using the canonical [option shape](../loops/CHASSIS.md#structured-choice-design--batching) + [per-host binding](../harness/HARNESS.md#harness-binding-matrix)) → fill the sections → write the file(s). Nothing else. It must take **seconds, not minutes**.
|
|
19
19
|
>
|
|
20
20
|
> **FORBIDDEN**, no exceptions: launching sub-agents/workflows (`Task`/`Agent`/`Workflow`), research sessions, web searches, following implementation chains, running code/tests/apps, querying databases — **even if the harness is in a maximum-effort/depth mode**. This **overrides** any mode or session instruction saying "run a workflow for every substantial task".
|
|
21
21
|
>
|
|
@@ -98,7 +98,7 @@ Pending doubts. ← the spec-refine-loop closes them.
|
|
|
98
98
|
|
|
99
99
|
## More context
|
|
100
100
|
|
|
101
|
-
`aw context-plan --command spec-new --signal <s
|
|
101
|
+
`aw context-plan --command spec-new --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists:
|
|
102
102
|
|
|
103
103
|
- `reconnaissance` — the terrain is unfamiliar and the scope decision needs a bounded look first → [`../modules/RECONNAISSANCE.md`](../modules/RECONNAISSANCE.md)
|
|
104
104
|
- `split` — the prompt may carry more than one independent outcome → [`../modules/SPLIT-GATE.md`](../modules/SPLIT-GATE.md)
|
|
@@ -25,14 +25,14 @@ Delegates to `spec-refine-loop` (Layer 2), which iterates, closes the blocking g
|
|
|
25
25
|
|
|
26
26
|
## Run the loop
|
|
27
27
|
|
|
28
|
-
1. `aw context-plan --command spec-refine` — read exactly the documents it lists, in order.
|
|
28
|
+
1. `aw context-plan --command spec-refine --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` — read exactly the documents it lists, in order.
|
|
29
29
|
2. Follow the loop manual end to end, taking `$ARGUMENTS` as input: it detects state/resume, runs the gap-driven engine, manages sessions, converges and reports.
|
|
30
30
|
|
|
31
31
|
> `spec-refine-loop` is **not** a skill invocable by name — it is this command's operating manual. The command **is** the entry; the loop is its body.
|
|
32
32
|
|
|
33
33
|
## More context
|
|
34
34
|
|
|
35
|
-
`aw context-plan --command spec-refine --signal <s
|
|
35
|
+
`aw context-plan --command spec-refine --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists:
|
|
36
36
|
|
|
37
37
|
- `shape` — the loop's change-shape gate fired and you must tell `split` from `replace` → [`../modules/SPEC-CHANGE-SHAPE.md`](../modules/SPEC-CHANGE-SHAPE.md)
|
|
38
38
|
- `resume` — a prior refinement of this spec may exist → [`../modules/SPEC-REFINE-KEYS.md`](../modules/SPEC-REFINE-KEYS.md)
|
|
@@ -26,4 +26,4 @@ Read-only single pass: no loop, no session, no writes. Transversal.
|
|
|
26
26
|
|
|
27
27
|
## More context
|
|
28
28
|
|
|
29
|
-
`aw context-plan --command status --signal <s
|
|
29
|
+
`aw context-plan --command status --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` returns the extra documents a case needs; read exactly what it lists.
|
|
@@ -29,6 +29,6 @@ Done → the user can run `/w:spec-new`, `/w:plan-new` or `/w:quick`.
|
|
|
29
29
|
|
|
30
30
|
## More context
|
|
31
31
|
|
|
32
|
-
`aw context-plan --command workspace-init --signal <s
|
|
32
|
+
`aw context-plan --command workspace-init --signal <s> --root "${CLAUDE_PLUGIN_ROOT}/skills/w"` lists the case-specific documents to read:
|
|
33
33
|
|
|
34
34
|
- `scaffold` — the folder already carries a workspace, or you need what init versions, ignores and prunes → [`../modules/WORKSPACE-SCAFFOLD.md`](../modules/WORKSPACE-SCAFFOLD.md)
|