owflow 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +448 -261
  3. package/dist/agents/bottleneck-analyzer.md +332 -329
  4. package/dist/agents/code-quality-pragmatist.md +353 -354
  5. package/dist/agents/code-reviewer.md +238 -239
  6. package/dist/agents/codebase-analysis-reporter.md +245 -246
  7. package/dist/agents/docs-operator.md +22 -23
  8. package/dist/agents/e2e-test-verifier.md +447 -448
  9. package/dist/agents/gap-analyzer.md +501 -502
  10. package/dist/agents/implementation-completeness-checker.md +219 -220
  11. package/dist/agents/implementation-planner.md +308 -309
  12. package/dist/agents/information-gatherer.md +690 -691
  13. package/dist/agents/production-readiness-checker.md +278 -279
  14. package/dist/agents/project-analyzer.md +403 -403
  15. package/dist/agents/reality-assessor.md +365 -366
  16. package/dist/agents/research-planner.md +449 -450
  17. package/dist/agents/research-synthesizer.md +402 -403
  18. package/dist/agents/solution-brainstormer.md +256 -257
  19. package/dist/agents/solution-designer.md +371 -372
  20. package/dist/agents/spec-auditor.md +297 -298
  21. package/dist/agents/specification-creator.md +333 -334
  22. package/dist/agents/task-classifier.md +449 -450
  23. package/dist/agents/task-group-implementer.md +283 -284
  24. package/dist/agents/test-suite-runner.md +194 -195
  25. package/dist/agents/user-docs-generator.md +508 -509
  26. package/dist/commands/reviews-code.md +90 -90
  27. package/dist/commands/reviews-pragmatic.md +99 -99
  28. package/dist/commands/reviews-production-readiness.md +113 -113
  29. package/dist/commands/reviews-reality-check.md +110 -110
  30. package/dist/commands/reviews-spec-audit.md +114 -114
  31. package/dist/commands/work.md +280 -280
  32. package/dist/configuration/agents-config.d.ts +2 -0
  33. package/dist/configuration/agents-config.js +8 -44
  34. package/dist/configuration/commands-config.d.ts +23 -0
  35. package/dist/configuration/commands-config.js +17 -17
  36. package/dist/configuration/skills-config.d.ts +2 -0
  37. package/dist/configuration/skills-config.js +3 -3
  38. package/dist/hooks/hooks-diagnostics.d.ts +3 -0
  39. package/dist/hooks/hooks-diagnostics.js +21 -0
  40. package/dist/hooks/hooks-persistence.d.ts +17 -0
  41. package/dist/hooks/hooks-persistence.js +207 -0
  42. package/dist/hooks/hooks-registry.d.ts +6 -0
  43. package/dist/hooks/hooks-registry.js +104 -0
  44. package/dist/hooks/hooks-wrapper.d.ts +25 -0
  45. package/dist/hooks/hooks-wrapper.js +318 -0
  46. package/dist/hooks/internal/before-tool.d.ts +6 -0
  47. package/dist/hooks/internal/before-tool.js +13 -0
  48. package/dist/hooks/internal/session-compaction.d.ts +9 -0
  49. package/dist/hooks/{session-compaction.js → internal/session-compaction.js} +9 -7
  50. package/dist/hooks/runtime/circuit-breaker.d.ts +23 -0
  51. package/dist/hooks/runtime/circuit-breaker.js +39 -0
  52. package/dist/hooks/runtime/failure-policy.d.ts +15 -0
  53. package/dist/hooks/runtime/failure-policy.js +49 -0
  54. package/dist/hooks/runtime/process-executor.d.ts +33 -0
  55. package/dist/hooks/runtime/process-executor.js +147 -0
  56. package/dist/hooks/runtime/status-recorder.d.ts +27 -0
  57. package/dist/hooks/runtime/status-recorder.js +111 -0
  58. package/dist/index.d.ts +7 -0
  59. package/dist/index.js +111 -40
  60. package/dist/skills/agents-md-generator/SKILL.md +223 -223
  61. package/dist/skills/codebase-analyzer/SKILL.md +162 -162
  62. package/dist/skills/codebase-analyzer/references/code-analysis.md +63 -63
  63. package/dist/skills/codebase-analyzer/references/combined.md +31 -31
  64. package/dist/skills/codebase-analyzer/references/context-discovery.md +63 -63
  65. package/dist/skills/codebase-analyzer/references/file-discovery.md +51 -51
  66. package/dist/skills/codebase-analyzer/references/migration-target.md +23 -23
  67. package/dist/skills/codebase-analyzer/references/pattern-mining.md +22 -22
  68. package/dist/skills/dev-analyze/SKILL.md +115 -115
  69. package/dist/skills/dev-bugfix/SKILL.md +452 -452
  70. package/dist/skills/dev-finalize/SKILL.md +118 -118
  71. package/dist/skills/dev-implement/SKILL.md +167 -167
  72. package/dist/skills/dev-plan/SKILL.md +147 -147
  73. package/dist/skills/dev-spec/SKILL.md +182 -182
  74. package/dist/skills/dev-tdd-red/SKILL.md +94 -94
  75. package/dist/skills/dev-verify/SKILL.md +153 -153
  76. package/dist/skills/development/SKILL.md +260 -260
  77. package/dist/skills/diagrams-mermaid/SKILL.md +183 -159
  78. package/dist/skills/diagrams-mermaid/references/reference.md +220 -148
  79. package/dist/skills/docs-manager/SKILL.md +379 -379
  80. package/dist/skills/docs-manager/docs/INDEX.md +199 -199
  81. package/dist/skills/docs-manager/docs/standards/backend/api.md +25 -25
  82. package/dist/skills/docs-manager/docs/standards/backend/migrations.md +22 -22
  83. package/dist/skills/docs-manager/docs/standards/backend/models.md +25 -25
  84. package/dist/skills/docs-manager/docs/standards/backend/queries.md +22 -22
  85. package/dist/skills/docs-manager/docs/standards/frontend/accessibility.md +25 -25
  86. package/dist/skills/docs-manager/docs/standards/frontend/components.md +28 -28
  87. package/dist/skills/docs-manager/docs/standards/frontend/css.md +16 -16
  88. package/dist/skills/docs-manager/docs/standards/frontend/responsive.md +28 -28
  89. package/dist/skills/docs-manager/docs/standards/global/coding-style.md +25 -25
  90. package/dist/skills/docs-manager/docs/standards/global/commenting.md +10 -10
  91. package/dist/skills/docs-manager/docs/standards/global/conventions.md +31 -31
  92. package/dist/skills/docs-manager/docs/standards/global/error-handling.md +22 -22
  93. package/dist/skills/docs-manager/docs/standards/global/minimal-implementation.md +22 -22
  94. package/dist/skills/docs-manager/docs/standards/global/validation.md +28 -28
  95. package/dist/skills/docs-manager/docs/standards/testing/test-writing.md +25 -25
  96. package/dist/skills/docs-manager/references/agents-md-template.md +29 -29
  97. package/dist/skills/docs-manager/references/index-md-template.md +73 -73
  98. package/dist/skills/flow-init/SKILL.md +234 -234
  99. package/dist/skills/flow-init/references/architecture-template.md +45 -45
  100. package/dist/skills/flow-init/references/roadmap-templates.md +93 -93
  101. package/dist/skills/flow-init/references/tech-stack-template.md +70 -70
  102. package/dist/skills/flow-init/references/vision-templates.md +75 -75
  103. package/dist/skills/goal-development/SKILL.md +96 -96
  104. package/dist/skills/goal-migration/SKILL.md +114 -114
  105. package/dist/skills/goal-performance/SKILL.md +126 -0
  106. package/dist/skills/goal-research/SKILL.md +118 -118
  107. package/dist/skills/html-renderer/SKILL.md +173 -173
  108. package/dist/skills/html-renderer/references/index.html +318 -318
  109. package/dist/skills/html-renderer/references/styles.css +388 -388
  110. package/dist/skills/html-renderer/references/tokens.json +104 -104
  111. package/dist/skills/implementation-plan-executor/SKILL.md +378 -378
  112. package/dist/skills/implementation-verifier/SKILL.md +307 -307
  113. package/dist/skills/migration/SKILL.md +268 -268
  114. package/dist/skills/migration-analyze/SKILL.md +126 -126
  115. package/dist/skills/migration-finalize/SKILL.md +161 -161
  116. package/dist/skills/migration-fix/SKILL.md +155 -155
  117. package/dist/skills/migration-implement/SKILL.md +131 -131
  118. package/dist/skills/migration-plan/SKILL.md +131 -131
  119. package/dist/skills/migration-spec/SKILL.md +135 -135
  120. package/dist/skills/migration-spec/references/migration-strategies.md +430 -430
  121. package/dist/skills/migration-target/SKILL.md +134 -134
  122. package/dist/skills/migration-target/references/migration-types.md +489 -489
  123. package/dist/skills/migration-verify/SKILL.md +184 -184
  124. package/dist/skills/orchestrator-framework/SKILL.md +65 -65
  125. package/dist/skills/orchestrator-framework/references/command-namespacing.md +7 -7
  126. package/dist/skills/orchestrator-framework/references/confirm-or-revise-exception.md +20 -20
  127. package/dist/skills/orchestrator-framework/references/delegation-rules.md +54 -54
  128. package/dist/skills/orchestrator-framework/references/dispatcher-handoff.md +27 -27
  129. package/dist/skills/orchestrator-framework/references/fix-loop-contract.md +65 -65
  130. package/dist/skills/orchestrator-framework/references/gate-contract.md +122 -117
  131. package/dist/skills/orchestrator-framework/references/orchestrator-creation-checklist.md +51 -51
  132. package/dist/skills/orchestrator-framework/references/orchestrator-patterns.md +235 -235
  133. package/dist/skills/performance/SKILL.md +267 -437
  134. package/dist/skills/performance-analyze/SKILL.md +129 -0
  135. package/dist/skills/{performance → performance-analyze}/references/performance-optimization-guide.md +271 -365
  136. package/dist/skills/performance-finalize/SKILL.md +117 -0
  137. package/dist/skills/performance-implement/SKILL.md +114 -0
  138. package/dist/skills/performance-plan/SKILL.md +112 -0
  139. package/dist/skills/performance-spec/SKILL.md +145 -0
  140. package/dist/skills/performance-verify/SKILL.md +164 -0
  141. package/dist/skills/research/SKILL.md +249 -249
  142. package/dist/skills/research-brainstorm/SKILL.md +120 -120
  143. package/dist/skills/research-brainstorm/references/brainstorming-techniques.md +84 -84
  144. package/dist/skills/research-converge/SKILL.md +130 -130
  145. package/dist/skills/research-design/SKILL.md +146 -146
  146. package/dist/skills/research-design/references/design-techniques.md +40 -40
  147. package/dist/skills/research-finalize/SKILL.md +125 -125
  148. package/dist/skills/research-fork/SKILL.md +190 -190
  149. package/dist/skills/research-gather/SKILL.md +133 -133
  150. package/dist/skills/research-plan/SKILL.md +141 -141
  151. package/dist/skills/research-plan/references/research-methodologies.md +710 -710
  152. package/dist/skills/research-quick/SKILL.md +139 -139
  153. package/dist/skills/research-synthesize/SKILL.md +127 -127
  154. package/dist/skills/rule-reviewer/SKILL.md +334 -334
  155. package/dist/skills/standards-discover/SKILL.md +260 -260
  156. package/dist/skills/standards-discover/references/aggregation-strategy.md +76 -76
  157. package/dist/skills/standards-discover/references/code-pattern-prompt.md +68 -68
  158. package/dist/skills/standards-discover/references/config-analyzer-prompt.md +67 -67
  159. package/dist/skills/standards-discover/references/docs-extractor-prompt.md +65 -65
  160. package/dist/skills/standards-discover/references/external-analyzer-prompt.md +75 -75
  161. package/dist/skills/standards-update/SKILL.md +207 -207
  162. package/dist/templates/orchestrator-state-base.yml +17 -17
  163. package/dist/templates/orchestrator-state-development.yml +95 -95
  164. package/dist/templates/orchestrator-state-migration.yml +95 -95
  165. package/dist/templates/orchestrator-state-performance.yml +64 -53
  166. package/dist/templates/orchestrator-state-research.yml +67 -67
  167. package/dist/tools/fork_task.d.ts +17 -0
  168. package/dist/tools/fork_task.js +21 -11
  169. package/dist/tools/verify_template.d.ts +11 -0
  170. package/dist/tools/verify_template.js +32 -17
  171. package/dist/tui/hooks-dialogs.d.ts +20 -0
  172. package/dist/tui/hooks-dialogs.js +181 -0
  173. package/dist/tui/hooks-presenter.d.ts +15 -0
  174. package/dist/tui/hooks-presenter.js +70 -0
  175. package/dist/tui/hooks-sidebar.d.ts +10 -0
  176. package/dist/tui/hooks-sidebar.js +104 -0
  177. package/dist/tui/primitives.d.ts +21 -0
  178. package/dist/tui/primitives.js +47 -0
  179. package/dist/tui.d.ts +12 -0
  180. package/dist/tui.js +129 -0
  181. package/dist/types/hook-types.d.ts +125 -0
  182. package/dist/types/hook-types.js +76 -0
  183. package/dist/types/opencode-types.d.ts +13 -0
  184. package/dist/utils/file-util.d.ts +2 -0
  185. package/dist/utils/file-util.js +6 -6
  186. package/dist/utils/fork-task.d.ts +27 -0
  187. package/dist/utils/fork-task.js +18 -23
  188. package/dist/utils/plugin-info.d.ts +3 -0
  189. package/dist/utils/plugin-info.js +8 -10
  190. package/dist/utils/workflow-paths.d.ts +17 -0
  191. package/dist/utils/workflow-paths.js +18 -0
  192. package/dist/utils/yaml-structure.d.ts +7 -0
  193. package/dist/utils/yaml-structure.js +7 -11
  194. package/package.json +68 -48
  195. package/dist/hooks/before-tool.js +0 -19
@@ -1,131 +1,131 @@
1
- ---
2
- name: owflow:migration-plan
3
- description: Migration — delegates implementation planning with a rollback/checkpoint step mandated in every task group, then refines the plan with a diagram (plan-created).
4
- argument-hint: "[task-path-or-identifier]"
5
- user-invocable: true
6
- ---
7
-
8
- # Migration Plan — Rollback-Guarded Implementation Plan (plan-created)
9
-
10
- Work phase of the migration workflow. Delegates planning to the reused `implementation-planner` agent with the migration requirement that **every task group carries a rollback/checkpoint step**, then refines the plan with an execution diagram.
11
-
12
- ## Entry Gate
13
-
14
- ### 1. Argument resolution
15
-
16
- Resolve the `task-path-or-identifier` argument BEFORE anything else (see [Gate Contract](../orchestrator-framework/references/gate-contract.md)):
17
-
18
- - **Path** (absolute or project-relative) to the task directory — use as-is.
19
- - **Identifier** — exact directory name inside `.owflow/tasks/migrations/` (e.g., `2026-01-12-framework-upgrade`); resolve to its path.
20
- - Missing argument, a path that does **not exist**, or no identifier match → print the blocked block (part 3), then STOP. Never guess or auto-pick a task.
21
-
22
- ### 2. Prerequisites
23
-
24
- | Required for this skill | Where verified | Produced by |
25
- | ----------------------- | -------------------------------------------------------------------- | ------------------------------------ |
26
- | State file exists | `<task-path>/orchestrator-state.yml` | `/owflow:migration <description>` (dispatcher init) or mid-pipeline bootstrap |
27
- | Strategy specified | `strategy-specified` in `completed_phases` **and** `implementation/spec.md` exists | `/owflow:migration-spec <task-path>` |
28
- | Rollback plan consumed | `analysis/rollback-plan.md` exists (source of per-group rollback content) | `/owflow:migration-spec <task-path>` |
29
-
30
- ### 3. Blocked output
31
-
32
- 1. Steps that must be completed first (in order), each with its command:
33
- - Requirements, specification & rollback/dual-run plans (`strategy-specified`) → `/owflow:migration-spec <task-path>`
34
- - Target state planning (`target-planned`) → `/owflow:migration-target <task-path>` (if also missing)
35
- - Current-state analysis (`state-analysed`) → `/owflow:migration-analyze <task-path>` (if also missing)
36
- - State initialization → `/owflow:migration <description>` (new task)
37
- 2. List available migration-task identifiers (directories under `.owflow/tasks/migrations/`) to resume from, if any.
38
- 3. Hint: `Run /owflow:migration <description> to start a migration task from scratch, or pass a task path/identifier to resume.`
39
-
40
- Then STOP — never guess or auto-pick a task.
41
-
42
- ### 4. Missing-state bootstrap
43
-
44
- When the only unmet prerequisite is the state file, use `question` — "No task exists at this path. Create a fresh standard migration task and start at `plan-created`?" with **Create task** / **Decline**.
45
-
46
- - **On confirm**: create `.owflow/tasks/migrations/YYYY-MM-DD-task-name/` + `orchestrator-state.yml` from the migration template with `orchestrator.entry_point: "migration-plan (mid-pipeline bootstrap)"`, `orchestrator.started_phase: plan-created`, `completed_phases: []`, `task.title`/`task.description` from the argument. Run `verify_template` (`orchestrator-state-migration.yml`) immediately. Creates state ONLY — `implementation/spec.md` and the rollback plan still block, so bootstrapping never skips upstream work.
47
- - **On decline**: print `No migration task found at <path>. Run /owflow:migration <description> to start a migration task from scratch.` and STOP.
48
-
49
- ### 5. Skip/resume — artifacts before state
50
-
51
- - `implementation/implementation-plan.md` exists but `plan-created` is missing ⇒ **adopt**: append `plan-created`, backfill `phase_summaries.plan.summary` and `migration_outputs.implementation_plan` where still null.
52
- - `plan-created` is present but `implementation/implementation-plan.md` is missing ⇒ **drop** `plan-created` from `completed_phases` and re-run.
53
- - Both artifact and slug exist ⇒ report the existing plan summary and route to the Exit Gate.
54
- - `analysis/rollback-plan.md` is missing while `strategy-specified` holds ⇒ route back to `/owflow:migration-spec <task-path>` to regenerate the extraction — never re-author it here.
55
-
56
- ### 6. Conditional activation
57
-
58
- Not applicable — `migration-plan` has no activation condition; it runs whenever its prerequisites are met.
59
-
60
- ### 7. Recovery
61
-
62
- | Step | Max Attempts | Strategy |
63
- | -------------------------- | ------------ | ------------------------------------------------------------------------------------------------ |
64
- | Implementation planning (`plan-created`) | 2 | Regenerate with the migration constraints restated: a rollback/checkpoint step in every task group and rollback content read from the strategies reference |
65
-
66
- ## Execute
67
-
68
- **Read first**: the [Delegation Rules](../orchestrator-framework/references/delegation-rules.md), then read `../migration-spec/references/migration-strategies.md` for the rollback-step content (the rollback-plan structure and strategy patterns).
69
-
70
- | Direction | Artifact | Producer |
71
- | --------- | ----------------------------------- | --------------------------------------------------------------- |
72
- | Consumed | `implementation/spec.md` | `migration-spec` (approved specification) |
73
- | Consumed | `analysis/rollback-plan.md` | `migration-spec` (per-group rollback content) |
74
- | Produced | `implementation/implementation-plan.md` | `implementation-planner` (**Task**, frozen contract) |
75
-
76
- ### Delegated Planning with Per-Group Rollback (`plan-created`)
77
-
78
- > **ANTI-PATTERN — never write `implementation-plan.md` yourself. "The groups are straightforward" is NOT a reason to skip delegation.**
79
-
80
- 1. **Task tool — `implementation-planner`** (frozen contract). Pass: `task_path`, `task_description`, `migration_context.*` (type, strategy, risk level, breaking changes), `phase_summaries` (spec plus upstream), `implementation/spec.md`, and `analysis/rollback-plan.md` as the rollback source.
81
- 2. **Injected requirement**: the delegation prompt **mandates** that every task group carries a rollback/checkpoint step, with rollback-step content read from `../migration-spec/references/migration-strategies.md`. Pass that path and the `analysis/rollback-plan.md` structures explicitly.
82
- 3. **SELF-CHECK before the state write**: read `implementation/implementation-plan.md` and confirm every task group ends with a rollback/checkpoint step. If any group is missing one, re-invoke the planner with the requirement restated — do not append the rollback steps yourself.
83
- 4. **Skill tool — `diagrams-mermaid`** (content-preserving) on `implementation/implementation-plan.md`: add one migration execution/state flow with rollback checkpoints. The written steps and rollback details remain authoritative; diagrams are explanatory. A skipped or failed refinement is not a failure — note it in `phase_summaries.plan.summary` and continue.
84
- 5. **State write**: append `plan-created` to `completed_phases`; set `phase_summaries.plan.summary`, `migration_outputs.implementation_plan`; bump `orchestrator.updated`. On failure: append `plan-created` to `failed_phases`, increment `auto_fix_attempts["plan-created"]`. Then re-read state + run `verify_template`.
85
-
86
- ## State Update Convention (per step)
87
-
88
- 1. **Write immediately** — update `orchestrator-state.yml` as soon as the step completes, appending ONLY the step slug actually performed (`plan-created`) plus that step's fields. Never batch multiple steps into one end-of-skill write.
89
- 2. **Timestamp** — set `orchestrator.updated` to the current UTC timestamp on every write.
90
- 3. **Failures** — a failed or abandoned step is NOT appended to `completed_phases`; append its slug to `orchestrator.failed_phases` and increment `auto_fix_attempts["<slug>"]`.
91
- 4. **Validate** — after every write, re-read the file to confirm values, then run the `verify_template` tool with `filePath: <task-path>/orchestrator-state.yml`, `templateName: orchestrator-state-migration.yml`. Fix any reported issue immediately.
92
- 5. **Final check** — before the Exit Gate, one consolidated re-read + `verify_template` run.
93
-
94
- ## Exit Gate
95
-
96
- Present results, get user confirmation, then hand off (see [Gate Contract](../orchestrator-framework/references/gate-contract.md)). Never auto-invoke the next skill.
97
-
98
- ### Results box
99
-
100
- ```markdown
101
- ## ✅ MIGRATION PLAN COMPLETE — <task name>
102
-
103
- **Task groups** — [N]
104
- **Total steps** — [M]
105
- **Rollback coverage** — ✅ every task group carries a rollback/checkpoint step
106
- **Execution order** — [key dependencies, 1-2 lines]
107
- **Diagram** — [added / skipped (optional)]
108
-
109
- **Artifacts**
110
-
111
- - `implementation/implementation-plan.md`
112
- ```
113
-
114
- ### Results-acceptance question
115
-
116
- Use `question` — "Are these results correct?" with options:
117
-
118
- - **Accept** — the plan is good; continue.
119
- - **Adjust** — regenerate the plan with the user's corrections (grouping, ordering, rollback steps), update state, re-present the results box.
120
- - **Discuss** — walk through the task groups, dependencies, or rollback/checkpoint design in more depth; then re-ask.
121
- - **Stop here** — print the resume command (`/owflow:migration-plan <task-path>`) and end.
122
-
123
- ### Next steps (after Accept)
124
-
125
- - `→ /owflow:migration-implement <task-path>` — `required` next: executes the plan task group by task group with the per-group rollback/checkpoint steps and writes the work log. Remaining after: verify (→ fix when needed) → finalize.
126
-
127
- **Other options**:
128
-
129
- - `/owflow:goal-migration <task-path>` — `optional` shortcut: runs all remaining phases in one loop (implement → verify → fix when needed → finalize)
130
-
131
- Then STOP.
1
+ ---
2
+ name: owflow:migration-plan
3
+ description: Migration — delegates implementation planning with a rollback/checkpoint step mandated in every task group, then refines the plan with a diagram (plan-created).
4
+ argument-hint: "[task-path-or-identifier]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Migration Plan — Rollback-Guarded Implementation Plan (plan-created)
9
+
10
+ Work phase of the migration workflow. Delegates planning to the reused `implementation-planner` agent with the migration requirement that **every task group carries a rollback/checkpoint step**, then refines the plan with an execution diagram.
11
+
12
+ ## Entry Gate
13
+
14
+ ### 1. Argument resolution
15
+
16
+ Resolve the `task-path-or-identifier` argument BEFORE anything else (see [Gate Contract](../orchestrator-framework/references/gate-contract.md)):
17
+
18
+ - **Path** (absolute or project-relative) to the task directory — use as-is.
19
+ - **Identifier** — exact directory name inside `.owflow/tasks/migrations/` (e.g., `2026-01-12-framework-upgrade`); resolve to its path.
20
+ - Missing argument, a path that does **not exist**, or no identifier match → print the blocked block (part 3), then STOP. Never guess or auto-pick a task.
21
+
22
+ ### 2. Prerequisites
23
+
24
+ | Required for this skill | Where verified | Produced by |
25
+ | ----------------------- | -------------------------------------------------------------------- | ------------------------------------ |
26
+ | State file exists | `<task-path>/orchestrator-state.yml` | `/owflow:migration <description>` (dispatcher init) or mid-pipeline bootstrap |
27
+ | Strategy specified | `strategy-specified` in `completed_phases` **and** `implementation/spec.md` exists | `/owflow:migration-spec <task-path>` |
28
+ | Rollback plan consumed | `analysis/rollback-plan.md` exists (source of per-group rollback content) | `/owflow:migration-spec <task-path>` |
29
+
30
+ ### 3. Blocked output
31
+
32
+ 1. Steps that must be completed first (in order), each with its command:
33
+ - Requirements, specification & rollback/dual-run plans (`strategy-specified`) → `/owflow:migration-spec <task-path>`
34
+ - Target state planning (`target-planned`) → `/owflow:migration-target <task-path>` (if also missing)
35
+ - Current-state analysis (`state-analysed`) → `/owflow:migration-analyze <task-path>` (if also missing)
36
+ - State initialization → `/owflow:migration <description>` (new task)
37
+ 2. List available migration-task identifiers (directories under `.owflow/tasks/migrations/`) to resume from, if any.
38
+ 3. Hint: `Run /owflow:migration <description> to start a migration task from scratch, or pass a task path/identifier to resume.`
39
+
40
+ Then STOP — never guess or auto-pick a task.
41
+
42
+ ### 4. Missing-state bootstrap
43
+
44
+ When the only unmet prerequisite is the state file, use `question` — "No task exists at this path. Create a fresh standard migration task and start at `plan-created`?" with **Create task** / **Decline**.
45
+
46
+ - **On confirm**: create `.owflow/tasks/migrations/YYYY-MM-DD-task-name/` + `orchestrator-state.yml` from the migration template with `orchestrator.entry_point: "migration-plan (mid-pipeline bootstrap)"`, `orchestrator.started_phase: plan-created`, `completed_phases: []`, `task.title`/`task.description` from the argument. Run `verify_template` (`orchestrator-state-migration.yml`) immediately. Creates state ONLY — `implementation/spec.md` and the rollback plan still block, so bootstrapping never skips upstream work.
47
+ - **On decline**: print `No migration task found at <path>. Run /owflow:migration <description> to start a migration task from scratch.` and STOP.
48
+
49
+ ### 5. Skip/resume — artifacts before state
50
+
51
+ - `implementation/implementation-plan.md` exists but `plan-created` is missing ⇒ **adopt**: append `plan-created`, backfill `phase_summaries.plan.summary` and `migration_outputs.implementation_plan` where still null.
52
+ - `plan-created` is present but `implementation/implementation-plan.md` is missing ⇒ **drop** `plan-created` from `completed_phases` and re-run.
53
+ - Both artifact and slug exist ⇒ report the existing plan summary and route to the Exit Gate.
54
+ - `analysis/rollback-plan.md` is missing while `strategy-specified` holds ⇒ route back to `/owflow:migration-spec <task-path>` to regenerate the extraction — never re-author it here.
55
+
56
+ ### 6. Conditional activation
57
+
58
+ Not applicable — `migration-plan` has no activation condition; it runs whenever its prerequisites are met.
59
+
60
+ ### 7. Recovery
61
+
62
+ | Step | Max Attempts | Strategy |
63
+ | -------------------------- | ------------ | ------------------------------------------------------------------------------------------------ |
64
+ | Implementation planning (`plan-created`) | 2 | Regenerate with the migration constraints restated: a rollback/checkpoint step in every task group and rollback content read from the strategies reference |
65
+
66
+ ## Execute
67
+
68
+ **Read first**: the [Delegation Rules](../orchestrator-framework/references/delegation-rules.md), then read `../migration-spec/references/migration-strategies.md` for the rollback-step content (the rollback-plan structure and strategy patterns).
69
+
70
+ | Direction | Artifact | Producer |
71
+ | --------- | ----------------------------------- | --------------------------------------------------------------- |
72
+ | Consumed | `implementation/spec.md` | `migration-spec` (approved specification) |
73
+ | Consumed | `analysis/rollback-plan.md` | `migration-spec` (per-group rollback content) |
74
+ | Produced | `implementation/implementation-plan.md` | `implementation-planner` (**Task**, frozen contract) |
75
+
76
+ ### Delegated Planning with Per-Group Rollback (`plan-created`)
77
+
78
+ > **ANTI-PATTERN — never write `implementation-plan.md` yourself. "The groups are straightforward" is NOT a reason to skip delegation.**
79
+
80
+ 1. **Task tool — `implementation-planner`** (frozen contract). Pass: `task_path`, `task_description`, `migration_context.*` (type, strategy, risk level, breaking changes), `phase_summaries` (spec plus upstream), `implementation/spec.md`, and `analysis/rollback-plan.md` as the rollback source.
81
+ 2. **Injected requirement**: the delegation prompt **mandates** that every task group carries a rollback/checkpoint step, with rollback-step content read from `../migration-spec/references/migration-strategies.md`. Pass that path and the `analysis/rollback-plan.md` structures explicitly.
82
+ 3. **SELF-CHECK before the state write**: read `implementation/implementation-plan.md` and confirm every task group ends with a rollback/checkpoint step. If any group is missing one, re-invoke the planner with the requirement restated — do not append the rollback steps yourself.
83
+ 4. **Skill tool — `diagrams-mermaid`** (content-preserving) on `implementation/implementation-plan.md`: add one migration execution/state flow with rollback checkpoints. The written steps and rollback details remain authoritative; diagrams are explanatory. A skipped or failed refinement is not a failure — note it in `phase_summaries.plan.summary` and continue.
84
+ 5. **State write**: append `plan-created` to `completed_phases`; set `phase_summaries.plan.summary`, `migration_outputs.implementation_plan`; bump `orchestrator.updated`. On failure: append `plan-created` to `failed_phases`, increment `auto_fix_attempts["plan-created"]`. Then re-read state + run `verify_template`.
85
+
86
+ ## State Update Convention (per step)
87
+
88
+ 1. **Write immediately** — update `orchestrator-state.yml` as soon as the step completes, appending ONLY the step slug actually performed (`plan-created`) plus that step's fields. Never batch multiple steps into one end-of-skill write.
89
+ 2. **Timestamp** — set `orchestrator.updated` to the current UTC timestamp on every write.
90
+ 3. **Failures** — a failed or abandoned step is NOT appended to `completed_phases`; append its slug to `orchestrator.failed_phases` and increment `auto_fix_attempts["<slug>"]`.
91
+ 4. **Validate** — after every write, re-read the file to confirm values, then run the `verify_template` tool with `filePath: <task-path>/orchestrator-state.yml`, `templateName: orchestrator-state-migration.yml`. Fix any reported issue immediately.
92
+ 5. **Final check** — before the Exit Gate, one consolidated re-read + `verify_template` run.
93
+
94
+ ## Exit Gate
95
+
96
+ Present results, get user confirmation, then hand off (see [Gate Contract](../orchestrator-framework/references/gate-contract.md)). Never auto-invoke the next skill.
97
+
98
+ ### Results box
99
+
100
+ ```markdown
101
+ ## ✅ MIGRATION PLAN COMPLETE — <task name>
102
+
103
+ **Task groups** — [N]
104
+ **Total steps** — [M]
105
+ **Rollback coverage** — ✅ every task group carries a rollback/checkpoint step
106
+ **Execution order** — [key dependencies, 1-2 lines]
107
+ **Diagram** — [added / skipped (optional)]
108
+
109
+ **Artifacts**
110
+
111
+ - `implementation/implementation-plan.md`
112
+ ```
113
+
114
+ ### Results-acceptance question
115
+
116
+ Use `question` — "Are these results correct?" with options:
117
+
118
+ - **Accept** — the plan is good; continue.
119
+ - **Adjust** — regenerate the plan with the user's corrections (grouping, ordering, rollback steps), update state, re-present the results box.
120
+ - **Discuss** — walk through the task groups, dependencies, or rollback/checkpoint design in more depth; then re-ask.
121
+ - **Stop here** — print the resume command (`/owflow:migration-plan <task-path>`) and end.
122
+
123
+ ### Next steps (after Accept)
124
+
125
+ - `→ /owflow:migration-implement <task-path>` — `required` next: executes the plan task group by task group with the per-group rollback/checkpoint steps and writes the work log. Remaining after: verify (→ fix when needed) → finalize.
126
+
127
+ **Other options**:
128
+
129
+ - `/owflow:goal-migration <task-path>` — `optional` shortcut: runs all remaining phases in one loop (implement → verify → fix when needed → finalize)
130
+
131
+ Then STOP.
@@ -1,135 +1,135 @@
1
- ---
2
- name: owflow:migration-spec
3
- description: Migration — gathers requirements, delegates the specification with mandated rollback/dual-run sections, extracts the standalone plans, then refines diagrams (strategy-specified).
4
- argument-hint: "[task-path-or-identifier]"
5
- user-invocable: true
6
- ---
7
-
8
- # Migration Spec — Requirements, Specification & Rollback/Dual-Run Plans (strategy-specified)
9
-
10
- Work phase of the migration workflow. Gathers migration requirements inline, delegates specification creation to the reused `specification-creator` agent with **mandated** rollback/dual-run sections, extracts those sections into standalone authoritative artifacts, then refines the spec with diagrams.
11
-
12
- ## Entry Gate
13
-
14
- ### 1. Argument resolution
15
-
16
- Resolve the `task-path-or-identifier` argument BEFORE anything else (see [Gate Contract](../orchestrator-framework/references/gate-contract.md)):
17
-
18
- - **Path** (absolute or project-relative) to the task directory — use as-is.
19
- - **Identifier** — exact directory name inside `.owflow/tasks/migrations/` (e.g., `2026-01-12-framework-upgrade`); resolve to its path.
20
- - Missing argument, a path that does **not exist**, or no identifier match → print the blocked block (part 3), then STOP. Never guess or auto-pick a task.
21
-
22
- ### 2. Prerequisites
23
-
24
- | Required for this skill | Where verified | Produced by |
25
- | ----------------------- | ------------------------------------------------------------------------- | ---------------------------------- |
26
- | State file exists | `<task-path>/orchestrator-state.yml` | `/owflow:migration <description>` (dispatcher init) or mid-pipeline bootstrap |
27
- | Target state locked | `target-planned` in `completed_phases` **and** `analysis/target-state-plan.md` exists | `/owflow:migration-target <task-path>` |
28
-
29
- ### 3. Blocked output
30
-
31
- 1. Steps that must be completed first (in order), each with its command:
32
- - Target state planning (`target-planned`) → `/owflow:migration-target <task-path>`
33
- - Current-state analysis (`state-analysed`) → `/owflow:migration-analyze <task-path>` (if also missing)
34
- - State initialization → `/owflow:migration <description>` (new task)
35
- 2. List available migration-task identifiers (directories under `.owflow/tasks/migrations/`) to resume from, if any.
36
- 3. Hint: `Run /owflow:migration <description> to start a migration task from scratch, or pass a task path/identifier to resume.`
37
-
38
- Then STOP — never guess or auto-pick a task.
39
-
40
- ### 4. Missing-state bootstrap
41
-
42
- When the only unmet prerequisite is the state file, use `question` — "No task exists at this path. Create a fresh standard migration task and start at `strategy-specified`?" with **Create task** / **Decline**.
43
-
44
- - **On confirm**: create `.owflow/tasks/migrations/YYYY-MM-DD-task-name/` + `orchestrator-state.yml` from the migration template with `orchestrator.entry_point: "migration-spec (mid-pipeline bootstrap)"`, `orchestrator.started_phase: strategy-specified`, `completed_phases: []`, `task.title`/`task.description` from the argument. Run `verify_template` (`orchestrator-state-migration.yml`) immediately. Creates state ONLY — `analysis/target-state-plan.md` still blocks, so bootstrapping never skips upstream work.
45
- - **On decline**: print `No migration task found at <path>. Run /owflow:migration <description> to start a migration task from scratch.` and STOP.
46
-
47
- ### 5. Skip/resume — artifacts before state
48
-
49
- - `implementation/spec.md` **and** `analysis/rollback-plan.md` exist but `strategy-specified` is missing ⇒ **adopt**: append `strategy-specified`, backfill `migration_context.{rollback_plan_created, dual_run_configured}`, `phase_summaries.spec.summary`, and the `migration_outputs` paths where still null; run only the missing parts.
50
- - `strategy-specified` is present but `implementation/spec.md` is missing ⇒ **drop** `strategy-specified` from `completed_phases` and re-run.
51
- - `analysis/requirements.md` exists ⇒ adopt it and skip the requirement-questions part when it already covers the topics; `analysis/dual-run-plan.md` exists ⇒ `dual_run_configured: true`.
52
- - Settled `rollback_plan_created` / `dual_run_configured` values are reported, not re-asked.
53
-
54
- ### 6. Conditional activation
55
-
56
- Not applicable — `migration-spec` has no activation condition; the dual-run plan's presence is content-dependent (decided in the requirement questions), not an activation gate.
57
-
58
- ### 7. Recovery
59
-
60
- | Step | Max Attempts | Strategy |
61
- | ----------------------------------- | ------------ | -------------------------------------------------------------------------------------------- |
62
- | Requirements | 2 | Re-gather in one consolidated question round |
63
- | Specification (`strategy-specified`) | 2 | Re-invoke `specification-creator` with the missing mandated section explicitly demanded |
64
- | Rollback/dual-run extraction | 2 | Re-extract verbatim from `implementation/spec.md`; if a mandated section is absent, re-run the delegation step |
65
-
66
- ## Execute
67
-
68
- **Read first**: the [Delegation Rules](../orchestrator-framework/references/delegation-rules.md), then **read `references/migration-strategies.md`** (rollback-plan and dual-run-plan structures, strategy selection).
69
-
70
- | Direction | Artifact | Producer |
71
- | --------- | ------------------------------- | --------------------------------------------------------------- |
72
- | Consumed | `analysis/target-state-plan.md` | `migration-target` (locked target, type, strategy) |
73
- | Produced | `analysis/requirements.md` | inline `question` round (3–5 questions) |
74
- | Produced | `implementation/spec.md` | `specification-creator` (**Task**, frozen contract) |
75
- | Produced | `analysis/rollback-plan.md` | post-delegation verbatim extraction (always) |
76
- | Produced | `analysis/dual-run-plan.md` | post-delegation verbatim extraction (when dual-run applies) |
77
-
78
- ### Requirements, Specification & Extraction (`strategy-specified`)
79
-
80
- 1. **Requirements gathering (inline)** — use `question` for 3–5 migration-specific questions: scope boundaries, rollback expectations and downtime tolerance, data-migration specifics, dual-run requirements, existing code/config to preserve. Frame as confirmable assumptions. Save to `analysis/requirements.md`.
81
- 2. **Project-doc discovery (nothing persisted)** — read `.owflow/docs/INDEX.md` if present, collect the Project Documentation paths as `project_context_paths`, and pass them directly to the delegate. There is no `project_context` state key; do not write one (assumption 8).
82
- 3. **Task tool — `specification-creator`** (frozen contract). Pass: `task_path`, `task_description`, `requirements_path` (`analysis/requirements.md`), `project_context_paths`, `migration_context.*` (type, current/target system, risk level, breaking changes), and relevant `phase_summaries`. The prompt **mandates** a `## Rollback Plan` section (always) and a `## Dual-Run Configuration` section (when dual-run applies) inside `implementation/spec.md`.
83
- 4. **Post-delegation extraction — before the diagrams step**: as soon as the delegation returns, extract those sections **verbatim** from `implementation/spec.md` into `analysis/rollback-plan.md` (always) and `analysis/dual-run-plan.md` (when present). The standalone artifact is authoritative; the spec section becomes its summary. Never let the diagrams step run first.
84
- 5. **Skill tool — `diagrams-mermaid`** (content-preserving) on `implementation/spec.md`: add a target-architecture and transition/compatibility visual as a supplement, never a replacement for strategy prose. Missing context → record open gaps instead of inventing systems.
85
- 6. **State write**: append `strategy-specified` to `completed_phases`; set `migration_context.rollback_plan_created: true`, `migration_context.dual_run_configured: true/false`, `phase_summaries.spec.summary`, `migration_outputs.requirements`, `migration_outputs.spec`, `migration_outputs.rollback_plan` (+ `migration_outputs.dual_run_plan` when produced); bump `orchestrator.updated`. On failure: append `strategy-specified` to `failed_phases`, increment `auto_fix_attempts["strategy-specified"]`. Then re-read state + run `verify_template`.
86
-
87
- ## State Update Convention (per step)
88
-
89
- 1. **Write immediately** — update `orchestrator-state.yml` as soon as the step completes, appending ONLY the step slug actually performed (`strategy-specified`) plus that step's fields. Never batch multiple steps into one end-of-skill write.
90
- 2. **Timestamp** — set `orchestrator.updated` to the current UTC timestamp on every write.
91
- 3. **Failures** — a failed or abandoned step is NOT appended to `completed_phases`; append its slug to `orchestrator.failed_phases` and increment `auto_fix_attempts["<slug>"]`.
92
- 4. **Validate** — after every write, re-read the file to confirm values, then run the `verify_template` tool with `filePath: <task-path>/orchestrator-state.yml`, `templateName: orchestrator-state-migration.yml`. Fix any reported issue immediately.
93
- 5. **Final check** — before the Exit Gate, one consolidated re-read + `verify_template` run.
94
-
95
- ## Exit Gate
96
-
97
- Present results, get user confirmation, then hand off (see [Gate Contract](../orchestrator-framework/references/gate-contract.md)). Never auto-invoke the next skill.
98
-
99
- ### Results box
100
-
101
- ```markdown
102
- ## ✅ MIGRATION SPEC COMPLETE — <task name>
103
-
104
- **Strategy** — [strategy from the locked target / spec]
105
- **Scope** — [N included / M excluded]
106
- **Rollback plan** — ✅ `analysis/rollback-plan.md` (standalone, authoritative)
107
- **Dual-run** — [configured → `analysis/dual-run-plan.md` / not applicable]
108
- **Diagrams** — [added / skipped (optional)]
109
-
110
- **Artifacts**
111
-
112
- - `analysis/requirements.md`
113
- - `implementation/spec.md` (mandates the Rollback Plan / Dual-Run Configuration sections)
114
- - `analysis/rollback-plan.md`
115
- - `analysis/dual-run-plan.md` [conditional]
116
- ```
117
-
118
- ### Results-acceptance question
119
-
120
- Use `question` — "Are these results correct?" with options:
121
-
122
- - **Accept** — the specification and extracted plans are correct; continue.
123
- - **Adjust** — re-run only the affected part (requirements, spec delegation, extraction, diagrams), update state and artifacts, re-present the results box.
124
- - **Discuss** — walk through scope boundaries, the rollback approach, or the dual-run decision in more depth; then re-ask.
125
- - **Stop here** — print the resume command (`/owflow:migration-spec <task-path>`) and end.
126
-
127
- ### Next steps (after Accept)
128
-
129
- - `→ /owflow:migration-plan <task-path>` — `required` next: breaks the approved spec into task groups, mandating a rollback/checkpoint step in every group. Remaining after: implement → verify (→ fix when needed) → finalize.
130
-
131
- **Other options**:
132
-
133
- - `/owflow:goal-migration <task-path>` — `optional` shortcut: runs all remaining phases in one loop (plan → implement → verify → fix when needed → finalize)
134
-
135
- Then STOP.
1
+ ---
2
+ name: owflow:migration-spec
3
+ description: Migration — gathers requirements, delegates the specification with mandated rollback/dual-run sections, extracts the standalone plans, then refines diagrams (strategy-specified).
4
+ argument-hint: "[task-path-or-identifier]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Migration Spec — Requirements, Specification & Rollback/Dual-Run Plans (strategy-specified)
9
+
10
+ Work phase of the migration workflow. Gathers migration requirements inline, delegates specification creation to the reused `specification-creator` agent with **mandated** rollback/dual-run sections, extracts those sections into standalone authoritative artifacts, then refines the spec with diagrams.
11
+
12
+ ## Entry Gate
13
+
14
+ ### 1. Argument resolution
15
+
16
+ Resolve the `task-path-or-identifier` argument BEFORE anything else (see [Gate Contract](../orchestrator-framework/references/gate-contract.md)):
17
+
18
+ - **Path** (absolute or project-relative) to the task directory — use as-is.
19
+ - **Identifier** — exact directory name inside `.owflow/tasks/migrations/` (e.g., `2026-01-12-framework-upgrade`); resolve to its path.
20
+ - Missing argument, a path that does **not exist**, or no identifier match → print the blocked block (part 3), then STOP. Never guess or auto-pick a task.
21
+
22
+ ### 2. Prerequisites
23
+
24
+ | Required for this skill | Where verified | Produced by |
25
+ | ----------------------- | ------------------------------------------------------------------------- | ---------------------------------- |
26
+ | State file exists | `<task-path>/orchestrator-state.yml` | `/owflow:migration <description>` (dispatcher init) or mid-pipeline bootstrap |
27
+ | Target state locked | `target-planned` in `completed_phases` **and** `analysis/target-state-plan.md` exists | `/owflow:migration-target <task-path>` |
28
+
29
+ ### 3. Blocked output
30
+
31
+ 1. Steps that must be completed first (in order), each with its command:
32
+ - Target state planning (`target-planned`) → `/owflow:migration-target <task-path>`
33
+ - Current-state analysis (`state-analysed`) → `/owflow:migration-analyze <task-path>` (if also missing)
34
+ - State initialization → `/owflow:migration <description>` (new task)
35
+ 2. List available migration-task identifiers (directories under `.owflow/tasks/migrations/`) to resume from, if any.
36
+ 3. Hint: `Run /owflow:migration <description> to start a migration task from scratch, or pass a task path/identifier to resume.`
37
+
38
+ Then STOP — never guess or auto-pick a task.
39
+
40
+ ### 4. Missing-state bootstrap
41
+
42
+ When the only unmet prerequisite is the state file, use `question` — "No task exists at this path. Create a fresh standard migration task and start at `strategy-specified`?" with **Create task** / **Decline**.
43
+
44
+ - **On confirm**: create `.owflow/tasks/migrations/YYYY-MM-DD-task-name/` + `orchestrator-state.yml` from the migration template with `orchestrator.entry_point: "migration-spec (mid-pipeline bootstrap)"`, `orchestrator.started_phase: strategy-specified`, `completed_phases: []`, `task.title`/`task.description` from the argument. Run `verify_template` (`orchestrator-state-migration.yml`) immediately. Creates state ONLY — `analysis/target-state-plan.md` still blocks, so bootstrapping never skips upstream work.
45
+ - **On decline**: print `No migration task found at <path>. Run /owflow:migration <description> to start a migration task from scratch.` and STOP.
46
+
47
+ ### 5. Skip/resume — artifacts before state
48
+
49
+ - `implementation/spec.md` **and** `analysis/rollback-plan.md` exist but `strategy-specified` is missing ⇒ **adopt**: append `strategy-specified`, backfill `migration_context.{rollback_plan_created, dual_run_configured}`, `phase_summaries.spec.summary`, and the `migration_outputs` paths where still null; run only the missing parts.
50
+ - `strategy-specified` is present but `implementation/spec.md` is missing ⇒ **drop** `strategy-specified` from `completed_phases` and re-run.
51
+ - `analysis/requirements.md` exists ⇒ adopt it and skip the requirement-questions part when it already covers the topics; `analysis/dual-run-plan.md` exists ⇒ `dual_run_configured: true`.
52
+ - Settled `rollback_plan_created` / `dual_run_configured` values are reported, not re-asked.
53
+
54
+ ### 6. Conditional activation
55
+
56
+ Not applicable — `migration-spec` has no activation condition; the dual-run plan's presence is content-dependent (decided in the requirement questions), not an activation gate.
57
+
58
+ ### 7. Recovery
59
+
60
+ | Step | Max Attempts | Strategy |
61
+ | ----------------------------------- | ------------ | -------------------------------------------------------------------------------------------- |
62
+ | Requirements | 2 | Re-gather in one consolidated question round |
63
+ | Specification (`strategy-specified`) | 2 | Re-invoke `specification-creator` with the missing mandated section explicitly demanded |
64
+ | Rollback/dual-run extraction | 2 | Re-extract verbatim from `implementation/spec.md`; if a mandated section is absent, re-run the delegation step |
65
+
66
+ ## Execute
67
+
68
+ **Read first**: the [Delegation Rules](../orchestrator-framework/references/delegation-rules.md), then **read `references/migration-strategies.md`** (rollback-plan and dual-run-plan structures, strategy selection).
69
+
70
+ | Direction | Artifact | Producer |
71
+ | --------- | ------------------------------- | --------------------------------------------------------------- |
72
+ | Consumed | `analysis/target-state-plan.md` | `migration-target` (locked target, type, strategy) |
73
+ | Produced | `analysis/requirements.md` | inline `question` round (3–5 questions) |
74
+ | Produced | `implementation/spec.md` | `specification-creator` (**Task**, frozen contract) |
75
+ | Produced | `analysis/rollback-plan.md` | post-delegation verbatim extraction (always) |
76
+ | Produced | `analysis/dual-run-plan.md` | post-delegation verbatim extraction (when dual-run applies) |
77
+
78
+ ### Requirements, Specification & Extraction (`strategy-specified`)
79
+
80
+ 1. **Requirements gathering (inline)** — use `question` for 3–5 migration-specific questions: scope boundaries, rollback expectations and downtime tolerance, data-migration specifics, dual-run requirements, existing code/config to preserve. Frame as confirmable assumptions. Save to `analysis/requirements.md`.
81
+ 2. **Project-doc discovery (nothing persisted)** — read `.owflow/docs/INDEX.md` if present, collect the Project Documentation paths as `project_context_paths`, and pass them directly to the delegate. There is no `project_context` state key; do not write one (assumption 8).
82
+ 3. **Task tool — `specification-creator`** (frozen contract). Pass: `task_path`, `task_description`, `requirements_path` (`analysis/requirements.md`), `project_context_paths`, `migration_context.*` (type, current/target system, risk level, breaking changes), and relevant `phase_summaries`. The prompt **mandates** a `## Rollback Plan` section (always) and a `## Dual-Run Configuration` section (when dual-run applies) inside `implementation/spec.md`.
83
+ 4. **Post-delegation extraction — before the diagrams step**: as soon as the delegation returns, extract those sections **verbatim** from `implementation/spec.md` into `analysis/rollback-plan.md` (always) and `analysis/dual-run-plan.md` (when present). The standalone artifact is authoritative; the spec section becomes its summary. Never let the diagrams step run first.
84
+ 5. **Skill tool — `diagrams-mermaid`** (content-preserving) on `implementation/spec.md`: add a target-architecture and transition/compatibility visual as a supplement, never a replacement for strategy prose. Missing context → record open gaps instead of inventing systems.
85
+ 6. **State write**: append `strategy-specified` to `completed_phases`; set `migration_context.rollback_plan_created: true`, `migration_context.dual_run_configured: true/false`, `phase_summaries.spec.summary`, `migration_outputs.requirements`, `migration_outputs.spec`, `migration_outputs.rollback_plan` (+ `migration_outputs.dual_run_plan` when produced); bump `orchestrator.updated`. On failure: append `strategy-specified` to `failed_phases`, increment `auto_fix_attempts["strategy-specified"]`. Then re-read state + run `verify_template`.
86
+
87
+ ## State Update Convention (per step)
88
+
89
+ 1. **Write immediately** — update `orchestrator-state.yml` as soon as the step completes, appending ONLY the step slug actually performed (`strategy-specified`) plus that step's fields. Never batch multiple steps into one end-of-skill write.
90
+ 2. **Timestamp** — set `orchestrator.updated` to the current UTC timestamp on every write.
91
+ 3. **Failures** — a failed or abandoned step is NOT appended to `completed_phases`; append its slug to `orchestrator.failed_phases` and increment `auto_fix_attempts["<slug>"]`.
92
+ 4. **Validate** — after every write, re-read the file to confirm values, then run the `verify_template` tool with `filePath: <task-path>/orchestrator-state.yml`, `templateName: orchestrator-state-migration.yml`. Fix any reported issue immediately.
93
+ 5. **Final check** — before the Exit Gate, one consolidated re-read + `verify_template` run.
94
+
95
+ ## Exit Gate
96
+
97
+ Present results, get user confirmation, then hand off (see [Gate Contract](../orchestrator-framework/references/gate-contract.md)). Never auto-invoke the next skill.
98
+
99
+ ### Results box
100
+
101
+ ```markdown
102
+ ## ✅ MIGRATION SPEC COMPLETE — <task name>
103
+
104
+ **Strategy** — [strategy from the locked target / spec]
105
+ **Scope** — [N included / M excluded]
106
+ **Rollback plan** — ✅ `analysis/rollback-plan.md` (standalone, authoritative)
107
+ **Dual-run** — [configured → `analysis/dual-run-plan.md` / not applicable]
108
+ **Diagrams** — [added / skipped (optional)]
109
+
110
+ **Artifacts**
111
+
112
+ - `analysis/requirements.md`
113
+ - `implementation/spec.md` (mandates the Rollback Plan / Dual-Run Configuration sections)
114
+ - `analysis/rollback-plan.md`
115
+ - `analysis/dual-run-plan.md` [conditional]
116
+ ```
117
+
118
+ ### Results-acceptance question
119
+
120
+ Use `question` — "Are these results correct?" with options:
121
+
122
+ - **Accept** — the specification and extracted plans are correct; continue.
123
+ - **Adjust** — re-run only the affected part (requirements, spec delegation, extraction, diagrams), update state and artifacts, re-present the results box.
124
+ - **Discuss** — walk through scope boundaries, the rollback approach, or the dual-run decision in more depth; then re-ask.
125
+ - **Stop here** — print the resume command (`/owflow:migration-spec <task-path>`) and end.
126
+
127
+ ### Next steps (after Accept)
128
+
129
+ - `→ /owflow:migration-plan <task-path>` — `required` next: breaks the approved spec into task groups, mandating a rollback/checkpoint step in every group. Remaining after: implement → verify (→ fix when needed) → finalize.
130
+
131
+ **Other options**:
132
+
133
+ - `/owflow:goal-migration <task-path>` — `optional` shortcut: runs all remaining phases in one loop (plan → implement → verify → fix when needed → finalize)
134
+
135
+ Then STOP.