maestro-flow 0.4.12 → 0.4.13

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 (129) hide show
  1. package/.agents/agents/role-design-author.md +6 -4
  2. package/.agents/skills/learn-decompose/SKILL.md +6 -6
  3. package/.agents/skills/learn-follow/SKILL.md +4 -4
  4. package/.agents/skills/learn-investigate/SKILL.md +6 -6
  5. package/.agents/skills/learn-retro/SKILL.md +7 -7
  6. package/.agents/skills/learn-second-opinion/SKILL.md +4 -4
  7. package/.agents/skills/maestro-amend/SKILL.md +1 -0
  8. package/.agents/skills/maestro-analyze/SKILL.md +10 -3
  9. package/.agents/skills/maestro-blueprint/SKILL.md +4 -3
  10. package/.agents/skills/maestro-brainstorm/SKILL.md +5 -4
  11. package/.agents/skills/maestro-fork/SKILL.md +1 -1
  12. package/.agents/skills/maestro-guard/SKILL.md +3 -2
  13. package/.agents/skills/maestro-impeccable/SKILL.md +13 -11
  14. package/.agents/skills/maestro-milestone-release/SKILL.md +1 -1
  15. package/.agents/skills/maestro-plan/SKILL.md +3 -1
  16. package/.agents/skills/maestro-ralph-execute/SKILL.md +4 -3
  17. package/.agents/skills/maestro-roadmap/SKILL.md +4 -3
  18. package/.agents/skills/manage-harvest/SKILL.md +1 -0
  19. package/.agents/skills/manage-issue-discover/SKILL.md +1 -1
  20. package/.agents/skills/manage-knowhow/SKILL.md +1 -1
  21. package/.agents/skills/manage-learn/SKILL.md +4 -4
  22. package/.agents/skills/quality-auto-test/SKILL.md +5 -5
  23. package/.agents/skills/quality-refactor/SKILL.md +1 -1
  24. package/.agents/skills/quality-retrospective/SKILL.md +2 -2
  25. package/.agents/skills/security-audit/SKILL.md +24 -0
  26. package/.agents/skills/spec-remove/SKILL.md +6 -2
  27. package/.agy/agents/role-design-author.md +6 -4
  28. package/.agy/skills/learn-decompose/SKILL.md +6 -6
  29. package/.agy/skills/learn-follow/SKILL.md +4 -4
  30. package/.agy/skills/learn-investigate/SKILL.md +6 -6
  31. package/.agy/skills/learn-retro/SKILL.md +7 -7
  32. package/.agy/skills/learn-second-opinion/SKILL.md +4 -4
  33. package/.agy/skills/maestro-amend/SKILL.md +1 -0
  34. package/.agy/skills/maestro-analyze/SKILL.md +10 -3
  35. package/.agy/skills/maestro-blueprint/SKILL.md +4 -3
  36. package/.agy/skills/maestro-brainstorm/SKILL.md +5 -4
  37. package/.agy/skills/maestro-fork/SKILL.md +1 -1
  38. package/.agy/skills/maestro-guard/SKILL.md +3 -2
  39. package/.agy/skills/maestro-impeccable/SKILL.md +13 -11
  40. package/.agy/skills/maestro-milestone-release/SKILL.md +1 -1
  41. package/.agy/skills/maestro-plan/SKILL.md +3 -1
  42. package/.agy/skills/maestro-ralph-execute/SKILL.md +4 -3
  43. package/.agy/skills/maestro-roadmap/SKILL.md +4 -3
  44. package/.agy/skills/manage-harvest/SKILL.md +1 -0
  45. package/.agy/skills/manage-issue-discover/SKILL.md +1 -1
  46. package/.agy/skills/manage-knowhow/SKILL.md +1 -1
  47. package/.agy/skills/manage-learn/SKILL.md +4 -4
  48. package/.agy/skills/quality-auto-test/SKILL.md +5 -5
  49. package/.agy/skills/quality-refactor/SKILL.md +1 -1
  50. package/.agy/skills/quality-retrospective/SKILL.md +2 -2
  51. package/.agy/skills/security-audit/SKILL.md +24 -0
  52. package/.agy/skills/spec-remove/SKILL.md +6 -2
  53. package/.claude/agents/role-design-author.md +6 -4
  54. package/.claude/commands/learn-decompose.md +6 -6
  55. package/.claude/commands/learn-follow.md +4 -4
  56. package/.claude/commands/learn-investigate.md +6 -6
  57. package/.claude/commands/learn-retro.md +7 -7
  58. package/.claude/commands/learn-second-opinion.md +4 -4
  59. package/.claude/commands/maestro-amend.md +1 -0
  60. package/.claude/commands/maestro-analyze.md +10 -3
  61. package/.claude/commands/maestro-blueprint.md +4 -3
  62. package/.claude/commands/maestro-brainstorm.md +5 -4
  63. package/.claude/commands/maestro-fork.md +1 -1
  64. package/.claude/commands/maestro-guard.md +3 -2
  65. package/.claude/commands/maestro-impeccable.md +13 -11
  66. package/.claude/commands/maestro-milestone-release.md +1 -1
  67. package/.claude/commands/maestro-plan.md +3 -1
  68. package/.claude/commands/maestro-ralph-execute.md +4 -3
  69. package/.claude/commands/maestro-roadmap.md +4 -3
  70. package/.claude/commands/manage-harvest.md +1 -0
  71. package/.claude/commands/manage-issue-discover.md +1 -1
  72. package/.claude/commands/manage-knowhow.md +1 -1
  73. package/.claude/commands/manage-learn.md +4 -4
  74. package/.claude/commands/quality-auto-test.md +5 -5
  75. package/.claude/commands/quality-refactor.md +1 -1
  76. package/.claude/commands/quality-retrospective.md +2 -2
  77. package/.claude/commands/security-audit.md +24 -0
  78. package/.claude/commands/spec-remove.md +6 -2
  79. package/.codex/skills/learn-decompose/SKILL.md +4 -4
  80. package/.codex/skills/learn-follow/SKILL.md +3 -3
  81. package/.codex/skills/learn-investigate/SKILL.md +3 -3
  82. package/.codex/skills/learn-retro/SKILL.md +3 -3
  83. package/.codex/skills/learn-second-opinion/SKILL.md +3 -3
  84. package/.codex/skills/maestro-analyze/SKILL.md +4 -3
  85. package/.codex/skills/maestro-blueprint/SKILL.md +4 -3
  86. package/.codex/skills/maestro-brainstorm/SKILL.md +148 -7
  87. package/.codex/skills/maestro-fork/SKILL.md +2 -0
  88. package/.codex/skills/maestro-guard/SKILL.md +3 -2
  89. package/.codex/skills/maestro-impeccable/SKILL.md +13 -11
  90. package/.codex/skills/maestro-ralph/SKILL.md +1 -1
  91. package/.codex/skills/maestro-roadmap/SKILL.md +4 -3
  92. package/.codex/skills/manage-codebase-rebuild/SKILL.md +9 -5
  93. package/.codex/skills/manage-harvest/SKILL.md +1 -1
  94. package/.codex/skills/manage-issue-discover/SKILL.md +1 -1
  95. package/.codex/skills/manage-knowhow/SKILL.md +1 -1
  96. package/.codex/skills/manage-learn/SKILL.md +3 -3
  97. package/.codex/skills/quality-refactor/SKILL.md +2 -2
  98. package/.codex/skills/quality-retrospective/SKILL.md +3 -3
  99. package/.codex/skills/security-audit/SKILL.md +24 -0
  100. package/.codex/skills/spec-remove/SKILL.md +8 -2
  101. package/package.json +1 -1
  102. package/workflows/agy-instructions.md +2 -0
  103. package/workflows/auto-test.md +6 -1
  104. package/workflows/brainstorm.md +22 -8
  105. package/workflows/claude-instructions.md +2 -0
  106. package/workflows/codex-instructions.md +16 -83
  107. package/workflows/debug.md +1 -1
  108. package/workflows/harvest.md +1 -1
  109. package/workflows/impeccable.md +2 -0
  110. package/workflows/issue-analyze.md +14 -100
  111. package/workflows/issue-discover.md +2 -3
  112. package/workflows/issue-execute.md +1 -1
  113. package/workflows/issue-gaps-analyze.md +2 -0
  114. package/workflows/learn.md +1 -1
  115. package/workflows/maestro-chain-execute.md +10 -228
  116. package/workflows/maestro.md +1 -0
  117. package/workflows/milestone-complete.md +3 -3
  118. package/workflows/milestone-release.md +82 -0
  119. package/workflows/plan.md +4 -4
  120. package/workflows/retrospective.md +1 -1
  121. package/workflows/roadmap.md +1 -1
  122. package/workflows/spec-generate.md +2 -0
  123. package/workflows/specs-add.md +6 -1
  124. package/workflows/specs-load.md +6 -1
  125. package/workflows/specs-setup.md +6 -1
  126. package/workflows/sync.md +13 -0
  127. package/workflows/tools-spec.md +4 -0
  128. package/workflows/ui-design.md +3 -3
  129. package/workflows/wiki-manage.md +2 -0
@@ -34,14 +34,15 @@ $ARGUMENTS -- requirement/idea text or @file reference, plus optional flags.
34
34
  <interview_protocol>
35
35
  Interview the user relentlessly until shared understanding is reached. Active only in interactive mode; skip when `-y/--yes`, `--revise`, `--review`, `-c`, or input is already specific (clear requirement + mode).
36
36
 
37
- - One decision per turn via request_user_input with 2–4 options + a (Recommended) default; every question must include a `Proceed now` option.
38
- - Never ask what code can verify — resolve via `state.json`, existing `roadmap.md`, `project.md`, or `maestro spec load`.
37
+ - One decision per turn via request_user_input with 2–4 options + a (Recommended) default. The user controls termination — keep interviewing until convergence; they can interrupt naturally at any time.
38
+ - Search-first when uncertain: before asking, resolve via `state.json`, existing `roadmap.md`, `project.md`, `maestro spec load`, `maestro wiki search`, Glob/Grep/Read, or — for open-ended multi-file scans — `maestro delegate ... --role explore`. Never ask what code or memory can verify; never bounce your own ambiguity back to the user — search first, then ask only what truly needs human judgment.
39
+ - Writeback cadence: each settled decision is immediately appended/updated in the `Roadmap Decisions` section at the top of `.workflow/roadmap.md` (create the section if absent). Do NOT batch writeback to the end — partial decisions must already be on disk before the next question.
39
40
  - Walk the decision dependency tree strictly: mode → requirement scope → decomposition strategy → phase dependencies/order. Do not open the next branch until the current one is settled.
40
41
  - Scope guard: only decide the shape of the roadmap. Do not pre-resolve intra-phase task breakdown — that belongs to `plan`.
41
42
 
42
43
  Decision points: scope (MVP / complete / phased) → strategy (progressive / direct / auto) → milestone boundaries → phase dependencies and order.
43
44
 
44
- Exit: on consensus or `Proceed now`, append the table below to a `Roadmap Decisions` section at the top of `.workflow/roadmap.md`:
45
+ Exit: on consensus or explicit user signal to proceed, finalize the `Roadmap Decisions` section (rows already populated incrementally). Schema:
45
46
  `| # | Decision | Choice | Source (user / code / default) |`
46
47
  </interview_protocol>
47
48
 
@@ -81,13 +81,15 @@ When `--yes` or `-y`: Auto-confirm rebuild (implies --force), skip all prompts.
81
81
 
82
82
  ```csv
83
83
  id,title,description,doc_dimension,output_path,deps,context_from,wave
84
- "1","Component Scanner","Scan all source directories for components: models, services, controllers, utils, types, config, middleware, core modules. For each component extract exported symbols, determine type, record code locations. Output JSON array of component entries with id (TC-NNN), name, type, code_locations, symbols.","components",".workflow/codebase/doc-index.json#components","","","1"
85
- "2","Feature Mapper","Group discovered components by domain/functional area using directory proximity, naming patterns, and import relationships. Map features to requirements if .workflow/blueprint/ exists. Output JSON array of feature entries with id (FT-NNN), name, status, component_ids, requirement_ids, phase.","features",".workflow/codebase/doc-index.json#features","","","1"
86
- "3","Requirement Linker","If .workflow/blueprint/ exists, scan BLP-*/requirements/REQ-*.md files. Parse requirement metadata (title, priority, acceptance_criteria). Match requirements to features by keyword analysis. Also scan for ADR-*.md architecture decisions. Output JSON arrays for requirements and architecture_decisions.","requirements",".workflow/codebase/doc-index.json#requirements","","","1"
87
- "4","Tech Registry Writer","For each component discovered, generate a markdown documentation file in .workflow/codebase/tech-registry/{slug}.md with: ID, type, features, code locations, exported symbols, dependencies. Generate _index.md with component table. Output file count and paths.","tech-registry",".workflow/codebase/tech-registry/","","","1"
88
- "5","Feature Map Writer","For each feature discovered, generate a markdown documentation file in .workflow/codebase/feature-maps/{slug}.md with: ID, status, phase, requirements, component table. Generate _index.md with feature table. Output file count and paths.","feature-maps",".workflow/codebase/feature-maps/","","","1"
84
+ "1","Component Scanner","Scan all source directories for components: models, services, controllers, utils, types, config, middleware, core modules. For each component extract exported symbols, determine type, record code locations. Return JSON array of component entries with id (TC-NNN), name, type, code_locations, symbols via output_schema. Do NOT write files — orchestrator assembles doc-index.json in Phase 3.","components","<ABS_WORKFLOW>/codebase/doc-index.json#components","","","1"
85
+ "2","Feature Mapper","Group discovered components by domain/functional area using directory proximity, naming patterns, and import relationships. Map features to requirements if <ABS_WORKFLOW>/blueprint/ exists. Return JSON array of feature entries with id (FT-NNN), name, status, component_ids, requirement_ids, phase via output_schema. Do NOT write files.","features","<ABS_WORKFLOW>/codebase/doc-index.json#features","","","1"
86
+ "3","Requirement Linker","If <ABS_WORKFLOW>/blueprint/ exists, scan BLP-*/requirements/REQ-*.md files. Parse requirement metadata (title, priority, acceptance_criteria). Match requirements to features by keyword analysis. Also scan for ADR-*.md architecture decisions. Return JSON arrays for requirements and architecture_decisions via output_schema. Do NOT write files.","requirements","<ABS_WORKFLOW>/codebase/doc-index.json#requirements","","","1"
87
+ "4","Tech Registry Writer","For each component discovered, use the Write tool to create a markdown documentation file at <ABS_WORKFLOW>/codebase/tech-registry/{slug}.md with: ID, type, features, code locations, exported symbols, dependencies. Also write <ABS_WORKFLOW>/codebase/tech-registry/_index.md with the component table. After all writes, verify every intended file exists with Glob and return file count + absolute paths via output_schema. MUST use the Write tool — files on disk are the deliverable, do NOT return file content as text.","tech-registry","<ABS_WORKFLOW>/codebase/tech-registry/","","","1"
88
+ "5","Feature Map Writer","For each feature discovered, use the Write tool to create a markdown documentation file at <ABS_WORKFLOW>/codebase/feature-maps/{slug}.md with: ID, status, phase, requirements, component table. Also write <ABS_WORKFLOW>/codebase/feature-maps/_index.md with the feature table. After all writes, verify every intended file exists with Glob and return file count + absolute paths via output_schema. MUST use the Write tool — files on disk are the deliverable, do NOT return file content as text.","feature-maps","<ABS_WORKFLOW>/codebase/feature-maps/","","","1"
89
89
  ```
90
90
 
91
+ **Path resolution (orchestrator MUST do BEFORE writing tasks.csv)**: substitute `<ABS_WORKFLOW>` with the absolute path to the project's `.workflow/` directory (e.g. `D:/maestro2/.workflow`). Agent Write tool requires absolute paths — passing relative `.workflow/...` literals will fail.
92
+
91
93
  **Columns**:
92
94
 
93
95
  | Column | Phase | Description |
@@ -125,6 +127,8 @@ Single wave generates `wave-1.csv`. No `prev_context` needed (all tasks independ
125
127
  6. **Single Wave**: All generators are independent, no wave ordering needed
126
128
  7. **Cleanup Temp Files**: Remove wave-1.csv after results are merged
127
129
  8. **DO NOT STOP**: Execute until all generators complete or fail
130
+ 9. **Absolute Paths Only**: All paths in `description` and `output_path` MUST be absolute before tasks.csv is written. Orchestrator substitutes `<ABS_WORKFLOW>` placeholder; never let it leak into a spawned agent's prompt.
131
+ 10. **Writer vs Returner Split**: Tasks 1-3 return data via `output_schema` (no file writes). Tasks 4-5 MUST write files via Write tool + verify with Glob. Mixing the two contracts (e.g., returning markdown content as text from tasks 4-5) is a contract violation.
128
132
  </invariants>
129
133
 
130
134
  <execution>
@@ -64,7 +64,7 @@ Follow '~/.maestro/workflows/harvest.md' Stages 1–8 (standard mode) or Stage 9
64
64
  - Quality enforcement rules → `quality` category
65
65
  - Wiki: `maestro wiki create --type <type> --slug harvest-<source_type>-<short_id>`
66
66
  - Spec: `maestro wiki append spec-<file> --body "<content>" --keywords "<kws>"` (unified write path) or `Skill({ skill: "spec-add", args: "<category> <content>" })`
67
- - Issue: append to `issues.jsonl` matching canonical schema
67
+ - Issue: append to `issues.jsonl` matching canonical schema, with `source: "harvest"` field (distinguishes from `manage-issue-discover`, which uses `source: "discover"` — required for cross-skill dedup when both write concurrently)
68
68
 
69
69
  **Next steps:** `/manage-wiki health`, `maestro wiki list --type note`, `/wiki-connect --fix`, `/wiki-digest`, `/manage-issue list --source harvest`
70
70
 
@@ -155,7 +155,7 @@ Also writes to:
155
155
  5. **Discovery Board is Append-Only**: Never clear, modify, or recreate discoveries.ndjson
156
156
  6. **Skip on Failure**: If all perspective agents failed, skip dedup
157
157
  7. **Evidence Required**: Every finding must have file:line reference -- no speculative issues
158
- 8. **Dedup Before Create**: Never append to issues.jsonl without deduplication
158
+ 8. **Dedup Before Create**: Never append to issues.jsonl without deduplication. Every appended record MUST include `source: "discover"` so concurrent writers (e.g. `manage-harvest` uses `source: "harvest"`) can be safely distinguished and deduplicated cross-skill.
159
159
  9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged
160
160
  10. **DO NOT STOP**: Continuous execution until all waves complete
161
161
  </invariants>
@@ -73,7 +73,7 @@ After write operations, verify:
73
73
  <error_codes>
74
74
  | Code | Severity | Description |
75
75
  |------|----------|-------------|
76
- | E001 | error | No stores found — run `Skill({ skill: "manage-knowhow-capture" })` or create MEMORY.md |
76
+ | E001 | error | No stores found — for workflow store run `Skill({ skill: "manage-knowhow-capture" })`; for system store run `Skill({ skill: "manage-memory-capture" })` or create MEMORY.md |
77
77
  | E002 | error | Entry ID or filename not found |
78
78
  | E003 | error | Prune requires at least one filter flag |
79
79
  | E004 | error | Cannot delete MEMORY.md — use `edit` subcommand instead |
@@ -6,7 +6,7 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
6
6
  ---
7
7
 
8
8
  <purpose>
9
- Pure file-operation CRUD skill for the workflow knowhow library. No agent spawning, no CLI calls, no LLM inference — just parse-infer-append-confirm. Complements `quality-retrospective`: where retrospective extracts insights in bulk from completed phases, `manage-learn` captures one timeless insight at a time during active work. Both write to the same `specs/learnings.md` store, disambiguated by `source` and `lens` fields.
9
+ Pure file-operation CRUD skill for the workflow knowhow library. No agent spawning, no CLI calls, no LLM inference — just parse-infer-append-confirm. Complements `quality-retrospective`: where retrospective extracts insights in bulk from completed phases, `manage-learn` captures one timeless insight at a time during active work. Both write to the same `.workflow/specs/learnings.md` store, disambiguated by `source` and `lens` fields.
10
10
 
11
11
  ```
12
12
  Parse Mode → Bootstrap Store → Execute Mode → Confirm
@@ -94,7 +94,7 @@ Verify `.workflow/` exists (E001 if not). If `.workflow/specs/learnings.md` miss
94
94
  2. **Auto-link phase** from `state.json` artifact registry. `--phase 0` forces null.
95
95
  3. **Generate INS-id**: `INS-{8 hex}` from `hash(insightText + timestamp)`.
96
96
  4. **Build row** with fields: id, title (first 80 chars), summary, source="manual", lens=null, category, tags (includes "manual"), phase, phase_slug, confidence, routed_to=null, created_at.
97
- 5. **Append** entry to `specs/learnings.md` (append-only, never rewrite).
97
+ 5. **Append** entry to `.workflow/specs/learnings.md` (append-only, never rewrite).
98
98
  6. WikiIndexer auto-indexes the new entry (no manual index update needed).
99
99
 
100
100
  #### List Mode
@@ -129,7 +129,7 @@ Capture mode: display ID, category, phase, confidence, tags, and next-step comma
129
129
  - [ ] Mode parsed correctly (capture, list, search, show)
130
130
  - [ ] Learning store bootstrapped on first use
131
131
  - [ ] Capture: category inferred from keywords, phase auto-linked, INS-id generated
132
- - [ ] Capture: entry appended to specs/learnings.md (append-only)
132
+ - [ ] Capture: entry appended to .workflow/specs/learnings.md (append-only)
133
133
  - [ ] List: filters applied, newest-first, respects --limit
134
134
  - [ ] Search: grep with weighted ranking across title/tags/summary
135
135
  - [ ] Show: full record displayed for valid INS-id
@@ -223,9 +223,9 @@ Display report: scope, tasks completed/blocked, reflection rounds, strategy adju
223
223
  | Result | Next Step |
224
224
  |--------|-----------|
225
225
  | All tests pass, refactoring complete | `$quality-sync` (update codebase docs) |
226
- | Test failures remain after refactor | `$quality-debug "{scope}"` |
226
+ | Test failures remain after refactor | `$quality-debug "test failures in {scope} after refactor"` (debug expects bug description, not raw scope) |
227
227
  | No test suite available for scope | `$quality-auto-test "{phase}"` |
228
- | Partial completion (some blocked) | `$quality-debug "{scope}"` for blocked tasks |
228
+ | Partial completion (some blocked) | `$quality-debug "blocked refactor tasks in {scope}: <task titles>"` |
229
229
  </execution>
230
230
 
231
231
  <error_codes>
@@ -8,7 +8,7 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
8
8
  <purpose>
9
9
  Multi-lens retrospective for completed phases. Context-Agent Fork loads phase artifacts once;
10
10
  four parallel lens agents (technical, process, quality, decision) analyze independently;
11
- synthesizer distills insights; outputs are routed to spec stubs, knowhow tips, issues, and specs/learnings.md.
11
+ synthesizer distills insights; outputs are routed to spec stubs, knowhow tips, issues, and .workflow/specs/learnings.md.
12
12
 
13
13
  ```
14
14
  +------------------------------------------------------------------+
@@ -132,7 +132,7 @@ Each artifact's type determines its outputs at `.workflow/{a.path}/`:
132
132
  7. **Archive before overwrite**: Move existing retrospective.{md,json} to `.history/` with timestamp before writing new ones
133
133
  8. **Spec learnings.md backward-compat**: Append to it only if it already exists -- never create it
134
134
  9. **Route confirmation**: Unless `-y`, present routing table and ask per-group before writing spec/issue/knowhow
135
- 10. **Lessons always written**: Append to `specs/learnings.md` regardless of `--no-route` -- routing only controls spec/issue/knowhow creation
135
+ 10. **Lessons always written**: Append to `.workflow/specs/learnings.md` regardless of `--no-route` -- routing only controls spec/issue/knowhow creation
136
136
  </invariants>
137
137
 
138
138
  <execution>
@@ -294,6 +294,6 @@ Next steps: `$manage-status`, `$manage-issue "list --source retrospective"`, `$m
294
294
  - [ ] Synthesizer produces deduplicated insights with stable INS-ids
295
295
  - [ ] Routing applied per insight (spec/issue/knowhow/none) with confirmation
296
296
  - [ ] retrospective.{md,json} written to phase directory
297
- - [ ] Lessons appended to specs/learnings.md regardless of --no-route flag
297
+ - [ ] Lessons appended to .workflow/specs/learnings.md regardless of --no-route flag
298
298
  - [ ] Existing retrospective archived before overwrite
299
299
  </success_criteria>
@@ -9,6 +9,10 @@ Systematic security audit covering OWASP Top 10, dependency supply chain, secret
9
9
  CI/CD pipeline review, and optional STRIDE threat modeling. Three tiers control depth vs speed.
10
10
  </purpose>
11
11
 
12
+ <required_reading>
13
+ @~/.maestro/workflows/review.md
14
+ </required_reading>
15
+
12
16
  <context>
13
17
  $ARGUMENTS -- Parse tier and scope:
14
18
  - Tier: `quick` (default) | `standard` | `deep`
@@ -142,6 +146,26 @@ CONCERNS: {count} critical findings require immediate action
142
146
  NEXT: $quality-review
143
147
  --- END STATUS ---
144
148
  ```
149
+
150
+ **Register artifact on completion** (so retrospective/harvest can trace this audit):
151
+ ```
152
+ Append to state.json.artifacts[]:
153
+ {
154
+ id: nextArtifactId(artifacts, "review"), // RVW-NNN (security-audit reuses review type)
155
+ type: "review",
156
+ subtype: "security-audit",
157
+ milestone: current_milestone || null,
158
+ phase: target_phase || null,
159
+ scope: target_phase ? "phase" : "standalone",
160
+ path: "scratch/{YYYYMMDD}-security-audit-{tier}-{slug}",
161
+ status: critical_count == 0 ? "completed" : "completed_with_concerns",
162
+ tier: tier, // quick|standard|deep
163
+ harvested: false,
164
+ created_at: start_time,
165
+ completed_at: now()
166
+ }
167
+ ```
168
+ Write findings report to the same `path` (severity matrix, file:line refs, remediation).
145
169
  </execution>
146
170
 
147
171
  <success_criteria>
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: spec-remove
3
3
  description: Remove spec entry by ID
4
- argument-hint: "<entry-id>"
4
+ argument-hint: "<entry-id> [--cascade]"
5
5
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
6
6
  ---
7
7
 
@@ -23,6 +23,9 @@ $ARGUMENTS — entry ID to remove (e.g., `spec-learnings-003`)
23
23
  - `maestro wiki list --type spec --json` — list all spec entries
24
24
  - `/spec-load --keyword <term>` — find by keyword
25
25
  - `maestro wiki search "<query>"` — BM25 search
26
+
27
+ **Flags:**
28
+ - `--cascade` — When the target spec is a ref-type entry (created via `spec-add --ref` and linked to a knowhow document), also delete the referenced knowhow file. Without this flag, ref-type removal leaves an orphan knowhow file.
26
29
  </context>
27
30
 
28
31
  <execution>
@@ -45,6 +48,8 @@ Display entry details. Ask user to confirm unless `-y` flag present.
45
48
 
46
49
  Run `maestro wiki remove-entry <entry-id>`. WikiIndexer auto-updates `wiki-index.json`.
47
50
 
51
+ If `--cascade` is set and the entry has a `ref` attribute pointing to a knowhow file, also delete that file to avoid leaving an orphan.
52
+
48
53
  ### Step 5: Verify & Report
49
54
 
50
55
  Confirm removal via `maestro wiki get <entry-id>` (should return not-found). Display removed ID, source file, and commands for verify/re-add.
@@ -65,5 +70,6 @@ Confirm removal via `maestro wiki get <entry-id>` (should return not-found). Dis
65
70
  - [ ] User confirmed removal
66
71
  - [ ] Entry removed via `maestro wiki remove-entry`
67
72
  - [ ] Wiki index auto-updated
68
- - [ ] Confirmation displayed
73
+ - [ ] If `--cascade` and entry has a `ref` attribute: referenced knowhow file deleted, orphan avoided
74
+ - [ ] Confirmation displayed (and cascaded knowhow path if applicable)
69
75
  </success_criteria>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maestro-flow",
3
- "version": "0.4.12",
3
+ "version": "0.4.13",
4
4
  "description": "Workflow orchestration CLI with MCP endpoint support and extensible architecture",
5
5
  "type": "module",
6
6
  "imports": {
@@ -108,6 +108,8 @@ For point-to-point delivery, use `send_message` directly.
108
108
 
109
109
  ### Search — Query Before Acting
110
110
 
111
+ **Before planning or implementing any task, search wiki and spec first** — the knowledge base contains reusable methods, tools, and hard-won experience. Load the right knowledge at the right time: search before you plan, load relevant entries before you implement, and revisit when you hit unfamiliar territory mid-task.
112
+
111
113
  When tackling unfamiliar domains or cross-cutting concerns, search existing knowledge first:
112
114
  - `maestro spec load --category <cat>` — load rules by category (coding/arch/debug/test/review/learning)
113
115
  - `maestro spec load --keyword <kw>` — cross-category keyword match
@@ -36,7 +36,7 @@ specs_arch = maestro spec load --category arch
36
36
 
37
37
  ### Step 1: Read State & Route
38
38
 
39
- Read project state signals and auto-select scenario source. This is the **sole branch point** in the pipeline.
39
+ Read project state signals and auto-select scenario source. This is the **primary branch point, with Route-specific extraction in Step 2** (after Step 2 normalization, the downstream pipeline is identical).
40
40
 
41
41
  ```
42
42
  Priority: Resume > Re-run > Spec > Gap > Code
@@ -54,6 +54,11 @@ Priority: Resume > Re-run > Spec > Gap > Code
54
54
  Action: load failed/blocked scenarios with status reset to pending
55
55
  Skip to Step 4 (scenarios pre-loaded, plan confirmation)
56
56
 
57
+ # Note: `integration/state.json` and `business/business-test-report.json` are
58
+ # legacy compat paths read for backward compatibility only. The new pipeline
59
+ # writes exclusively to `.tests/auto-test/state.json` and `.tests/auto-test/report.json`
60
+ # (these legacy paths are superseded; see migration table at end of file).
61
+
57
62
  3. SPEC:
58
63
  Check: .workflow/blueprint/BLP-*/requirements/REQ-*.md exists
59
64
  Resolve: SPEC_DIR from index.json.blueprint_ref or most recent BLP-*/
@@ -329,23 +329,37 @@ When `ui-designer` is among the selected roles, establish the project's visual d
329
329
 
330
330
  For EACH selected role, spawn a `role-design-author` agent in parallel. Each agent produces a multi-file analysis under `{output_dir}/{role}/`.
331
331
 
332
+ **Path resolution (orchestrator responsibility, BEFORE invocation)**:
333
+ - Resolve `{output_dir}` to an **absolute path** (e.g., `D:/proj/.workflow/scratch/brainstorm-foo-20260521`). Do NOT pass the literal `.workflow/...` relative form — agent Write tool requires absolute paths.
334
+ - Expand `~/` in `role_template_path` to the user home absolute path.
335
+ - For absent optional fields (e.g., `style_skill` when role ≠ ui-designer, `design_research` when Step 1.7 was skipped), pass the literal string `null` — never a conditional placeholder like `{x if y}`.
336
+
332
337
  ```
333
338
  Agent({
334
339
  subagent_type: "role-design-author",
335
340
  prompt: """
336
341
  role_name: {role}
337
- role_template_path: ~/.maestro/templates/planning-roles/{role}.md
338
- guidance_path: {output_dir}/guidance-specification.md
339
- output_dir: {output_dir}/{role}/
342
+ role_template_path: <ABSOLUTE path to planning-roles/{role}.md>
343
+ guidance_path: <ABSOLUTE {output_dir}>/guidance-specification.md
344
+ output_dir: <ABSOLUTE {output_dir}>/{role}/
340
345
  feature_list: <F-id + slug + title rows from guidance §10>
341
- design_research: {output_dir}/design-research.md if exists, else null
342
- project_specs: {specs_content or null}
343
- user_context: {session.role_decisions[role] if any}
344
- style_skill: {style_skill_path if role == ui-designer and provided}
346
+ design_research: <ABSOLUTE path>/design-research.md OR null
347
+ project_specs: <specs_content text> OR null
348
+ user_context: <session.role_decisions[role] text> OR null
349
+ style_skill: <ABSOLUTE style-skill SKILL.md path> OR null
350
+
351
+ Follow the Output Contract in `.claude/agents/role-design-author.md` (§1 Role Mandate,
352
+ §2 Decision Digest with 4 tables, §3 Cross-Cutting Foundations, §4 File Index, §5 TODOs)
353
+ — this is authoritative. The role template's "Brainstorming Analysis Structure" section
354
+ is legacy single-file scaffolding; ignore it for file layout. Use the role template ONLY
355
+ for §3 subsection headings (via the "MUST-Have Sections (Brainstorming)" block when present).
345
356
 
346
- Write the analysis files per the role template's "Brainstorming Analysis Structure".
347
357
  Reference guidance decisions by ID (e.g., SA-03) — do NOT copy decision text.
348
358
  All behavioural statements MUST use RFC 2119 keywords.
359
+
360
+ MUST use the Write tool to persist every file under output_dir/. After all writes, verify
361
+ with Glob that `analysis.md` and each `analysis-F-*.md` exist on disk, then emit the
362
+ `TASK COMPLETE` return protocol. Returning analysis as text without files is failure.
349
363
  """,
350
364
  run_in_background: false
351
365
  })
@@ -21,6 +21,8 @@ Available CLI endpoints are dynamically defined by the config file
21
21
 
22
22
  ### Search — Query Before Acting
23
23
 
24
+ **Before planning or implementing any task, search wiki and spec first** — the knowledge base contains reusable methods, tools, and hard-won experience. Load the right knowledge at the right time: search before you plan, load relevant entries before you implement, and revisit when you hit unfamiliar territory mid-task.
25
+
24
26
  When tackling unfamiliar domains or cross-cutting concerns, search existing knowledge first:
25
27
  - `maestro spec load --category <cat>` — load rules by category (coding/arch/debug/test/review/learning)
26
28
  - `maestro spec load --keyword <kw>` — cross-category keyword match
@@ -1,5 +1,12 @@
1
1
  # Codex Code Guidelines
2
+ ## Delegate & CLI
2
3
 
4
+ - **Delegate Usage**: @~/.maestro/workflows/delegate-usage.md
5
+ - **CLI Endpoints Config**: @~/.maestro/cli-tools.json
6
+
7
+ **Strictly follow the cli-tools.json configuration**
8
+
9
+ Available CLI endpoints are dynamically defined by the config file
3
10
 
4
11
  ## Code Quality Standards
5
12
 
@@ -55,96 +62,22 @@
55
62
  - Treat all pre-existing uncommitted changes as intentional work-in-progress by other tools
56
63
 
57
64
 
58
- ## System Optimization
59
-
60
- **Direct Binary Calls**: Always call binaries directly in `functions.shell`, set `workdir`, avoid shell wrappers (`bash -lc`, `cmd /c`, etc.)
61
-
62
- **Text Editing Priority**:
63
- 1. Use `apply_patch` tool for all routine text edits
64
- 2. Fall back to `sed` for single-line substitutions if unavailable
65
- 3. Avoid Python editing scripts unless both fail
66
-
67
- **apply_patch invocation**:
68
- ```json
69
- {
70
- "command": ["apply_patch", "*** Begin Patch\n*** Update File: path/to/file\n@@\n- old\n+ new\n*** End Patch\n"],
71
- "workdir": "<workdir>",
72
- "justification": "Brief reason"
73
- }
74
- ```
75
-
76
- **Windows UTF-8 Encoding** (before commands):
77
- ```powershell
78
- [Console]::InputEncoding = [Text.UTF8Encoding]::new($false)
79
- [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)
80
- chcp 65001 > $null
81
- ```
82
-
83
- ## Context Acquisition (MCP Tools Priority)
84
-
85
- **For task context gathering and analysis, ALWAYS prefer MCP tools**:
65
+ ## Knowledge System
86
66
 
87
- 1. **mcp__ace-tool__search_context** - HIGHEST PRIORITY for code discovery
88
- - Semantic search with real-time codebase index
89
- - Use for: finding implementations, understanding architecture, locating patterns
90
- - Example: `mcp__ace-tool__search_context(project_root_path="/path", query="authentication logic")`
67
+ ### Search Query Before Acting
91
68
 
92
- 2. **smart_search** - Fallback for structured search
93
- - Use `smart_search(query="...")` for keyword/regex search
94
- - Use `smart_search(action="find_files", pattern="*.ts")` for file discovery
95
- - Supports modes: `auto`, `hybrid`, `exact`, `ripgrep`
69
+ **Before planning or implementing any task, search wiki and spec first** — the knowledge base contains reusable methods, tools, and hard-won experience. Load the right knowledge at the right time: search before you plan, load relevant entries before you implement, and revisit when you hit unfamiliar territory mid-task.
96
70
 
97
- 3. **read_file** - Batch file reading
98
- - Read multiple files in parallel: `read_file(path="file1.ts")`, `read_file(path="file2.ts")`
99
- - Supports glob patterns: `read_file(path="src/**/*.config.ts")`
71
+ - `maestro spec load --category <cat>` — load rules by category (coding/arch/debug/test/review/learning)
72
+ - `maestro spec load --keyword <kw>` cross-category keyword match
73
+ - `maestro wiki search "<query>"` — full-text search across all knowhow
74
+ - `maestro wiki list --category <cat>` → `maestro wiki load <id>` — browse then load full detail
100
75
 
101
- **Priority Order**:
102
- ```
103
- ACE search_context (semantic) → smart_search (structured) → read_file (batch read) → shell commands (fallback)
104
- ```
105
-
106
- **NEVER** use shell commands (`cat`, `find`, `grep`) when MCP tools are available.
107
-
108
- ## Workflow Session Awareness
109
-
110
- | Workflow | Directory | Summary File |
111
- |----------|-----------|-------------|
112
- | `workflow-plan` | `.workflow/active/WFS-*/` | `workflow-session.json` |
113
- | `workflow-lite-plan` | `.workflow/.lite-plan/{date}-{slug}/` | `plan.json` |
114
- | `analyze-with-file` | `.workflow/.analysis/ANL-*/` | `conclusions.json` |
115
- | `multi-cli-plan` | `.workflow/.multi-cli-plan/*/` | `session-state.json` |
116
- | `lite-fix` | `.workflow/.lite-fix/*/` | `fix-plan.json` |
117
- | Other | `.workflow/.debug/`, `.workflow/.scratchpad/`, `.workflow/archives/` | — |
118
-
119
- Before starting work, scan recent sessions (7 days) to avoid conflicts and reuse prior work:
120
- - Overlapping file scope → warn, suggest referencing prior session
121
- - Complementary findings → feed into current task context
122
-
123
-
124
- ## Knowledge Capture
76
+ ### Knowledge Capture
125
77
 
126
78
  - **Spec writes** → always `<spec-entry>` closed-tag format with `category`, `keywords`, `date`, `source`. Never raw Markdown. Route through `spec-add` when possible.
127
79
  - **Capture signal** → when execution surfaces non-obvious knowledge (plan deviation, retry pattern, root cause, constraint violation), ask user once whether to persist it. Match category to content: decisions→`arch`, pitfalls→`debug`/`learning`, patterns→`coding`, rules→`quality`.
128
80
  - **Promotion** → at milestone close, scan learnings for repeated keywords (≥2 entries) and offer to graduate them into formal conventions.
129
81
  - **Traceability** → every entry needs a source anchor: `file:line`, `INS-{id}`, commit, or phase path.
130
82
 
131
- ## Execution Checklist
132
-
133
- **Before**:
134
- - [ ] Understand PURPOSE and TASK clearly
135
- - [ ] Use ACE search_context first, fallback to smart_search for discovery
136
- - [ ] Use read_file to batch read context files, find 3+ patterns
137
- - [ ] Check RULES templates and constraints
138
-
139
- **During**:
140
- - [ ] Follow existing patterns exactly
141
- - [ ] Write tests alongside code
142
- - [ ] Run tests after every change
143
- - [ ] Commit working code incrementally
144
-
145
- **After**:
146
- - [ ] All tests pass
147
- - [ ] Coverage meets target
148
- - [ ] Build succeeds
149
- - [ ] All EXPECTED deliverables met
150
- - [ ] Non-obvious knowledge surfaced? → offer `spec-add`
83
+
@@ -3,7 +3,7 @@
3
3
  Debug issues using scientific method with subagent isolation. Supports three modes:
4
4
 
5
5
  1. **Standalone**: User describes issue, gather symptoms via 5 questions
6
- 2. **From UAT**: --from-uat reads uat.md gaps as pre-filled symptoms (skip gathering)
6
+ 2. **From UAT**: --from-uat reads uat.md gaps as pre-filled symptoms (skip gathering). Input-only: does not write back to uat.md/test artifacts (test workflow is the sole caller and owns uat.md writes).
7
7
  3. **Parallel**: --parallel spawns one debug agent per gap cluster concurrently
8
8
 
9
9
  Output: understanding.md + evidence.ndjson per investigation.
@@ -40,7 +40,7 @@ Unlike `retrospective.md` which is phase-scoped and post-execution, harvest oper
40
40
  | `--dry-run` | Preview extracted items without writing to any store |
41
41
  | `-y` / `--yes` | Skip confirmation prompts, accept all routing |
42
42
  | `--min-confidence N` | Minimum extraction confidence 0.0-1.0 (default: 0.5) |
43
- | `--prune` | State hygiene mode: classify artifacts, graduate harvested ones to knowhow, archive from state.json, prune accumulated_context |
43
+ | `--prune` | State hygiene mode: classify artifacts, graduate harvested ones to knowhow, archive from state.json, prune accumulated_context. **Note:** `harvest --prune` *promotes* artifacts to knowhow (and trims state.json); this differs from `knowhow.md`'s `prune` operation which *deletes* knowhow entries. The two `--prune` flags share a name but operate on different stores in opposite directions. |
44
44
  | `--age N` | Graduation age threshold in days (default: 14). Only artifacts older than N days are prune candidates. Used with `--prune` |
45
45
 
46
46
  ---
@@ -1,5 +1,7 @@
1
1
  # Impeccable Harvest Workflow
2
2
 
3
+ > **Note**: Post-harvest hook, distinct from `/maestro-impeccable` command. This file is the harvest workflow invoked AFTER an impeccable run; it is not the impeccable command entry itself (see `chainMap['impeccable_*']` in `maestro.md`).
4
+
3
5
  Post-execution knowledge capture for maestro-impeccable commands. Extracts design decisions and persists to `.workflow/knowhow/` + `specs/`.
4
6
 
5
7
  ---
@@ -3,109 +3,23 @@
3
3
  > **DEPRECATED**: Superseded by `issue-gaps-analyze.md` which adds batch support and context.md output.
4
4
  > Use `maestro-analyze --gaps [ISS-ID]` instead.
5
5
 
6
- Root cause analysis for a specific issue using CLI exploration and codebase context gathering.
6
+ This workflow's executable steps have been removed to prevent divergent implementations.
7
7
 
8
- ## Input
8
+ ## Migration
9
9
 
10
- - `$ARGUMENTS`: `<ISS-ID> [--tool gemini|qwen] [--depth standard|deep]`
11
- - Operates on `.workflow/issues/`
10
+ | Old usage | New usage |
11
+ |-----------|-----------|
12
+ | `manage-issue-analyze ISS-ID` | `/maestro-analyze --gaps ISS-ID` |
13
+ | `manage-issue-analyze` (batch) | `/maestro-analyze --gaps` |
14
+ | `manage-issue-plan ISS-ID` (follow-up) | `/maestro-plan --gaps ISS-ID` |
12
15
 
13
- ---
16
+ ## See Also
14
17
 
15
- ### Step 1: Parse Arguments
18
+ - `issue-gaps-analyze.md` current implementation (single + batch, classification, parallel exploration, context.md)
19
+ - `issue-gaps-analyze.codex.md` — codex variant using `spawn_agents_on_csv` waves
20
+ - `issue-execute.md` — downstream execution after planning
16
21
 
17
- ```
18
- Extract ISS-ID (required, pattern ISS-\d{8}-\d{3}).
19
- Flags: --tool gemini|qwen (default: gemini), --depth standard|deep (default: standard)
20
- ```
22
+ ## Notes
21
23
 
22
- ---
23
-
24
- ### Step 2: Load Issue and Validate
25
-
26
- ```
27
- Load ISS-ID from .workflow/issues/issues.jsonl → fatal if file missing or ID not found.
28
- Status check: open/registered → proceed; other → warn but continue (non-destructive).
29
- ```
30
-
31
- ---
32
-
33
- ### Step 3: Gather Codebase Context
34
-
35
- ```
36
- Extract keywords from issue title, description, location, affected_components.
37
-
38
- Standard depth: grep keywords in source files → top 20 paths, read 10 lines around
39
- top 5 matches.
40
- Deep depth: standard grep + semantic Agent search (error handling, data flow, deps),
41
- merge results.
42
-
43
- Build CODEBASE_CONTEXT: related files, key snippets (max 50 lines), dependency chain.
44
- ```
45
-
46
- ---
47
-
48
- ### Step 4: Run CLI Analysis
49
-
50
- ```
51
- Delegate root cause analysis with issue details + CODEBASE_CONTEXT:
52
-
53
- maestro delegate "Root cause analysis for {ISS-ID}: {ISSUE.title}
54
- ISSUE: title, description, severity, location, fix_direction
55
- CODEBASE CONTEXT: {CODEBASE_CONTEXT}
56
- TASK: Identify root cause (file:line) → assess impact → list related files → rate confidence → suggest fix
57
- EXPECTED: JSON { root_cause, impact, related_files[], confidence, suggested_approach }
58
- CONSTRAINTS: Evidence-only, no speculation
59
- " --to {TOOL} --mode analysis
60
-
61
- Validate response: all required fields present.
62
- Parse failure → save raw output to issue feedback for review.
63
- ```
64
-
65
- ---
66
-
67
- ### Step 5: Build Analysis Record
68
-
69
- ```
70
- Construct IssueAnalysis:
71
- { root_cause, impact, related_files, confidence, suggested_approach, analyzed_at: NOW_ISO, analyzed_by: TOOL }
72
- ```
73
-
74
- ---
75
-
76
- ### Step 6: Update Issue in JSONL
77
-
78
- ```
79
- Read-modify-write issues.jsonl:
80
- Set issue.analysis = ANALYSIS, updated_at = NOW_ISO
81
- Append issue_history: actor "analysis-agent", note "confidence: {confidence}"
82
- Status unchanged (analysis is metadata enrichment).
83
- Verify: re-read file, confirm analysis field present.
84
- ```
85
-
86
- ---
87
-
88
- ### Step 7: Display Summary and Next Steps
89
-
90
- ```
91
- Display: root cause, impact, confidence, related files, suggested approach.
92
-
93
- Next steps:
94
- - manage-issue-plan {ISS-ID} (generate solution | --tool {TOOL})
95
- - manage-issue status {ISS-ID}
96
- ```
97
-
98
- ---
99
-
100
- ## Output
101
-
102
- - **Updated**: `.workflow/issues/issues.jsonl` -- issue record enriched with `analysis` field
103
- - **Analysis fields**: root_cause, impact, related_files, confidence, suggested_approach, analyzed_at, analyzed_by
104
-
105
- ## Quality Criteria
106
-
107
- - Analysis grounded in actual codebase evidence (file:line references)
108
- - JSON result validated before writing to JSONL
109
- - Issue status unchanged (analysis is non-destructive enrichment)
110
- - Read-modify-write pattern preserves other issues in JSONL
111
- - Next-step routing guides user to solution planning
24
+ - Issue records analyzed by the new pipeline still write to `.workflow/issues/issues.jsonl` with `analysis` field (root_cause, impact, related_files, confidence, suggested_approach, analyzed_at, analyzed_by).
25
+ - Status is unchanged by analysis (non-destructive enrichment).
@@ -148,7 +148,7 @@ Display summary: session ID, mode, raw/unique counts, per-perspective breakdown,
148
148
  Next steps:
149
149
  - manage-issue list --severity critical
150
150
  - manage-issue list
151
- - manage-issue-discover by-prompt "..."
151
+ - see also: /manage-issue-discover usage docs (by-prompt mode for focused scans)
152
152
  ```
153
153
 
154
154
  ---
@@ -211,8 +211,7 @@ Display summary: session, prompt, rounds, raw/unique counts, per-dimension + sev
211
211
 
212
212
  Next steps:
213
213
  - manage-issue list --source discovery
214
- - manage-issue-discover (full 8-perspective scan)
215
- - manage-issue-discover by-prompt "..." (explore another area)
214
+ - see also: /manage-issue-discover usage docs (full 8-perspective scan and by-prompt mode)
216
215
  ```
217
216
 
218
217
  ---
@@ -25,7 +25,7 @@ Flags: --executor claude-code|codex|gemini (default: claude-code), --dry-run (de
25
25
 
26
26
  ```
27
27
  Load ISS-ID from .workflow/issues/issues.jsonl → fatal if file missing or ID not found.
28
- Require issue.solution with non-empty steps[] → error if missing (run manage-issue-plan first).
28
+ Require issue.solution with non-empty steps[] → error if missing (run `maestro-plan --gaps {ISS-ID}` first).
29
29
  Resolve EXECUTOR → CLI tool (claude-code→claude, codex→codex, gemini→gemini), all with --mode write.
30
30
  ```
31
31