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.
- package/README.md +34 -21
- package/dist/__tests__/verify_template.test.js +102 -0
- package/dist/agents/task-classifier.md +7 -19
- package/dist/commands/diagrams-mermaid.md +37 -0
- package/dist/commands/html-renderer.md +37 -0
- package/dist/commands/quick-dev.md +48 -6
- package/dist/commands/quick-plan.md +39 -4
- package/dist/commands/work.md +13 -17
- package/dist/index.js +4 -0
- package/dist/skills/development/SKILL.md +98 -115
- package/dist/skills/diagrams-mermaid/SKILL.md +156 -0
- package/dist/skills/diagrams-mermaid/references/reference.md +148 -0
- package/dist/skills/flow-init/SKILL.md +15 -0
- package/dist/skills/html-renderer/SKILL.md +159 -0
- package/dist/skills/html-renderer/references/index.html +318 -0
- package/dist/skills/html-renderer/references/styles.css +388 -0
- package/dist/skills/html-renderer/references/tokens.json +104 -0
- package/dist/skills/migration/SKILL.md +14 -33
- package/dist/skills/orchestrator-framework/references/orchestrator-creation-checklist.md +1 -0
- package/dist/skills/orchestrator-framework/references/orchestrator-patterns.md +4 -59
- package/dist/skills/performance/SKILL.md +14 -30
- package/dist/skills/quick-bugfix/SKILL.md +96 -26
- package/dist/skills/research/SKILL.md +11 -42
- package/dist/templates/orchestrator-state-base.yml +17 -0
- package/dist/templates/orchestrator-state-development.yml +94 -0
- package/dist/templates/orchestrator-state-migration.yml +55 -0
- package/dist/templates/orchestrator-state-performance.yml +53 -0
- package/dist/templates/orchestrator-state-research.yml +61 -0
- package/dist/templates/quick-bugfix-task.yml +10 -0
- package/dist/templates/quick-dev-task.yml +10 -0
- package/dist/templates/quick-plan-task.yml +11 -0
- package/dist/tools/verify_template.js +61 -0
- package/package.json +4 -3
- package/dist/agents/ui-mockup-generator.md +0 -369
- package/dist/commands/product-design.md +0 -37
- package/dist/skills/product-design/SKILL.md +0 -843
- package/dist/skills/product-design/references/characteristic-detection.md +0 -92
- package/dist/skills/product-design/references/interaction-patterns.md +0 -206
- package/dist/skills/product-design/references/visual-companion.md +0 -190
- package/dist/skills/product-design/server/index.js +0 -302
- package/dist/skills/product-design/server/index.ts +0 -359
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|