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,40 +1,40 @@
1
- # Design Techniques
2
-
3
- These techniques guide High-Level Design in the research-design skill. They provide patterns for capturing and documenting design decisions in a durable, traceable format.
4
-
5
- ---
6
-
7
- ### Decision Documentation Patterns
8
-
9
- **Purpose**: Capture design decisions in a durable, traceable format.
10
-
11
- **Why Document Decisions**:
12
- - Future developers ask "why was this done this way?"
13
- - Prevents re-litigating settled questions
14
- - Preserves context that would otherwise be lost
15
- - Enables informed changes when assumptions change
16
-
17
- **MADR Format Overview** (Markdown Any Decision Record):
18
- - Lightweight, readable, version-control friendly
19
- - Sections: Status, Context, Decision Drivers, Considered Options, Decision Outcome, Consequences
20
- - Each decision is self-contained and independently understandable
21
-
22
- **When to Create an ADR**:
23
- - Decision affects system structure or component boundaries
24
- - Multiple viable alternatives existed (trade-offs involved)
25
- - Decision is hard to reverse later
26
- - Decision might be questioned by future developers
27
-
28
- **Lightweight vs Heavyweight**:
29
- - Lightweight (1 ADR, 10-20 lines): Simple designs with 1-2 key decisions
30
- - Standard (2-5 ADRs, 20-40 lines each): Most designs
31
- - Heavyweight (5+ ADRs): Complex systems with many interacting decisions
32
-
33
- **Decision Linking**:
34
- - Reference solution-exploration.md for alternatives already analyzed
35
- - Link from high-level-design.md decision table to individual ADR entries
36
- - ADRs from research inform (but don't replace) project-level ADRs in development
37
-
38
- ---
39
-
40
- This reference provides patterns and frameworks for the design phase. Actual implementation adapts these concepts to specific research contexts.
1
+ # Design Techniques
2
+
3
+ These techniques guide High-Level Design in the research-design skill. They provide patterns for capturing and documenting design decisions in a durable, traceable format.
4
+
5
+ ---
6
+
7
+ ### Decision Documentation Patterns
8
+
9
+ **Purpose**: Capture design decisions in a durable, traceable format.
10
+
11
+ **Why Document Decisions**:
12
+ - Future developers ask "why was this done this way?"
13
+ - Prevents re-litigating settled questions
14
+ - Preserves context that would otherwise be lost
15
+ - Enables informed changes when assumptions change
16
+
17
+ **MADR Format Overview** (Markdown Any Decision Record):
18
+ - Lightweight, readable, version-control friendly
19
+ - Sections: Status, Context, Decision Drivers, Considered Options, Decision Outcome, Consequences
20
+ - Each decision is self-contained and independently understandable
21
+
22
+ **When to Create an ADR**:
23
+ - Decision affects system structure or component boundaries
24
+ - Multiple viable alternatives existed (trade-offs involved)
25
+ - Decision is hard to reverse later
26
+ - Decision might be questioned by future developers
27
+
28
+ **Lightweight vs Heavyweight**:
29
+ - Lightweight (1 ADR, 10-20 lines): Simple designs with 1-2 key decisions
30
+ - Standard (2-5 ADRs, 20-40 lines each): Most designs
31
+ - Heavyweight (5+ ADRs): Complex systems with many interacting decisions
32
+
33
+ **Decision Linking**:
34
+ - Reference solution-exploration.md for alternatives already analyzed
35
+ - Link from high-level-design.md decision table to individual ADR entries
36
+ - ADRs from research inform (but don't replace) project-level ADRs in development
37
+
38
+ ---
39
+
40
+ This reference provides patterns and frameworks for the design phase. Actual implementation adapts these concepts to specific research contexts.
@@ -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.