owflow 0.1.4 → 0.1.6

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 (42) hide show
  1. package/README.md +34 -21
  2. package/dist/__tests__/verify_template.test.js +102 -0
  3. package/dist/agents/task-classifier.md +7 -19
  4. package/dist/commands/diagrams-mermaid.md +37 -0
  5. package/dist/commands/html-renderer.md +37 -0
  6. package/dist/commands/quick-dev.md +48 -6
  7. package/dist/commands/quick-plan.md +39 -4
  8. package/dist/commands/work.md +13 -17
  9. package/dist/index.js +4 -0
  10. package/dist/skills/development/SKILL.md +98 -115
  11. package/dist/skills/diagrams-mermaid/SKILL.md +156 -0
  12. package/dist/skills/diagrams-mermaid/references/reference.md +148 -0
  13. package/dist/skills/flow-init/SKILL.md +15 -0
  14. package/dist/skills/html-renderer/SKILL.md +159 -0
  15. package/dist/skills/html-renderer/references/index.html +318 -0
  16. package/dist/skills/html-renderer/references/styles.css +388 -0
  17. package/dist/skills/html-renderer/references/tokens.json +104 -0
  18. package/dist/skills/migration/SKILL.md +14 -33
  19. package/dist/skills/orchestrator-framework/references/orchestrator-creation-checklist.md +1 -0
  20. package/dist/skills/orchestrator-framework/references/orchestrator-patterns.md +4 -59
  21. package/dist/skills/performance/SKILL.md +14 -30
  22. package/dist/skills/quick-bugfix/SKILL.md +96 -26
  23. package/dist/skills/research/SKILL.md +11 -42
  24. package/dist/templates/orchestrator-state-base.yml +17 -0
  25. package/dist/templates/orchestrator-state-development.yml +94 -0
  26. package/dist/templates/orchestrator-state-migration.yml +55 -0
  27. package/dist/templates/orchestrator-state-performance.yml +53 -0
  28. package/dist/templates/orchestrator-state-research.yml +61 -0
  29. package/dist/templates/quick-bugfix-task.yml +10 -0
  30. package/dist/templates/quick-dev-task.yml +10 -0
  31. package/dist/templates/quick-plan-task.yml +11 -0
  32. package/dist/tools/verify_template.js +61 -0
  33. package/package.json +4 -3
  34. package/dist/agents/ui-mockup-generator.md +0 -369
  35. package/dist/commands/product-design.md +0 -37
  36. package/dist/skills/product-design/SKILL.md +0 -843
  37. package/dist/skills/product-design/references/characteristic-detection.md +0 -92
  38. package/dist/skills/product-design/references/interaction-patterns.md +0 -206
  39. package/dist/skills/product-design/references/visual-companion.md +0 -190
  40. package/dist/skills/product-design/server/index.js +0 -302
  41. package/dist/skills/product-design/server/index.ts +0 -359
  42. package/dist/skills/product-design/server/template.html +0 -256
@@ -0,0 +1,388 @@
1
+ :root {
2
+ /* Mirrored from tokens.json to keep CSS runtime simple. */
3
+ --hr-color-primary: #cc785c;
4
+ --hr-color-primary-active: #a9583e;
5
+ --hr-color-primary-disabled: #e6dfd8;
6
+ --hr-color-ink: #141413;
7
+ --hr-color-body: #3d3d3a;
8
+ --hr-color-body-strong: #252523;
9
+ --hr-color-muted: #6c6a64;
10
+ --hr-color-muted-soft: #8e8b82;
11
+ --hr-color-hairline: #e6dfd8;
12
+ --hr-color-hairline-soft: #ebe6df;
13
+ --hr-color-canvas: #faf9f5;
14
+ --hr-color-surface-soft: #f5f0e8;
15
+ --hr-color-surface-card: #efe9de;
16
+ --hr-color-surface-cream-strong: #e8e0d2;
17
+ --hr-color-surface-dark: #181715;
18
+ --hr-color-surface-dark-elevated: #252320;
19
+ --hr-color-surface-dark-soft: #1f1e1b;
20
+ --hr-color-on-primary: #ffffff;
21
+ --hr-color-on-dark: #faf9f5;
22
+ --hr-color-on-dark-soft: #a09d96;
23
+ --hr-color-accent-teal: #5db8a6;
24
+ --hr-color-accent-amber: #e8a55a;
25
+ --hr-color-success: #5db872;
26
+ --hr-color-warning: #d4a017;
27
+ --hr-color-error: #c64545;
28
+
29
+ --hr-font-display: "Copernicus", "Tiempos Headline", "Cormorant Garamond", "EB Garamond", Georgia, serif;
30
+ --hr-font-body: "StyreneB", "Styrene B", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
31
+ --hr-font-code: "JetBrains Mono", ui-monospace, monospace;
32
+
33
+ --hr-space-xxs: 4px;
34
+ --hr-space-xs: 8px;
35
+ --hr-space-sm: 12px;
36
+ --hr-space-md: 16px;
37
+ --hr-space-lg: 24px;
38
+ --hr-space-xl: 32px;
39
+ --hr-space-xxl: 48px;
40
+ --hr-space-section: 96px;
41
+
42
+ --hr-radius-xs: 4px;
43
+ --hr-radius-sm: 6px;
44
+ --hr-radius-md: 8px;
45
+ --hr-radius-lg: 12px;
46
+ --hr-radius-xl: 16px;
47
+ --hr-radius-pill: 9999px;
48
+ }
49
+
50
+ *,
51
+ *::before,
52
+ *::after {
53
+ box-sizing: border-box;
54
+ }
55
+
56
+ body {
57
+ margin: 0;
58
+ font-family: var(--hr-font-body);
59
+ color: var(--hr-color-body);
60
+ background: var(--hr-color-canvas);
61
+ }
62
+
63
+ .hr-page {
64
+ max-width: 1100px;
65
+ margin: 0 auto;
66
+ padding: var(--hr-space-xl) var(--hr-space-lg) var(--hr-space-section);
67
+ }
68
+
69
+ .hr-section {
70
+ margin-top: var(--hr-space-section);
71
+ }
72
+
73
+ .hr-section:first-child {
74
+ margin-top: 0;
75
+ }
76
+
77
+ .hr-heading-eyebrow {
78
+ display: inline-block;
79
+ margin: 0 0 var(--hr-space-sm);
80
+ color: var(--hr-color-muted);
81
+ letter-spacing: 0.12em;
82
+ text-transform: uppercase;
83
+ font-size: 12px;
84
+ font-weight: 600;
85
+ }
86
+
87
+ .hr-heading-h1,
88
+ .hr-heading-h2,
89
+ .hr-heading-h3,
90
+ .hr-heading-h4 {
91
+ margin: 0;
92
+ color: var(--hr-color-ink);
93
+ }
94
+
95
+ .hr-heading-h1 {
96
+ font-family: var(--hr-font-display);
97
+ font-size: clamp(2.5rem, 5vw, 4rem);
98
+ font-weight: 400;
99
+ letter-spacing: -1.5px;
100
+ line-height: 1.05;
101
+ }
102
+
103
+ .hr-heading-h2 {
104
+ font-family: var(--hr-font-display);
105
+ font-size: clamp(2rem, 4vw, 3rem);
106
+ font-weight: 400;
107
+ letter-spacing: -1px;
108
+ line-height: 1.1;
109
+ }
110
+
111
+ .hr-heading-h3 {
112
+ font-family: var(--hr-font-display);
113
+ font-size: clamp(1.7rem, 3vw, 2.25rem);
114
+ font-weight: 400;
115
+ letter-spacing: -0.5px;
116
+ line-height: 1.15;
117
+ }
118
+
119
+ .hr-heading-h4 {
120
+ font-size: 1.125rem;
121
+ font-weight: 500;
122
+ line-height: 1.4;
123
+ }
124
+
125
+ .hr-stack {
126
+ display: grid;
127
+ gap: var(--hr-space-md);
128
+ }
129
+
130
+ .hr-text-block {
131
+ max-width: 75ch;
132
+ color: var(--hr-color-body);
133
+ }
134
+
135
+ .hr-text-block p,
136
+ .hr-text-block ul,
137
+ .hr-text-block ol {
138
+ margin: 0;
139
+ font-size: 16px;
140
+ line-height: 1.55;
141
+ }
142
+
143
+ .hr-text-block ul,
144
+ .hr-text-block ol {
145
+ padding-left: 1.25rem;
146
+ }
147
+
148
+ .hr-text-muted {
149
+ color: var(--hr-color-muted);
150
+ font-size: 14px;
151
+ }
152
+
153
+ .hr-grid {
154
+ display: grid;
155
+ grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
156
+ gap: var(--hr-space-lg);
157
+ }
158
+
159
+ .hr-grid-2 {
160
+ grid-template-columns: repeat(2, minmax(0, 1fr));
161
+ }
162
+
163
+ .hr-grid-3 {
164
+ grid-template-columns: repeat(3, minmax(0, 1fr));
165
+ }
166
+
167
+ .hr-grid-4 {
168
+ grid-template-columns: repeat(4, minmax(0, 1fr));
169
+ }
170
+
171
+ .hr-grid-feature {
172
+ grid-template-columns: 2fr 1fr 1fr;
173
+ }
174
+
175
+ .hr-grid-feature > :first-child {
176
+ grid-row: span 1;
177
+ }
178
+
179
+ .hr-grid-sidebar {
180
+ grid-template-columns: 2fr 1fr;
181
+ }
182
+
183
+ @media (max-width: 880px) {
184
+ .hr-grid-3,
185
+ .hr-grid-4,
186
+ .hr-grid-feature {
187
+ grid-template-columns: repeat(2, minmax(0, 1fr));
188
+ }
189
+ .hr-grid-feature > :first-child {
190
+ grid-column: 1 / -1;
191
+ }
192
+ }
193
+
194
+ @media (max-width: 600px) {
195
+ .hr-grid-2,
196
+ .hr-grid-3,
197
+ .hr-grid-4,
198
+ .hr-grid-feature,
199
+ .hr-grid-sidebar {
200
+ grid-template-columns: 1fr;
201
+ }
202
+ .hr-grid-feature > :first-child {
203
+ grid-column: auto;
204
+ }
205
+ }
206
+
207
+ .hr-card {
208
+ background: var(--hr-color-surface-card);
209
+ border: 1px solid var(--hr-color-hairline);
210
+ border-radius: var(--hr-radius-lg);
211
+ padding: var(--hr-space-xl);
212
+ }
213
+
214
+ .hr-card-featured {
215
+ background: var(--hr-color-surface-dark);
216
+ border-color: var(--hr-color-surface-dark-elevated);
217
+ color: var(--hr-color-on-dark);
218
+ }
219
+
220
+ .hr-card-title {
221
+ margin: 0 0 var(--hr-space-sm);
222
+ font-size: 1.125rem;
223
+ font-weight: 600;
224
+ color: inherit;
225
+ }
226
+
227
+ .hr-card-text {
228
+ margin: 0;
229
+ color: inherit;
230
+ opacity: 0.92;
231
+ line-height: 1.55;
232
+ }
233
+
234
+ .hr-badge {
235
+ display: inline-block;
236
+ margin-top: var(--hr-space-md);
237
+ border-radius: var(--hr-radius-pill);
238
+ background: var(--hr-color-primary);
239
+ color: var(--hr-color-on-primary);
240
+ font-size: 12px;
241
+ font-weight: 600;
242
+ letter-spacing: 0.1em;
243
+ text-transform: uppercase;
244
+ padding: 4px 10px;
245
+ }
246
+
247
+ .hr-table-wrap {
248
+ overflow: auto;
249
+ border: 1px solid var(--hr-color-hairline);
250
+ border-radius: var(--hr-radius-lg);
251
+ background: var(--hr-color-canvas);
252
+ }
253
+
254
+ .hr-table {
255
+ width: 100%;
256
+ border-collapse: collapse;
257
+ min-width: 640px;
258
+ }
259
+
260
+ .hr-table th,
261
+ .hr-table td {
262
+ text-align: left;
263
+ padding: var(--hr-space-md);
264
+ border-bottom: 1px solid var(--hr-color-hairline-soft);
265
+ font-size: 14px;
266
+ }
267
+
268
+ .hr-table th {
269
+ color: var(--hr-color-body-strong);
270
+ background: var(--hr-color-surface-soft);
271
+ font-weight: 600;
272
+ }
273
+
274
+ .hr-table tbody tr:last-child td {
275
+ border-bottom: 0;
276
+ }
277
+
278
+ .hr-diagram {
279
+ border-radius: var(--hr-radius-lg);
280
+ border: 1px solid var(--hr-color-hairline);
281
+ background: linear-gradient(
282
+ 180deg,
283
+ var(--hr-color-surface-card) 0%,
284
+ var(--hr-color-canvas) 100%
285
+ );
286
+ padding: var(--hr-space-lg);
287
+ }
288
+
289
+ .hr-diagram pre {
290
+ margin: 0;
291
+ font-family: var(--hr-font-code);
292
+ font-size: 14px;
293
+ line-height: 1.6;
294
+ color: var(--hr-color-body-strong);
295
+ white-space: pre-wrap;
296
+ }
297
+
298
+ .hr-diagram .mermaid {
299
+ margin: 0;
300
+ display: flex;
301
+ justify-content: center;
302
+ font-family: var(--hr-font-code);
303
+ font-size: 14px;
304
+ line-height: 1.6;
305
+ color: var(--hr-color-body-strong);
306
+ white-space: pre;
307
+ }
308
+
309
+ .hr-diagram .mermaid svg {
310
+ max-width: 100%;
311
+ height: auto;
312
+ display: block;
313
+ margin: 0 auto;
314
+ }
315
+
316
+ .hr-quote {
317
+ margin: 0;
318
+ border-left: 4px solid var(--hr-color-primary);
319
+ padding: var(--hr-space-md) var(--hr-space-lg);
320
+ background: var(--hr-color-surface-soft);
321
+ border-radius: 0 var(--hr-radius-md) var(--hr-radius-md) 0;
322
+ }
323
+
324
+ .hr-quote p {
325
+ margin: 0;
326
+ font-family: var(--hr-font-display);
327
+ font-size: 1.5rem;
328
+ line-height: 1.3;
329
+ letter-spacing: -0.3px;
330
+ color: var(--hr-color-ink);
331
+ }
332
+
333
+ .hr-quote footer {
334
+ margin-top: var(--hr-space-sm);
335
+ color: var(--hr-color-muted);
336
+ font-size: 14px;
337
+ }
338
+
339
+ .hr-highlight {
340
+ border: 1px solid var(--hr-color-hairline);
341
+ border-left-width: 6px;
342
+ border-radius: var(--hr-radius-md);
343
+ background: var(--hr-color-surface-soft);
344
+ padding: var(--hr-space-md) var(--hr-space-lg);
345
+ }
346
+
347
+ .hr-highlight-title {
348
+ margin: 0 0 var(--hr-space-xs);
349
+ font-size: 13px;
350
+ font-weight: 700;
351
+ letter-spacing: 0.08em;
352
+ text-transform: uppercase;
353
+ }
354
+
355
+ .hr-highlight p {
356
+ margin: 0;
357
+ line-height: 1.55;
358
+ }
359
+
360
+ .hr-highlight-note {
361
+ border-left-color: var(--hr-color-accent-teal);
362
+ }
363
+
364
+ .hr-highlight-note .hr-highlight-title {
365
+ color: #2d8071;
366
+ }
367
+
368
+ .hr-highlight-warning {
369
+ border-left-color: var(--hr-color-warning);
370
+ }
371
+
372
+ .hr-highlight-warning .hr-highlight-title {
373
+ color: #8a6a0e;
374
+ }
375
+
376
+ .hr-highlight-important {
377
+ border-left-color: var(--hr-color-primary);
378
+ }
379
+
380
+ .hr-highlight-important .hr-highlight-title {
381
+ color: var(--hr-color-primary-active);
382
+ }
383
+
384
+ .hr-hr {
385
+ border: 0;
386
+ border-top: 1px solid var(--hr-color-hairline);
387
+ margin: var(--hr-space-xl) 0;
388
+ }
@@ -0,0 +1,104 @@
1
+ {
2
+ "meta": {
3
+ "name": "html-renderer-tokens",
4
+ "version": "1.0.0",
5
+ "description": "Global visual tokens for markdown to HTML rendering."
6
+ },
7
+ "colors": {
8
+ "primary": "#cc785c",
9
+ "primaryActive": "#a9583e",
10
+ "primaryDisabled": "#e6dfd8",
11
+ "ink": "#141413",
12
+ "body": "#3d3d3a",
13
+ "bodyStrong": "#252523",
14
+ "muted": "#6c6a64",
15
+ "mutedSoft": "#8e8b82",
16
+ "hairline": "#e6dfd8",
17
+ "hairlineSoft": "#ebe6df",
18
+ "canvas": "#faf9f5",
19
+ "surfaceSoft": "#f5f0e8",
20
+ "surfaceCard": "#efe9de",
21
+ "surfaceCreamStrong": "#e8e0d2",
22
+ "surfaceDark": "#181715",
23
+ "surfaceDarkElevated": "#252320",
24
+ "surfaceDarkSoft": "#1f1e1b",
25
+ "onPrimary": "#ffffff",
26
+ "onDark": "#faf9f5",
27
+ "onDarkSoft": "#a09d96",
28
+ "accentTeal": "#5db8a6",
29
+ "accentAmber": "#e8a55a",
30
+ "success": "#5db872",
31
+ "warning": "#d4a017",
32
+ "error": "#c64545"
33
+ },
34
+ "spacing": {
35
+ "xxs": "4px",
36
+ "xs": "8px",
37
+ "sm": "12px",
38
+ "md": "16px",
39
+ "lg": "24px",
40
+ "xl": "32px",
41
+ "xxl": "48px",
42
+ "section": "96px"
43
+ },
44
+ "radius": {
45
+ "xs": "4px",
46
+ "sm": "6px",
47
+ "md": "8px",
48
+ "lg": "12px",
49
+ "xl": "16px",
50
+ "pill": "9999px",
51
+ "full": "9999px"
52
+ },
53
+ "typography": {
54
+ "displayXl": {
55
+ "fontFamily": "\"Copernicus\", \"Tiempos Headline\", \"Cormorant Garamond\", \"EB Garamond\", Georgia, serif",
56
+ "fontSize": "64px",
57
+ "fontWeight": 400,
58
+ "lineHeight": 1.05,
59
+ "letterSpacing": "-1.5px"
60
+ },
61
+ "displayLg": {
62
+ "fontFamily": "\"Copernicus\", \"Tiempos Headline\", \"Cormorant Garamond\", \"EB Garamond\", Georgia, serif",
63
+ "fontSize": "48px",
64
+ "fontWeight": 400,
65
+ "lineHeight": 1.1,
66
+ "letterSpacing": "-1px"
67
+ },
68
+ "displayMd": {
69
+ "fontFamily": "\"Copernicus\", \"Tiempos Headline\", \"Cormorant Garamond\", \"EB Garamond\", Georgia, serif",
70
+ "fontSize": "36px",
71
+ "fontWeight": 400,
72
+ "lineHeight": 1.15,
73
+ "letterSpacing": "-0.5px"
74
+ },
75
+ "titleMd": {
76
+ "fontFamily": "\"StyreneB\", \"Styrene B\", Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif",
77
+ "fontSize": "18px",
78
+ "fontWeight": 500,
79
+ "lineHeight": 1.4,
80
+ "letterSpacing": "0"
81
+ },
82
+ "bodyMd": {
83
+ "fontFamily": "\"StyreneB\", \"Styrene B\", Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif",
84
+ "fontSize": "16px",
85
+ "fontWeight": 400,
86
+ "lineHeight": 1.55,
87
+ "letterSpacing": "0"
88
+ },
89
+ "bodySm": {
90
+ "fontFamily": "\"StyreneB\", \"Styrene B\", Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif",
91
+ "fontSize": "14px",
92
+ "fontWeight": 400,
93
+ "lineHeight": 1.55,
94
+ "letterSpacing": "0"
95
+ },
96
+ "code": {
97
+ "fontFamily": "\"JetBrains Mono\", ui-monospace, monospace",
98
+ "fontSize": "14px",
99
+ "fontWeight": 400,
100
+ "lineHeight": 1.6,
101
+ "letterSpacing": "0"
102
+ }
103
+ }
104
+ }
@@ -23,6 +23,7 @@ Systematic migration workflow from current state analysis to verified migration
23
23
  1. **Create Task Items**: Use `TaskCreate` for all phases (see Phase Configuration), then set dependencies with `TaskUpdate addBlockedBy`
24
24
  2. **Create Task Directory**: `.owflow/tasks/migrations/YYYY-MM-DD-task-name/`
25
25
  3. **Initialize State**: Create `orchestrator-state.yml` with migration context
26
+ - **CRITICAL**: Use the `verify_template` tool immediately after creation to check YAML validity against `orchestrator-state-migration.yml`.
26
27
  4. **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 `project_context.project_doc_paths` in state.
27
28
 
28
29
  **Output**:
@@ -150,6 +151,12 @@ question - Display executive summary before asking. Extract from gap analysis: c
150
151
  **Output**: `analysis/requirements.md`, `implementation/spec.md`, `analysis/rollback-plan.md`, optionally `analysis/dual-run-plan.md`
151
152
  **State**: Update `rollback_plan_created`, `dual_run_configured`
152
153
 
154
+ **Part C — Diagram Refinement (Skill, content-preserving)**:
155
+
156
+ 4. Invoke Skill tool: `diagrams-mermaid` to refine `implementation/spec.md`
157
+ 5. Add migration-focused visuals (target architecture and transition/compatibility flow) as supplements, not replacements for strategy prose.
158
+ 6. If minimum context is missing, record open gaps instead of inventing systems, protocols, or migration paths.
159
+
153
160
  → Pause
154
161
 
155
162
  question - Display executive summary before asking. Read `implementation/spec.md` and extract: migration strategy chosen, scope boundaries, rollback approach, breaking changes identified, key constraints. Format as brief overview then "Continue to implementation planning?"
@@ -167,6 +174,12 @@ question - Display executive summary before asking. Read `implementation/spec.md
167
174
 
168
175
  **Context to pass to subagent**: task_path, task_type (migration), migration_type, task_description, phase_summaries (current_state_analysis, gap_analysis, specification)
169
176
 
177
+ **Post-plan diagram refinement (Skill, content-preserving)**:
178
+
179
+ - Invoke Skill tool: `diagrams-mermaid` for `implementation/implementation-plan.md`
180
+ - Add one migration execution/state flow with rollback checkpoints.
181
+ - Preserve written task steps and rollback details as source of truth.
182
+
170
183
  → Pause
171
184
 
172
185
  question - Display executive summary before asking. Read `implementation/implementation-plan.md` and extract: number of task groups, total steps, rollback steps included, key dependencies, execution sequence. Format as brief overview then "Continue to execute migration?"
@@ -296,39 +309,7 @@ question - Display executive summary: total issues found, issues fixed, issues r
296
309
 
297
310
  Migration-specific fields in `orchestrator-state.yml`:
298
311
 
299
- ```yaml
300
- migration_context:
301
- migration_type: "code" | "data" | "architecture" | "general"
302
- current_system:
303
- description: null
304
- technologies: []
305
- target_system:
306
- description: null
307
- technologies: []
308
- migration_strategy:
309
- approach: "incremental" | "big-bang" | "dual-run" | "phased"
310
- phases: []
311
- risk_level: null
312
- breaking_changes: []
313
- rollback_plan_created: false
314
- dual_run_configured: false
315
-
316
- external_research:
317
- performed: false
318
- category: null
319
- breaking_changes: []
320
- migration_guide_url: null
321
-
322
- verification_context:
323
- last_status: null
324
- issues_found: null
325
- fixes_applied: []
326
- decisions_made: []
327
- reverify_count: 0
328
-
329
- options:
330
- docs_enabled: false
331
- ```
312
+ Refer to the template [src/templates/orchestrator-state-migration.yml](../../templates/orchestrator-state-migration.yml).
332
313
 
333
314
  ---
334
315
 
@@ -10,6 +10,7 @@ Before considering an orchestrator complete, verify ALL items:
10
10
 
11
11
  - [ ] **Step 0: Load Framework** — Initialization reads `orchestrator-patterns.md`
12
12
  - [ ] **State file creation** — Explicit step to CREATE `orchestrator-state.yml`
13
+ - [ ] **State verification** — Explicit step to use `verify_template` to check YAML validity after creation
13
14
  - [ ] **Phase structure** — Each phase has: Purpose, Execute, Output, State, Transition (`→ Pause` / `→ AUTO-CONTINUE` / `→ Conditional`)
14
15
  - [ ] **Delegation enforcement** — Each delegated phase has: ANTI-PATTERN block, INVOKE NOW block, SELF-CHECK
15
16
  - [ ] **POST-CONTINUATION blocks** — After Skill tool phases, explicit instructions to read state, update completed_phases, and continue
@@ -163,42 +163,7 @@ All orchestrators use `orchestrator-state.yml` at `.owflow/tasks/[type]/YYYY-MM-
163
163
 
164
164
  ### Common Fields
165
165
 
166
- ```yaml
167
- orchestrator:
168
- # Phase tracking
169
- started_phase: [phase-name]
170
- completed_phases: []
171
- failed_phases: []
172
-
173
- # Auto-fix tracking (per phase)
174
- auto_fix_attempts:
175
- phase-1: 0
176
- phase-2: 0
177
-
178
- # Optional phase flags
179
- options:
180
- e2e_enabled: true | false | null
181
- user_docs_enabled: true | false | null
182
- code_review_enabled: true | false | null
183
-
184
- # Timestamps
185
- created: [ISO 8601 timestamp]
186
- updated: [ISO 8601 timestamp]
187
- task_path: .owflow/tasks/[type]/YYYY-MM-DD-task-name
188
-
189
- # Task tracking IDs (maps phase names to TaskCreate IDs)
190
- task_ids:
191
- phase-1: null
192
- phase-2: null
193
-
194
- # Task metadata
195
- task:
196
- title: [human-readable task title]
197
- description: [full task description]
198
- status: pending | in_progress | completed | failed | blocked
199
- tags: []
200
- priority: null # high | medium | low
201
- ```
166
+ Refer to the template [src/templates/orchestrator-state-base.yml](../../../templates/orchestrator-state-base.yml).
202
167
 
203
168
  ### Extension Pattern
204
169
 
@@ -217,21 +182,7 @@ See each orchestrator's SKILL.md "Domain Context" section for full schema.
217
182
 
218
183
  When development starts from completed research (`--research` flag):
219
184
 
220
- ```yaml
221
- task_context:
222
- research_reference:
223
- path: null
224
- research_question: null
225
- research_type: null # technical | requirements | literature | mixed
226
- confidence_level: null # high | medium | low
227
-
228
- phase_summaries:
229
- research:
230
- summary: null
231
- key_findings: []
232
- recommended_approach: null
233
- decisions_made: []
234
- ```
185
+ Refer to `research_reference` in the template [src/templates/orchestrator-state-development.yml](../../../templates/orchestrator-state-development.yml).
235
186
 
236
187
  Research context flows to ALL phases via context passing. Artifacts are also copied to `analysis/research-context/`.
237
188
 
@@ -239,14 +190,7 @@ Research context flows to ALL phases via context passing. Artifacts are also cop
239
190
 
240
191
  All orchestrators with verification phases use:
241
192
 
242
- ```yaml
243
- verification_context:
244
- last_status: passed | passed_with_issues | failed | null
245
- issues_found: []
246
- fixes_applied: []
247
- decisions_made: []
248
- reverify_count: 0 # max 3
249
- ```
193
+ Refer to `verification_context` in the template [src/templates/orchestrator-state-base.yml](../../../templates/orchestrator-state-base.yml) or domain templates.
250
194
 
251
195
  ---
252
196
 
@@ -258,6 +202,7 @@ verification_context:
258
202
  2. **Determine starting phase**: New task starts Phase 1; resume reads state for first incomplete phase
259
203
  3. **Create task directory**: Standard structure with analysis/, implementation/, verification/, documentation/ _(skip on resume)_
260
204
  4. **Create state file**: `orchestrator-state.yml` _(skip on resume)_
205
+ - **CRITICAL**: Use the `verify_template` tool immediately after creation to check YAML validity against the corresponding template.
261
206
  5. **Create task items**: `TaskCreate` for all phases, then `TaskUpdate addBlockedBy` for dependencies. On resume, also restore completed phase statuses.
262
207
  6. **Output summary**: Show task info, phases, starting message
263
208