maestro-flow 0.4.9 → 0.4.10

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 (187) hide show
  1. package/.agy/agents/cli-explore-agent.md +186 -0
  2. package/.agy/agents/conceptual-planning-agent.md +244 -0
  3. package/.agy/agents/impeccable-agent.md +97 -0
  4. package/.agy/agents/team-supervisor.md +142 -0
  5. package/.agy/agents/team-worker.md +236 -0
  6. package/.agy/agents/ui-design-agent.md +286 -0
  7. package/.agy/agents/workflow-analyzer.md +114 -0
  8. package/.agy/agents/workflow-codebase-mapper.md +76 -0
  9. package/.agy/agents/workflow-collab-planner.md +142 -0
  10. package/.agy/agents/workflow-debugger.md +102 -0
  11. package/.agy/agents/workflow-executor.md +131 -0
  12. package/.agy/agents/workflow-external-researcher.md +86 -0
  13. package/.agy/agents/workflow-integration-checker.md +82 -0
  14. package/.agy/agents/workflow-nyquist-auditor.md +84 -0
  15. package/.agy/agents/workflow-phase-researcher.md +84 -0
  16. package/.agy/agents/workflow-plan-checker.md +89 -0
  17. package/.agy/agents/workflow-planner.md +194 -0
  18. package/.agy/agents/workflow-project-researcher.md +73 -0
  19. package/.agy/agents/workflow-research-synthesizer.md +70 -0
  20. package/.agy/agents/workflow-reviewer.md +81 -0
  21. package/.agy/agents/workflow-roadmapper.md +81 -0
  22. package/.agy/agents/workflow-verifier.md +119 -0
  23. package/.agy/skills/codify-to-knowhow/SKILL.md +172 -0
  24. package/.agy/skills/codify-to-knowhow/phases/01-load-manifest.md +101 -0
  25. package/.agy/skills/codify-to-knowhow/phases/02-generate-knowhow.md +97 -0
  26. package/.agy/skills/codify-to-knowhow/phases/03-generate-specs.md +92 -0
  27. package/.agy/skills/codify-to-knowhow/phases/04-index-verify.md +119 -0
  28. package/.agy/skills/learn-decompose/SKILL.md +118 -0
  29. package/.agy/skills/learn-follow/SKILL.md +129 -0
  30. package/.agy/skills/learn-investigate/SKILL.md +154 -0
  31. package/.agy/skills/learn-retro/SKILL.md +159 -0
  32. package/.agy/skills/learn-second-opinion/SKILL.md +124 -0
  33. package/.agy/skills/maestro/SKILL.md +221 -0
  34. package/.agy/skills/maestro-amend/SKILL.md +162 -0
  35. package/.agy/skills/maestro-analyze/SKILL.md +135 -0
  36. package/.agy/skills/maestro-brainstorm/SKILL.md +118 -0
  37. package/.agy/skills/maestro-collab/SKILL.md +174 -0
  38. package/.agy/skills/maestro-composer/SKILL.md +180 -0
  39. package/.agy/skills/maestro-execute/SKILL.md +133 -0
  40. package/.agy/skills/maestro-fork/SKILL.md +88 -0
  41. package/.agy/skills/maestro-guard/SKILL.md +101 -0
  42. package/.agy/skills/maestro-help/SKILL.md +267 -0
  43. package/.agy/skills/maestro-help/index/catalog.json +184 -0
  44. package/.agy/skills/maestro-help/phases/01-parse-intent.md +122 -0
  45. package/.agy/skills/maestro-help/phases/02-search-present.md +181 -0
  46. package/.agy/skills/maestro-help/phases/03-workflow-guide.md +186 -0
  47. package/.agy/skills/maestro-impeccable/SKILL.md +250 -0
  48. package/.agy/skills/maestro-init/SKILL.md +80 -0
  49. package/.agy/skills/maestro-learn/SKILL.md +142 -0
  50. package/.agy/skills/maestro-merge/SKILL.md +66 -0
  51. package/.agy/skills/maestro-milestone-audit/SKILL.md +70 -0
  52. package/.agy/skills/maestro-milestone-complete/SKILL.md +77 -0
  53. package/.agy/skills/maestro-milestone-release/SKILL.md +98 -0
  54. package/.agy/skills/maestro-overlay/SKILL.md +177 -0
  55. package/.agy/skills/maestro-plan/SKILL.md +172 -0
  56. package/.agy/skills/maestro-player/SKILL.md +176 -0
  57. package/.agy/skills/maestro-quick/SKILL.md +67 -0
  58. package/.agy/skills/maestro-ralph/SKILL.md +546 -0
  59. package/.agy/skills/maestro-ralph-execute/SKILL.md +255 -0
  60. package/.agy/skills/maestro-roadmap/SKILL.md +170 -0
  61. package/.agy/skills/maestro-tools-execute/SKILL.md +119 -0
  62. package/.agy/skills/maestro-tools-register/SKILL.md +159 -0
  63. package/.agy/skills/maestro-ui-codify/SKILL.md +81 -0
  64. package/.agy/skills/maestro-update/SKILL.md +175 -0
  65. package/.agy/skills/maestro-verify/SKILL.md +111 -0
  66. package/.agy/skills/manage-codebase-rebuild/SKILL.md +77 -0
  67. package/.agy/skills/manage-codebase-refresh/SKILL.md +59 -0
  68. package/.agy/skills/manage-harvest/SKILL.md +96 -0
  69. package/.agy/skills/manage-issue/SKILL.md +72 -0
  70. package/.agy/skills/manage-issue-discover/SKILL.md +83 -0
  71. package/.agy/skills/manage-knowhow/SKILL.md +76 -0
  72. package/.agy/skills/manage-knowhow-capture/SKILL.md +78 -0
  73. package/.agy/skills/manage-learn/SKILL.md +64 -0
  74. package/.agy/skills/manage-status/SKILL.md +51 -0
  75. package/.agy/skills/manage-wiki/SKILL.md +61 -0
  76. package/.agy/skills/quality-auto-test/SKILL.md +135 -0
  77. package/.agy/skills/quality-debug/SKILL.md +122 -0
  78. package/.agy/skills/quality-refactor/SKILL.md +69 -0
  79. package/.agy/skills/quality-retrospective/SKILL.md +79 -0
  80. package/.agy/skills/quality-review/SKILL.md +130 -0
  81. package/.agy/skills/quality-sync/SKILL.md +53 -0
  82. package/.agy/skills/quality-test/SKILL.md +119 -0
  83. package/.agy/skills/security-audit/SKILL.md +157 -0
  84. package/.agy/skills/skill-iter-tune/SKILL.md +381 -0
  85. package/.agy/skills/skill-iter-tune/phases/01-setup.md +144 -0
  86. package/.agy/skills/skill-iter-tune/phases/02-execute.md +292 -0
  87. package/.agy/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
  88. package/.agy/skills/skill-iter-tune/phases/04-improve.md +198 -0
  89. package/.agy/skills/skill-iter-tune/phases/05-report.md +166 -0
  90. package/.agy/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
  91. package/.agy/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
  92. package/.agy/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
  93. package/.agy/skills/spec-add/SKILL.md +67 -0
  94. package/.agy/skills/spec-load/SKILL.md +70 -0
  95. package/.agy/skills/spec-remove/SKILL.md +50 -0
  96. package/.agy/skills/spec-setup/SKILL.md +47 -0
  97. package/.agy/skills/team-coordinate/SKILL.md +267 -0
  98. package/.agy/skills/team-coordinate/roles/coordinator/commands/analyze-task.md +247 -0
  99. package/.agy/skills/team-coordinate/roles/coordinator/commands/dispatch.md +131 -0
  100. package/.agy/skills/team-coordinate/roles/coordinator/commands/monitor.md +348 -0
  101. package/.agy/skills/team-coordinate/roles/coordinator/role.md +362 -0
  102. package/.agy/skills/team-coordinate/specs/knowledge-transfer.md +111 -0
  103. package/.agy/skills/team-coordinate/specs/pipelines.md +97 -0
  104. package/.agy/skills/team-coordinate/specs/quality-gates.md +112 -0
  105. package/.agy/skills/team-coordinate/specs/role-spec-template.md +198 -0
  106. package/.agy/skills/team-executor/SKILL.md +180 -0
  107. package/.agy/skills/team-executor/roles/executor/commands/monitor.md +235 -0
  108. package/.agy/skills/team-executor/roles/executor/role.md +171 -0
  109. package/.agy/skills/team-executor/specs/session-schema.md +264 -0
  110. package/.agy/skills/team-lifecycle-v4/SKILL.md +189 -0
  111. package/.agy/skills/team-lifecycle-v4/roles/analyst/role.md +92 -0
  112. package/.agy/skills/team-lifecycle-v4/roles/coordinator/commands/analyze.md +56 -0
  113. package/.agy/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +56 -0
  114. package/.agy/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +206 -0
  115. package/.agy/skills/team-lifecycle-v4/roles/coordinator/role.md +130 -0
  116. package/.agy/skills/team-lifecycle-v4/roles/executor/commands/fix.md +35 -0
  117. package/.agy/skills/team-lifecycle-v4/roles/executor/commands/implement.md +62 -0
  118. package/.agy/skills/team-lifecycle-v4/roles/executor/role.md +64 -0
  119. package/.agy/skills/team-lifecycle-v4/roles/planner/role.md +82 -0
  120. package/.agy/skills/team-lifecycle-v4/roles/reviewer/commands/review-code.md +34 -0
  121. package/.agy/skills/team-lifecycle-v4/roles/reviewer/commands/review-spec.md +44 -0
  122. package/.agy/skills/team-lifecycle-v4/roles/reviewer/role.md +65 -0
  123. package/.agy/skills/team-lifecycle-v4/roles/supervisor/role.md +188 -0
  124. package/.agy/skills/team-lifecycle-v4/roles/tester/role.md +84 -0
  125. package/.agy/skills/team-lifecycle-v4/roles/writer/role.md +92 -0
  126. package/.agy/skills/team-lifecycle-v4/specs/knowledge-transfer.md +114 -0
  127. package/.agy/skills/team-lifecycle-v4/specs/pipelines.md +140 -0
  128. package/.agy/skills/team-lifecycle-v4/specs/quality-gates.md +130 -0
  129. package/.agy/skills/team-lifecycle-v4/templates/architecture.md +254 -0
  130. package/.agy/skills/team-lifecycle-v4/templates/epics.md +196 -0
  131. package/.agy/skills/team-lifecycle-v4/templates/product-brief.md +133 -0
  132. package/.agy/skills/team-lifecycle-v4/templates/requirements.md +224 -0
  133. package/.agy/skills/team-quality-assurance/SKILL.md +148 -0
  134. package/.agy/skills/team-quality-assurance/roles/analyst/role.md +85 -0
  135. package/.agy/skills/team-quality-assurance/roles/coordinator/commands/analyze.md +72 -0
  136. package/.agy/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +111 -0
  137. package/.agy/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +235 -0
  138. package/.agy/skills/team-quality-assurance/roles/coordinator/role.md +143 -0
  139. package/.agy/skills/team-quality-assurance/roles/executor/role.md +62 -0
  140. package/.agy/skills/team-quality-assurance/roles/generator/role.md +65 -0
  141. package/.agy/skills/team-quality-assurance/roles/scout/role.md +72 -0
  142. package/.agy/skills/team-quality-assurance/roles/strategist/role.md +69 -0
  143. package/.agy/skills/team-quality-assurance/specs/pipelines.md +115 -0
  144. package/.agy/skills/team-quality-assurance/specs/team-config.json +131 -0
  145. package/.agy/skills/team-review/SKILL.md +149 -0
  146. package/.agy/skills/team-review/roles/coordinator/commands/analyze.md +71 -0
  147. package/.agy/skills/team-review/roles/coordinator/commands/dispatch.md +91 -0
  148. package/.agy/skills/team-review/roles/coordinator/commands/monitor.md +209 -0
  149. package/.agy/skills/team-review/roles/coordinator/role.md +132 -0
  150. package/.agy/skills/team-review/roles/fixer/role.md +74 -0
  151. package/.agy/skills/team-review/roles/reviewer/role.md +66 -0
  152. package/.agy/skills/team-review/roles/scanner/role.md +77 -0
  153. package/.agy/skills/team-review/specs/dimensions.md +82 -0
  154. package/.agy/skills/team-review/specs/finding-schema.json +82 -0
  155. package/.agy/skills/team-review/specs/pipelines.md +102 -0
  156. package/.agy/skills/team-review/specs/team-config.json +27 -0
  157. package/.agy/skills/team-tech-debt/SKILL.md +133 -0
  158. package/.agy/skills/team-tech-debt/roles/assessor/role.md +76 -0
  159. package/.agy/skills/team-tech-debt/roles/coordinator/commands/analyze.md +47 -0
  160. package/.agy/skills/team-tech-debt/roles/coordinator/commands/dispatch.md +156 -0
  161. package/.agy/skills/team-tech-debt/roles/coordinator/commands/monitor.md +198 -0
  162. package/.agy/skills/team-tech-debt/roles/coordinator/role.md +123 -0
  163. package/.agy/skills/team-tech-debt/roles/executor/role.md +76 -0
  164. package/.agy/skills/team-tech-debt/roles/planner/role.md +68 -0
  165. package/.agy/skills/team-tech-debt/roles/scanner/role.md +90 -0
  166. package/.agy/skills/team-tech-debt/roles/validator/role.md +78 -0
  167. package/.agy/skills/team-tech-debt/specs/pipelines.md +47 -0
  168. package/.agy/skills/team-tech-debt/specs/team-config.json +129 -0
  169. package/.agy/skills/team-testing/SKILL.md +144 -0
  170. package/.agy/skills/team-testing/roles/analyst/role.md +101 -0
  171. package/.agy/skills/team-testing/roles/coordinator/commands/analyze.md +70 -0
  172. package/.agy/skills/team-testing/roles/coordinator/commands/dispatch.md +108 -0
  173. package/.agy/skills/team-testing/roles/coordinator/commands/monitor.md +242 -0
  174. package/.agy/skills/team-testing/roles/coordinator/role.md +134 -0
  175. package/.agy/skills/team-testing/roles/executor/role.md +95 -0
  176. package/.agy/skills/team-testing/roles/generator/role.md +95 -0
  177. package/.agy/skills/team-testing/roles/strategist/role.md +81 -0
  178. package/.agy/skills/team-testing/specs/pipelines.md +101 -0
  179. package/.agy/skills/team-testing/specs/team-config.json +93 -0
  180. package/.agy/skills/wiki-connect/SKILL.md +64 -0
  181. package/.agy/skills/wiki-digest/SKILL.md +70 -0
  182. package/.agy/skills/workflow-skill-designer/SKILL.md +506 -0
  183. package/.agy/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
  184. package/.agy/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
  185. package/.agy/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
  186. package/.agy/skills/workflow-skill-designer/phases/04-validation.md +471 -0
  187. package/package.json +3 -1
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: maestro-merge
3
+ description: Merge milestone worktree branch back to main
4
+ argument-hint: -m <milestone-number> [--force] [--dry-run] [--no-cleanup] [--continue]
5
+ allowed-tools:
6
+ - ask_question
7
+ - define_subagent
8
+ - grep_search
9
+ - invoke_subagent
10
+ - manage_subagents
11
+ - replace_file_content
12
+ - run_command
13
+ - send_message
14
+ - view_file
15
+ - write_to_file
16
+ ---
17
+ <purpose>
18
+ Merge a completed milestone worktree branch back into the main branch, sync scratch artifacts, and reconcile the artifact registry. Uses a two-phase approach: git merge first (source code), artifact sync second (only after git succeeds). This prevents partial state corruption when merge conflicts occur.
19
+
20
+ Includes registry health check, pre-merge rebase (pull main into worktree to minimize conflicts), and atomic state reconciliation (merge artifact entries, don't overwrite).
21
+ </purpose>
22
+
23
+ <required_reading>
24
+ @~/.maestro/workflows/merge.md
25
+ </required_reading>
26
+
27
+ <context>
28
+ $ARGUMENTS -- milestone number and optional flags.
29
+
30
+ Flags (`-m`, `--force`, `--dry-run`, `--no-cleanup`, `--continue`), merge sequence, artifact sync detail, and conflict handling are defined in workflow `merge.md`.
31
+ </context>
32
+
33
+ <execution>
34
+ Follow '~/.maestro/workflows/merge.md' completely.
35
+
36
+ **Knowledge inquiry on completion:**
37
+ After successful merge, ask user once: "Record milestone learnings?" If yes, persist via `Skill("spec-add", "learning \"<title>\" \"<insight>\" --keywords <kw1>,<kw2>")`.
38
+
39
+ **Next-step routing on completion:**
40
+ - View dashboard → view_file(AbsolutePath="<agy-skills-dir>/manage-status/SKILL.md") + execute inline
41
+ - Audit milestone → view_file(AbsolutePath="<agy-skills-dir>/maestro-milestone-audit/SKILL.md") + execute inline
42
+ </execution>
43
+
44
+ <error_codes>
45
+ | Code | Severity | Condition | Recovery |
46
+ |------|----------|-----------|----------|
47
+ | E001 | error | Running inside a worktree | Run from main worktree |
48
+ | E002 | error | No worktree registry found | Nothing to merge |
49
+ | E003 | error | --continue but no merge state | Start fresh merge |
50
+ | E004 | error | No milestone number provided | Provide `-m <N>` |
51
+ | W001 | warning | Stale registry entries found | Auto-cleaned |
52
+ | W002 | warning | Incomplete artifacts (without --force) | Confirm or use --force |
53
+ | W003 | warning | Conflict pulling main into worktree | Resolve in worktree first |
54
+ </error_codes>
55
+
56
+ <success_criteria>
57
+ - [ ] Registry health check passed (stale entries cleaned)
58
+ - [ ] Pre-merge rebase successful (worktree has latest main)
59
+ - [ ] Git merge completed without conflicts (or conflicts resolved via --continue)
60
+ - [ ] All scratch artifacts synced to main `.workflow/scratch/`
61
+ - [ ] `state.json.artifacts[]` reconciled (worktree entries merged into main)
62
+ - [ ] Milestone `"forked"` flag removed in `state.json.milestones[]`
63
+ - [ ] `roadmap.md` completed phases marked
64
+ - [ ] Worktree removed and branch deleted (unless --no-cleanup)
65
+ - [ ] `worktrees.json` registry updated (entry removed)
66
+ </success_criteria>
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: maestro-milestone-audit
3
+ description: Audit current milestone for cross-phase integration gaps
4
+ argument-hint: [<milestone>]
5
+ allowed-tools:
6
+ - ask_question
7
+ - define_subagent
8
+ - grep_search
9
+ - invoke_subagent
10
+ - manage_subagents
11
+ - run_command
12
+ - send_message
13
+ - view_file
14
+ - write_to_file
15
+ ---
16
+
17
+ <purpose>
18
+ Audit milestone completion using the artifact registry. Checks:
19
+ 1. Phase coverage — every phase in roadmap has plan + execute artifacts (completed)
20
+ 2. Ad-hoc completeness — all adhoc artifacts are completed (or explicitly skipped)
21
+ 3. Execution completeness — all tasks in executed plans are completed
22
+ 4. Cross-artifact integration — interfaces, data contracts, configuration consistency
23
+
24
+ Data source: `state.json.artifacts[]` filtered by current milestone.
25
+ Produces audit report at `.workflow/milestones/{milestone}/audit-report.md`.
26
+ </purpose>
27
+
28
+ <required_reading>
29
+ @~/.maestro/workflows/milestone-audit.md
30
+ </required_reading>
31
+
32
+ <context>
33
+ Milestone: $ARGUMENTS (optional -- defaults to current_milestone from state.json).
34
+
35
+ **Requires:** All phases in the milestone should have completed execute artifacts.
36
+
37
+ **Data source:**
38
+ - `.workflow/state.json` — artifacts[], current_milestone, milestones[]
39
+ - `.workflow/roadmap.md` — milestone-to-phase mapping
40
+ - Plan scratch dirs — for task status verification
41
+ </context>
42
+
43
+ <execution>
44
+ Follow '~/.maestro/workflows/milestone-audit.md' completely.
45
+
46
+ Audit checklist steps (phase coverage, ad-hoc completeness, execution completeness, cross-artifact integration) are defined in workflow `milestone-audit.md`.
47
+
48
+ **Next-step routing on completion:**
49
+ - Verdict PASS → `/maestro-milestone-complete {milestone}`
50
+ - Verdict FAIL, integration gaps → `/maestro-plan --gaps`
51
+ - Verdict FAIL, incomplete execution → `/maestro-execute`
52
+ </execution>
53
+
54
+ <error_codes>
55
+ | Code | Severity | Condition | Recovery |
56
+ |------|----------|-----------|----------|
57
+ | E001 | error | Milestone identifier required | Check arguments format |
58
+ | E002 | error | Milestone not found in state.json | Check milestone ID |
59
+ | E003 | error | No execute artifacts found for milestone | Run maestro-execute first |
60
+ | W001 | warning | Some phases lack complete artifact chains | Review incomplete phases |
61
+ </error_codes>
62
+
63
+ <success_criteria>
64
+ - [ ] All phases in milestone identified from roadmap
65
+ - [ ] Artifact chains verified (ANL→PLN→EXC) per phase
66
+ - [ ] Ad-hoc artifacts checked for completion
67
+ - [ ] Integration check completed (shared interfaces, data contracts)
68
+ - [ ] Audit report written with clear PASS/FAIL verdict
69
+ - [ ] Next-step routing provided
70
+ </success_criteria>
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: maestro-milestone-complete
3
+ description: Archive completed milestone and prepare for next
4
+ argument-hint: [<milestone>]
5
+ allowed-tools:
6
+ - ask_question
7
+ - define_subagent
8
+ - grep_search
9
+ - invoke_subagent
10
+ - manage_subagents
11
+ - run_command
12
+ - send_message
13
+ - view_file
14
+ - write_to_file
15
+ ---
16
+
17
+ <purpose>
18
+ Mark a milestone as complete after its audit has passed. Archives all scratch artifacts to `milestones/{M}/artifacts/`, moves artifact entries from `state.json.artifacts[]` to `milestone_history`, extracts final knowhow, and advances to the next milestone.
19
+ </purpose>
20
+
21
+ <required_reading>
22
+ @~/.maestro/workflows/milestone-complete.md
23
+ </required_reading>
24
+
25
+ <context>
26
+ Milestone: $ARGUMENTS (optional -- defaults to current_milestone from state.json).
27
+
28
+ **Requires:** `/maestro-milestone-audit` should have passed.
29
+
30
+ **State files:**
31
+ - `.workflow/state.json` — artifacts[], milestones[], current_milestone, milestone_history[]
32
+ - `.workflow/roadmap.md` — milestone structure
33
+ - `.workflow/milestones/{milestone}/audit-report.md` — audit results
34
+ </context>
35
+
36
+ <execution>
37
+ Follow '~/.maestro/workflows/milestone-complete.md' completely.
38
+
39
+ Archive flow steps (validation, directory archival, artifact history, knowhow extraction, state advancement, cleanup) are defined in workflow `milestone-complete.md`.
40
+
41
+ ### Knowledge Promotion Inquiry
42
+
43
+ After knowhow extraction (step 4), scan `learnings.md` for promotion candidates:
44
+
45
+ 1. **High-frequency pattern detection**: Scan all `<spec-entry>` entries with `roles="implement"` for keyword overlap (≥2 entries sharing keywords):
46
+ → Ask: "Keyword '{keyword}' appears in {N} knowhow entries. Should this be promoted to a formal coding convention? (`/spec-add coding`)"
47
+
48
+ 2. **Convention drift detection**: Compare executed task summaries against `coding-conventions.md` and `architecture-constraints.md`:
49
+ → Ask: "Were any established conventions bypassed during this milestone? Should conventions be updated?"
50
+
51
+ 3. **Wiki island check**: Auto-trigger `wiki-connect --fix` to link newly extracted knowledge.
52
+
53
+ If user confirms promotion, invoke `view_file(AbsolutePath="<agy-skills-dir>/spec-add/SKILL.md") + execute inline (args: "<category> <content>")` with promoted content, preserving original date and source traceability.
54
+
55
+ **Next-step routing on completion:**
56
+ - Cut a release → `/maestro-milestone-release`
57
+ - Next milestone → `/maestro-analyze` or `/maestro-plan 1`
58
+ - View state → `/manage-status`
59
+ </execution>
60
+
61
+ <error_codes>
62
+ | Code | Severity | Condition | Recovery |
63
+ |------|----------|-----------|----------|
64
+ | E001 | error | Milestone identifier required | Check arguments |
65
+ | E002 | error | Audit not passed | Run maestro-milestone-audit first |
66
+ | E003 | error | Incomplete artifacts remain | Complete remaining work first |
67
+ </error_codes>
68
+
69
+ <success_criteria>
70
+ - [ ] Audit report verified as PASS
71
+ - [ ] Scratch artifacts moved to milestones/{M}/artifacts/
72
+ - [ ] Artifact entries archived to milestone_history
73
+ - [ ] Knowhow extracted to specs/learnings.md
74
+ - [ ] state.json updated: next milestone as current, artifacts[] cleared
75
+ - [ ] Roadmap snapshot saved
76
+ - [ ] project.md Context updated with milestone summary
77
+ </success_criteria>
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: maestro-milestone-release
3
+ description: Bump version, generate changelog, tag milestone
4
+ argument-hint: [<version>] [--bump patch|minor|major] [--dry-run] [--no-tag] [--no-push]
5
+ allowed-tools:
6
+ - ask_question
7
+ - define_subagent
8
+ - grep_search
9
+ - invoke_subagent
10
+ - manage_subagents
11
+ - replace_file_content
12
+ - run_command
13
+ - send_message
14
+ - view_file
15
+ - write_to_file
16
+ ---
17
+
18
+ <purpose>
19
+ Package a completed milestone into a releasable version. Bumps the project version (e.g. `package.json`, `pyproject.toml`, or language-specific manifest), generates or appends a changelog entry from phase/milestone summaries and git log, creates an annotated git tag, and optionally pushes to the remote. Runs after `/maestro-milestone-complete` has archived the milestone; serves as the final delivery step in the SDLC loop.
20
+ </purpose>
21
+
22
+ <required_reading>
23
+ @~/.maestro/workflows/milestone-release.md
24
+ </required_reading>
25
+
26
+ <context>
27
+ $ARGUMENTS -- optional explicit version string and flags.
28
+
29
+ **Flags:**
30
+ - `<version>` -- explicit version (e.g. `1.2.0`). If omitted, version is derived from `--bump` or prompted.
31
+ - `--bump patch|minor|major` -- semver bump relative to the current version (default: `minor`)
32
+ - `--dry-run` -- compute the next version, changelog diff, and tag name without writing files or creating tags
33
+ - `--no-tag` -- skip git tag creation (version bump + changelog only)
34
+ - `--no-push` -- skip `git push --follow-tags` after tagging
35
+
36
+ **State files:**
37
+ - `.workflow/state.json` -- current_milestone, previous release version
38
+ - `.workflow/milestones/{milestone}/summary.md` -- milestone summary (from `maestro-milestone-complete`)
39
+ - `.workflow/milestones/{milestone}/audit-report.md` -- audit verdict (must be PASS)
40
+ - `CHANGELOG.md` -- release notes file (created if missing)
41
+ - Version manifest -- `package.json` / `pyproject.toml` / `Cargo.toml` / etc. (auto-detected)
42
+
43
+ **Preconditions:**
44
+ - Current milestone must be completed (audit PASS + `/maestro-milestone-complete` run)
45
+ - Working tree must be clean (no uncommitted changes) unless `--dry-run`
46
+ </context>
47
+
48
+ <execution>
49
+ Follow '~/.maestro/workflows/release.md' completely.
50
+
51
+ **High-level flow:**
52
+ 1. Validate preconditions (milestone completed, clean tree, audit PASS)
53
+ 2. Resolve target version from `<version>` or `--bump` against current manifest
54
+ 3. Collect changes since last release tag: milestone summary + phase summaries + git log between tags
55
+ 4. Generate `CHANGELOG.md` entry (grouped by phase / change type)
56
+ 5. Write version to manifest file(s) + commit with message `chore(release): v{version}`
57
+ 6. Create annotated git tag `v{version}` with release notes body (unless `--no-tag`)
58
+ 7. Push commit + tag to remote (unless `--no-push`)
59
+
60
+ **Report format on completion:**
61
+ ```
62
+ === RELEASE COMPLETE ===
63
+ Version: v{previous} → v{new}
64
+ Milestone: {milestone_name}
65
+ Tag: v{new} {pushed|local-only}
66
+ Changelog: {N} entries written to CHANGELOG.md
67
+ Manifest: {file_path} updated
68
+
69
+ Next steps:
70
+ /maestro-plan {next_phase} -- Start next milestone's first phase
71
+ /manage-status -- View project dashboard
72
+ ```
73
+
74
+ For `--dry-run`, print the computed version, changelog diff, and tag name without side effects.
75
+ </execution>
76
+
77
+ <error_codes>
78
+ | Code | Severity | Condition | Recovery |
79
+ |------|----------|-----------|----------|
80
+ | E001 | error | Current milestone not completed (no milestone-complete run) | Run `/maestro-milestone-complete` first |
81
+ | E002 | error | Audit verdict not PASS | Re-run `/maestro-milestone-audit` and resolve findings |
82
+ | E003 | error | Working tree not clean (uncommitted changes) | Commit or stash changes, then retry |
83
+ | E004 | error | Version manifest not found / unsupported | Add supported manifest or pass `<version>` explicitly with `--no-tag` |
84
+ | E005 | error | Target version not greater than current (would break semver monotonicity) | Choose a higher version or run with explicit `<version>` |
85
+ | W001 | warning | No changes detected since last release tag | Confirm whether release is still desired |
86
+ | W002 | warning | Remote push failed (network / auth) | Retry manually with `git push --follow-tags` |
87
+ </error_codes>
88
+
89
+ <success_criteria>
90
+ - [ ] Preconditions validated (milestone complete, audit PASS, clean tree)
91
+ - [ ] Target version computed and greater than previous
92
+ - [ ] Version manifest(s) updated with new version
93
+ - [ ] CHANGELOG.md contains new entry with milestone summary + grouped changes
94
+ - [ ] Release commit created with conventional message
95
+ - [ ] Annotated git tag created (unless `--no-tag`)
96
+ - [ ] Commit + tag pushed to remote (unless `--no-push` or push failed → W002)
97
+ - [ ] state.json updated with last_release_version + last_release_at timestamp
98
+ </success_criteria>
@@ -0,0 +1,177 @@
1
+ ---
2
+ name: maestro-overlay
3
+ description: Create or edit command overlays from natural language
4
+ argument-hint: <intent> — 描述要添加的规则或步骤,如 'always verify after execute'
5
+ allowed-tools:
6
+ - ask_question
7
+ - grep_search
8
+ - run_command
9
+ - view_file
10
+ - write_to_file
11
+ ---
12
+ <purpose>
13
+ Turn a user's natural-language instruction into a command overlay — a JSON patch file that augments one or more `.claude/commands/*.md` files non-invasively. Overlays live at `~/.maestro/overlays/` and are auto-applied by every `maestro install` run, so injected steps survive reinstalls. Use this skill when the user says things like "always run CLI verification after `/maestro-execute`", "require reading doc X before `/maestro-plan`", or "add a `ccw cli` quality check at the end of every quality-review".
14
+ </purpose>
15
+
16
+ <required_reading>
17
+ @~/.maestro/workflows/overlays.md
18
+ @~/.maestro/cli-tools.json
19
+ </required_reading>
20
+
21
+ <context>
22
+ **Overlay model** — an overlay is a JSON file with a `name`, one or more `targets` (command names without `.md`), and a list of `patches`. Each patch targets an XML section (`execution`, `required_reading`, `context`, `success_criteria`, etc.), a mode (`append`, `prepend`, `replace`, `new-section`), and `content`. On apply, the patcher wraps the content in hashed HTML-comment markers so re-apply is idempotent and removal is surgical.
23
+
24
+ **Where overlays live**
25
+ - User overlays: `~/.maestro/overlays/*.json` — created by this skill
26
+ - Shared docs: `~/.maestro/overlays/docs/*.md` — referenced via `@~/.maestro/overlays/docs/*.md` inside patch content
27
+ - Shipped examples: `~/.maestro/overlays/_shipped/` — read-only, do not edit
28
+
29
+ **Management** — listing and removing overlays is handled by `maestro overlay list` (ink TUI with interactive delete). This skill focuses solely on creation.
30
+
31
+ **Available sections** (for `section:` in patches): `purpose`, `required_reading`, `deferred_reading`, `context`, `execution`, `error_codes`, `success_criteria`.
32
+ </context>
33
+
34
+ <execution>
35
+ ### 1. Parse user intent
36
+
37
+ Treat the argument as natural-language intent. If unclear, ask up to 2 questions with ask_question: (a) which command(s) to target, (b) where in the command flow the injection should happen.
38
+
39
+ ### 2. Identify targets, injection points, and visualize
40
+
41
+ For each likely target command, read the pristine source from `$PKG_ROOT/.claude/commands/<name>.md` (preferred — untouched by overlays) or fall back to `~/.claude/commands/<name>.md`. Inspect the XML sections and pick the right one:
42
+
43
+ - **New step after execution** → `section: execution`, `mode: append`
44
+ - **Required reading** → `section: required_reading`, `mode: append`
45
+ - **Preconditions / gating** → `section: context`, `mode: append`
46
+ - **Output quality gate** → `section: success_criteria`, `mode: append`
47
+
48
+ If the user wants a whole new section, use `mode: new-section` with `afterSection: execution` (or whichever anchor makes sense).
49
+
50
+ **Injection point preview** — after selecting section + mode, render the target command's section map showing existing overlays and the new injection point:
51
+
52
+ ```
53
+ === maestro-execute.md (1 overlay exists) ===
54
+
55
+ <purpose>
56
+ <required_reading>
57
+ <context>
58
+ <execution>
59
+ ├─ [existing] cli-verify #1 "CLI Verification step"
60
+ >>> NEW: append here (your overlay)
61
+ <success_criteria>
62
+ ```
63
+
64
+ Use ask_question to confirm:
65
+ - **"Confirm"** — proceed with this injection point
66
+ - **"Pick different section"** — re-select section/mode
67
+ - **"Cancel"** — abort
68
+
69
+ ### 2.5. Skill chain configuration
70
+
71
+ After confirming the injection point, ask whether this overlay should chain to another skill upon completion. This enables the overlay's injected content to hand off to a skill via ask_question at runtime — similar to how `/maestro` chains commands via `view_file(AbsolutePath="<agy-skills-dir>/.../SKILL.md") + execute inline (args: "...")`.
72
+
73
+ Use ask_question:
74
+ - **"No chain"** — standard overlay, no skill handoff
75
+ - **"Chain to skill"** → ask for the target skill name (e.g., `quality-review`, `maestro-verify`, `quality-test`)
76
+ - **"Chain with alternatives"** → ask for primary skill + 1-2 alternative skills
77
+
78
+ If chain is selected, record the skill name(s) for use in Step 3.
79
+
80
+ ### 3. Draft the overlay JSON
81
+
82
+ Build a slug from the user's intent (kebab-case, lowercase). Write to `~/.maestro/overlays/<slug>.json`:
83
+
84
+ ```json
85
+ {
86
+ "name": "<slug>",
87
+ "description": "<short summary of what and why>",
88
+ "targets": ["maestro-execute"],
89
+ "priority": 50,
90
+ "enabled": true,
91
+ "patches": [
92
+ {
93
+ "section": "execution",
94
+ "mode": "append",
95
+ "content": "## CLI Verification (overlay)\n\nAfter execution, run:\n```\nccw cli -p \"PURPOSE: ...\" --mode analysis --rule analysis-review-code-quality\n```"
96
+ }
97
+ ]
98
+ }
99
+ ```
100
+
101
+ **Content guidelines**
102
+ - Lead the injected block with a heading that includes `(overlay)` so readers see it's machine-injected
103
+ - Keep content concise — overlays should add a step, not rewrite the command
104
+ - `@~/.maestro/...` references are encouraged for pointing at docs
105
+ - Escape `\n` in JSON strings; use a HEREDOC via Bash if content is long
106
+
107
+ **Skill chain content** — if a chain was configured in Step 2.5, append a Skill Handoff block at the end of the patch `content`. The handoff uses ask_question so the user controls whether to proceed:
108
+
109
+ ```markdown
110
+ ---
111
+
112
+ **Skill Handoff** (overlay)
113
+
114
+ After the above step completes, use ask_question:
115
+ - "Proceed to /quality-review" — Hand off to quality review
116
+ - "Skip" — Continue with current command flow
117
+ - "Alternative: /maestro-verify" — Run verification instead
118
+
119
+ On user selection:
120
+ - Proceed → view_file(AbsolutePath="<agy-skills-dir>/quality-review/SKILL.md") + execute inline (args: "{phase}")
121
+ - Alternative → view_file(AbsolutePath="<agy-skills-dir>/maestro-verify/SKILL.md") + execute inline (args: "{phase}")
122
+ - Skip → continue normally
123
+ ```
124
+
125
+ Handoff rules:
126
+ - Always include a **"Skip"** option — the user can always decline the chain
127
+ - Use `view_file(AbsolutePath="<agy-skills-dir>/<name>/SKILL.md") + execute inline (args: "...")` syntax consistent with maestro.md chainMap
128
+ - Mark handoff heading with `(overlay)` tag
129
+ - Support runtime variable placeholders: `{phase}`, `{description}`, `{session_id}`
130
+ - Keep handoff block under 10 lines of markdown
131
+
132
+ ### 4. Install via `maestro overlay add`
133
+
134
+ Run:
135
+
136
+ ```bash
137
+ maestro overlay add ~/.maestro/overlays/<slug>.json
138
+ ```
139
+
140
+ This validates the overlay, copies it into place (idempotent), and applies it across all known install scopes. On validation failure, fix the JSON and re-run.
141
+
142
+ ### 5. Report
143
+
144
+ Show the user:
145
+ - Path of the saved overlay JSON
146
+ - Which targets were patched and which were skipped (missing/disabled)
147
+ - Skill chain info (if configured)
148
+ - A reminder that `maestro install` will auto-reapply on every run
149
+ - How to remove: `maestro overlay remove <slug>`
150
+
151
+ **Report format**
152
+
153
+ ```
154
+ === OVERLAY INSTALLED ===
155
+ Name: <slug>
156
+ Path: ~/.maestro/overlays/<slug>.json
157
+ Targets: maestro-execute (applied), maestro-plan (skipped: missing)
158
+ Chain: quality-review (via ask_question) | none
159
+ Scopes: [global]
160
+
161
+ Re-apply: maestro overlay apply
162
+ Remove: maestro overlay remove <slug>
163
+ Inspect: maestro overlay list
164
+ ```
165
+
166
+ After the report, remind the user they can run `maestro overlay list` for the interactive TUI showing section maps and overlay management.
167
+ </execution>
168
+
169
+ <success_criteria>
170
+ - [ ] Overlay JSON written to `~/.maestro/overlays/<slug>.json` and validates
171
+ - [ ] `maestro overlay add` exited successfully and applied to at least one scope
172
+ - [ ] Target command file(s) contain `<!-- maestro-overlay:<slug>#N hash=... -->` markers
173
+ - [ ] Re-running `maestro overlay apply` produces no file changes (idempotent)
174
+ - [ ] User shown the report with target list and removal instructions
175
+ - [ ] Injection point preview shown (with existing overlays + `>>>` marker) and confirmed before drafting
176
+ - [ ] If chain configured, `content` includes Skill Handoff block with ask_question + Skip option + `Skill()` calls
177
+ </success_criteria>
@@ -0,0 +1,172 @@
1
+ ---
2
+ name: maestro-plan
3
+ description: Use when creating, revising, or verifying an execution plan for a phase or task
4
+ argument-hint: [phase] [--collab] [--spec SPEC-xxx] [-y] [--gaps] [--tdd] [--dir <path>] [--revise [instructions]] [--check <plan-dir>]
5
+ allowed-tools:
6
+ - ask_question
7
+ - define_subagent
8
+ - grep_search
9
+ - invoke_subagent
10
+ - manage_subagents
11
+ - replace_file_content
12
+ - run_command
13
+ - send_message
14
+ - view_file
15
+ - write_to_file
16
+ ---
17
+ <purpose>
18
+ Create, revise, or verify an execution plan through a 5-stage pipeline: Exploration, Clarification, Planning, Plan Checking, and Confirmation. Produces plan.json with waves, task definitions, and user-confirmed execution strategy.
19
+
20
+ Supports three modes:
21
+ - **Create** (default): Build plan from analysis context or phase requirements
22
+ - **Revise** (`--revise`): Incrementally modify existing plan — edit tasks, adjust waves, add/remove tasks
23
+ - **Check** (`--check`): Standalone plan verification — run plan-checker against existing plan
24
+
25
+ All plan output goes to `.workflow/scratch/{YYYYMMDD}-plan-[P{N}-|M{N}-]{slug}/`. Date-first ordering enables chronological sorting. Scope prefix in directory name (`P{N}` for phase, `M{N}` for milestone, omit for adhoc/standalone) enables fallback identification. Registers PLN artifact in state.json. Performs collision detection against other plans in same milestone.
26
+ </purpose>
27
+
28
+ <required_reading>
29
+ @~/.maestro/workflows/plan.md
30
+ </required_reading>
31
+
32
+ <deferred_reading>
33
+ - [plan.json](~/.maestro/templates/plan.json) — read when generating plan output
34
+ - [task.json](~/.maestro/templates/task.json) — read when generating task files
35
+ - [state.json](~/.maestro/templates/state.json) — read when registering artifact
36
+ </deferred_reading>
37
+
38
+ <context>
39
+ $ARGUMENTS — phase number, or no args for milestone-wide planning, with optional flags.
40
+
41
+ Scope routing, base flags (`--collab`, `--spec`, `-y`, `--gaps`, `--dir`), output directory format, and artifact registration are defined in workflow plan.md.
42
+
43
+ **Command-level flags** (extensions beyond workflow base):
44
+ - `--revise [instructions]` -- See workflow plan.md § Revise Mode
45
+ - `--check <plan-dir>` -- See workflow plan.md § Check Mode
46
+
47
+ **Upstream context:**
48
+ - Reads `context.md` from prior analyze artifact (auto-discovered from state.json or via --dir)
49
+ - Reads `conclusions.json` if available (implementation_scope seeds task generation)
50
+
51
+ ### Role Knowledge
52
+ `maestro wiki list --category arch` → select relevant → `maestro wiki load`
53
+ </context>
54
+
55
+ <execution>
56
+ ### Pre-flight: team conflict check
57
+
58
+ Before starting the plan pipeline, run:
59
+ ```
60
+ run_command("maestro collab preflight --phase <phase-number>")
61
+ ```
62
+ If exit code is 1, present warnings and ask whether to proceed.
63
+
64
+ Follow '~/.maestro/workflows/plan.md' completely.
65
+
66
+ ### Codebase Docs Loading (P1 addition)
67
+
68
+ During P1 Context Collection, after loading context files, load codebase documentation if available:
69
+
70
+ ```
71
+ IF exists(.workflow/codebase/doc-index.json):
72
+ codebase_ctx = view_file(.workflow/codebase/ARCHITECTURE.md) + view_file(.workflow/codebase/FEATURES.md)
73
+ Pass codebase_ctx to planner agent as structural context
74
+ ELSE:
75
+ display "W004: Codebase docs unavailable, continuing with code exploration only"
76
+ ```
77
+
78
+ ### Wiki Knowledge Search (P1 addition)
79
+
80
+ During P1 Context Collection, after loading context files and before parallel exploration (step 5), search the wiki for prior knowledge related to the phase:
81
+
82
+ ```
83
+ phase_keywords = extract key terms from goal/title (2-5 terms)
84
+ wiki_result = run_command("maestro wiki search ${phase_keywords} --json 2>/dev/null")
85
+
86
+ IF wiki_result exit code != 0 OR empty:
87
+ display "W003: Wiki search unavailable, continuing without prior knowledge"
88
+ ELSE:
89
+ entries = JSON.parse(wiki_result).entries (limit to first 10)
90
+ wiki_context = structured block for downstream stages
91
+ ```
92
+
93
+ ### Issue Linkback (--gaps mode)
94
+
95
+ After plan generation and checking, if `--gaps` mode was used, link TASK files back to issues bidirectionally:
96
+
97
+ ```
98
+ For each created TASK-{NNN}.json that has issue_id:
99
+ Update corresponding issue in .workflow/issues/issues.jsonl:
100
+ task_refs: append TASK-{NNN} to array
101
+ task_plan_dir: relative path to .task/ directory
102
+ status: "planned"
103
+ updated_at: now()
104
+ Append history entry: { action: "planned", at: <ISO>, by: "maestro-plan", summary: "Linked to TASK-{NNN}" }
105
+ ```
106
+
107
+ This ensures issue → TASK traceability. The `task_refs[]` and `task_plan_dir` fields on the issue allow the dashboard to resolve and display associated TASK details.
108
+
109
+ **Report format on completion:**
110
+
111
+ ```
112
+ === PLAN READY ===
113
+ Phase: {phase_name}
114
+ Tasks: {task_count} tasks in {wave_count} waves
115
+ Check: {checker_status} (iteration {check_count}/{max_checks})
116
+ Collision: {collision_status}
117
+
118
+ Plan: scratch/{YYYYMMDD}-plan-P{N}-{slug}/plan.json
119
+ Tasks: scratch/{YYYYMMDD}-plan-P{N}-{slug}/.task/TASK-*.json
120
+
121
+ Next steps:
122
+ /maestro-execute -- Execute the plan
123
+ /maestro-execute --dir {dir} -- Execute specific plan
124
+ /maestro-plan {phase} -- Re-plan with modifications
125
+ ```
126
+
127
+ **Completion status:**
128
+ ```
129
+ --- COMPLETION STATUS ---
130
+ STATUS: DONE|NEEDS_CONTEXT
131
+ CONCERNS: {description if applicable}
132
+ NEXT: /maestro-execute
133
+ --- END STATUS ---
134
+ ```
135
+
136
+ Status mapping:
137
+ - **DONE** — Plan created/revised and confirmed → NEXT: /maestro-execute
138
+ - **NEEDS_CONTEXT** — Ambiguous requirements, insufficient context to produce plan
139
+
140
+ ### Mode: Revise / Check
141
+
142
+ Follow workflow plan.md § "Revise Mode" and § "Check Mode" respectively. These modes bypass the standard P1-P5 create pipeline.
143
+ </execution>
144
+
145
+ <error_codes>
146
+ | Code | Severity | Condition | Recovery |
147
+ |------|----------|-----------|----------|
148
+ | E001 | error | No args and no roadmap (cannot determine scope) | Provide phase number or topic, or create roadmap |
149
+ | E003 | error | --gaps requires prior verification/issues to exist | Run maestro-verify first |
150
+ | E004 | error | No plan found to revise (--revise without target) | Use --dir to specify plan, or create plan first |
151
+ | E005 | error | Plan directory not found (--check) | Check path, use --dir |
152
+ | W001 | warning | Exploration agent returned incomplete results | Retry exploration or proceed with available context |
153
+ | W002 | warning | Plan-checker found minor issues, continuing | Review plan-checker feedback, adjust plan if needed |
154
+ | W003 | warning | Wiki search unavailable or returned no results | Continue without prior knowledge context |
155
+ | W004 | warning | Collision detected with existing plan | Review colliding files, confirm or adjust scope |
156
+ </error_codes>
157
+
158
+ <success_criteria>
159
+ - [ ] plan.json written to scratch directory with summary, approach, task_ids, waves (with phase labels)
160
+ - [ ] .task/TASK-*.json files created for each task
161
+ - [ ] Every task has `read_first[]` with at least the file being modified + source of truth files
162
+ - [ ] Every task has `convergence.criteria[]` with grep-verifiable conditions (no subjective language)
163
+ - [ ] Every task `action` and `implementation` contain concrete values (no "align X with Y")
164
+ - [ ] Plan confidence scored in P4 with 5-dimension factor model
165
+ - [ ] Plan readiness gate checked before P4.5 collision detection
166
+ - [ ] Pressure pass completed on highest-complexity task
167
+ - [ ] plan.json includes confidence section (overall, dimensions, pressure_pass)
168
+ - [ ] Collision detection executed against same-milestone plans (non-blocking)
169
+ - [ ] Plan-checker passed (or minor issues acknowledged)
170
+ - [ ] User confirmation captured (execute/modify/cancel) with confidence displayed
171
+ - [ ] Artifact registered in state.json with correct scope/milestone/phase/depends_on
172
+ </success_criteria>