maestro-flow 0.3.45 → 0.3.46

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.
Files changed (61) hide show
  1. package/.claude/commands/maestro-execute.md +2 -1
  2. package/.claude/commands/maestro-tools-register.md +28 -7
  3. package/.claude/commands/manage-knowhow-capture.md +10 -1
  4. package/.claude/commands/quality-debug.md +2 -1
  5. package/.claude/commands/quality-review.md +2 -1
  6. package/.claude/commands/quality-test.md +5 -0
  7. package/.claude/skills/maestro-help/SKILL.md +264 -0
  8. package/.claude/skills/maestro-help/index/catalog.json +182 -0
  9. package/.claude/skills/maestro-help/phases/01-parse-intent.md +122 -0
  10. package/.claude/skills/maestro-help/phases/02-search-present.md +181 -0
  11. package/.claude/skills/maestro-help/phases/03-workflow-guide.md +186 -0
  12. package/.codex/agents/team-supervisor.toml +40 -0
  13. package/.codex/agents/team-worker.toml +63 -0
  14. package/.codex/skills/maestro-brainstorm/SKILL.md +1 -1
  15. package/.codex/skills/maestro-execute/SKILL.md +1 -1
  16. package/.codex/skills/maestro-help/SKILL.md +213 -0
  17. package/.codex/skills/maestro-help/catalog.json +182 -0
  18. package/.codex/skills/maestro-roadmap/SKILL.md +1 -1
  19. package/.codex/skills/maestro-tools-register/SKILL.md +29 -7
  20. package/.codex/skills/manage-knowhow-capture/SKILL.md +18 -3
  21. package/.codex/skills/quality-debug/SKILL.md +2 -1
  22. package/.codex/skills/quality-review/SKILL.md +1 -1
  23. package/.codex/skills/quality-test/SKILL.md +11 -1
  24. package/dashboard/dist-server/dashboard/src/server/index.js +5 -3
  25. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  26. package/dashboard/dist-server/dashboard/src/server/routes/board-state.integration.test.js +3 -3
  27. package/dashboard/dist-server/dashboard/src/server/routes/board-state.integration.test.js.map +1 -1
  28. package/dashboard/dist-server/dashboard/src/server/routes/index.js +14 -5
  29. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  30. package/dashboard/dist-server/dashboard/src/server/routes/maestro-coordinate.d.ts +2 -0
  31. package/dashboard/dist-server/dashboard/src/server/routes/maestro-coordinate.js +181 -0
  32. package/dashboard/dist-server/dashboard/src/server/routes/maestro-coordinate.js.map +1 -0
  33. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +2 -0
  34. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +2 -0
  35. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  36. package/dashboard/dist-server/dashboard/src/server/state/fs-watcher.d.ts +2 -0
  37. package/dashboard/dist-server/dashboard/src/server/state/fs-watcher.js +58 -0
  38. package/dashboard/dist-server/dashboard/src/server/state/fs-watcher.js.map +1 -1
  39. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +7 -2
  40. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +7 -1
  41. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  42. package/dashboard/dist-server/dashboard/src/shared/constants.js +7 -9
  43. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  44. package/dashboard/dist-server/dashboard/src/shared/maestro-session-types.d.ts +113 -0
  45. package/dashboard/dist-server/dashboard/src/shared/maestro-session-types.js +6 -0
  46. package/dashboard/dist-server/dashboard/src/shared/maestro-session-types.js.map +1 -0
  47. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +4 -3
  48. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +1 -1
  49. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  50. package/dist/src/commands/knowhow.d.ts.map +1 -1
  51. package/dist/src/commands/knowhow.js +7 -4
  52. package/dist/src/commands/knowhow.js.map +1 -1
  53. package/dist/src/hooks/plugins/spec-injection-plugin.js +7 -4
  54. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  55. package/dist/src/tools/store-knowhow.d.ts.map +1 -1
  56. package/dist/src/tools/store-knowhow.js +15 -6
  57. package/dist/src/tools/store-knowhow.js.map +1 -1
  58. package/package.json +4 -2
  59. package/workflows/tools-spec.md +20 -13
  60. package/.claude/commands/maestro-link-coordinate.md +0 -71
  61. package/.codex/skills/maestro-link-coordinate/SKILL.md +0 -257
@@ -4,7 +4,7 @@ Shared reference for tool spec registration and execution commands.
4
4
 
5
5
  ## Storage
6
6
 
7
- Tool specs are stored as knowhow documents in `.workflow/knowhow/` with `tool: true` in YAML frontmatter. Tool registration creates knowhow files, not spec entries. The `category` field determines which `spec load --category` queries match this tool.
7
+ Tool specs are stored as knowhow documents in `.workflow/knowhow/` with `tool: true` in YAML frontmatter. Tool registration creates new knowhow files or promotes existing ones (via frontmatter update). The `category` field determines which `spec load --category` queries match this tool.
8
8
 
9
9
  ## Entry Format
10
10
 
@@ -35,30 +35,37 @@ category: coding
35
35
  ## Discovery Path
36
36
 
37
37
  ```
38
- Register tools.md → spec load --category <category> / spec-injector auto-inject → agent discovers tool
38
+ Register (knowhow/ + tool: true) → spec load --category / spec-injector auto-inject → agent discovers tool
39
39
  ```
40
40
 
41
41
  Agents discover tool specs via:
42
- - `spec load --category <category>` — returns entries matching the category
43
- - `spec-injector` hook — auto-injects at Agent launch based on agent type
44
- - `spec load --keyword <word>` — keyword search across all entries
42
+ - `spec load --category <category>` — scans knowhow/ for `category + tool: true` matches
43
+ - `spec-injector` hook — auto-injects at Agent launch based on agent type → category mapping
44
+ - `spec load --keyword <word>` — keyword search across all entries (cross-category)
45
45
 
46
46
  ## Category Reference
47
47
 
48
- | Category | Agent types | Tool examples |
49
- |----------|-------------|---------------|
50
- | coding | code-developer, workflow-executor | Build, deploy, integrate |
51
- | test | tdd-developer, test-fix-agent | Test flows, verification steps |
52
- | review | workflow-reviewer | Checklists, audit standards |
53
- | arch | workflow-planner | Design flows, analysis steps |
54
- | debug | debug-explore-agent | Diagnostic flows, investigation |
48
+ `category` = **who consumes** (agent type), not what the content is about.
49
+
50
+ | Category | Consumer Agent | Decision Question | Signal Words |
51
+ |---|---|---|---|
52
+ | coding | code-developer, workflow-executor | 开发者实现时需要? | build, deploy, integrate, configure, api-contract |
53
+ | test | tdd-developer, test-fix-agent | 测试者验证时需要? | verify, validate, e2e, regression, idempotency |
54
+ | review | workflow-reviewer | 审查者检查时需要? | audit, checklist, compliance, quality-gate |
55
+ | arch | workflow-planner | 规划者设计时需要? | design, architecture, decompose, blueprint |
56
+ | debug | debug-explore-agent | 调试者排查时需要? | diagnose, trace, root-cause, reproduce |
57
+
58
+ **Multi-consumer**: If tool serves multiple agents, split into separate docs with different categories.
55
59
 
56
60
  ## CLI Commands
57
61
 
58
62
  ```bash
59
- # Register tool as knowhow document
63
+ # Register new tool as knowhow document
60
64
  maestro knowhow add "knowhow/RCP-<slug>.md" --type recipe --tool
61
65
 
66
+ # Promote existing knowhow to tool (in place)
67
+ maestro wiki update <id> --frontmatter '{"tool": true, "category": "<cat>", "summary": "..."}'
68
+
62
69
  # Load specs by category
63
70
  maestro spec load --category <category>
64
71
  maestro spec load --category <category> --keyword <word>
@@ -1,71 +0,0 @@
1
- ---
2
- name: maestro-link-coordinate
3
- description: Execute command chain nodes step by step
4
- argument-hint: "\"intent text\" [--list] [-c [sessionId]] [--chain <name>] [--tool <tool>] [-y]"
5
- allowed-tools:
6
- - Read
7
- - Write
8
- - Edit
9
- - Bash
10
- - Glob
11
- - Grep
12
- - Agent
13
- ---
14
- <purpose>
15
- Step-mode workflow coordinator using `maestro coordinate` CLI subcommands (start/next/status).
16
- Walks chain graphs node by node — each command node executed via `maestro delegate` internally.
17
- Decision/gate/eval nodes auto-resolve between steps. Session persisted for resume.
18
- </purpose>
19
-
20
- <required_reading>
21
- @~/.maestro/workflows/maestro-link-coordinate.md
22
- </required_reading>
23
-
24
- <context>
25
- $ARGUMENTS — user intent text, or flags.
26
-
27
- **Flags:**
28
- - `--list` — List all available chain graphs
29
- - `-c` / `--continue [sessionId]` — Resume step_paused session via `coordinate next`
30
- - `--chain <name>` — Force a specific chain graph
31
- - `--tool <tool>` — CLI tool override (default: claude)
32
- - `-y` / `--yes` — Auto mode
33
-
34
- **CLI endpoints used:**
35
- - `maestro coordinate list` — enumerate chains
36
- - `maestro coordinate start "intent" --chain X` — begin step-mode session
37
- - `maestro coordinate next [sessionId]` — advance one step
38
- - `maestro coordinate status [sessionId]` — query state
39
- - `maestro coordinate run "intent"` — autonomous full run
40
- - `maestro coordinate watch <sessionId> [--follow]` — read-only event tail (separate from driver loop)
41
- - `maestro coordinate report` — agent-invoked command-node result writer (authoritative result channel)
42
-
43
- **Internal walker capabilities (invisible to driver loop):**
44
- - Prompt assembly owned by the walker (main flow) for both command and decision nodes
45
- - Decision nodes auto-resolve via `strategy: 'expr'` (fast path) with LLM decider fallback when expr has no match and no default edge, or explicit `strategy: 'llm'`
46
- - Walker events published to a file/SQLite broker for `watch` observers
47
- - LLM decision in step mode is synchronous — avoid tight per-step deadlines
48
- </context>
49
-
50
- <execution>
51
- Follow '~/.maestro/workflows/maestro-link-coordinate.md' completely.
52
- </execution>
53
-
54
- <error_codes>
55
- | Code | Severity | Description | Recovery |
56
- |------|----------|-------------|----------|
57
- | E001 | error | No intent and no --list/--chain | Suggest --list |
58
- | E002 | error | Chain graph not found | Show list output |
59
- | E003 | error | Step execution failed | Check status, retry next |
60
- | E004 | error | Resume session not found | List sessions |
61
- | E005 | error | CLI endpoint unavailable | Check maestro installation |
62
- </error_codes>
63
-
64
- <success_criteria>
65
- - [ ] Chain graph loaded via `maestro coordinate start`
66
- - [ ] Each step executed via `maestro coordinate next` loop
67
- - [ ] JSON output parsed for session tracking
68
- - [ ] Decision nodes auto-resolved between steps
69
- - [ ] Session persisted and resumable via `-c`
70
- - [ ] Completion summary displayed
71
- </success_criteria>
@@ -1,257 +0,0 @@
1
- ---
2
- name: maestro-link-coordinate
3
- description: Execute command chain nodes step by step
4
- argument-hint: "\"intent text\" [--list] [-c [sessionId]] [--chain <name>] [-y]"
5
- allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
6
- ---
7
-
8
- <purpose>
9
- In-process chain-graph coordinator. Unlike the CLI-delegated version (maestro coordinate start/next),
10
- this coordinator loads chain graph JSON directly and drives flow in the main process:
11
-
12
- - Command nodes → spawn via `spawn_agents_on_csv` (one command = one wave, always solo)
13
- - Decision nodes → resolve in-process using expression evaluation against accumulated context
14
- - Gate/terminal nodes → handle in-process
15
-
16
- Coordinator responsibilities: load graph → walk nodes → build skill_call → spawn → read result →
17
- evaluate decision → advance → persist state → repeat until terminal.
18
-
19
- ```
20
- +-------------------------------------------------------------------+
21
- | maestro-link-coordinate (in-process walker) |
22
- +-------------------------------------------------------------------+
23
- | |
24
- | Phase 1: Load Chain Graph |
25
- | +-- Parse flags (--chain, -y, -c, --list) |
26
- | +-- Load chain JSON from chains/ directory |
27
- | +-- Initialize session state |
28
- | |
29
- | Phase 2: Walk Loop |
30
- | +-- while (current_node != terminal): |
31
- | | +-- command → build skill_call → spawn_agents_on_csv |
32
- | | | → read result → update context → follow next|
33
- | | +-- decision → evaluate expr against ctx.result |
34
- | | | → match edge → follow target |
35
- | | +-- gate → evaluate condition → on_pass / on_fail |
36
- | | +-- terminal → exit loop |
37
- | +-- Persist state after each node |
38
- | |
39
- | Phase 3: Completion Report |
40
- | +-- Per-node results with outcomes |
41
- | +-- Final status and resume hint |
42
- +-------------------------------------------------------------------+
43
- ```
44
- </purpose>
45
-
46
- <context>
47
- $ARGUMENTS — user intent text, or flags.
48
-
49
- **Flags**:
50
- - `--list` — List all available chain graphs (scan chains/ directory)
51
- - `-c / --continue [sessionId]` — Resume from last completed node
52
- - `--chain <name>` — Force a specific chain graph
53
- - `-y / --yes` — Auto mode: no confirmations between nodes
54
-
55
- **Session state**: `.workflow/.maestro/{session-id}/`
56
- **Chain graphs**: `chains/` and `chains/singles/` directories (JSON files)
57
- </context>
58
-
59
- <invariants>
60
- 1. **ALL command-node execution via spawn_agents_on_csv**: Coordinator NEVER executes skills directly. Every command node dispatches through `spawn_agents_on_csv`.
61
- 2. **Coordinator = graph walker + prompt assembler**: Load graph → walk → build skill_call → spawn → read result → evaluate decisions → persist. Nothing else.
62
- 3. **One command per wave**: Each command node runs as a solo wave (result needed for subsequent decisions).
63
- 4. **Decision nodes are in-process**: Coordinator evaluates `node.eval` against `ctx.result` directly. No sub-agent or CLI delegation.
64
- 5. **Context flows forward**: Each command result is captured and available to subsequent decision expressions and command args.
65
- 6. **max_visits enforced**: Track visit count per node; bail with failure if exceeded.
66
- 7. **Resume from node**: `-c` loads saved state and continues from last incomplete node.
67
- </invariants>
68
-
69
- <execution>
70
-
71
- ### Phase 1: Load Chain Graph
72
-
73
- Parse `$ARGUMENTS` to extract: `listMode` (`--list`), `autoYes` (`-y`/`--yes`), `resumeMode` (`-c`/`--continue`), `resumeId`, `forcedChain` (`--chain <name>`), `intent` (remaining text).
74
-
75
- **`--list`**: Scan `chains/*.json` and `chains/singles/*.json`, display names + descriptions, stop.
76
-
77
- **`-c` (resume)**: Glob `.workflow/.maestro/MLC-*/state.json`, pick most recent (or by `resumeId`). Load state → find first incomplete node → jump to Phase 2.
78
-
79
- **Fresh session**:
80
- 1. Resolve chain: `--chain` direct or classify from intent using `chains/_intent-map.json`
81
- 2. Load chain JSON: try `chains/{name}.json` then `chains/singles/{name}.json`
82
- 3. Read `.workflow/state.json` for project context (phase, milestone)
83
- 4. Initialize session state:
84
-
85
- ```json
86
- {
87
- "id": "MLC-{YYYYMMDD}-{HHmmss}",
88
- "intent": "<intent>", "chain": "<graph.id>", "auto_mode": false,
89
- "status": "in_progress", "started_at": "<ISO>",
90
- "current_node": "<graph.entry>",
91
- "context": { "phase": null, "description": "<intent>", "result": null },
92
- "visit_counts": {},
93
- "history": []
94
- }
95
- ```
96
-
97
- Session dir: `.workflow/.maestro/{sessionId}/`
98
-
99
- **`--dry-run`**: Display node walk order with types, stop.
100
- **Confirm** (skip if `autoYes`): Display chain summary, prompt `Proceed?`.
101
-
102
- ### Phase 2: Walk Loop
103
-
104
- Loop while `state.status === 'in_progress'`:
105
- 1. Resolve `current_node` from graph — fail if not found
106
- 2. Increment `visit_counts[nodeId]` — fail if exceeds `node.max_visits`
107
- 3. Dispatch by `node.type`: command → handleCommand, decision → handleDecision, gate → handleGate, terminal → handleTerminal
108
- 4. Persist `state.json` after every node
109
-
110
- #### handleCommand — spawn via CSV
111
-
112
- 1. Build `skill_call` from node config + context + auto_mode
113
- 2. Write single-row CSV: `wave-{nodeId}.csv` with columns `id,skill_call,topic`
114
- 3. Spawn:
115
-
116
- ```javascript
117
- spawn_agents_on_csv({
118
- csv_path: csvPath,
119
- id_column: "id",
120
- instruction: AGENT_INSTRUCTION,
121
- max_workers: 1,
122
- max_runtime_seconds: 3600,
123
- output_csv_path: `${sessionDir}/wave-${nodeId}-results.csv`,
124
- output_schema: RESULT_SCHEMA
125
- })
126
- ```
127
-
128
- 4. Read result → parse findings into `state.context.result` (for downstream decision eval)
129
- 5. Record history entry with outcome
130
- 6. Advance: success → `node.next`, failure → `node.on_failure` or fail state
131
-
132
- #### handleDecision — in-process expr evaluation
133
-
134
- 1. Evaluate `node.eval` expression (e.g. `ctx.result.verification_status`) against `state.context` via dot-path resolution
135
- 2. Match against `node.edges[]`: first by exact `edge.value`, then by regex `edge.match`, finally `edge.default`
136
- 3. Record history: `evalKey = "value" → matchedLabel`
137
- 4. Advance to matched `edge.target` — fail if no match found
138
-
139
- #### handleGate — condition check
140
-
141
- Evaluate `node.condition` against context. Route to `node.on_pass` or `node.on_fail`. Record history with passed/blocked outcome.
142
-
143
- #### handleTerminal
144
-
145
- Set `state.status` to completed/failed based on `node.status`. Record final history entry.
146
-
147
- ### Shared Utilities
148
-
149
- **AUTO_FLAG_MAP** (skill → auto-confirm flag):
150
-
151
- | Skill | Flag |
152
- |-------|------|
153
- | `maestro-init`, `maestro-analyze`, `maestro-brainstorm`, `maestro-ui-design`, `maestro-roadmap` | `-y` |
154
- | `maestro-plan`, `maestro-execute`, `maestro-milestone-complete` | `-y` |
155
- | `quality-auto-test`, `quality-retrospective` | `-y` |
156
- | `quality-test` | `-y --auto-fix` |
157
-
158
- **buildSkillCall(node, ctx, autoMode)**: Substitute `{phase}`, `{description}`, `{issue_id}`, `{milestone_num}` from context into `node.args`. If autoMode, append auto flag from `node.auto_flag` or AUTO_FLAG_MAP. Return `$${node.cmd} ${resolvedArgs}`.
159
-
160
- **resolveExpr(expr, ctx)**: Navigate dot-path (e.g. `ctx.result.verification_status`) from context root. Strip `ctx.` prefix, walk path segments, return leaf value or undefined.
161
-
162
- **parseResultContext(result)**: Parse `result.findings` as JSON if string, merge with `_raw_summary` and `_status`. Fallback to raw summary on parse failure.
163
-
164
- ### Sub-Agent Instruction Template
165
-
166
- ```
167
- 你是 CSV job 子 agent。
168
-
169
- 先原样执行这一段技能调用:
170
- {skill_call}
171
-
172
- 然后基于结果完成这一行任务说明:
173
- {topic}
174
-
175
- 限制:
176
- - 不要修改 .workflow/.maestro/ 下的 state 文件
177
- - skill 内部有自己的 session 管理,按 skill SKILL.md 执行即可
178
-
179
- 最后必须调用 `report_agent_job_result`,返回 JSON:
180
- {"status":"completed|failed","skill_call":"{skill_call}","summary":"一句话结果","findings":"JSON 结构化结果(含 decision 所需字段)","artifacts":"产物路径或空字符串","error":"失败原因或空字符串"}
181
- ```
182
-
183
- **findings 字段规约**:sub-agent 必须在 findings 中返回 decision node 需要的字段。例如:
184
- - `maestro-verify` → `{"verification_status": "passed|failed", ...}`
185
- - `quality-review` → `{"review_verdict": "PASS|BLOCK", ...}`
186
- - `quality-test` → `{"uat_status": "passed|failed", ...}`
187
- - `maestro-milestone-audit` → `{"audit_verdict": "PASS|BLOCK", ...}`
188
-
189
- Coordinator 将 `findings` 解析后写入 `ctx.result`,供后续 decision node 的 `eval` 表达式读取。
190
-
191
- ### Result Schema
192
-
193
- ```javascript
194
- const RESULT_SCHEMA = {
195
- type: "object",
196
- properties: {
197
- status: { type: "string", enum: ["completed", "failed"] },
198
- skill_call: { type: "string" },
199
- summary: { type: "string" },
200
- findings: { type: "string" },
201
- artifacts: { type: "string" },
202
- error: { type: "string" }
203
- },
204
- required: ["status", "skill_call", "summary", "findings", "artifacts", "error"]
205
- };
206
- ```
207
-
208
- ### Phase 3: Completion Report
209
-
210
- Set `state.completed_at`, persist final `state.json`. Display:
211
- ```
212
- === LINK-COORDINATE COMPLETE ===
213
- Session: {sessionId}
214
- Chain: {chain.name} ({chain.id})
215
- Status: {completed|failed}
216
-
217
- NODE WALK:
218
- [✓] plan (command) — success — Plan generated
219
- [→] check_verify (decision) — ctx.result.verification_status = "passed" → review
220
- [✓] review (command) — success — No blockers
221
- [→] check_review (decision) — ctx.result.review_verdict = "PASS" → test
222
- [✓] test (command) — success — All tests passing
223
-
224
- Nodes: {completed}/{total} | Visits: {total_visits}
225
- State: .workflow/.maestro/{sessionId}/state.json
226
- Resume: $maestro-link-coordinate -c {sessionId}
227
- ```
228
-
229
- </execution>
230
-
231
- <error_codes>
232
- | Code | Severity | Description | Recovery |
233
- |------|----------|-------------|----------|
234
- | E001 | error | No intent and no --list/--chain | Suggest --list |
235
- | E002 | error | Chain graph JSON not found | List available chains |
236
- | E003 | error | Command node spawn failed | Check wave result CSV, resume with -c |
237
- | E004 | error | Decision node: no matching edge | Show eval value and available edges |
238
- | E005 | error | max_visits exceeded on node | Show loop path, suggest --chain with simpler graph |
239
- | E006 | error | Resume session not found | List available sessions |
240
- | W001 | warning | Decision eval returned undefined | Fall through to default edge |
241
- </error_codes>
242
-
243
- <success_criteria>
244
- - [ ] Chain graph loaded from chains/ directory (multi-path resolution)
245
- - [ ] Session state initialized with graph entry node
246
- - [ ] Every command node dispatched via spawn_agents_on_csv — coordinator never executes skills
247
- - [ ] Decision nodes resolved in-process via expr evaluation against ctx.result
248
- - [ ] Gate nodes evaluated in-process with pass/fail routing
249
- - [ ] max_visits tracked per node, exceeded → failure
250
- - [ ] Context flows forward: command result → ctx.result → decision eval → next command args
251
- - [ ] State persisted after every node for resumability
252
- - [ ] -c resumes from last incomplete node
253
- - [ ] --list displays available chains without starting a session
254
- - [ ] -y propagates auto_flag to command skill_calls
255
- - [ ] Completion report shows per-node walk with outcomes
256
- - [ ] findings from sub-agent parsed into ctx.result for decision routing
257
- </success_criteria>