owflow 0.3.0 → 0.4.3
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.
- package/README.md +24 -2
- package/dist/agents/information-gatherer.md +11 -11
- package/dist/agents/research-planner.md +15 -12
- package/dist/agents/research-synthesizer.md +7 -5
- package/dist/agents/solution-brainstormer.md +4 -4
- package/dist/agents/solution-designer.md +6 -6
- package/dist/commands/work.md +9 -9
- package/dist/configuration/commands-config.js +57 -0
- package/dist/configuration/skills-config.js +1 -1
- package/dist/index.js +5 -2
- package/dist/skills/diagrams-mermaid/SKILL.md +1 -0
- package/dist/skills/flow-init/SKILL.md +1 -1
- package/dist/skills/goal-research/SKILL.md +118 -0
- package/dist/skills/html-renderer/SKILL.md +1 -0
- package/dist/skills/migration/SKILL.md +1 -0
- package/dist/skills/orchestrator-framework/references/command-namespacing.md +1 -1
- package/dist/skills/orchestrator-framework/references/dispatcher-handoff.md +8 -1
- package/dist/skills/orchestrator-framework/references/gate-contract.md +17 -9
- package/dist/skills/performance/SKILL.md +1 -0
- package/dist/skills/research/SKILL.md +130 -376
- package/dist/skills/research-brainstorm/SKILL.md +120 -0
- package/dist/skills/{research → research-brainstorm}/references/brainstorming-techniques.md +1 -1
- package/dist/skills/research-converge/SKILL.md +130 -0
- package/dist/skills/research-design/SKILL.md +146 -0
- package/dist/skills/{research → research-design}/references/design-techniques.md +1 -1
- package/dist/skills/research-finalize/SKILL.md +125 -0
- package/dist/skills/research-fork/SKILL.md +190 -0
- package/dist/skills/research-gather/SKILL.md +133 -0
- package/dist/skills/research-plan/SKILL.md +141 -0
- package/dist/skills/research-quick/SKILL.md +139 -0
- package/dist/skills/research-synthesize/SKILL.md +127 -0
- package/dist/skills/rule-reviewer/SKILL.md +1 -1
- package/dist/skills/standards-discover/SKILL.md +1 -0
- package/dist/templates/orchestrator-state-research.yml +19 -13
- package/dist/tools/fork_task.js +36 -0
- package/dist/tools/verify_template.js +10 -31
- package/dist/utils/file-util.js +1 -1
- package/dist/utils/fork-task.js +74 -0
- package/dist/utils/plugin-info.js +20 -0
- package/dist/utils/yaml-structure.js +32 -0
- package/package.json +1 -1
- package/dist/commands/agents-md-generator.md +0 -36
- package/dist/commands/dev-analyze.md +0 -33
- package/dist/commands/dev-bugfix.md +0 -37
- package/dist/commands/dev-finalize.md +0 -33
- package/dist/commands/dev-implement.md +0 -34
- package/dist/commands/dev-plan.md +0 -37
- package/dist/commands/dev-spec.md +0 -37
- package/dist/commands/dev-tdd-red.md +0 -33
- package/dist/commands/dev-verify.md +0 -33
- package/dist/commands/development.md +0 -36
- package/dist/commands/diagrams-mermaid.md +0 -36
- package/dist/commands/flow-init.md +0 -36
- package/dist/commands/goal-development.md +0 -32
- package/dist/commands/html-renderer.md +0 -36
- package/dist/commands/migration.md +0 -36
- package/dist/commands/performance.md +0 -36
- package/dist/commands/research.md +0 -36
- package/dist/commands/rule-reviewer.md +0 -38
- package/dist/commands/standards-discover.md +0 -36
- package/dist/commands/standards-update.md +0 -36
- package/dist/constants.js +0 -4
- /package/dist/skills/{research → research-plan}/references/research-methodologies.md +0 -0
|
@@ -1,51 +1,72 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: owflow:research
|
|
3
|
-
description:
|
|
3
|
+
description: Research workflow dispatcher. Initializes/resumes research tasks, derives the next step from state, and hands off to the matching /owflow:research-* subskill. Handles comprehensive research and analysis — technical, requirements, literature, and mixed research types with adaptive methodology, multi-source gathering, pattern synthesis, and evidence-based artifact outputs (findings documentation). Supports standalone research tasks and embedded research phases feeding development workflows. Use /owflow:goal-research to run all phases in one session.
|
|
4
|
+
argument-hint: "[task description | task-path] [--from=<slug>] [--type=<type>]"
|
|
4
5
|
user-invocable: true
|
|
5
6
|
---
|
|
6
7
|
|
|
7
|
-
# Research
|
|
8
|
+
# Research Dispatcher
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
Entry point for research tasks in **assisted mode**: initialize (or resume) the task, derive the next pending step from `orchestrator-state.yml`, print the matching subskill command, and STOP. Each `/owflow:research-*` subskill runs its steps with fresh context — the explicit invocation IS the step gate.
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
Research state uses descriptive step slugs in `completed_phases` / `failed_phases` / `auto_fix_attempts` (NOT phase numbers): `brief-written`, `plan-created`, `findings-gathered`, `synthesis-complete`, `alternatives-generated`, `approaches-chosen`, `design-generated`, `research-completed`. The routing table below maps slugs to subskills.
|
|
13
|
+
|
|
14
|
+
For the all-in-one loop with in-session `question` gates, use `/owflow:goal-research`.
|
|
15
|
+
|
|
16
|
+
Gates follow the shared contract in the [Gate Contract](../orchestrator-framework/references/gate-contract.md), with the [dispatcher exception](../orchestrator-framework/references/gate-contract.md).
|
|
17
|
+
|
|
18
|
+
## Input / Output Artifacts
|
|
19
|
+
|
|
20
|
+
| Artifact | Normal mode | Quick mode |
|
|
21
|
+
| ---------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
|
|
22
|
+
| Argument (question / path) | research question (new task) or task path/identifier (resume) | task path/identifier only — quick runs are never STARTED here; an interrupted quick task resumes at full fidelity |
|
|
23
|
+
| `orchestrator-state.yml` | read on resume (artifact validation of `completed_phases`) | read on resume — honors `entry_point: "research-quick"` and quick-lane artifacts |
|
|
24
|
+
| Task directory + `orchestrator-state.yml` init | written (Step 3, new task) — `entry_point: "research"` | n/a — quick bootstrap is owned by `/owflow:research-quick` |
|
|
25
|
+
|
|
26
|
+
The dispatcher writes nothing else — every task artifact is produced by the subskills (see [Task Structure](#task-structure)).
|
|
12
27
|
|
|
13
28
|
## Entry Gate
|
|
14
29
|
|
|
15
|
-
**BEFORE
|
|
30
|
+
**BEFORE deriving the handoff, complete these steps:**
|
|
31
|
+
|
|
32
|
+
### Step 1: Load Framework Patterns
|
|
33
|
+
|
|
34
|
+
**Read the framework reference files NOW using the Read tool:**
|
|
35
|
+
|
|
36
|
+
1. The [Dispatcher & Handoff Pattern](../orchestrator-framework/references/dispatcher-handoff.md) governs this skill.
|
|
37
|
+
2. The [Delegation Rules](../orchestrator-framework/references/delegation-rules.md) bound what subskills delegate.
|
|
38
|
+
3. The [Orchestrator Patterns](../orchestrator-framework/references/orchestrator-patterns.md) define state schema, initialization, and context passing.
|
|
39
|
+
|
|
40
|
+
### Step 2: Resolve the Argument
|
|
16
41
|
|
|
17
|
-
|
|
42
|
+
**If the argument is a task path or identifier** (a directory, or a directory name under `.owflow/tasks/research/`) → **resume mode**:
|
|
18
43
|
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
44
|
+
1. Read `orchestrator-state.yml`; validate expected artifacts for `completed_phases` (remove entries whose artifacts are missing)
|
|
45
|
+
2. Find resume point: first step slug NOT in `completed_phases`; `--from=<slug>` overrides (validate its prerequisites exist, else use `question`)
|
|
46
|
+
3. Missing state file → print: `No research task found at <path>. Run /owflow:research <question> to start from scratch.` and STOP
|
|
22
47
|
|
|
23
|
-
|
|
48
|
+
**If the argument is a research question description** (any other free text) → new task.
|
|
24
49
|
|
|
25
|
-
|
|
26
|
-
| ----------------------- | ----------------------------------------------------- | -------------------------- |
|
|
27
|
-
| State file exists | `<task-path>/orchestrator-state.yml` (resume mode) | prior `/owflow:research` run |
|
|
50
|
+
**If nothing is provided** → ask via `question`: "What is your research question?" (free-form answer), then WAIT. Never guess or auto-pick a task.
|
|
28
51
|
|
|
29
|
-
|
|
52
|
+
### Step 3: Initialize (new task)
|
|
30
53
|
|
|
31
|
-
|
|
54
|
+
**New task** (research question argument):
|
|
32
55
|
|
|
33
|
-
1. **
|
|
34
|
-
2. **Initialize
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
- **CRITICAL**: Use the `verify_template` tool immediately after creation to check YAML validity against `orchestrator-state-research.yml`.
|
|
56
|
+
1. **Create Task Directory**: `.owflow/tasks/research/YYYY-MM-DD-task-name/` (3-5 kebab-case words from the question)
|
|
57
|
+
2. **Initialize State**: create `orchestrator-state.yml` from the research template — `task.title` / `task.description` from the question, `task.status: in_progress`, `orchestrator.task_path`, `orchestrator.entry_point: "research"` (template/bootstrap mechanic)
|
|
58
|
+
- **CRITICAL**: use the `verify_template` tool immediately after creation to check YAML validity against `orchestrator-state-research.yml`.
|
|
59
|
+
3. **Create Task Items**: use `TaskCreate` for the research steps (one item per subskill handoff), then set the execution order with `TaskUpdate addBlockedBy` (plan → gather → synthesize → optional chain (user choice) → finalize). On resume, refresh the already-evidenced items instead of re-creating them.
|
|
60
|
+
4. **Command flags**: `--type=TYPE` → `research_context.research_type`. Subskills read it from there.
|
|
39
61
|
|
|
40
62
|
**Output**:
|
|
41
63
|
|
|
42
64
|
```
|
|
43
|
-
🚀 Research
|
|
65
|
+
🚀 Research Dispatcher
|
|
44
66
|
|
|
45
67
|
Task: [research question]
|
|
46
68
|
Directory: [task-path]
|
|
47
|
-
|
|
48
|
-
Starting Phase 1: Initialize research...
|
|
69
|
+
Next step: [step name]
|
|
49
70
|
```
|
|
50
71
|
|
|
51
72
|
---
|
|
@@ -74,337 +95,74 @@ Use when:
|
|
|
74
95
|
|
|
75
96
|
---
|
|
76
97
|
|
|
77
|
-
##
|
|
98
|
+
## Routing Table (completed_phases → next subskill)
|
|
78
99
|
|
|
79
|
-
|
|
80
|
-
| ---------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------- |
|
|
81
|
-
| `references/research-methodologies.md` | Phase 1 | Research type classification, methodology selection, gathering strategies, analysis frameworks |
|
|
82
|
-
| `references/brainstorming-techniques.md` | Phase 3 | Divergent/convergent thinking, interactive exploration, scope guardrails |
|
|
83
|
-
| `references/design-techniques.md` | Phase 5 | Decision documentation (MADR), ADR guidance, decision linking |
|
|
100
|
+
Derive the FIRST step slug not in `completed_phases`, then print the matching command:
|
|
84
101
|
|
|
85
|
-
|
|
102
|
+
| Next step (slug) | Condition (from state) | Handoff command | Produces |
|
|
103
|
+
| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | ---------------------------------------------------------- |
|
|
104
|
+
| Brief + plan (`brief-written`, `plan-created`) | Always (new task or partial foundation) | `/owflow:research-plan <task-path>` | `planning/research-brief.md`, `research-plan.md`, `sources.md` |
|
|
105
|
+
| Gather (`findings-gathered`) | `plan-created` completed (gather parses `## Gathering Strategy`, or falls back to 4 default categories) | `/owflow:research-gather <task-path>` | `analysis/findings/*.md` |
|
|
106
|
+
| Synthesize (`synthesis-complete`) | `findings-gathered` completed | `/owflow:research-synthesize <task-path>` | `analysis/synthesis.md`, `outputs/research-report.md` |
|
|
107
|
+
| Optional chain (user choice) | `synthesis-complete` completed — ask via `question` whether to brainstorm, design, or finalize; hand off to the chosen subskill | `/owflow:research-brainstorm` / `/owflow:research-design` / `/owflow:research-finalize <task-path>` | user's chain decision |
|
|
108
|
+
| Brainstorm (`alternatives-generated`) | User chose brainstorming (invoking the skill IS the decision) | `/owflow:research-brainstorm <task-path>` | `outputs/solution-exploration.md` |
|
|
109
|
+
| Converge (`approaches-chosen`) | `alternatives-generated` completed (brainstorm ran) | `/owflow:research-converge <task-path>` | per-area `chosen_approach` in state (`phase_summaries.converge`) |
|
|
110
|
+
| Design (`design-generated`) | User chose design — after `approaches-chosen`, or as the design-only branch (seeded from the research report) | `/owflow:research-design <task-path>` | `outputs/high-level-design.md`, `outputs/decision-log.md` |
|
|
111
|
+
| Finalization (`research-completed`) | Foundation complete + optional chain settled (every step the user chose to run is recorded) | `/owflow:research-finalize <task-path>` | task completed (`task.status: completed`) |
|
|
86
112
|
|
|
87
|
-
|
|
113
|
+
The optional chain is the user's choice — there is no enablement flag in state and no separate decision step. When the user invokes `research-brainstorm` or `research-design`, that invocation IS the decision to run it; when they skip to `research-finalize`, the chain is settled as skipped. After `synthesis-complete` the dispatcher asks which way to go (brainstorm → converge → design, design-only, or straight to finalize).
|
|
88
114
|
|
|
89
|
-
|
|
90
|
-
| ----- | ------------------------------------------------------ | --------------------------------------- | ---------------------------------------------------------------------------- |
|
|
91
|
-
| 1 | "Research foundation (init, plan, gather, synthesize)" | "Executing research foundation" | Direct + research-planner + information-gatherer (xN) + research-synthesizer |
|
|
92
|
-
| 2 | "Evaluate brainstorming value" | "Evaluating brainstorming value" | Direct |
|
|
93
|
-
| 3 | "Generate solution alternatives" | "Generating solution alternatives" | solution-brainstormer |
|
|
94
|
-
| 4 | "Evaluate brainstorming alternatives" | "Evaluating brainstorming alternatives" | Direct (interactive) |
|
|
95
|
-
| 5 | "Design high-level architecture" | "Designing high-level architecture" | Direct + solution-designer |
|
|
96
|
-
| 6 | "Summarize research and suggest next steps" | "Completing research" | Direct |
|
|
115
|
+
`research-completed` already in `completed_phases` → the task is TERMINAL: no handoff.
|
|
97
116
|
|
|
98
|
-
|
|
117
|
+
This dispatcher never starts or forwards quick runs. An interrupted quick task (`entry_point: "research-quick"`, `synthesis-complete` not yet recorded) resumes at full fidelity for the missing pieces via the matching subskills. To finish that pass condensed, the user runs `/owflow:research-quick <task-path>` directly.
|
|
99
118
|
|
|
100
|
-
|
|
119
|
+
Forking (utility, not a routing row): `/owflow:research-fork <task-path> ["<what this fork should explore>"] [--from=<slug>] [--name="..."]` copies a task with at least one completed step to a new task diverging at a chosen completed step — a bare path is enough, the skill asks for the intent, fork point, and name with suggestions drawn from that research; the directory is copied verbatim and the copied state is trimmed to continue from the fork point onwards; the source stays untouched. The fork is a plain research task from then on, routable by this dispatcher like any other.
|
|
101
120
|
|
|
102
|
-
|
|
103
|
-
| ---------------- | ---------------------------------------- | --------------------------- | --------------------------------- |
|
|
104
|
-
| **Technical** | "how does", "where is", "implementation" | Codebase analysis | Knowledge base, architecture docs |
|
|
105
|
-
| **Requirements** | "what are requirements", "user needs" | User/business needs | Specifications, requirements doc |
|
|
106
|
-
| **Literature** | "best practices", "industry standards" | External research | Recommendations, comparisons |
|
|
107
|
-
| **Mixed** | Multiple keywords, broad questions | Comprehensive investigation | All output types |
|
|
121
|
+
References moved into their owning subskills (read there, not here): `research-methodologies.md` lives in `research-plan/references/`, `brainstorming-techniques.md` in `research-brainstorm/references/`, `design-techniques.md` in `research-design/references/`.
|
|
108
122
|
|
|
109
123
|
---
|
|
110
124
|
|
|
111
|
-
##
|
|
112
|
-
|
|
113
|
-
### Phase 1: Research Foundation
|
|
114
|
-
|
|
115
|
-
**Purpose**: Initialize research, plan methodology, gather information from all sources, and synthesize findings into a research report
|
|
116
|
-
**Execute**: Multi-step: Direct + research-planner + information-gatherer (xN) + research-synthesizer
|
|
117
|
-
**Output**: `planning/research-brief.md`, `planning/research-plan.md`, `planning/sources.md`, `analysis/findings/*.md`, `analysis/synthesis.md`, `outputs/research-report.md`
|
|
118
|
-
**State**: Set `research_context.research_type`, `research_question`, `scope`, `methodology`, `sources`, `confidence_level`, `gathering_strategy`
|
|
119
|
-
|
|
120
|
-
This phase executes 4 sequential steps. On resume, check existing artifacts to skip completed steps.
|
|
121
|
-
|
|
122
|
-
#### Step 1: Initialize (Direct)
|
|
123
|
-
|
|
124
|
-
**Artifacts**: `planning/research-brief.md`
|
|
125
|
-
**Resume check**: If `planning/research-brief.md` exists, skip to Step 2
|
|
126
|
-
|
|
127
|
-
1. Parse research question (from command or prompt user)
|
|
128
|
-
2. Classify research type (auto-detect from keywords or use `--type` flag)
|
|
129
|
-
3. Determine scope (included, excluded, constraints)
|
|
130
|
-
4. Define success criteria
|
|
131
|
-
5. Create research brief
|
|
132
|
-
6. Update state: set `research_context.research_type`, `research_question`, `scope`
|
|
133
|
-
7. **Discover project documentation**: Read `.owflow/docs/INDEX.md` (if exists), extract ALL file paths from the "Project Documentation" section — includes predefined docs AND any user-added project docs. Store as `research_context.project_doc_paths` in state.
|
|
134
|
-
|
|
135
|
-
#### Step 2: Plan (Subagent)
|
|
136
|
-
|
|
137
|
-
**Artifacts**: `planning/research-plan.md`, `planning/sources.md`
|
|
138
|
-
**Resume check**: If `planning/research-plan.md` AND `planning/sources.md` exist, skip to Step 3
|
|
139
|
-
|
|
140
|
-
**Read `references/research-methodologies.md` NOW using the Read tool** — research type classification, methodology selection, gathering strategies
|
|
141
|
-
|
|
142
|
-
**INVOKE NOW**: Use Task tool with `subagent_type: research-planner`
|
|
143
|
-
|
|
144
|
-
**Context to pass**: task_path, research_brief_path, research_type, research_question, scope, project_doc_paths (from state)
|
|
145
|
-
|
|
146
|
-
Update state: `research_context.methodology`, `sources`
|
|
147
|
-
|
|
148
|
-
#### Step 3: Gather + Merge (Parallel Subagents + Direct)
|
|
149
|
-
|
|
150
|
-
**Artifacts**: `analysis/findings/*.md` (category-specific)
|
|
151
|
-
**Resume check**: If any `analysis/findings/*.md` files exist, skip to Step 4
|
|
125
|
+
## Exit Gate (adapted for dispatch mode)
|
|
152
126
|
|
|
153
|
-
|
|
127
|
+
After deriving the handoff, present the results box, ask how to proceed, then hand off accordingly (see the [dispatcher exception](../orchestrator-framework/references/gate-contract.md)). Never auto-invoke the subskill.
|
|
154
128
|
|
|
155
|
-
|
|
156
|
-
2. If gathering strategy found: use specified categories and count (cap at 8 max)
|
|
157
|
-
3. If no gathering strategy: fall back to default 4 categories (codebase, documentation, configuration, external)
|
|
158
|
-
4. Update state: `research_context.gathering_strategy`
|
|
129
|
+
### Results box
|
|
159
130
|
|
|
160
|
-
|
|
131
|
+
```markdown
|
|
132
|
+
## ✅ RESEARCH TASK READY — <task name>
|
|
161
133
|
|
|
162
|
-
**
|
|
134
|
+
**Task** — [research question]
|
|
135
|
+
**Directory** — `<task-path>`
|
|
136
|
+
**Next step** — [step name]
|
|
137
|
+
[Resume note: completed steps / fresh task]
|
|
163
138
|
|
|
139
|
+
**Next ▸** `/owflow:research-<subskill> <task-path>`
|
|
164
140
|
```
|
|
165
|
-
Read gathering strategy from research-plan.md
|
|
166
|
-
For each category in strategy:
|
|
167
|
-
Use Task tool: source_category=[category_id] → analysis/findings/[prefix]-*.md
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
#### Step 4: Synthesize (Subagent)
|
|
171
|
-
|
|
172
|
-
**Artifacts**: `analysis/synthesis.md`, `outputs/research-report.md`
|
|
173
|
-
**Resume check**: If `analysis/synthesis.md` AND `outputs/research-report.md` exist, skip (Phase 1 complete)
|
|
174
|
-
|
|
175
|
-
**INVOKE NOW**: Use Task tool with `subagent_type: research-synthesizer`
|
|
176
|
-
|
|
177
|
-
**Context to pass**: task_path, findings_directory_path, research_question, research_type, methodology
|
|
178
|
-
|
|
179
|
-
**Synthesizer produces**:
|
|
180
|
-
|
|
181
|
-
- Pattern analysis and cross-references (`analysis/synthesis.md`)
|
|
182
|
-
- Comprehensive research report answering research question (`outputs/research-report.md`)
|
|
183
|
-
- Confidence levels for each finding
|
|
184
|
-
- Documented gaps and uncertainties
|
|
185
|
-
|
|
186
|
-
Update state: `research_context.confidence_level`
|
|
187
|
-
|
|
188
|
-
---
|
|
189
|
-
|
|
190
|
-
→ Pause
|
|
191
|
-
|
|
192
|
-
question - "Research foundation complete (initialized, planned, gathered, synthesized). Continue to brainstorming evaluation?"
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
### Phase 2: Optional Phases Decision
|
|
197
141
|
|
|
198
|
-
|
|
142
|
+
### Acceptance question
|
|
199
143
|
|
|
200
|
-
|
|
201
|
-
**Execute**: Direct
|
|
202
|
-
**Output**: Updated `orchestrator-state.yml`
|
|
203
|
-
**State**: Set `options.brainstorming_enabled`, `options.design_enabled`
|
|
144
|
+
Use `question` — "Task ready. How would you like to proceed?" with options:
|
|
204
145
|
|
|
205
|
-
|
|
146
|
+
- **Hand off to /owflow:research-<subskill>** — the user invokes the suggested command (dispatcher copies it to chat for convenience). Execution starts in a fresh context.
|
|
147
|
+
- **Switch to autonomous mode** — illustrate with `/owflow:goal-research <task-path>` to run remaining steps in one session with gates.
|
|
148
|
+
- **Adjust** — task set-up is wrong (wrong flags, wrong question, wrong task); re-run the affected initialization step, re-present the results box.
|
|
149
|
+
- **Stop here** — print the resume command (`/owflow:research <task-path>`) and end.
|
|
206
150
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
1. Read `analysis/synthesis.md` summary and `research_type` from state
|
|
210
|
-
2. Evaluate brainstorming value based on:
|
|
211
|
-
- Number of viable approaches identified in synthesis (multiple → valuable)
|
|
212
|
-
- Problem novelty (new domain → valuable; well-understood → less so)
|
|
213
|
-
- Whether synthesis identified competing trade-offs (yes → valuable)
|
|
214
|
-
3. Evaluate design value based on:
|
|
215
|
-
- Whether research suggests architectural decisions (yes → valuable)
|
|
216
|
-
- Research type (requirements/mixed → likely valuable; technical → depends)
|
|
217
|
-
- Whether design artifacts would feed into development workflow
|
|
218
|
-
4. If `brainstorming_enabled` not already set by flag, question:
|
|
219
|
-
- "[Brainstorming recommendation]. Would you like to explore solution alternatives?"
|
|
220
|
-
- Options: "Yes, explore alternatives" / "No, skip brainstorming"
|
|
221
|
-
5. If `design_enabled` not already set by flag, question:
|
|
222
|
-
- "[Design recommendation]. Would you like to generate a high-level design?"
|
|
223
|
-
- Options: "Yes, generate design" / "No, skip design"
|
|
224
|
-
6. Update state: set `brainstorming_enabled` and `design_enabled`
|
|
225
|
-
|
|
226
|
-
→ If brainstorming enabled: continue to Phase 3
|
|
227
|
-
→ If brainstorming disabled AND design enabled: skip to Phase 5
|
|
228
|
-
→ If both disabled: skip to Phase 6
|
|
229
|
-
|
|
230
|
-
---
|
|
231
|
-
|
|
232
|
-
### Phase 3: Solution Generation
|
|
233
|
-
|
|
234
|
-
**Purpose**: Generate solution alternatives from research evidence using specialized brainstormer subagent
|
|
235
|
-
**Execute**: solution-brainstormer subagent
|
|
236
|
-
**Output**: `outputs/solution-exploration.md`
|
|
237
|
-
**State**: Update `phase_summaries.phase-3`
|
|
238
|
-
|
|
239
|
-
**Skip if**: `brainstorming_enabled = false` (user chose to skip in Phase 2, or `--no-brainstorm` flag)
|
|
240
|
-
|
|
241
|
-
**Read `references/brainstorming-techniques.md` NOW using the Read tool** — divergent/convergent thinking techniques, scope guardrails
|
|
242
|
-
|
|
243
|
-
> **ANTI-PATTERN**: Do NOT generate solution alternatives inline. The solution-brainstormer agent has specialized multi-perspective analysis capabilities.
|
|
244
|
-
|
|
245
|
-
**INVOKE NOW**: Use Task tool with `subagent_type: solution-brainstormer`
|
|
246
|
-
|
|
247
|
-
**Context to pass** (Pattern 7):
|
|
248
|
-
|
|
249
|
-
- `task_path`, `synthesis_path`, `research_report_path`
|
|
250
|
-
- `output_path`: `outputs/solution-exploration.md` — brainstormer MUST write to this exact path
|
|
251
|
-
- Accumulated context: `research_type`, `research_question`, `confidence_level`, `phase_summaries` (Phase 1)
|
|
252
|
-
- `project_doc_paths` (from state)
|
|
253
|
-
|
|
254
|
-
> **SELF-CHECK**: After Task tool returns, verify `outputs/solution-exploration.md` exists and contains alternatives. If missing: **STOP. Do NOT proceed to Phase 4 or Phase 5.** Re-invoke the brainstormer with corrected context (ensure `output_path` is `outputs/solution-exploration.md`). If second attempt also fails, use question to report the failure and ask whether to retry or skip brainstorming.
|
|
255
|
-
|
|
256
|
-
→ **AUTO-CONTINUE**
|
|
257
|
-
|
|
258
|
-
---
|
|
151
|
+
### Handoff message
|
|
259
152
|
|
|
260
|
-
|
|
153
|
+
On Accept (hand off choice), print, then STOP:
|
|
261
154
|
|
|
262
|
-
**Purpose**: Present brainstorming alternatives to user for decision-making on each decision area
|
|
263
|
-
**Execute**: Direct (interactive)
|
|
264
|
-
**Output**: Updated `orchestrator-state.yml` with chosen approaches
|
|
265
|
-
**State**: Update `phase_summaries.phase-4` with `decision_areas` and `deferred_ideas`
|
|
266
|
-
|
|
267
|
-
**Skip if**: `brainstorming_enabled = false`
|
|
268
|
-
**Resume check**: If `phase_summaries.phase-4.decision_areas` has entries with `chosen_approach` set, skip already-resolved areas
|
|
269
|
-
|
|
270
|
-
> **ANTI-PATTERN**: Do NOT present all decision areas in a single summary table and ask one combined "do you agree?" question. Each area MUST get its own detailed presentation and its own question call.
|
|
271
|
-
>
|
|
272
|
-
> **ANTI-PATTERN**: Do NOT show full alternatives/pros/cons for the first area and then shortcut remaining areas to just a recommendation line + question. EVERY area gets the SAME level of detail — all alternatives with descriptions, pros, and cons. No exceptions.
|
|
273
|
-
|
|
274
|
-
1. Read `outputs/solution-exploration.md`
|
|
275
|
-
2. For each decision area sequentially, output ALL of the following (steps a-d) BEFORE calling question:
|
|
276
|
-
a. **Area header**: area name and why this decision matters (1-2 sentences of context)
|
|
277
|
-
b. **Alternatives detail**: For EVERY alternative in this area, show:
|
|
278
|
-
- Name and description (2-3 sentences)
|
|
279
|
-
- Pros (bullet list)
|
|
280
|
-
- Cons (bullet list)
|
|
281
|
-
c. **Recommendation**: which alternative is recommended and why (1 sentence)
|
|
282
|
-
d. **question**: this area's alternatives as options (mark recommended with "(Recommended)") + "Need more info" option
|
|
283
|
-
e. If user picks → record choice, move to next area
|
|
284
|
-
f. If "Need more info" → present the detailed trade-off analysis for the requested alternative, then re-ask
|
|
285
|
-
|
|
286
|
-
> **SELF-CHECK before each question**: Did you output the alternatives with pros/cons for THIS area? If you only showed a recommendation line without listing all alternatives and their pros/cons, STOP and output the full detail before asking.
|
|
287
|
-
|
|
288
|
-
3. After all areas resolved, present a brief summary of the chosen combination
|
|
289
|
-
4. Update state with chosen approaches per decision area
|
|
290
|
-
|
|
291
|
-
> **GATE CHECK**: Verify that question was called for EACH decision area. If any decision area was skipped for any reason (e.g., output file missing, read failure), STOP and resolve before continuing. Do NOT mark Phase 4 complete without user convergence on all decision areas.
|
|
292
|
-
|
|
293
|
-
→ Pause
|
|
294
|
-
|
|
295
|
-
question - "Brainstorming complete. Continue to high-level design?"
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
|
-
### Phase 5: High-Level Design
|
|
300
|
-
|
|
301
|
-
> **Phase gate**: Requires `question` confirmation from the preceding phase before executing.
|
|
302
|
-
|
|
303
|
-
**Purpose**: Create architecture design from selected solution approach
|
|
304
|
-
**Execute**: Orchestrator-Direct Hybrid
|
|
305
|
-
**Output**: `outputs/high-level-design.md`, `outputs/decision-log.md`
|
|
306
|
-
**State**: Update `phase_summaries.phase-5`
|
|
307
|
-
|
|
308
|
-
**Skip if**: `design_enabled = false`
|
|
309
|
-
|
|
310
|
-
**Read `references/design-techniques.md` NOW using the Read tool** — MADR format, ADR guidance, decision documentation patterns
|
|
311
|
-
|
|
312
|
-
**Part A — Design Direction (Direct)**:
|
|
313
|
-
|
|
314
|
-
1. If Phase 4 ran: confirm selected approaches from convergence
|
|
315
|
-
2. If Phase 4 was skipped: use research report recommendations as design input
|
|
316
|
-
3. question for any design preferences or constraints (e.g., "Any architectural constraints or preferences?")
|
|
317
|
-
|
|
318
|
-
**Part B — Design Generation (Subagent)**:
|
|
319
|
-
|
|
320
|
-
> **ANTI-PATTERN**: Do NOT generate C4 architecture diagrams or ADRs inline. The solution-designer agent has specialized architecture and MADR documentation capabilities.
|
|
321
|
-
|
|
322
|
-
**INVOKE NOW**: Use Task tool with `subagent_type: solution-designer`
|
|
323
|
-
|
|
324
|
-
**Context to pass** (Pattern 7):
|
|
325
|
-
|
|
326
|
-
- `task_path`, `synthesis_path`, `research_report_path`
|
|
327
|
-
- `solution_exploration_path` (only if Phase 3-4 ran)
|
|
328
|
-
- `selected_approach` (from Phase 4 convergence if ran, or from research report recommendations)
|
|
329
|
-
- `design_preferences` (from Part A)
|
|
330
|
-
- Accumulated context: `research_type`, `research_question`, `confidence_level`, `phase_summaries`
|
|
331
|
-
- `project_doc_paths` (from state)
|
|
332
|
-
|
|
333
|
-
> **SELF-CHECK**: After Task tool returns, verify both `outputs/high-level-design.md` and `outputs/decision-log.md` exist. If missing: **STOP. Do NOT proceed to Part C.** Re-invoke the designer with corrected context. If second attempt also fails, use question to report the failure and ask whether to retry or skip design.
|
|
334
|
-
|
|
335
|
-
**Part C — Summary (Direct)**: 3. Read `outputs/high-level-design.md` and `outputs/decision-log.md` 4. Present executive summary to user:
|
|
336
|
-
|
|
337
|
-
- Architecture style and key components
|
|
338
|
-
- Number of architectural decisions recorded
|
|
339
|
-
- Key decision highlights (1 line each)
|
|
340
|
-
- Integration points with existing system (if applicable)
|
|
341
|
-
|
|
342
|
-
**Part D — Diagram Refinement (Skill, content-preserving)**:
|
|
343
|
-
|
|
344
|
-
5. Invoke Skill tool: `diagrams-mermaid` to refine visual communication in `outputs/high-level-design.md`
|
|
345
|
-
6. Add diagrams that supplement (not replace) existing architecture content:
|
|
346
|
-
- one architecture view (`C4Container` preferred, `C4Component` only if needed),
|
|
347
|
-
- one interaction/state view (`sequenceDiagram` or `flowchart`) for the critical flow.
|
|
348
|
-
7. If minimum context for a diagram is missing, record explicit gaps in the document and avoid speculative components/relationships.
|
|
349
|
-
|
|
350
|
-
→ Pause
|
|
351
|
-
|
|
352
|
-
question - "Design complete. Continue to output generation?"
|
|
353
|
-
|
|
354
|
-
---
|
|
355
|
-
|
|
356
|
-
### Phase 6: Completion → Exit Gate
|
|
357
|
-
|
|
358
|
-
> **Phase gate**: Requires `question` confirmation from the preceding phase before executing.
|
|
359
|
-
|
|
360
|
-
**Purpose**: Present research results, confirm correctness with the user, and hand off (Exit Gate contract, [Gate Contract](../orchestrator-framework/references/gate-contract.md))
|
|
361
|
-
**Execute**: Direct
|
|
362
|
-
**Output**: No new files — summarizes existing outputs
|
|
363
|
-
|
|
364
|
-
**Process**:
|
|
365
|
-
|
|
366
|
-
1. Inventory all generated outputs: `outputs/research-report.md` (always), plus conditional: `solution-exploration.md`, `high-level-design.md`, `decision-log.md`
|
|
367
|
-
2. **Results box**:
|
|
368
|
-
|
|
369
|
-
```markdown
|
|
370
|
-
## ✅ RESEARCH COMPLETE — <research question>
|
|
371
|
-
|
|
372
|
-
**Type** — [research type]
|
|
373
|
-
**Confidence** — [confidence level]
|
|
374
|
-
**Phases run** — [e.g. 1, 3-4 brainstorm, 5 design]
|
|
375
|
-
**Key findings** — [2-3 one-line highlights]
|
|
376
|
-
**Decisions** — [count of ADRs, if design ran]
|
|
377
|
-
|
|
378
|
-
**Artifacts**
|
|
379
|
-
- `outputs/research-report.md`
|
|
380
|
-
- `outputs/solution-exploration.md` [conditional]
|
|
381
|
-
- `outputs/high-level-design.md` [conditional]
|
|
382
|
-
- `outputs/decision-log.md` [conditional]
|
|
383
155
|
```
|
|
156
|
+
✓ Research task ready at <task-path>
|
|
384
157
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
- **Adjust** — re-run the affected phase (re-gather, re-brainstorm, re-design) with the user's corrections, then re-present the results box.
|
|
388
|
-
- **Discuss** — walk through specific findings or decisions in more depth; then re-ask.
|
|
389
|
-
- **Stop here** — print the resume command (`/owflow:research <task-path>`) and end.
|
|
158
|
+
Next step:
|
|
159
|
+
→ /owflow:research-<subskill> <task-path>
|
|
390
160
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
To start development based on this research, clear context first or start a new session, then run:
|
|
395
|
-
→ /owflow:development <task-path>
|
|
161
|
+
Other options:
|
|
162
|
+
/owflow:goal-research <task-path> — run remaining steps in one loop
|
|
163
|
+
/owflow:research --from=<slug> <task-path> — jump to a specific step
|
|
396
164
|
```
|
|
397
165
|
|
|
398
|
-
→ End of workflow
|
|
399
|
-
|
|
400
|
-
---
|
|
401
|
-
|
|
402
|
-
## Domain Context (State Extensions)
|
|
403
|
-
|
|
404
|
-
Research-specific fields in `orchestrator-state.yml`:
|
|
405
|
-
|
|
406
|
-
Refer to the template [src/templates/orchestrator-state-research.yml](../../templates/orchestrator-state-research.yml).
|
|
407
|
-
|
|
408
166
|
---
|
|
409
167
|
|
|
410
168
|
## Task Structure
|
|
@@ -413,39 +171,34 @@ Refer to the template [src/templates/orchestrator-state-research.yml](../../temp
|
|
|
413
171
|
.owflow/tasks/research/YYYY-MM-DD-research-name/
|
|
414
172
|
├── orchestrator-state.yml
|
|
415
173
|
├── planning/
|
|
416
|
-
│ ├── research-brief.md #
|
|
417
|
-
│ ├── research-plan.md #
|
|
418
|
-
│ └── sources.md #
|
|
174
|
+
│ ├── research-brief.md # research-plan (brief step)
|
|
175
|
+
│ ├── research-plan.md # research-plan (plan step)
|
|
176
|
+
│ └── sources.md # research-plan (plan step)
|
|
419
177
|
├── analysis/
|
|
420
178
|
│ ├── findings/
|
|
421
|
-
│ │ ├── codebase-*.md #
|
|
422
|
-
│ │ ├── docs-*.md #
|
|
423
|
-
│ │ ├── config-*.md #
|
|
424
|
-
│ │ ├── external-*.md #
|
|
425
|
-
│ │ └── [custom-category]-*.md #
|
|
426
|
-
│ └── synthesis.md #
|
|
179
|
+
│ │ ├── codebase-*.md # research-gather (per category)
|
|
180
|
+
│ │ ├── docs-*.md # research-gather
|
|
181
|
+
│ │ ├── config-*.md # research-gather
|
|
182
|
+
│ │ ├── external-*.md # research-gather
|
|
183
|
+
│ │ └── [custom-category]-*.md # research-gather (dynamic categories)
|
|
184
|
+
│ └── synthesis.md # research-synthesize (reasoning log)
|
|
427
185
|
├── outputs/
|
|
428
|
-
│ ├── research-report.md #
|
|
429
|
-
│ ├── solution-exploration.md #
|
|
430
|
-
│ ├── high-level-design.md #
|
|
431
|
-
│ └── decision-log.md #
|
|
186
|
+
│ ├── research-report.md # research-synthesize (main deliverable)
|
|
187
|
+
│ ├── solution-exploration.md # research-brainstorm (conditional)
|
|
188
|
+
│ ├── high-level-design.md # research-design (conditional)
|
|
189
|
+
│ └── decision-log.md # research-design (conditional)
|
|
432
190
|
```
|
|
433
191
|
|
|
434
192
|
---
|
|
435
193
|
|
|
436
|
-
##
|
|
194
|
+
## Research Types
|
|
437
195
|
|
|
438
|
-
|
|
|
439
|
-
|
|
|
440
|
-
|
|
|
441
|
-
|
|
|
442
|
-
|
|
|
443
|
-
|
|
|
444
|
-
| 2 | 1 | Re-evaluate recommendation if synthesis unclear |
|
|
445
|
-
| 3 | 2 | Re-invoke solution-brainstormer with adjusted context |
|
|
446
|
-
| 4 | 1 | Re-read exploration file, re-present decision areas |
|
|
447
|
-
| 5 | 2 | Re-invoke solution-designer with adjusted context |
|
|
448
|
-
| 6 | 0 | Summary only |
|
|
196
|
+
| Type | Keywords | Focus | Typical Outputs |
|
|
197
|
+
| ---------------- | ---------------------------------------- | --------------------------- | --------------------------------- |
|
|
198
|
+
| **Technical** | "how does", "where is", "implementation" | Codebase analysis | Knowledge base, architecture docs |
|
|
199
|
+
| **Requirements** | "what are requirements", "user needs" | User/business needs | Specifications, requirements doc |
|
|
200
|
+
| **Literature** | "best practices", "industry standards" | External research | Recommendations, comparisons |
|
|
201
|
+
| **Mixed** | Multiple keywords, broad questions | Comprehensive investigation | All output types |
|
|
449
202
|
|
|
450
203
|
---
|
|
451
204
|
|
|
@@ -453,43 +206,44 @@ Refer to the template [src/templates/orchestrator-state-research.yml](../../temp
|
|
|
453
206
|
|
|
454
207
|
### As Standalone Research
|
|
455
208
|
|
|
456
|
-
**Command**: `/owflow:research [research-question]`
|
|
457
|
-
|
|
209
|
+
**Command**: `/owflow:research [research-question | task-path]` — the dispatcher hands off step by step; `/owflow:goal-research <task-path>` runs the complete workflow in one session with interactive gates.
|
|
210
|
+
|
|
211
|
+
### As Embedded Research Phase (documentation only — no wiring)
|
|
212
|
+
|
|
213
|
+
> This is documentation for parent-orchestrator authors, NOT an execution path of this dispatcher: nothing here auto-invokes a parent, and no research subskill chains into development or migration steps.
|
|
458
214
|
|
|
459
|
-
|
|
215
|
+
In the split family, a parent orchestrator (development, migration) that needs research sequences the research subskills directly via the Skill tool — plan → gather → synthesize → the optional chain as chosen by the user — and SKIPS `research-finalize`-style completion: the parent handles next steps and keeps control of the flow. Design artifacts feed the parent's specification phase; the research report is saved in the parent task's `analysis/research/` context per the parent's own state setup.
|
|
460
216
|
|
|
461
|
-
**
|
|
217
|
+
**Handoff fields the parent reads**: refer to `research_outputs.*` in the template [src/templates/orchestrator-state-research.yml](../../templates/orchestrator-state-research.yml).
|
|
462
218
|
|
|
463
|
-
|
|
219
|
+
Full autonomous research (research as its own goal, every gate honored) = `/owflow:goal-research`. A `--no-exit` flag for embedded runs is deferred — not part of this design.
|
|
464
220
|
|
|
465
|
-
|
|
466
|
-
2. Research executes phases 1-5 (skip Phase 6 completion — parent orchestrator handles next steps)
|
|
467
|
-
3. Design outputs fed into parent's specification phase
|
|
468
|
-
4. Research report saved in parent task's `analysis/research/` directory
|
|
221
|
+
---
|
|
469
222
|
|
|
470
|
-
|
|
223
|
+
## Auto-Recovery
|
|
471
224
|
|
|
472
|
-
|
|
225
|
+
Retries are owned by each subskill (each `/owflow:research-*` SKILL.md carries its own max attempts and strategy).
|
|
473
226
|
|
|
474
227
|
---
|
|
475
228
|
|
|
476
|
-
## Command
|
|
229
|
+
## Command Flags
|
|
477
230
|
|
|
478
|
-
|
|
231
|
+
| Flag | Effect |
|
|
232
|
+
| --------------------------------- | ------------------------------------------------------------------------------------ |
|
|
233
|
+
| `--from=<slug>` | Hand off (resume mode) from a specific step slug |
|
|
234
|
+
| `--type=<type>` | Force the research type classification ("technical \| requirements \| literature \| mixed") |
|
|
479
235
|
|
|
480
|
-
|
|
481
|
-
- `/owflow:research [task-path] [--from=PHASE]` (resume)
|
|
236
|
+
There is deliberately NO quick entry on this dispatcher — condensed quick starts go through `/owflow:research-quick`, whose artifacts this routing table honors on every row.
|
|
482
237
|
|
|
483
|
-
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Command Integration
|
|
484
241
|
|
|
485
|
-
|
|
486
|
-
- `--no-brainstorm`: Skip brainstorming phase
|
|
487
|
-
- Neither: Phase 2 presents recommendation and asks user
|
|
242
|
+
Invoked via:
|
|
488
243
|
|
|
489
|
-
|
|
244
|
+
- `/owflow:research [question] [--type=TYPE]` (new)
|
|
245
|
+
- `/owflow:research [task-path] [--from=<slug>]` (resume)
|
|
490
246
|
|
|
491
|
-
-
|
|
492
|
-
- `--no-design`: Skip high-level design phase
|
|
493
|
-
- Neither: Phase 2 presents recommendation and asks user
|
|
247
|
+
Alternative: `/owflow:goal-research <task-path>` — same task lifecycle, all subskills invoked in one session with `question` gates.
|
|
494
248
|
|
|
495
249
|
Task directory: `.owflow/tasks/research/YYYY-MM-DD-task-name/`
|