owflow 0.4.2 → 0.5.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 (79) hide show
  1. package/README.md +6 -2
  2. package/dist/agents/implementation-planner.md +1 -1
  3. package/dist/agents/information-gatherer.md +691 -691
  4. package/dist/agents/research-planner.md +450 -450
  5. package/dist/agents/research-synthesizer.md +403 -403
  6. package/dist/agents/solution-brainstormer.md +257 -257
  7. package/dist/agents/solution-designer.md +372 -372
  8. package/dist/agents/specification-creator.md +1 -1
  9. package/dist/commands/work.md +9 -9
  10. package/dist/configuration/commands-config.js +57 -0
  11. package/dist/skills/codebase-analyzer/SKILL.md +4 -4
  12. package/dist/skills/dev-verify/SKILL.md +3 -10
  13. package/dist/skills/diagrams-mermaid/SKILL.md +1 -0
  14. package/dist/skills/diagrams-mermaid/references/reference.md +4 -4
  15. package/dist/skills/flow-init/SKILL.md +1 -1
  16. package/dist/skills/goal-migration/SKILL.md +114 -0
  17. package/dist/skills/goal-research/SKILL.md +118 -118
  18. package/dist/skills/html-renderer/SKILL.md +1 -0
  19. package/dist/skills/migration/SKILL.md +157 -295
  20. package/dist/skills/migration-analyze/SKILL.md +126 -0
  21. package/dist/skills/migration-finalize/SKILL.md +161 -0
  22. package/dist/skills/migration-fix/SKILL.md +155 -0
  23. package/dist/skills/migration-implement/SKILL.md +131 -0
  24. package/dist/skills/migration-plan/SKILL.md +131 -0
  25. package/dist/skills/migration-spec/SKILL.md +135 -0
  26. package/dist/skills/{migration → migration-spec}/references/migration-strategies.md +9 -9
  27. package/dist/skills/migration-target/SKILL.md +134 -0
  28. package/dist/skills/{migration → migration-target}/references/migration-types.md +22 -23
  29. package/dist/skills/migration-verify/SKILL.md +184 -0
  30. package/dist/skills/orchestrator-framework/references/command-namespacing.md +1 -1
  31. package/dist/skills/orchestrator-framework/references/dispatcher-handoff.md +1 -1
  32. package/dist/skills/orchestrator-framework/references/fix-loop-contract.md +65 -0
  33. package/dist/skills/orchestrator-framework/references/gate-contract.md +117 -112
  34. package/dist/skills/orchestrator-framework/references/orchestrator-patterns.md +4 -1
  35. package/dist/skills/performance/SKILL.md +1 -0
  36. package/dist/skills/research/SKILL.md +249 -249
  37. package/dist/skills/research-brainstorm/SKILL.md +120 -120
  38. package/dist/skills/research-converge/SKILL.md +130 -130
  39. package/dist/skills/research-design/SKILL.md +146 -146
  40. package/dist/skills/research-finalize/SKILL.md +125 -125
  41. package/dist/skills/research-fork/SKILL.md +190 -190
  42. package/dist/skills/research-gather/SKILL.md +133 -133
  43. package/dist/skills/research-plan/SKILL.md +141 -141
  44. package/dist/skills/research-quick/SKILL.md +139 -139
  45. package/dist/skills/research-synthesize/SKILL.md +127 -127
  46. package/dist/skills/rule-reviewer/SKILL.md +1 -1
  47. package/dist/skills/standards-discover/SKILL.md +1 -0
  48. package/dist/templates/orchestrator-state-migration.yml +49 -9
  49. package/package.json +1 -1
  50. package/dist/commands/agents-md-generator.md +0 -36
  51. package/dist/commands/dev-analyze.md +0 -33
  52. package/dist/commands/dev-bugfix.md +0 -37
  53. package/dist/commands/dev-finalize.md +0 -33
  54. package/dist/commands/dev-implement.md +0 -34
  55. package/dist/commands/dev-plan.md +0 -37
  56. package/dist/commands/dev-spec.md +0 -37
  57. package/dist/commands/dev-tdd-red.md +0 -33
  58. package/dist/commands/dev-verify.md +0 -33
  59. package/dist/commands/development.md +0 -36
  60. package/dist/commands/diagrams-mermaid.md +0 -36
  61. package/dist/commands/flow-init.md +0 -36
  62. package/dist/commands/goal-development.md +0 -32
  63. package/dist/commands/goal-research.md +0 -33
  64. package/dist/commands/html-renderer.md +0 -36
  65. package/dist/commands/migration.md +0 -36
  66. package/dist/commands/performance.md +0 -36
  67. package/dist/commands/research-brainstorm.md +0 -33
  68. package/dist/commands/research-converge.md +0 -33
  69. package/dist/commands/research-design.md +0 -33
  70. package/dist/commands/research-finalize.md +0 -33
  71. package/dist/commands/research-fork.md +0 -40
  72. package/dist/commands/research-gather.md +0 -33
  73. package/dist/commands/research-plan.md +0 -37
  74. package/dist/commands/research-quick.md +0 -37
  75. package/dist/commands/research-synthesize.md +0 -33
  76. package/dist/commands/research.md +0 -55
  77. package/dist/commands/rule-reviewer.md +0 -38
  78. package/dist/commands/standards-discover.md +0 -36
  79. package/dist/commands/standards-update.md +0 -36
@@ -1,146 +1,146 @@
1
- ---
2
- name: owflow:research-design
3
- description: Research skill — optional subskill. Asks design preferences (Part A), delegates high-level architecture design to the solution-designer agent (outputs/high-level-design.md + outputs/decision-log.md), then refines diagrams via the diagrams-mermaid Skill — content-preserving (design-generated). Invoking this skill IS the decision to design — there is no enablement flag.
4
- argument-hint: "[task-path-or-identifier]"
5
- user-invocable: true
6
- ---
7
-
8
- # Research Design — High-Level Design (design-generated)
9
-
10
- Work phase of the research workflow. Creates the high-level architecture design from the selected solution approach — or, when brainstorming did not run, seeded from the research-report recommendations — as two artifacts (`outputs/high-level-design.md`, `outputs/decision-log.md`), then refines diagrams via the `diagrams-mermaid` Skill. Optional phase — runs when the user chooses it: invoking this skill IS the decision to design (no enablement flag in state). The design-only branch (brainstorming not run) is owned here: `selected_approach` is seeded from the research report. State lives in `orchestrator-state.yml` — this skill reads it on entry and writes results on exit.
11
-
12
- Related phases: `/owflow:research-brainstorm` + `/owflow:research-converge` (produce the chosen combination consumed as `selected_approach`), `/owflow:research-finalize` (always next). The design-techniques reference lives in this skill's own folder (`references/design-techniques.md`).
13
-
14
- ## Entry Gate
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/research/` (e.g., `2026-09-26-my-research`); resolve to its path.
20
- - If the argument is **missing**, the path does **not exist**, or matches **no identifier** → print the blocked block, then STOP (never guess or auto-pick a task):
21
- 1. Steps that must be completed first (in order), each with its command:
22
- - Research brief & plan (`brief-written`, `plan-created`) → `/owflow:research-plan <task-path>`
23
- - Parallel findings fan (`findings-gathered`) → `/owflow:research-gather <task-path>`
24
- - Synthesis & research report (`synthesis-complete`) → `/owflow:research-synthesize <task-path>`
25
- - Chosen approaches (`approaches-chosen`) → `/owflow:research-brainstorm <task-path>` + `/owflow:research-converge <task-path>` (only when brainstorming ran)
26
- 2. List available research-task identifiers (directories under `.owflow/tasks/research/`) to resume from, if any.
27
- 3. Hint: `Run /owflow:research <question> to start a task from scratch, or pass a task path/identifier to resume.`
28
-
29
- ### Prerequisites
30
-
31
- | Required for this skill | Where verified | Produced by |
32
- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
33
- | State file exists | `<task-path>/orchestrator-state.yml` | `/owflow:research <question>` or `/owflow:research-quick` |
34
- | Design input ready | brainstorm ran — `approaches-chosen` in `completed_phases`; OR brainstorm did not run — `outputs/research-report.md` exists with recommendations | `/owflow:research-converge <task-path>` (or `/owflow:research-synthesize <task-path>`) |
35
-
36
- 1. **Read `orchestrator-state.yml`** from the task path. If missing → mid-pipeline bootstrap ([Missing-state Bootstrap](../orchestrator-framework/references/gate-contract.md), starting slug `design-generated`): `question` — create a fresh standard research task starting at this step, or decline → print `No research task found at <path>. Run /owflow:research <question> to start a task from scratch.` and STOP.
37
- 2. **Prerequisite check**: `synthesis-complete` must be in `completed_phases`. If missing → print the blocked block (`→ /owflow:research-synthesize <task-path>`, or the earliest missing earlier step), then STOP.
38
- 3. **Design input (branch resolution)**:
39
- - `approaches-chosen` in `completed_phases` → brainstorm ran; the chosen combination from `phase_summaries.converge.decision_areas` is `selected_approach`.
40
- - `approaches-chosen` in `completed_phases` but `phase_summaries.converge.decision_areas` has no `chosen_approach` → convergence never resolved its areas: `→ /owflow:research-converge <task-path>`, then STOP.
41
- - `alternatives-generated` in `completed_phases` but `approaches-chosen` absent → the brainstorm chain is incomplete: `→ /owflow:research-converge <task-path>`, then STOP. Do NOT seed from the research report while alternatives exist.
42
- - Neither slug present → brainstorming has not produced alternatives. Ask via `question`: "Brainstorming hasn't run — seed the design from the research report, or brainstorm first?" → seed from report (design-only branch): state `Brainstorming did not run — seeding the design from research-report recommendations.`, validate `outputs/research-report.md` exists (missing → `→ /owflow:research-synthesize <task-path>`, then STOP) and proceed; → brainstorm first: `→ /owflow:research-brainstorm <task-path>`, then STOP.
43
- 4. **Skip/resume**: if `design-generated` is in `completed_phases`, validate BOTH `outputs/high-level-design.md` AND `outputs/decision-log.md` exist; either missing → re-run Parts B-D below; both present → report the existing design summary and route to the Exit Gate.
44
-
45
- ## Input / Output Artifacts
46
-
47
- | Artifact | Normal mode (full lane) | Quick mode (`research-quick`) |
48
- | ---------------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
49
- | Consumed: `phase_summaries.converge.decision_areas` (chosen combination) | becomes `selected_approach` when brainstorm ran | same fields — when the optional chain runs after a quick pass, converge ran as the normal subskill |
50
- | Consumed: `outputs/research-report.md` | design-only branch seed (`selected_approach` from recommendations) | identical — research-quick produces the same report artifact |
51
- | Produced: `outputs/high-level-design.md`, `outputs/decision-log.md` | delegated to `solution-designer`, refined via `diagrams-mermaid` Skill | NOT produced in the quick pass — design always runs as this skill after the quick lane |
52
- | State write | `design-generated`; `phase_summaries.design {summary, architecture_style, decisions_count}`, `research_outputs.high_level_design` + `.decision_log` | same (this skill never runs inside a quick pass) |
53
-
54
- ## Execute (Part A direct + Part B delegated + Part C direct + Part D Skill)
55
-
56
- **Read first**: the [Delegation Rules](../orchestrator-framework/references/delegation-rules.md).
57
-
58
- **Read `references/design-techniques.md` NOW using the Read tool** — MADR format, ADR guidance, decision documentation patterns (own-folder reference).
59
-
60
- ### Part A — Design Direction (direct)
61
-
62
- 1. Brainstorm ran: read the chosen combination from `phase_summaries.converge.decision_areas` — it becomes `selected_approach`.
63
- 2. Brainstorm did not run (design-only branch, resolved in Entry Gate step 3): read `outputs/research-report.md` recommendations and derive `selected_approach` from them; note the provenance (research-report recommendations, not convergence).
64
- 3. `question` — "Any architectural constraints or preferences?" (free-form answer; empty means none). These `design_preferences` ride in the Part B context pass and are kept human-readable in `phase_summaries.design.summary` — the state template has NO dedicated `design_preferences` slot; that omission is deliberate (do NOT invent a template field).
65
-
66
- ### Part B — Design Generation (subagent)
67
-
68
- > **ANTI-PATTERN — do NOT generate C4 architecture diagrams or ADRs inline. "The approach is obvious" is NOT a reason to skip delegation. The solution-designer agent has specialized architecture and MADR documentation capabilities.**
69
-
70
- 1. **INVOKE NOW**: Task tool - `solution-designer` subagent (never the Skill tool — this is an agent). Pass (Pattern 7 — accumulated context):
71
- - `task_path`, `synthesis_path` (`analysis/synthesis.md`), `research_report_path` (`outputs/research-report.md`)
72
- - `solution_exploration_path` (`outputs/solution-exploration.md`) — only when brainstorm ran
73
- - `selected_approach` (from convergence; on the no-brainstorm branch, seeded from research-report recommendations — list the provenance in the prompt)
74
- - `design_preferences` (from Part A; omit when the user gave none)
75
- - Accumulated context: `research_type`, `research_question`, `confidence_level`, `phase_summaries`
76
- - `project_doc_paths` (from state)
77
- - MUST-contract: the designer writes BOTH `outputs/high-level-design.md` AND `outputs/decision-log.md`
78
- 2. > **SELF-CHECK**: After the Task tool returns, verify BOTH `outputs/high-level-design.md` and `outputs/decision-log.md` exist. If either is missing: **STOP. Do NOT proceed to Part D or the Exit Gate.** Re-invoke the designer with corrected context. If a second attempt also fails, use `question` to report the failure and ask whether to retry or skip design.
79
-
80
- ### Part C — Executive Summary (direct)
81
-
82
- Read `outputs/high-level-design.md` and `outputs/decision-log.md`, then present the executive summary through the Exit-Gate results box below (architecture style and key components, decision count, key decision highlights 1 line each, integration points with the existing system if applicable) — no separate presentation round.
83
-
84
- ### Part D — Diagram Refinement (Skill, content-preserving)
85
-
86
- 1. **INVOKE NOW**: Skill tool - `diagrams-mermaid` to refine visual communication in `outputs/high-level-design.md`.
87
- 2. Add diagrams that supplement (NOT replace) existing architecture content:
88
- - one architecture view (`C4Container` preferred; `C4Component` only if needed),
89
- - one interaction/state view (`sequenceDiagram` or `flowchart`) for the critical flow.
90
- 3. If minimum context for a diagram is missing, record explicit gaps in the document and avoid speculative components/relationships.
91
-
92
- ### Close (`design-generated`)
93
-
94
- 1. **State write**: append `design-generated` to `completed_phases` after the SELF-CHECK passes and Part D completes; update `research_context.phase_summaries.design {summary, architecture_style, decisions_count}` (keep the Part A preferences visible in `summary`); set `research_outputs.high_level_design` AND `research_outputs.decision_log`; bump `orchestrator.updated`. On failure: append `design-generated` to `failed_phases`, increment `auto_fix_attempts["design-generated"]`. Then re-read state + run `verify_template` (see State Update Convention).
95
-
96
- ## State Update Convention (per step)
97
-
98
- Apply after EVERY step above:
99
-
100
- 1. **Write immediately** — update `orchestrator-state.yml` as soon as the step completes, appending ONLY the step slug actually performed (`design-generated`) plus that step's fields. Never batch multiple steps into one end-of-skill write.
101
- 2. **Timestamp** — set `orchestrator.updated` to the current UTC timestamp on every write.
102
- 3. **Failures** — if the designer delegation fails or its retries are abandoned, do NOT append `design-generated` to `completed_phases`; instead append it to `orchestrator.failed_phases` and increment `auto_fix_attempts["design-generated"]`. A user-chosen skip via `question` after repeated failures is a deliberate decision, not a failure: record the reason in `phase_summaries.design.summary` and append neither `design-generated` nor a `failed_phases` entry. Then present the Exit Gate (results box notes the skip; next step is `/owflow:research-finalize <task-path>`).
103
- 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-research.yml`. Fix any reported issue immediately before proceeding.
104
- 5. **Final check** — before the Exit Gate, one consolidated re-read + `verify_template` run to confirm the full state matches everything performed in this session.
105
-
106
- ## Recovery
107
-
108
- | Step | Max Attempts | Strategy |
109
- | ----------------------------- | ------------ | ----------------------------------------------- |
110
- | Design (`design-generated`) | 2 | Re-invoke solution-designer with adjusted context |
111
-
112
- ## Exit Gate
113
-
114
- Present results, get user confirmation, then hand off (see [Gate Contract](../orchestrator-framework/references/gate-contract.md)). Never auto-invoke the next skill. A user-chosen skip still uses this Exit Gate; its results box says the step was skipped and why, and the next step is `/owflow:research-finalize <task-path>`.
115
-
116
- ### Results box
117
-
118
- ```markdown
119
- ## ✅ RESEARCH DESIGN COMPLETE — <research question>
120
-
121
- **Architecture style** — [style and key components]
122
- **Decisions recorded** — [N architectural decisions in decision-log.md]
123
- **Key highlights** — [1 line per key decision]
124
- **Integration points** — [with the existing system, if applicable]
125
- **Diagrams** — [refined by diagrams-mermaid / gaps recorded]
126
-
127
- **Artifacts**
128
-
129
- - `outputs/high-level-design.md`
130
- - `outputs/decision-log.md`
131
- ```
132
-
133
- ### Results-acceptance question
134
-
135
- Use `question` — "Are these results correct?" with options:
136
-
137
- - **Accept** — the architecture and decision log are good; continue.
138
- - **Adjust** — re-invoke the designer with the user's corrections (changed constraints or preferences), update state and artifacts, re-present the results box.
139
- - **Discuss** — walk through the architecture style or specific architectural decisions in more depth; then re-ask.
140
- - **Stop here** — print the resume command (`/owflow:research-design <task-path>`) and end.
141
-
142
- ### Next steps (after Accept)
143
-
144
- - `→ /owflow:research-finalize <task-path>` — `required` next: inventories all research outputs (including these design artifacts) and completes the task (`research-completed`). Remaining after: none — development starts from finalize's handoff (`→ /owflow:development <task-path>`).
145
-
146
- Then STOP.
1
+ ---
2
+ name: owflow:research-design
3
+ description: Research skill — optional subskill. Asks design preferences (Part A), delegates high-level architecture design to the solution-designer agent (outputs/high-level-design.md + outputs/decision-log.md), then refines diagrams via the diagrams-mermaid Skill — content-preserving (design-generated). Invoking this skill IS the decision to design — there is no enablement flag.
4
+ argument-hint: "[task-path-or-identifier]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Research Design — High-Level Design (design-generated)
9
+
10
+ Work phase of the research workflow. Creates the high-level architecture design from the selected solution approach — or, when brainstorming did not run, seeded from the research-report recommendations — as two artifacts (`outputs/high-level-design.md`, `outputs/decision-log.md`), then refines diagrams via the `diagrams-mermaid` Skill. Optional phase — runs when the user chooses it: invoking this skill IS the decision to design (no enablement flag in state). The design-only branch (brainstorming not run) is owned here: `selected_approach` is seeded from the research report. State lives in `orchestrator-state.yml` — this skill reads it on entry and writes results on exit.
11
+
12
+ Related phases: `/owflow:research-brainstorm` + `/owflow:research-converge` (produce the chosen combination consumed as `selected_approach`), `/owflow:research-finalize` (always next). The design-techniques reference lives in this skill's own folder (`references/design-techniques.md`).
13
+
14
+ ## Entry Gate
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/research/` (e.g., `2026-09-26-my-research`); resolve to its path.
20
+ - If the argument is **missing**, the path does **not exist**, or matches **no identifier** → print the blocked block, then STOP (never guess or auto-pick a task):
21
+ 1. Steps that must be completed first (in order), each with its command:
22
+ - Research brief & plan (`brief-written`, `plan-created`) → `/owflow:research-plan <task-path>`
23
+ - Parallel findings fan (`findings-gathered`) → `/owflow:research-gather <task-path>`
24
+ - Synthesis & research report (`synthesis-complete`) → `/owflow:research-synthesize <task-path>`
25
+ - Chosen approaches (`approaches-chosen`) → `/owflow:research-brainstorm <task-path>` + `/owflow:research-converge <task-path>` (only when brainstorming ran)
26
+ 2. List available research-task identifiers (directories under `.owflow/tasks/research/`) to resume from, if any.
27
+ 3. Hint: `Run /owflow:research <question> to start a task from scratch, or pass a task path/identifier to resume.`
28
+
29
+ ### Prerequisites
30
+
31
+ | Required for this skill | Where verified | Produced by |
32
+ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
33
+ | State file exists | `<task-path>/orchestrator-state.yml` | `/owflow:research <question>` or `/owflow:research-quick` |
34
+ | Design input ready | brainstorm ran — `approaches-chosen` in `completed_phases`; OR brainstorm did not run — `outputs/research-report.md` exists with recommendations | `/owflow:research-converge <task-path>` (or `/owflow:research-synthesize <task-path>`) |
35
+
36
+ 1. **Read `orchestrator-state.yml`** from the task path. If missing → mid-pipeline bootstrap ([Missing-state Bootstrap](../orchestrator-framework/references/gate-contract.md), starting slug `design-generated`): `question` — create a fresh standard research task starting at this step, or decline → print `No research task found at <path>. Run /owflow:research <question> to start a task from scratch.` and STOP.
37
+ 2. **Prerequisite check**: `synthesis-complete` must be in `completed_phases`. If missing → print the blocked block (`→ /owflow:research-synthesize <task-path>`, or the earliest missing earlier step), then STOP.
38
+ 3. **Design input (branch resolution)**:
39
+ - `approaches-chosen` in `completed_phases` → brainstorm ran; the chosen combination from `phase_summaries.converge.decision_areas` is `selected_approach`.
40
+ - `approaches-chosen` in `completed_phases` but `phase_summaries.converge.decision_areas` has no `chosen_approach` → convergence never resolved its areas: `→ /owflow:research-converge <task-path>`, then STOP.
41
+ - `alternatives-generated` in `completed_phases` but `approaches-chosen` absent → the brainstorm chain is incomplete: `→ /owflow:research-converge <task-path>`, then STOP. Do NOT seed from the research report while alternatives exist.
42
+ - Neither slug present → brainstorming has not produced alternatives. Ask via `question`: "Brainstorming hasn't run — seed the design from the research report, or brainstorm first?" → seed from report (design-only branch): state `Brainstorming did not run — seeding the design from research-report recommendations.`, validate `outputs/research-report.md` exists (missing → `→ /owflow:research-synthesize <task-path>`, then STOP) and proceed; → brainstorm first: `→ /owflow:research-brainstorm <task-path>`, then STOP.
43
+ 4. **Skip/resume**: if `design-generated` is in `completed_phases`, validate BOTH `outputs/high-level-design.md` AND `outputs/decision-log.md` exist; either missing → re-run Parts B-D below; both present → report the existing design summary and route to the Exit Gate.
44
+
45
+ ## Input / Output Artifacts
46
+
47
+ | Artifact | Normal mode (full lane) | Quick mode (`research-quick`) |
48
+ | ---------------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
49
+ | Consumed: `phase_summaries.converge.decision_areas` (chosen combination) | becomes `selected_approach` when brainstorm ran | same fields — when the optional chain runs after a quick pass, converge ran as the normal subskill |
50
+ | Consumed: `outputs/research-report.md` | design-only branch seed (`selected_approach` from recommendations) | identical — research-quick produces the same report artifact |
51
+ | Produced: `outputs/high-level-design.md`, `outputs/decision-log.md` | delegated to `solution-designer`, refined via `diagrams-mermaid` Skill | NOT produced in the quick pass — design always runs as this skill after the quick lane |
52
+ | State write | `design-generated`; `phase_summaries.design {summary, architecture_style, decisions_count}`, `research_outputs.high_level_design` + `.decision_log` | same (this skill never runs inside a quick pass) |
53
+
54
+ ## Execute (Part A direct + Part B delegated + Part C direct + Part D Skill)
55
+
56
+ **Read first**: the [Delegation Rules](../orchestrator-framework/references/delegation-rules.md).
57
+
58
+ **Read `references/design-techniques.md` NOW using the Read tool** — MADR format, ADR guidance, decision documentation patterns (own-folder reference).
59
+
60
+ ### Part A — Design Direction (direct)
61
+
62
+ 1. Brainstorm ran: read the chosen combination from `phase_summaries.converge.decision_areas` — it becomes `selected_approach`.
63
+ 2. Brainstorm did not run (design-only branch, resolved in Entry Gate step 3): read `outputs/research-report.md` recommendations and derive `selected_approach` from them; note the provenance (research-report recommendations, not convergence).
64
+ 3. `question` — "Any architectural constraints or preferences?" (free-form answer; empty means none). These `design_preferences` ride in the Part B context pass and are kept human-readable in `phase_summaries.design.summary` — the state template has NO dedicated `design_preferences` slot; that omission is deliberate (do NOT invent a template field).
65
+
66
+ ### Part B — Design Generation (subagent)
67
+
68
+ > **ANTI-PATTERN — do NOT generate C4 architecture diagrams or ADRs inline. "The approach is obvious" is NOT a reason to skip delegation. The solution-designer agent has specialized architecture and MADR documentation capabilities.**
69
+
70
+ 1. **INVOKE NOW**: Task tool - `solution-designer` subagent (never the Skill tool — this is an agent). Pass (Pattern 7 — accumulated context):
71
+ - `task_path`, `synthesis_path` (`analysis/synthesis.md`), `research_report_path` (`outputs/research-report.md`)
72
+ - `solution_exploration_path` (`outputs/solution-exploration.md`) — only when brainstorm ran
73
+ - `selected_approach` (from convergence; on the no-brainstorm branch, seeded from research-report recommendations — list the provenance in the prompt)
74
+ - `design_preferences` (from Part A; omit when the user gave none)
75
+ - Accumulated context: `research_type`, `research_question`, `confidence_level`, `phase_summaries`
76
+ - `project_doc_paths` (from state)
77
+ - MUST-contract: the designer writes BOTH `outputs/high-level-design.md` AND `outputs/decision-log.md`
78
+ 2. > **SELF-CHECK**: After the Task tool returns, verify BOTH `outputs/high-level-design.md` and `outputs/decision-log.md` exist. If either is missing: **STOP. Do NOT proceed to Part D or the Exit Gate.** Re-invoke the designer with corrected context. If a second attempt also fails, use `question` to report the failure and ask whether to retry or skip design.
79
+
80
+ ### Part C — Executive Summary (direct)
81
+
82
+ Read `outputs/high-level-design.md` and `outputs/decision-log.md`, then present the executive summary through the Exit-Gate results box below (architecture style and key components, decision count, key decision highlights 1 line each, integration points with the existing system if applicable) — no separate presentation round.
83
+
84
+ ### Part D — Diagram Refinement (Skill, content-preserving)
85
+
86
+ 1. **INVOKE NOW**: Skill tool - `diagrams-mermaid` to refine visual communication in `outputs/high-level-design.md`.
87
+ 2. Add diagrams that supplement (NOT replace) existing architecture content:
88
+ - one architecture view (`C4Container` preferred; `C4Component` only if needed),
89
+ - one interaction/state view (`sequenceDiagram` or `flowchart`) for the critical flow.
90
+ 3. If minimum context for a diagram is missing, record explicit gaps in the document and avoid speculative components/relationships.
91
+
92
+ ### Close (`design-generated`)
93
+
94
+ 1. **State write**: append `design-generated` to `completed_phases` after the SELF-CHECK passes and Part D completes; update `research_context.phase_summaries.design {summary, architecture_style, decisions_count}` (keep the Part A preferences visible in `summary`); set `research_outputs.high_level_design` AND `research_outputs.decision_log`; bump `orchestrator.updated`. On failure: append `design-generated` to `failed_phases`, increment `auto_fix_attempts["design-generated"]`. Then re-read state + run `verify_template` (see State Update Convention).
95
+
96
+ ## State Update Convention (per step)
97
+
98
+ Apply after EVERY step above:
99
+
100
+ 1. **Write immediately** — update `orchestrator-state.yml` as soon as the step completes, appending ONLY the step slug actually performed (`design-generated`) plus that step's fields. Never batch multiple steps into one end-of-skill write.
101
+ 2. **Timestamp** — set `orchestrator.updated` to the current UTC timestamp on every write.
102
+ 3. **Failures** — if the designer delegation fails or its retries are abandoned, do NOT append `design-generated` to `completed_phases`; instead append it to `orchestrator.failed_phases` and increment `auto_fix_attempts["design-generated"]`. A user-chosen skip via `question` after repeated failures is a deliberate decision, not a failure: record the reason in `phase_summaries.design.summary` and append neither `design-generated` nor a `failed_phases` entry. Then present the Exit Gate (results box notes the skip; next step is `/owflow:research-finalize <task-path>`).
103
+ 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-research.yml`. Fix any reported issue immediately before proceeding.
104
+ 5. **Final check** — before the Exit Gate, one consolidated re-read + `verify_template` run to confirm the full state matches everything performed in this session.
105
+
106
+ ## Recovery
107
+
108
+ | Step | Max Attempts | Strategy |
109
+ | ----------------------------- | ------------ | ----------------------------------------------- |
110
+ | Design (`design-generated`) | 2 | Re-invoke solution-designer with adjusted context |
111
+
112
+ ## Exit Gate
113
+
114
+ Present results, get user confirmation, then hand off (see [Gate Contract](../orchestrator-framework/references/gate-contract.md)). Never auto-invoke the next skill. A user-chosen skip still uses this Exit Gate; its results box says the step was skipped and why, and the next step is `/owflow:research-finalize <task-path>`.
115
+
116
+ ### Results box
117
+
118
+ ```markdown
119
+ ## ✅ RESEARCH DESIGN COMPLETE — <research question>
120
+
121
+ **Architecture style** — [style and key components]
122
+ **Decisions recorded** — [N architectural decisions in decision-log.md]
123
+ **Key highlights** — [1 line per key decision]
124
+ **Integration points** — [with the existing system, if applicable]
125
+ **Diagrams** — [refined by diagrams-mermaid / gaps recorded]
126
+
127
+ **Artifacts**
128
+
129
+ - `outputs/high-level-design.md`
130
+ - `outputs/decision-log.md`
131
+ ```
132
+
133
+ ### Results-acceptance question
134
+
135
+ Use `question` — "Are these results correct?" with options:
136
+
137
+ - **Accept** — the architecture and decision log are good; continue.
138
+ - **Adjust** — re-invoke the designer with the user's corrections (changed constraints or preferences), update state and artifacts, re-present the results box.
139
+ - **Discuss** — walk through the architecture style or specific architectural decisions in more depth; then re-ask.
140
+ - **Stop here** — print the resume command (`/owflow:research-design <task-path>`) and end.
141
+
142
+ ### Next steps (after Accept)
143
+
144
+ - `→ /owflow:research-finalize <task-path>` — `required` next: inventories all research outputs (including these design artifacts) and completes the task (`research-completed`). Remaining after: none — development starts from finalize's handoff (`→ /owflow:development <task-path>`).
145
+
146
+ Then STOP.
@@ -1,125 +1,125 @@
1
- ---
2
- name: owflow:research-finalize
3
- description: Research skill — terminal step. Inventories all research outputs (research report always; brainstorm/design artifacts conditionally), presents the workflow results box, and gets user confirmation that the research is correct. Marks the task research-completed — the Exit-Gate acceptance here is where the goal-research wrapper's loop ends.
4
- argument-hint: "[task-path-or-identifier]"
5
- user-invocable: true
6
- ---
7
-
8
- # Research Finalize — Completion & Handoff (research-completed)
9
-
10
- Terminal step of the research workflow. Presents research results, confirms correctness with the user, and hands off to development (or ends the workflow). No new files — summarizes existing outputs. State lives in `orchestrator-state.yml` — this skill reads it on entry and writes results on exit.
11
-
12
- Related phases: all research subskills (`/owflow:research-plan` → `/owflow:research-gather` → `/owflow:research-synthesize` → the optional chain as chosen by the user). This is the terminal skill: its Exit-Gate acceptance is where the goal-research wrapper's loop ends, and where assisted mode suggests development.
13
-
14
- ## Entry Gate
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/research/` (e.g., `2026-09-26-my-research`); resolve to its path.
20
- - If the argument is **missing**, the path does **not exist**, or matches **no identifier** → print the blocked block, then STOP (never guess or auto-pick a task):
21
- 1. Steps that must be completed first (in order), each with its command:
22
- - Research brief & plan (`brief-written`, `plan-created`) → `/owflow:research-plan <task-path>`
23
- - Parallel findings fan (`findings-gathered`) → `/owflow:research-gather <task-path>`
24
- - Synthesis & research report (`synthesis-complete`) → `/owflow:research-synthesize <task-path>`
25
- 2. List available research-task identifiers (directories under `.owflow/tasks/research/`) to resume from, if any.
26
- 3. Hint: `Run /owflow:research <question> to start a task from scratch, or pass a task path/identifier to resume.`
27
-
28
- ### Prerequisites
29
-
30
- | Required for this skill | Where verified | Produced by |
31
- | ----------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
32
- | State file exists | `<task-path>/orchestrator-state.yml` | `/owflow:research <question>` or `/owflow:research-quick` |
33
- | Foundation complete | `synthesis-complete` in `completed_phases` + `outputs/research-report.md` exists | `/owflow:research-synthesize <task-path>` |
34
-
35
- 1. **Read `orchestrator-state.yml`** from the task path. If missing → mid-pipeline bootstrap ([Missing-state Bootstrap](../orchestrator-framework/references/gate-contract.md), starting slug `research-completed`): `question` — create a fresh standard research task starting at this step, or decline → print `No research task found at <path>. Run /owflow:research <question> to start a task from scratch.` and STOP.
36
- 2. **Prerequisite check**: `synthesis-complete` must be in `completed_phases` and `outputs/research-report.md` must exist. The optional chain is settled by the user's own choices — invoking `research-brainstorm`/`research-design` is the decision to run them; skipping straight here settles the chain as skipped. If the foundation is missing → print the blocked block for the earliest missing step, then STOP:
37
- - `Run /owflow:research-plan <task-path> first` (or the command for the earliest missing earlier step: `/owflow:research-gather` or `/owflow:research-synthesize`).
38
- - If no task exists yet: `Run /owflow:research <question> to start a task from scratch.`
39
- 3. **Skip/resume**: if `task.status` is `completed`, report the existing finalization (results box from the inventory below) and STOP (dev-finalize terminal pattern).
40
- 4. **Always runs**: this skill always runs — every path (no optional steps / design-only / full brainstorm chain) reaches completion here. The optional phases only affect the inventory and the "Phases run" line.
41
-
42
- ## Input / Output Artifacts
43
-
44
- | Artifact | Normal mode (full lane) | Quick mode (`research-quick`) |
45
- | ---------------------------------------------- | --------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
46
- | Consumed: `outputs/research-report.md` (always) + conditional design/brainstorm artifacts | inventoried per `research_outputs.*` in state | identical — a quick-pass task brings the same standard artifacts |
47
- | Produced: none (state-only) | no new files — finalization is an inventory | same — after a quick pass this skill completes the task the same way |
48
- | State write | `research-completed`; `task.status: completed` | same slug and field |
49
-
50
- ## Execute (direct — inline-legal finalization)
51
-
52
- **Read first**: the [Delegation Rules](../orchestrator-framework/references/delegation-rules.md) — finalization is inline-legal ("finalization" is a simple, direct step; no agents involved).
53
-
54
- ### Inventory outputs
55
-
56
- 1. **Inventory all generated outputs**: `outputs/research-report.md` (always), plus conditional: `outputs/solution-exploration.md`, `outputs/high-level-design.md`, `outputs/decision-log.md` — each conditional artifact is listed only when its `research_outputs` field is set in state (and the file exists).
57
- 2. **Results box**:
58
-
59
- ```markdown
60
- ## ✅ RESEARCH COMPLETE — <research question>
61
-
62
- **Type** — [research type]
63
- **Confidence** — [confidence level]
64
- **Phases run** — [executed slug list, e.g. brief-written → plan-created → findings-gathered → synthesis-complete → alternatives-generated → approaches-chosen → design-generated]
65
- **Key findings** — [2-3 one-line highlights]
66
- **Decisions** — [count of ADRs, if design ran]
67
-
68
- **Artifacts**
69
-
70
- - `outputs/research-report.md`
71
- - `outputs/solution-exploration.md` [conditional]
72
- - `outputs/high-level-design.md` [conditional]
73
- - `outputs/decision-log.md` [conditional]
74
- ```
75
-
76
- ### Close (`research-completed`)
77
-
78
- 1. **State write**: append `research-completed` to `completed_phases` and set `task.status: completed` — ONLY after the results box is presented; do NOT write a `phase_summaries.finalize` slot (the template has no finalize slot — finalization is state-only, and the inventory lives in `research_outputs.*`); bump `orchestrator.updated`. On failure: append `research-completed` to `failed_phases`, increment `auto_fix_attempts["research-completed"]`. Then re-read state + run `verify_template` (see State Update Convention).
79
-
80
- ## State Update Convention (per step)
81
-
82
- Apply after EVERY step above:
83
-
84
- 1. **Write immediately** — update `orchestrator-state.yml` as soon as the step completes, appending ONLY the step slug actually performed (`research-completed`) plus that step's fields. Never batch multiple steps into one end-of-skill write. **No `phase_summaries.finalize` write** — the template has no such slot (finalization is state-only; the inventory lives in `research_outputs.*`).
85
- 2. **Timestamp** — set `orchestrator.updated` to the current UTC timestamp on every write.
86
- 3. **Failures** — if finalization fails, do NOT append `research-completed` to `completed_phases`; instead append it to `orchestrator.failed_phases` and increment `auto_fix_attempts["research-completed"]`.
87
- 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-research.yml`. Fix any reported issue immediately before proceeding.
88
- 5. **Final check** — before the Exit Gate, one consolidated re-read + `verify_template` run to confirm the full state matches everything performed in this session.
89
-
90
- ## Recovery
91
-
92
- | Step | Max Attempts | Strategy |
93
- | --------------------------------- | ------------ | -------------- |
94
- | Completion (`research-completed`) | 0 | Summary only |
95
-
96
- ## Exit Gate
97
-
98
- Present results, get user confirmation, then close the workflow (see [Gate Contract](../orchestrator-framework/references/gate-contract.md)). Never auto-invoke the next skill. **This acceptance is where the goal-research wrapper's loop ends** (Accept = the wrapper proceeds to its own wrapper Exit Gate; any other option ends the loop with the standard handoff block). In assisted mode, Accept prints the next steps below.
99
-
100
- ### Results box
101
-
102
- The results box from the Inventory outputs step above IS the workflow-level results box — present it here as-is (single box, not two).
103
-
104
- ### Results-acceptance question
105
-
106
- Use `question` — "Are these results correct?" with options:
107
-
108
- - **Accept** — research is complete; print next steps (below).
109
- - **Adjust** — re-run the affected phase (re-gather → `/owflow:research-gather <task-path>`, re-brainstorm → `/owflow:research-brainstorm <task-path>`, re-design → `/owflow:research-design <task-path>`) with the user's corrections, then re-present the results box.
110
- - **Discuss** — walk through specific findings or decisions in more depth; then re-ask.
111
- - **Fork** — branch instead of re-running here: `/owflow:research-fork <task-path>` copies this task to a new one diverging at a chosen completed step (source untouched); pass a description to skip the intent question.
112
- - **Stop here** — print the resume command (`/owflow:research-finalize <task-path>`) and end.
113
-
114
- ### Next steps (after Accept)
115
-
116
- If design artifacts exist (research report + design → development handoff), suggest starting development in a fresh session:
117
-
118
- ```
119
- To start development based on this research, clear context first or start a new session, then run:
120
- → /owflow:development <task-path>
121
- ```
122
-
123
- Without design artifacts, the research report remains the deliverable — feed it into `/owflow:development <task-path>` the same way when development is ready, or reference it manually.
124
-
125
- Then STOP.
1
+ ---
2
+ name: owflow:research-finalize
3
+ description: Research skill — terminal step. Inventories all research outputs (research report always; brainstorm/design artifacts conditionally), presents the workflow results box, and gets user confirmation that the research is correct. Marks the task research-completed — the Exit-Gate acceptance here is where the goal-research wrapper's loop ends.
4
+ argument-hint: "[task-path-or-identifier]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Research Finalize — Completion & Handoff (research-completed)
9
+
10
+ Terminal step of the research workflow. Presents research results, confirms correctness with the user, and hands off to development (or ends the workflow). No new files — summarizes existing outputs. State lives in `orchestrator-state.yml` — this skill reads it on entry and writes results on exit.
11
+
12
+ Related phases: all research subskills (`/owflow:research-plan` → `/owflow:research-gather` → `/owflow:research-synthesize` → the optional chain as chosen by the user). This is the terminal skill: its Exit-Gate acceptance is where the goal-research wrapper's loop ends, and where assisted mode suggests development.
13
+
14
+ ## Entry Gate
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/research/` (e.g., `2026-09-26-my-research`); resolve to its path.
20
+ - If the argument is **missing**, the path does **not exist**, or matches **no identifier** → print the blocked block, then STOP (never guess or auto-pick a task):
21
+ 1. Steps that must be completed first (in order), each with its command:
22
+ - Research brief & plan (`brief-written`, `plan-created`) → `/owflow:research-plan <task-path>`
23
+ - Parallel findings fan (`findings-gathered`) → `/owflow:research-gather <task-path>`
24
+ - Synthesis & research report (`synthesis-complete`) → `/owflow:research-synthesize <task-path>`
25
+ 2. List available research-task identifiers (directories under `.owflow/tasks/research/`) to resume from, if any.
26
+ 3. Hint: `Run /owflow:research <question> to start a task from scratch, or pass a task path/identifier to resume.`
27
+
28
+ ### Prerequisites
29
+
30
+ | Required for this skill | Where verified | Produced by |
31
+ | ----------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
32
+ | State file exists | `<task-path>/orchestrator-state.yml` | `/owflow:research <question>` or `/owflow:research-quick` |
33
+ | Foundation complete | `synthesis-complete` in `completed_phases` + `outputs/research-report.md` exists | `/owflow:research-synthesize <task-path>` |
34
+
35
+ 1. **Read `orchestrator-state.yml`** from the task path. If missing → mid-pipeline bootstrap ([Missing-state Bootstrap](../orchestrator-framework/references/gate-contract.md), starting slug `research-completed`): `question` — create a fresh standard research task starting at this step, or decline → print `No research task found at <path>. Run /owflow:research <question> to start a task from scratch.` and STOP.
36
+ 2. **Prerequisite check**: `synthesis-complete` must be in `completed_phases` and `outputs/research-report.md` must exist. The optional chain is settled by the user's own choices — invoking `research-brainstorm`/`research-design` is the decision to run them; skipping straight here settles the chain as skipped. If the foundation is missing → print the blocked block for the earliest missing step, then STOP:
37
+ - `Run /owflow:research-plan <task-path> first` (or the command for the earliest missing earlier step: `/owflow:research-gather` or `/owflow:research-synthesize`).
38
+ - If no task exists yet: `Run /owflow:research <question> to start a task from scratch.`
39
+ 3. **Skip/resume**: if `task.status` is `completed`, report the existing finalization (results box from the inventory below) and STOP (dev-finalize terminal pattern).
40
+ 4. **Always runs**: this skill always runs — every path (no optional steps / design-only / full brainstorm chain) reaches completion here. The optional phases only affect the inventory and the "Phases run" line.
41
+
42
+ ## Input / Output Artifacts
43
+
44
+ | Artifact | Normal mode (full lane) | Quick mode (`research-quick`) |
45
+ | ---------------------------------------------- | --------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
46
+ | Consumed: `outputs/research-report.md` (always) + conditional design/brainstorm artifacts | inventoried per `research_outputs.*` in state | identical — a quick-pass task brings the same standard artifacts |
47
+ | Produced: none (state-only) | no new files — finalization is an inventory | same — after a quick pass this skill completes the task the same way |
48
+ | State write | `research-completed`; `task.status: completed` | same slug and field |
49
+
50
+ ## Execute (direct — inline-legal finalization)
51
+
52
+ **Read first**: the [Delegation Rules](../orchestrator-framework/references/delegation-rules.md) — finalization is inline-legal ("finalization" is a simple, direct step; no agents involved).
53
+
54
+ ### Inventory outputs
55
+
56
+ 1. **Inventory all generated outputs**: `outputs/research-report.md` (always), plus conditional: `outputs/solution-exploration.md`, `outputs/high-level-design.md`, `outputs/decision-log.md` — each conditional artifact is listed only when its `research_outputs` field is set in state (and the file exists).
57
+ 2. **Results box**:
58
+
59
+ ```markdown
60
+ ## ✅ RESEARCH COMPLETE — <research question>
61
+
62
+ **Type** — [research type]
63
+ **Confidence** — [confidence level]
64
+ **Phases run** — [executed slug list, e.g. brief-written → plan-created → findings-gathered → synthesis-complete → alternatives-generated → approaches-chosen → design-generated]
65
+ **Key findings** — [2-3 one-line highlights]
66
+ **Decisions** — [count of ADRs, if design ran]
67
+
68
+ **Artifacts**
69
+
70
+ - `outputs/research-report.md`
71
+ - `outputs/solution-exploration.md` [conditional]
72
+ - `outputs/high-level-design.md` [conditional]
73
+ - `outputs/decision-log.md` [conditional]
74
+ ```
75
+
76
+ ### Close (`research-completed`)
77
+
78
+ 1. **State write**: append `research-completed` to `completed_phases` and set `task.status: completed` — ONLY after the results box is presented; do NOT write a `phase_summaries.finalize` slot (the template has no finalize slot — finalization is state-only, and the inventory lives in `research_outputs.*`); bump `orchestrator.updated`. On failure: append `research-completed` to `failed_phases`, increment `auto_fix_attempts["research-completed"]`. Then re-read state + run `verify_template` (see State Update Convention).
79
+
80
+ ## State Update Convention (per step)
81
+
82
+ Apply after EVERY step above:
83
+
84
+ 1. **Write immediately** — update `orchestrator-state.yml` as soon as the step completes, appending ONLY the step slug actually performed (`research-completed`) plus that step's fields. Never batch multiple steps into one end-of-skill write. **No `phase_summaries.finalize` write** — the template has no such slot (finalization is state-only; the inventory lives in `research_outputs.*`).
85
+ 2. **Timestamp** — set `orchestrator.updated` to the current UTC timestamp on every write.
86
+ 3. **Failures** — if finalization fails, do NOT append `research-completed` to `completed_phases`; instead append it to `orchestrator.failed_phases` and increment `auto_fix_attempts["research-completed"]`.
87
+ 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-research.yml`. Fix any reported issue immediately before proceeding.
88
+ 5. **Final check** — before the Exit Gate, one consolidated re-read + `verify_template` run to confirm the full state matches everything performed in this session.
89
+
90
+ ## Recovery
91
+
92
+ | Step | Max Attempts | Strategy |
93
+ | --------------------------------- | ------------ | -------------- |
94
+ | Completion (`research-completed`) | 0 | Summary only |
95
+
96
+ ## Exit Gate
97
+
98
+ Present results, get user confirmation, then close the workflow (see [Gate Contract](../orchestrator-framework/references/gate-contract.md)). Never auto-invoke the next skill. **This acceptance is where the goal-research wrapper's loop ends** (Accept = the wrapper proceeds to its own wrapper Exit Gate; any other option ends the loop with the standard handoff block). In assisted mode, Accept prints the next steps below.
99
+
100
+ ### Results box
101
+
102
+ The results box from the Inventory outputs step above IS the workflow-level results box — present it here as-is (single box, not two).
103
+
104
+ ### Results-acceptance question
105
+
106
+ Use `question` — "Are these results correct?" with options:
107
+
108
+ - **Accept** — research is complete; print next steps (below).
109
+ - **Adjust** — re-run the affected phase (re-gather → `/owflow:research-gather <task-path>`, re-brainstorm → `/owflow:research-brainstorm <task-path>`, re-design → `/owflow:research-design <task-path>`) with the user's corrections, then re-present the results box.
110
+ - **Discuss** — walk through specific findings or decisions in more depth; then re-ask.
111
+ - **Fork** — branch instead of re-running here: `/owflow:research-fork <task-path>` copies this task to a new one diverging at a chosen completed step (source untouched); pass a description to skip the intent question.
112
+ - **Stop here** — print the resume command (`/owflow:research-finalize <task-path>`) and end.
113
+
114
+ ### Next steps (after Accept)
115
+
116
+ If design artifacts exist (research report + design → development handoff), suggest starting development in a fresh session:
117
+
118
+ ```
119
+ To start development based on this research, clear context first or start a new session, then run:
120
+ → /owflow:development <task-path>
121
+ ```
122
+
123
+ Without design artifacts, the research report remains the deliverable — feed it into `/owflow:development <task-path>` the same way when development is ready, or reference it manually.
124
+
125
+ Then STOP.