maestro-flow 0.5.3 → 0.5.31

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 (259) hide show
  1. package/.agents/skills/learn-follow/SKILL.md +114 -114
  2. package/.agents/skills/learn-investigate/SKILL.md +138 -139
  3. package/.agents/skills/learn-second-opinion/SKILL.md +105 -109
  4. package/.agents/skills/maestro/SKILL.md +2 -10
  5. package/.agents/skills/maestro-amend/SKILL.md +152 -152
  6. package/.agents/skills/maestro-analyze/SKILL.md +201 -252
  7. package/.agents/skills/maestro-blueprint/SKILL.md +175 -190
  8. package/.agents/skills/maestro-brainstorm/SKILL.md +196 -200
  9. package/.agents/skills/maestro-collab/SKILL.md +159 -159
  10. package/.agents/skills/maestro-companion/SKILL.md +517 -517
  11. package/.agents/skills/maestro-composer/SKILL.md +173 -164
  12. package/.agents/skills/maestro-execute/SKILL.md +169 -170
  13. package/.agents/skills/maestro-fork/SKILL.md +97 -96
  14. package/.agents/skills/maestro-grill/SKILL.md +161 -162
  15. package/.agents/skills/maestro-guard/SKILL.md +93 -92
  16. package/.agents/skills/maestro-impeccable/SKILL.md +296 -253
  17. package/.agents/skills/maestro-init/SKILL.md +117 -118
  18. package/.agents/skills/maestro-merge/SKILL.md +73 -66
  19. package/.agents/skills/maestro-milestone-audit/SKILL.md +4 -10
  20. package/.agents/skills/maestro-milestone-complete/SKILL.md +6 -7
  21. package/.agents/skills/maestro-milestone-release/SKILL.md +122 -131
  22. package/.agents/skills/maestro-next/SKILL.md +241 -245
  23. package/.agents/skills/maestro-overlay/SKILL.md +176 -166
  24. package/.agents/skills/maestro-plan/SKILL.md +211 -197
  25. package/.agents/skills/maestro-player/SKILL.md +167 -167
  26. package/.agents/skills/maestro-quick/SKILL.md +69 -63
  27. package/.agents/skills/maestro-ralph/SKILL.md +2 -36
  28. package/.agents/skills/maestro-ralph-beta/SKILL.md +861 -872
  29. package/.agents/skills/maestro-ralph-execute/SKILL.md +234 -234
  30. package/.agents/skills/maestro-roadmap/SKILL.md +159 -172
  31. package/.agents/skills/maestro-swarm-workflow/SKILL.md +229 -250
  32. package/.agents/skills/maestro-tools-execute/SKILL.md +108 -103
  33. package/.agents/skills/maestro-tools-register/SKILL.md +148 -143
  34. package/.agents/skills/maestro-ui-codify/SKILL.md +103 -86
  35. package/.agents/skills/maestro-universal-workflow/SKILL.md +534 -547
  36. package/.agents/skills/maestro-update/SKILL.md +109 -106
  37. package/.agents/skills/manage-codebase-rebuild/SKILL.md +73 -71
  38. package/.agents/skills/manage-harvest/SKILL.md +83 -81
  39. package/.agents/skills/manage-issue/SKILL.md +59 -60
  40. package/.agents/skills/manage-issue-discover/SKILL.md +70 -68
  41. package/.agents/skills/manage-kg-extractors/SKILL.md +130 -0
  42. package/.agents/skills/manage-knowhow/SKILL.md +70 -66
  43. package/.agents/skills/manage-knowhow-capture/SKILL.md +79 -69
  44. package/.agents/skills/manage-knowledge-audit/SKILL.md +91 -74
  45. package/.agents/skills/manage-status/SKILL.md +52 -42
  46. package/.agents/skills/manage-wiki/SKILL.md +69 -58
  47. package/.agents/skills/odyssey-debug/SKILL.md +445 -459
  48. package/.agents/skills/odyssey-improve/SKILL.md +477 -491
  49. package/.agents/skills/odyssey-planex/SKILL.md +576 -587
  50. package/.agents/skills/odyssey-review-test-fix/SKILL.md +400 -413
  51. package/.agents/skills/odyssey-ui/SKILL.md +431 -448
  52. package/.agents/skills/quality-auto-test/SKILL.md +140 -123
  53. package/.agents/skills/quality-debug/SKILL.md +145 -106
  54. package/.agents/skills/quality-refactor/SKILL.md +91 -53
  55. package/.agents/skills/quality-retrospective/SKILL.md +109 -63
  56. package/.agents/skills/quality-review/SKILL.md +141 -114
  57. package/.agents/skills/quality-sync/SKILL.md +74 -38
  58. package/.agents/skills/quality-test/SKILL.md +133 -103
  59. package/.agents/skills/security-audit/SKILL.md +217 -166
  60. package/.agents/skills/spec-add/SKILL.md +66 -59
  61. package/.agents/skills/spec-load/SKILL.md +68 -68
  62. package/.agents/skills/spec-remove/SKILL.md +42 -42
  63. package/.agents/skills/spec-setup/SKILL.md +38 -41
  64. package/.agy/skills/learn-follow/SKILL.md +114 -114
  65. package/.agy/skills/learn-investigate/SKILL.md +138 -139
  66. package/.agy/skills/learn-second-opinion/SKILL.md +105 -109
  67. package/.agy/skills/maestro/SKILL.md +2 -10
  68. package/.agy/skills/maestro-amend/SKILL.md +152 -152
  69. package/.agy/skills/maestro-analyze/SKILL.md +201 -252
  70. package/.agy/skills/maestro-blueprint/SKILL.md +175 -190
  71. package/.agy/skills/maestro-brainstorm/SKILL.md +196 -200
  72. package/.agy/skills/maestro-collab/SKILL.md +159 -159
  73. package/.agy/skills/maestro-companion/SKILL.md +517 -517
  74. package/.agy/skills/maestro-composer/SKILL.md +173 -164
  75. package/.agy/skills/maestro-execute/SKILL.md +169 -170
  76. package/.agy/skills/maestro-fork/SKILL.md +97 -96
  77. package/.agy/skills/maestro-grill/SKILL.md +161 -162
  78. package/.agy/skills/maestro-guard/SKILL.md +93 -92
  79. package/.agy/skills/maestro-impeccable/SKILL.md +296 -253
  80. package/.agy/skills/maestro-init/SKILL.md +117 -118
  81. package/.agy/skills/maestro-merge/SKILL.md +73 -66
  82. package/.agy/skills/maestro-milestone-audit/SKILL.md +4 -10
  83. package/.agy/skills/maestro-milestone-complete/SKILL.md +6 -7
  84. package/.agy/skills/maestro-milestone-release/SKILL.md +122 -131
  85. package/.agy/skills/maestro-next/SKILL.md +241 -245
  86. package/.agy/skills/maestro-overlay/SKILL.md +176 -166
  87. package/.agy/skills/maestro-plan/SKILL.md +211 -197
  88. package/.agy/skills/maestro-player/SKILL.md +167 -167
  89. package/.agy/skills/maestro-quick/SKILL.md +69 -63
  90. package/.agy/skills/maestro-ralph/SKILL.md +2 -36
  91. package/.agy/skills/maestro-ralph-beta/SKILL.md +861 -872
  92. package/.agy/skills/maestro-ralph-execute/SKILL.md +234 -234
  93. package/.agy/skills/maestro-roadmap/SKILL.md +159 -172
  94. package/.agy/skills/maestro-swarm-workflow/SKILL.md +229 -250
  95. package/.agy/skills/maestro-tools-execute/SKILL.md +108 -103
  96. package/.agy/skills/maestro-tools-register/SKILL.md +148 -143
  97. package/.agy/skills/maestro-ui-codify/SKILL.md +103 -86
  98. package/.agy/skills/maestro-universal-workflow/SKILL.md +534 -547
  99. package/.agy/skills/maestro-update/SKILL.md +109 -106
  100. package/.agy/skills/manage-codebase-rebuild/SKILL.md +73 -71
  101. package/.agy/skills/manage-harvest/SKILL.md +83 -81
  102. package/.agy/skills/manage-issue/SKILL.md +59 -60
  103. package/.agy/skills/manage-issue-discover/SKILL.md +70 -68
  104. package/.agy/skills/manage-kg-extractors/SKILL.md +130 -0
  105. package/.agy/skills/manage-knowhow/SKILL.md +70 -66
  106. package/.agy/skills/manage-knowhow-capture/SKILL.md +79 -69
  107. package/.agy/skills/manage-knowledge-audit/SKILL.md +91 -74
  108. package/.agy/skills/manage-status/SKILL.md +52 -42
  109. package/.agy/skills/manage-wiki/SKILL.md +69 -58
  110. package/.agy/skills/odyssey-debug/SKILL.md +445 -459
  111. package/.agy/skills/odyssey-improve/SKILL.md +477 -491
  112. package/.agy/skills/odyssey-planex/SKILL.md +576 -587
  113. package/.agy/skills/odyssey-review-test-fix/SKILL.md +400 -413
  114. package/.agy/skills/odyssey-ui/SKILL.md +431 -448
  115. package/.agy/skills/quality-auto-test/SKILL.md +140 -123
  116. package/.agy/skills/quality-debug/SKILL.md +145 -106
  117. package/.agy/skills/quality-refactor/SKILL.md +91 -53
  118. package/.agy/skills/quality-retrospective/SKILL.md +109 -63
  119. package/.agy/skills/quality-review/SKILL.md +141 -114
  120. package/.agy/skills/quality-sync/SKILL.md +74 -38
  121. package/.agy/skills/quality-test/SKILL.md +133 -103
  122. package/.agy/skills/security-audit/SKILL.md +217 -166
  123. package/.agy/skills/spec-add/SKILL.md +66 -59
  124. package/.agy/skills/spec-load/SKILL.md +68 -68
  125. package/.agy/skills/spec-remove/SKILL.md +42 -42
  126. package/.agy/skills/spec-setup/SKILL.md +38 -41
  127. package/.claude/commands/learn-follow.md +127 -127
  128. package/.claude/commands/learn-investigate.md +151 -152
  129. package/.claude/commands/learn-second-opinion.md +118 -122
  130. package/.claude/commands/maestro-amend.md +164 -164
  131. package/.claude/commands/maestro-analyze.md +215 -266
  132. package/.claude/commands/maestro-blueprint.md +189 -204
  133. package/.claude/commands/maestro-brainstorm.md +209 -213
  134. package/.claude/commands/maestro-collab.md +172 -172
  135. package/.claude/commands/maestro-companion.md +531 -531
  136. package/.claude/commands/maestro-composer.md +188 -179
  137. package/.claude/commands/maestro-execute.md +183 -184
  138. package/.claude/commands/maestro-fork.md +111 -110
  139. package/.claude/commands/maestro-grill.md +175 -176
  140. package/.claude/commands/maestro-guard.md +103 -102
  141. package/.claude/commands/maestro-impeccable.md +311 -268
  142. package/.claude/commands/maestro-init.md +130 -131
  143. package/.claude/commands/maestro-merge.md +87 -80
  144. package/.claude/commands/maestro-milestone-audit.md +4 -10
  145. package/.claude/commands/maestro-milestone-complete.md +6 -7
  146. package/.claude/commands/maestro-milestone-release.md +136 -145
  147. package/.claude/commands/maestro-next.md +253 -257
  148. package/.claude/commands/maestro-overlay.md +188 -178
  149. package/.claude/commands/maestro-plan.md +225 -211
  150. package/.claude/commands/maestro-player.md +182 -182
  151. package/.claude/commands/maestro-quick.md +83 -77
  152. package/.claude/commands/maestro-ralph-beta.md +875 -886
  153. package/.claude/commands/maestro-ralph-execute.md +247 -247
  154. package/.claude/commands/maestro-ralph.md +2 -36
  155. package/.claude/commands/maestro-roadmap.md +173 -186
  156. package/.claude/commands/maestro-swarm-workflow.md +243 -264
  157. package/.claude/commands/maestro-tools-execute.md +122 -117
  158. package/.claude/commands/maestro-tools-register.md +162 -157
  159. package/.claude/commands/maestro-ui-codify.md +117 -100
  160. package/.claude/commands/maestro-universal-workflow.md +548 -561
  161. package/.claude/commands/maestro-update.md +122 -119
  162. package/.claude/commands/maestro.md +2 -10
  163. package/.claude/commands/manage-codebase-rebuild.md +87 -85
  164. package/.claude/commands/manage-harvest.md +97 -95
  165. package/.claude/commands/manage-issue-discover.md +83 -81
  166. package/.claude/commands/manage-issue.md +72 -73
  167. package/.claude/commands/manage-kg-extractors.md +128 -0
  168. package/.claude/commands/manage-knowhow-capture.md +92 -82
  169. package/.claude/commands/manage-knowhow.md +83 -79
  170. package/.claude/commands/manage-knowledge-audit.md +105 -88
  171. package/.claude/commands/manage-status.md +62 -52
  172. package/.claude/commands/manage-wiki.md +82 -71
  173. package/.claude/commands/odyssey-debug.md +459 -473
  174. package/.claude/commands/odyssey-improve.md +491 -505
  175. package/.claude/commands/odyssey-planex.md +590 -601
  176. package/.claude/commands/odyssey-review-test-fix.md +414 -427
  177. package/.claude/commands/odyssey-ui.md +445 -462
  178. package/.claude/commands/quality-auto-test.md +153 -136
  179. package/.claude/commands/quality-debug.md +159 -120
  180. package/.claude/commands/quality-refactor.md +105 -67
  181. package/.claude/commands/quality-retrospective.md +123 -77
  182. package/.claude/commands/quality-review.md +155 -128
  183. package/.claude/commands/quality-sync.md +88 -52
  184. package/.claude/commands/quality-test.md +147 -117
  185. package/.claude/commands/security-audit.md +230 -179
  186. package/.claude/commands/spec-add.md +77 -70
  187. package/.claude/commands/spec-load.md +78 -78
  188. package/.claude/commands/spec-remove.md +55 -55
  189. package/.claude/commands/spec-setup.md +49 -52
  190. package/dist/src/cli.js +1 -1
  191. package/dist/src/cli.js.map +1 -1
  192. package/dist/src/commands/kg.d.ts.map +1 -1
  193. package/dist/src/commands/kg.js +11 -5
  194. package/dist/src/commands/kg.js.map +1 -1
  195. package/dist/src/graph/kg/extraction/code/code-extractor.d.ts +2 -0
  196. package/dist/src/graph/kg/extraction/code/code-extractor.d.ts.map +1 -1
  197. package/dist/src/graph/kg/extraction/code/code-extractor.js +32 -3
  198. package/dist/src/graph/kg/extraction/code/code-extractor.js.map +1 -1
  199. package/dist/src/graph/kg/extraction/code/plugin-engine.d.ts +35 -0
  200. package/dist/src/graph/kg/extraction/code/plugin-engine.d.ts.map +1 -0
  201. package/dist/src/graph/kg/extraction/code/plugin-engine.js +573 -0
  202. package/dist/src/graph/kg/extraction/code/plugin-engine.js.map +1 -0
  203. package/dist/src/graph/kg/extraction/code/plugin-types.d.ts +95 -0
  204. package/dist/src/graph/kg/extraction/code/plugin-types.d.ts.map +1 -0
  205. package/dist/src/graph/kg/extraction/code/plugin-types.js +5 -0
  206. package/dist/src/graph/kg/extraction/code/plugin-types.js.map +1 -0
  207. package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -1
  208. package/dist/src/graph/kg/extraction/orchestrator.js +17 -5
  209. package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -1
  210. package/dist/src/graph/kg/schema.sql +16 -11
  211. package/dist/src/graph/kg/surface/cli.d.ts.map +1 -1
  212. package/dist/src/graph/kg/surface/cli.js +153 -56
  213. package/dist/src/graph/kg/surface/cli.js.map +1 -1
  214. package/dist/src/hooks/workspace.d.ts +4 -2
  215. package/dist/src/hooks/workspace.d.ts.map +1 -1
  216. package/dist/src/hooks/workspace.js +6 -2
  217. package/dist/src/hooks/workspace.js.map +1 -1
  218. package/package.json +91 -91
  219. package/workflows/analyze.md +25 -49
  220. package/workflows/auto-test.md +699 -699
  221. package/workflows/blueprint.md +403 -431
  222. package/workflows/brainstorm.md +54 -195
  223. package/workflows/business-test.md +570 -570
  224. package/workflows/claude-instructions.md +23 -51
  225. package/workflows/codex-instructions.md +27 -77
  226. package/workflows/coding-philosophy.md +69 -69
  227. package/workflows/command-authoring.md +823 -823
  228. package/workflows/debug.md +43 -98
  229. package/workflows/delegate-usage.md +39 -241
  230. package/workflows/execute.md +4 -53
  231. package/workflows/grill.md +12 -56
  232. package/workflows/harvest.md +22 -68
  233. package/workflows/init.md +148 -148
  234. package/workflows/instruction-authoring-guide.md +97 -0
  235. package/workflows/issue-execute.md +110 -110
  236. package/workflows/issue-gaps-analyze.codex.md +260 -260
  237. package/workflows/issue-gaps-analyze.md +216 -216
  238. package/workflows/issue-plan.md +110 -110
  239. package/workflows/issue.md +338 -346
  240. package/workflows/knowhow.md +0 -32
  241. package/workflows/learn.md +277 -277
  242. package/workflows/maestro-chain-execute.md +20 -20
  243. package/workflows/refactor.md +22 -44
  244. package/workflows/retrospective.md +16 -65
  245. package/workflows/review.md +446 -486
  246. package/workflows/roadmap.md +35 -132
  247. package/workflows/skill-authoring.md +265 -265
  248. package/workflows/spec-generate.md +470 -470
  249. package/workflows/specs-remove.md +104 -104
  250. package/workflows/sync.md +11 -41
  251. package/workflows/test-gen.md +226 -226
  252. package/workflows/test.md +385 -475
  253. package/workflows/ui-design.md +391 -391
  254. package/workflows/ui-style.md +199 -199
  255. package/workflows/wiki-connect.md +151 -151
  256. package/workflows/wiki-digest.md +178 -178
  257. package/workflows/wiki-manage.md +109 -109
  258. package/workflows/cli-tools-usage.md +0 -252
  259. package/workflows/delegate-protocol.codex.md +0 -65
@@ -1,391 +1,391 @@
1
- # UI Design Workflow
2
-
3
- 4-layer extraction pipeline (style → animation → layout → assembly) producing design prototypes.
4
- Powered by ui-ux-pro-max (design system recommendations) and ui-design-agent (token generation + assembly).
5
- User reviews via compare.html, selects winner(s), design solidified as code reference for plan/execute.
6
-
7
- Pipeline position: analyze -> **ui-design** -> plan -> execute -> verify
8
-
9
- > **Note:** This is the primary implementation. When the `ui-ux-pro-max` skill is available,
10
- > the command may delegate to `ui-style.md` for a lightweight path. This workflow is the
11
- > fallback when the skill is unavailable, and is also used when `--full` is explicitly requested.
12
-
13
- ---
14
-
15
- ## Prerequisites
16
-
17
- - `.workflow/` directory initialized (or auto-bootstrap)
18
- - Python 3 available (required by ui-ux-pro-max skill)
19
- - ui-ux-pro-max skill installed (search.py available)
20
-
21
- ---
22
-
23
- ## Scope Resolution
24
-
25
- ```
26
- Input: <phase> (number) OR topic text
27
- Output: .workflow/scratch/{YYYYMMDD}-ui-design-{slug}/
28
-
29
- Resolve scope:
30
- number → phase slug from roadmap.md, scope="phase", register with phase
31
- text → slugify(topic), scope="adhoc"|"standalone" (based on current_milestone)
32
-
33
- mkdir -p ${OUTPUT_DIR}
34
- ```
35
-
36
- ---
37
-
38
- ## Flag Processing
39
-
40
- | Flag | Default | Effect |
41
- |------|---------|--------|
42
- | `--styles N` | 3 | Number of style variants (2-5) |
43
- | `--layouts N` | 2 | Layout variants per target (1-3) |
44
- | `--stack <stack>` | html-tailwind | Tech stack for guidelines |
45
- | `--targets <pages>` | (inferred) | Comma-separated page/component targets |
46
- | `--refine` | false | Refinement mode: fine-tune existing design-ref |
47
- | `--persist` | false | Save MASTER.md + page overrides |
48
- | `-y` | false | Auto mode: skip interactive selection |
49
-
50
- ---
51
-
52
- ### Step 1: Parse Arguments & Validate Environment
53
-
54
- **1a. Parse flags:**
55
- Extract from $ARGUMENTS per flag table above (styleCount clamped 2-5, layoutCount clamped 1-3, defaults applied).
56
-
57
- **1b. Validate Python & locate ui-ux-pro-max:**
58
- Require Python 3. Locate `search.py` in: `skills/ui-ux-pro-max/scripts/search.py` or `$HOME/.claude/plugins/cache/ui-ux-pro-max-skill/ui-ux-pro-max/*/scripts/search.py`. If not found: **Error E003**.
59
-
60
- **1c. Refinement mode validation:**
61
- If `--refine` but `${PHASE_DIR}/design-ref/design-tokens.json` missing: **Error E004**.
62
-
63
- **1d. Create output directories:**
64
- ```bash
65
- mkdir -p "${PHASE_DIR}/design-ref/prototypes"
66
- mkdir -p "${PHASE_DIR}/design-ref/layout-templates"
67
- mkdir -p "${PHASE_DIR}/design-ref/.intermediates/style-analysis"
68
- mkdir -p "${PHASE_DIR}/design-ref/.intermediates/layout-analysis"
69
- mkdir -p "${PHASE_DIR}/design-ref/variants"
70
- ```
71
-
72
- **1e. Display banner:**
73
- Show: phase/topic, mode (explore|refine), styleCount, layoutCount, stack, targets, auto flag.
74
-
75
- ---
76
-
77
- ### Step 2: Gather Requirements Context
78
-
79
- **Purpose:** Collect design-relevant context from existing artifacts.
80
-
81
- Gather from available sources:
82
- - **2a.** `${PHASE_DIR}/context.md` -- product type, industry, audience, design preferences, locked UI decisions
83
- - **2b.** `${PHASE_DIR}/brainstorm/ui-designer/analysis.md`, `${PHASE_DIR}/brainstorm/product-manager/analysis.md` (visual keywords, personas)
84
- - **2c.** `blueprint-summary.md` + `requirements/_index.md` (if index.json.blueprint_ref) -- UI-relevant requirements & acceptance criteria
85
- - **2d.** `.workflow/codebase/doc-index.json` -- existing design tokens, CSS frameworks, component libraries, brand colors
86
-
87
- **2e. Synthesize design brief:**
88
- ```json
89
- DESIGN_BRIEF = {
90
- "product_type": "SaaS dashboard | e-commerce | landing page | ...",
91
- "industry": "fintech | healthcare | beauty | ...",
92
- "style_keywords": "modern minimalist professional | bold geometric | ...",
93
- "audience": "enterprise users | young consumers | ...",
94
- "constraints": { "brand_colors": [], "existing_components": [], "accessibility": "WCAG AA" },
95
- "stack": "{resolved stack}"
96
- }
97
- ```
98
-
99
- **2f. Infer targets** (if not specified):
100
- Extract page names from phase goal / brainstorm / spec epics. Fallback: `["home"]`.
101
-
102
- **2g. Interactive refinement** (skip if -y):
103
- Present DESIGN_BRIEF summary, allow user adjustments before proceeding.
104
-
105
- ---
106
-
107
- ### Step 3: Generate Style Variants (Layer 1 — Style)
108
-
109
- **Purpose:** Generate maximally contrasting design systems via ui-ux-pro-max + ui-design-agent.
110
-
111
- #### 3a. Get primary design recommendations from ui-ux-pro-max
112
-
113
- ```bash
114
- # Primary design system + stack guidelines
115
- python3 "${SKILL_PATH}" "${product_type} ${industry} ${style_keywords}" --design-system -p "${project_name}" -f markdown
116
- python3 "${SKILL_PATH}" "layout responsive form component" --stack ${stack}
117
-
118
- # Supplementary domain data (parallel): color, typography, ux
119
- python3 "${SKILL_PATH}" "${industry} ${product_type}" --domain color
120
- python3 "${SKILL_PATH}" "${style_keywords}" --domain typography
121
- python3 "${SKILL_PATH}" "accessibility animation interaction" --domain ux
122
- ```
123
-
124
- #### 3b. Generate design direction options via ui-design-agent
125
-
126
- ```
127
- Agent(ui-design-agent): [DESIGN_DIRECTION_GENERATION]
128
-
129
- Generate ${styleCount} maximally contrasting design directions (min 6D distance: 0.7).
130
-
131
- Input: DESIGN_BRIEF, ui-ux-pro-max recommendations, color/typography data.
132
- If refine mode: also read existing design-tokens.json.
133
-
134
- 6D Attribute Space (each 0.0-1.0):
135
- color_saturation | visual_weight | formality | organic_geometric | innovation | density
136
-
137
- Per direction generate:
138
- Core: philosophy_name, 6D scores, search_keywords, anti_keywords, rationale
139
- Preview: colors (OKLCH), fonts (Google Fonts), border_radius_base, mood_description
140
-
141
- Output: ${PHASE_DIR}/design-ref/.intermediates/style-analysis/analysis-options.json
142
- Schema: { "mode": "explore|refine", "design_directions": [...], "attribute_space_coverage": {...} }
143
- ```
144
-
145
- #### 3c. Interactive style selection (skip if -y)
146
-
147
- Present directions with 6D visualization (colors, fonts, attribute scores, mood). Multi-select supported.
148
- Update `analysis-options.json` with `user_selection` field.
149
-
150
- #### 3d. Generate design-tokens.json for selected variant(s) (parallel)
151
-
152
- For each selected direction, spawn ui-design-agent:
153
-
154
- ```
155
- Agent(ui-design-agent): [DESIGN_SYSTEM_GENERATION #${variant_index}]
156
-
157
- Generate production-ready design tokens from selected direction.
158
- Map 6D attributes to token values:
159
- color_saturation→chroma | visual_weight→weights/shadows | formality→serif choice/radius
160
- organic_geometric→shapes | innovation→experimental values | density→spacing compression
161
-
162
- Output: ${PHASE_DIR}/design-ref/variants/style-${variant_index}/design-tokens.json
163
-
164
- Required schema:
165
- {
166
- "colors": {
167
- "brand": { "primary|secondary|accent": "oklch(...)" },
168
- "surface": { "background|elevated|card|overlay": "oklch(...)" },
169
- "semantic": { "success|warning|error|info": "oklch(...)" },
170
- "text": { "primary|secondary|tertiary|inverse": "oklch(...)" },
171
- "border": { "default|strong|subtle": "oklch(...)" }
172
- },
173
- "typography": {
174
- "font_family": { "heading|body|mono": "..." },
175
- "font_size": { "xs..5xl": "rem scale" },
176
- "font_weight": { "normal(400)|medium(500)|semibold(600)|bold(700)" },
177
- "line_height": { "tight(1.25)|normal(1.5)|relaxed(1.75)" },
178
- "letter_spacing": { "tight(-0.025em)|normal(0)|wide(0.025em)|wider(0.05em)" },
179
- "combinations": { "heading-primary|heading-secondary|body-regular|body-emphasis|caption|label": "{family,size,weight,line_height,letter_spacing}" }
180
- },
181
- "spacing": { "0..24": "rem scale (0.25rem increments)" },
182
- "opacity": { "0..100": "0.0-1.0 scale" },
183
- "border_radius": { "none|sm|md|lg|xl|2xl|full": "0-9999px" },
184
- "shadows": { "sm|md|lg|xl": "oklch shadow values" },
185
- "component_styles": {
186
- "button": { "primary|secondary|tertiary": "{bg, color, padding, radius, weight}" },
187
- "card": { "default|interactive": "{bg, padding, radius, shadow}" },
188
- "input": { "default|focus|error": "{border, padding, radius}" }
189
- },
190
- "breakpoints": { "sm(640)|md(768)|lg(1024)|xl(1280)|2xl(1536)": "px" }
191
- }
192
-
193
- Requirements: ALL colors OKLCH, WCAG AA (4.5:1 text, 3:1 UI), complete combinations + component_styles with var() refs, full opacity scale.
194
- ```
195
-
196
- ---
197
-
198
- ### Step 4: Generate Animation Tokens (Layer 2 — Animation)
199
-
200
- **Purpose:** Generate animation system complementing the selected styles.
201
-
202
- ```
203
- Agent(ui-design-agent): [ANIMATION_SYSTEM_GENERATION]
204
-
205
- Input: selected variant's design-tokens.json (mood/weight context) + ui-ux-pro-max UX data.
206
- Output: ${PHASE_DIR}/design-ref/animation-tokens.json
207
-
208
- Schema:
209
- {
210
- "duration": { "instant(0ms)|fast(100ms)|normal(200ms)|slow(300ms)|slower(500ms)|slowest(1000ms)" },
211
- "easing": { "linear|ease-out|ease-in|ease-in-out|spring": "cubic-bezier values" },
212
- "transitions": { "color|transform|opacity|shadow|all": "property + duration + easing var() refs" },
213
- "keyframes": { "fadeIn|slideUp|scaleIn": "from/to with transform + opacity" },
214
- "interactions": { "button-hover|card-hover|link-hover": "transform + shadow + transition var() refs" },
215
- "reduced_motion": { "strategy": "remove-motion-keep-opacity", "media_query": "@media (prefers-reduced-motion: reduce)" }
216
- }
217
-
218
- Requirements: CSS custom properties, prefers-reduced-motion mandatory, var() refs for interactions, 100-300ms micro / up to 1000ms page transitions.
219
- ```
220
-
221
- ---
222
-
223
- ### Step 5: Generate Layout Templates (Layer 3 — Layout)
224
-
225
- **Purpose:** Generate structural layout templates per target, separate from visual style.
226
-
227
- #### 5a. Generate layout concept options
228
-
229
- ```
230
- Agent(ui-design-agent): [LAYOUT_CONCEPT_GENERATION]
231
-
232
- Generate ${layoutCount} structurally distinct layout concepts per target.
233
- Concepts must differ in: grid structure, component arrangement, visual hierarchy, navigation pattern.
234
-
235
- Per Target x Concept: concept_name, design_philosophy, layout_pattern (grid-3col|flex-row|single-column|asymmetric-grid),
236
- key_components, structural_features, ascii_art wireframe.
237
-
238
- Output: ${PHASE_DIR}/design-ref/.intermediates/layout-analysis/analysis-options.json
239
- Schema: { "layout_concepts": { "${target}": [concepts] }, "device_type": "responsive" }
240
- ```
241
-
242
- #### 5b. Interactive layout selection (skip if -y)
243
-
244
- Present layout concepts per target with ASCII wireframes. Multi-select supported.
245
- Update analysis-options.json with `user_selection.selected_variants`.
246
-
247
- #### 5c. Generate layout template files (parallel)
248
-
249
- For each selected concept × target:
250
-
251
- ```
252
- Agent(ui-design-agent): [LAYOUT_TEMPLATE_GENERATION -- ${target} variant ${variant_id}]
253
-
254
- Structure ONLY, no visual style. Output: ${PHASE_DIR}/design-ref/layout-templates/layout-${target}-${variant_id}.json
255
-
256
- Schema:
257
- {
258
- "target": "${target}",
259
- "variant_id": "layout-${variant_id}",
260
- "device_type": "responsive",
261
- "design_philosophy": "...",
262
- "dom_structure": { "tag": "body", "children": [header>nav, div.layout-main-wrapper>[main+aside], footer] },
263
- "component_hierarchy": ["header", "main-content", "sidebar", "footer"],
264
- "css_layout_rules": "grid/flex rules using var(--spacing-*), var(--breakpoint-*)"
265
- }
266
-
267
- Rules: semantic HTML5, ARIA roles, var() refs only (no hard-coded values), mobile-first responsive. NO colors/fonts/shadows.
268
- ```
269
-
270
- ---
271
-
272
- ### Step 6: Assemble HTML Prototypes (Layer 4 — Assembly)
273
-
274
- **Purpose:** Combine layout templates + design tokens + animation tokens into viewable HTML.
275
-
276
- For each `style × layout × target` combination, spawn ui-design-agent:
277
-
278
- ```
279
- Agent(ui-design-agent): [PROTOTYPE_ASSEMBLY -- ${target}-style-${s}-layout-${l}]
280
-
281
- Pure assembly: combine pre-extracted structure + tokens. NO design decisions.
282
-
283
- Inputs: layout-${target}-${l}.json + style-${s}/design-tokens.json + animation-tokens.json
284
-
285
- Assembly:
286
- HTML: dom_structure -> <!DOCTYPE html>, Google Fonts CDN, realistic content (not lorem ipsum), ARIA preserved
287
- CSS: css_layout_rules + resolved token values (colors, typography, shadows, radius) +
288
- component_styles + typography.combinations + animation keyframes/interactions + reduced-motion
289
-
290
- Quality: SVG icons (not emojis), cursor-pointer on clickables, 150-300ms transitions,
291
- 4.5:1 contrast, prefers-reduced-motion, responsive (375/768/1024/1440px)
292
-
293
- Output: ${PHASE_DIR}/design-ref/prototypes/${target}-style-${s}-layout-${l}.{html,css}
294
- ```
295
-
296
- **Agent grouping**: Max 6 concurrent agents. Each agent processes ONE style (may handle multiple layouts).
297
-
298
- **Generate compare.html**: Interactive matrix viewer with:
299
- - Style tabs × Layout tabs × Target tabs
300
- - Each cell: iframe loading the corresponding HTML
301
- - Side-by-side comparison mode
302
-
303
- ---
304
-
305
- ### Step 7: User Selection & Solidification
306
-
307
- **Purpose:** Present variants, collect user choice, solidify as canonical reference.
308
-
309
- #### 7a. Present overview
310
-
311
- Present S x L x T matrix overview with compare.html link. Per style: name, colors, fonts, 6D scores.
312
- Selection options: `1-N` (select), `mix` (merge), `redo` (regenerate), `all` (keep all).
313
-
314
- #### 7b. Process selection
315
-
316
- Auto mode (-y): select variant 1. Otherwise: `redo` -> Step 3, `mix` -> merge tokens, `all` -> keep all, number -> select that variant.
317
-
318
- #### 7c. Solidify selected design
319
-
320
- **Write MASTER.md:**
321
- Sections: Selected Style (6D attributes), Color Palette (token table), Typography (fonts/scale/combinations),
322
- Spacing & Layout, Effects & Interactions, Component Styles, Animation System, Anti-Patterns, Reference Prototypes.
323
-
324
- **Copy canonical files:**
325
- - `design-ref/design-tokens.json` ← selected variant's tokens
326
- - `design-ref/animation-tokens.json` ← already at root
327
- - `design-ref/layout-templates/` ← already populated
328
-
329
- **Write selection.json:**
330
- ```json
331
- {
332
- "selected_variant": 1,
333
- "variant_name": "Clean Minimalist",
334
- "selection_mode": "user_choice|auto|mix|all",
335
- "rationale": "...",
336
- "design_attributes": { "color_saturation": 0.3, "visual_weight": 0.2, "...": "..." },
337
- "alternatives_reviewed": 3,
338
- "selected_at": "ISO timestamp"
339
- }
340
- ```
341
-
342
- **Write page-specific overrides** (if --persist):
343
- `design-ref/pages/{target}.md` per target page.
344
-
345
- **Update index.json:**
346
- ```json
347
- {
348
- "design_ref": {
349
- "status": "selected",
350
- "variant": "{variant_name}",
351
- "master": "design-ref/MASTER.md",
352
- "tokens": "design-ref/design-tokens.json",
353
- "animation": "design-ref/animation-tokens.json",
354
- "layouts": "design-ref/layout-templates/",
355
- "prototypes": "design-ref/prototypes/",
356
- "created_at": "ISO timestamp"
357
- }
358
- }
359
- ```
360
-
361
- ---
362
-
363
- ## Integration with maestro-plan
364
-
365
- `maestro-plan` P1 (Context Collection):
366
- - If `${PHASE_DIR}/design-ref/MASTER.md` exists: load as planner context, add `design-tokens.json`, `layout-templates/layout-*.json`, `animation-tokens.json` to UI task `read_first[]`
367
- - If missing + phase goal has UI keywords: suggest `maestro-impeccable --chain build` (non-blocking)
368
-
369
- ---
370
-
371
- ## Error Handling
372
-
373
- | Error | Action |
374
- |-------|--------|
375
- | Python not found | Abort with install instructions per OS |
376
- | ui-ux-pro-max not found | Abort, suggest skill installation |
377
- | Design system returns empty | Retry with broader keywords, then abort |
378
- | Prototype agent fails | Log error, continue with other variants |
379
- | User cancels selection | Save all variants as-is, exit without MASTER.md |
380
- | --refine without existing design-ref | Error E004 |
381
-
382
- ---
383
-
384
- ## State Updates
385
-
386
- | When | Field | Value |
387
- |------|-------|-------|
388
- | Step 1 start | index.json.status | "designing" |
389
- | Step 6 complete | index.json.design_ref.status | "variants_ready" |
390
- | Step 7 complete | index.json.design_ref.status | "selected" |
391
- | Step 7 complete | index.json.updated_at | Current timestamp |
1
+ # UI Design Workflow
2
+
3
+ 4-layer extraction pipeline (style → animation → layout → assembly) producing design prototypes.
4
+ Powered by ui-ux-pro-max (design system recommendations) and ui-design-agent (token generation + assembly).
5
+ User reviews via compare.html, selects winner(s), design solidified as code reference for plan/execute.
6
+
7
+ Pipeline position: analyze -> **ui-design** -> plan -> execute -> verify
8
+
9
+ > **Note:** This is the primary implementation. When the `ui-ux-pro-max` skill is available,
10
+ > the command may delegate to `ui-style.md` for a lightweight path. This workflow is the
11
+ > fallback when the skill is unavailable, and is also used when `--full` is explicitly requested.
12
+
13
+ ---
14
+
15
+ ## Prerequisites
16
+
17
+ - `.workflow/` directory initialized (or auto-bootstrap)
18
+ - Python 3 available (required by ui-ux-pro-max skill)
19
+ - ui-ux-pro-max skill installed (search.py available)
20
+
21
+ ---
22
+
23
+ ## Scope Resolution
24
+
25
+ ```
26
+ Input: <phase> (number) OR topic text
27
+ Output: .workflow/scratch/{YYYYMMDD}-ui-design-{slug}/
28
+
29
+ Resolve scope:
30
+ number → phase slug from roadmap.md, scope="phase", register with phase
31
+ text → slugify(topic), scope="adhoc"|"standalone" (based on current_milestone)
32
+
33
+ mkdir -p ${OUTPUT_DIR}
34
+ ```
35
+
36
+ ---
37
+
38
+ ## Flag Processing
39
+
40
+ | Flag | Default | Effect |
41
+ |------|---------|--------|
42
+ | `--styles N` | 3 | Number of style variants (2-5) |
43
+ | `--layouts N` | 2 | Layout variants per target (1-3) |
44
+ | `--stack <stack>` | html-tailwind | Tech stack for guidelines |
45
+ | `--targets <pages>` | (inferred) | Comma-separated page/component targets |
46
+ | `--refine` | false | Refinement mode: fine-tune existing design-ref |
47
+ | `--persist` | false | Save MASTER.md + page overrides |
48
+ | `-y` | false | Auto mode: skip interactive selection |
49
+
50
+ ---
51
+
52
+ ### Step 1: Parse Arguments & Validate Environment
53
+
54
+ **1a. Parse flags:**
55
+ Extract from $ARGUMENTS per flag table above (styleCount clamped 2-5, layoutCount clamped 1-3, defaults applied).
56
+
57
+ **1b. Validate Python & locate ui-ux-pro-max:**
58
+ Require Python 3. Locate `search.py` in: `skills/ui-ux-pro-max/scripts/search.py` or `$HOME/.claude/plugins/cache/ui-ux-pro-max-skill/ui-ux-pro-max/*/scripts/search.py`. If not found: **Error E003**.
59
+
60
+ **1c. Refinement mode validation:**
61
+ If `--refine` but `${PHASE_DIR}/design-ref/design-tokens.json` missing: **Error E004**.
62
+
63
+ **1d. Create output directories:**
64
+ ```bash
65
+ mkdir -p "${PHASE_DIR}/design-ref/prototypes"
66
+ mkdir -p "${PHASE_DIR}/design-ref/layout-templates"
67
+ mkdir -p "${PHASE_DIR}/design-ref/.intermediates/style-analysis"
68
+ mkdir -p "${PHASE_DIR}/design-ref/.intermediates/layout-analysis"
69
+ mkdir -p "${PHASE_DIR}/design-ref/variants"
70
+ ```
71
+
72
+ **1e. Display banner:**
73
+ Show: phase/topic, mode (explore|refine), styleCount, layoutCount, stack, targets, auto flag.
74
+
75
+ ---
76
+
77
+ ### Step 2: Gather Requirements Context
78
+
79
+ **Purpose:** Collect design-relevant context from existing artifacts.
80
+
81
+ Gather from available sources:
82
+ - **2a.** `${PHASE_DIR}/context.md` -- product type, industry, audience, design preferences, locked UI decisions
83
+ - **2b.** `${PHASE_DIR}/brainstorm/ui-designer/analysis.md`, `${PHASE_DIR}/brainstorm/product-manager/analysis.md` (visual keywords, personas)
84
+ - **2c.** `blueprint-summary.md` + `requirements/_index.md` (if index.json.blueprint_ref) -- UI-relevant requirements & acceptance criteria
85
+ - **2d.** `.workflow/codebase/doc-index.json` -- existing design tokens, CSS frameworks, component libraries, brand colors
86
+
87
+ **2e. Synthesize design brief:**
88
+ ```json
89
+ DESIGN_BRIEF = {
90
+ "product_type": "SaaS dashboard | e-commerce | landing page | ...",
91
+ "industry": "fintech | healthcare | beauty | ...",
92
+ "style_keywords": "modern minimalist professional | bold geometric | ...",
93
+ "audience": "enterprise users | young consumers | ...",
94
+ "constraints": { "brand_colors": [], "existing_components": [], "accessibility": "WCAG AA" },
95
+ "stack": "{resolved stack}"
96
+ }
97
+ ```
98
+
99
+ **2f. Infer targets** (if not specified):
100
+ Extract page names from phase goal / brainstorm / spec epics. Fallback: `["home"]`.
101
+
102
+ **2g. Interactive refinement** (skip if -y):
103
+ Present DESIGN_BRIEF summary, allow user adjustments before proceeding.
104
+
105
+ ---
106
+
107
+ ### Step 3: Generate Style Variants (Layer 1 — Style)
108
+
109
+ **Purpose:** Generate maximally contrasting design systems via ui-ux-pro-max + ui-design-agent.
110
+
111
+ #### 3a. Get primary design recommendations from ui-ux-pro-max
112
+
113
+ ```bash
114
+ # Primary design system + stack guidelines
115
+ python3 "${SKILL_PATH}" "${product_type} ${industry} ${style_keywords}" --design-system -p "${project_name}" -f markdown
116
+ python3 "${SKILL_PATH}" "layout responsive form component" --stack ${stack}
117
+
118
+ # Supplementary domain data (parallel): color, typography, ux
119
+ python3 "${SKILL_PATH}" "${industry} ${product_type}" --domain color
120
+ python3 "${SKILL_PATH}" "${style_keywords}" --domain typography
121
+ python3 "${SKILL_PATH}" "accessibility animation interaction" --domain ux
122
+ ```
123
+
124
+ #### 3b. Generate design direction options via ui-design-agent
125
+
126
+ ```
127
+ Agent(ui-design-agent): [DESIGN_DIRECTION_GENERATION]
128
+
129
+ Generate ${styleCount} maximally contrasting design directions (min 6D distance: 0.7).
130
+
131
+ Input: DESIGN_BRIEF, ui-ux-pro-max recommendations, color/typography data.
132
+ If refine mode: also read existing design-tokens.json.
133
+
134
+ 6D Attribute Space (each 0.0-1.0):
135
+ color_saturation | visual_weight | formality | organic_geometric | innovation | density
136
+
137
+ Per direction generate:
138
+ Core: philosophy_name, 6D scores, search_keywords, anti_keywords, rationale
139
+ Preview: colors (OKLCH), fonts (Google Fonts), border_radius_base, mood_description
140
+
141
+ Output: ${PHASE_DIR}/design-ref/.intermediates/style-analysis/analysis-options.json
142
+ Schema: { "mode": "explore|refine", "design_directions": [...], "attribute_space_coverage": {...} }
143
+ ```
144
+
145
+ #### 3c. Interactive style selection (skip if -y)
146
+
147
+ Present directions with 6D visualization (colors, fonts, attribute scores, mood). Multi-select supported.
148
+ Update `analysis-options.json` with `user_selection` field.
149
+
150
+ #### 3d. Generate design-tokens.json for selected variant(s) (parallel)
151
+
152
+ For each selected direction, spawn ui-design-agent:
153
+
154
+ ```
155
+ Agent(ui-design-agent): [DESIGN_SYSTEM_GENERATION #${variant_index}]
156
+
157
+ Generate production-ready design tokens from selected direction.
158
+ Map 6D attributes to token values:
159
+ color_saturation→chroma | visual_weight→weights/shadows | formality→serif choice/radius
160
+ organic_geometric→shapes | innovation→experimental values | density→spacing compression
161
+
162
+ Output: ${PHASE_DIR}/design-ref/variants/style-${variant_index}/design-tokens.json
163
+
164
+ Required schema:
165
+ {
166
+ "colors": {
167
+ "brand": { "primary|secondary|accent": "oklch(...)" },
168
+ "surface": { "background|elevated|card|overlay": "oklch(...)" },
169
+ "semantic": { "success|warning|error|info": "oklch(...)" },
170
+ "text": { "primary|secondary|tertiary|inverse": "oklch(...)" },
171
+ "border": { "default|strong|subtle": "oklch(...)" }
172
+ },
173
+ "typography": {
174
+ "font_family": { "heading|body|mono": "..." },
175
+ "font_size": { "xs..5xl": "rem scale" },
176
+ "font_weight": { "normal(400)|medium(500)|semibold(600)|bold(700)" },
177
+ "line_height": { "tight(1.25)|normal(1.5)|relaxed(1.75)" },
178
+ "letter_spacing": { "tight(-0.025em)|normal(0)|wide(0.025em)|wider(0.05em)" },
179
+ "combinations": { "heading-primary|heading-secondary|body-regular|body-emphasis|caption|label": "{family,size,weight,line_height,letter_spacing}" }
180
+ },
181
+ "spacing": { "0..24": "rem scale (0.25rem increments)" },
182
+ "opacity": { "0..100": "0.0-1.0 scale" },
183
+ "border_radius": { "none|sm|md|lg|xl|2xl|full": "0-9999px" },
184
+ "shadows": { "sm|md|lg|xl": "oklch shadow values" },
185
+ "component_styles": {
186
+ "button": { "primary|secondary|tertiary": "{bg, color, padding, radius, weight}" },
187
+ "card": { "default|interactive": "{bg, padding, radius, shadow}" },
188
+ "input": { "default|focus|error": "{border, padding, radius}" }
189
+ },
190
+ "breakpoints": { "sm(640)|md(768)|lg(1024)|xl(1280)|2xl(1536)": "px" }
191
+ }
192
+
193
+ Requirements: ALL colors OKLCH, WCAG AA (4.5:1 text, 3:1 UI), complete combinations + component_styles with var() refs, full opacity scale.
194
+ ```
195
+
196
+ ---
197
+
198
+ ### Step 4: Generate Animation Tokens (Layer 2 — Animation)
199
+
200
+ **Purpose:** Generate animation system complementing the selected styles.
201
+
202
+ ```
203
+ Agent(ui-design-agent): [ANIMATION_SYSTEM_GENERATION]
204
+
205
+ Input: selected variant's design-tokens.json (mood/weight context) + ui-ux-pro-max UX data.
206
+ Output: ${PHASE_DIR}/design-ref/animation-tokens.json
207
+
208
+ Schema:
209
+ {
210
+ "duration": { "instant(0ms)|fast(100ms)|normal(200ms)|slow(300ms)|slower(500ms)|slowest(1000ms)" },
211
+ "easing": { "linear|ease-out|ease-in|ease-in-out|spring": "cubic-bezier values" },
212
+ "transitions": { "color|transform|opacity|shadow|all": "property + duration + easing var() refs" },
213
+ "keyframes": { "fadeIn|slideUp|scaleIn": "from/to with transform + opacity" },
214
+ "interactions": { "button-hover|card-hover|link-hover": "transform + shadow + transition var() refs" },
215
+ "reduced_motion": { "strategy": "remove-motion-keep-opacity", "media_query": "@media (prefers-reduced-motion: reduce)" }
216
+ }
217
+
218
+ Requirements: CSS custom properties, prefers-reduced-motion mandatory, var() refs for interactions, 100-300ms micro / up to 1000ms page transitions.
219
+ ```
220
+
221
+ ---
222
+
223
+ ### Step 5: Generate Layout Templates (Layer 3 — Layout)
224
+
225
+ **Purpose:** Generate structural layout templates per target, separate from visual style.
226
+
227
+ #### 5a. Generate layout concept options
228
+
229
+ ```
230
+ Agent(ui-design-agent): [LAYOUT_CONCEPT_GENERATION]
231
+
232
+ Generate ${layoutCount} structurally distinct layout concepts per target.
233
+ Concepts must differ in: grid structure, component arrangement, visual hierarchy, navigation pattern.
234
+
235
+ Per Target x Concept: concept_name, design_philosophy, layout_pattern (grid-3col|flex-row|single-column|asymmetric-grid),
236
+ key_components, structural_features, ascii_art wireframe.
237
+
238
+ Output: ${PHASE_DIR}/design-ref/.intermediates/layout-analysis/analysis-options.json
239
+ Schema: { "layout_concepts": { "${target}": [concepts] }, "device_type": "responsive" }
240
+ ```
241
+
242
+ #### 5b. Interactive layout selection (skip if -y)
243
+
244
+ Present layout concepts per target with ASCII wireframes. Multi-select supported.
245
+ Update analysis-options.json with `user_selection.selected_variants`.
246
+
247
+ #### 5c. Generate layout template files (parallel)
248
+
249
+ For each selected concept × target:
250
+
251
+ ```
252
+ Agent(ui-design-agent): [LAYOUT_TEMPLATE_GENERATION -- ${target} variant ${variant_id}]
253
+
254
+ Structure ONLY, no visual style. Output: ${PHASE_DIR}/design-ref/layout-templates/layout-${target}-${variant_id}.json
255
+
256
+ Schema:
257
+ {
258
+ "target": "${target}",
259
+ "variant_id": "layout-${variant_id}",
260
+ "device_type": "responsive",
261
+ "design_philosophy": "...",
262
+ "dom_structure": { "tag": "body", "children": [header>nav, div.layout-main-wrapper>[main+aside], footer] },
263
+ "component_hierarchy": ["header", "main-content", "sidebar", "footer"],
264
+ "css_layout_rules": "grid/flex rules using var(--spacing-*), var(--breakpoint-*)"
265
+ }
266
+
267
+ Rules: semantic HTML5, ARIA roles, var() refs only (no hard-coded values), mobile-first responsive. NO colors/fonts/shadows.
268
+ ```
269
+
270
+ ---
271
+
272
+ ### Step 6: Assemble HTML Prototypes (Layer 4 — Assembly)
273
+
274
+ **Purpose:** Combine layout templates + design tokens + animation tokens into viewable HTML.
275
+
276
+ For each `style × layout × target` combination, spawn ui-design-agent:
277
+
278
+ ```
279
+ Agent(ui-design-agent): [PROTOTYPE_ASSEMBLY -- ${target}-style-${s}-layout-${l}]
280
+
281
+ Pure assembly: combine pre-extracted structure + tokens. NO design decisions.
282
+
283
+ Inputs: layout-${target}-${l}.json + style-${s}/design-tokens.json + animation-tokens.json
284
+
285
+ Assembly:
286
+ HTML: dom_structure -> <!DOCTYPE html>, Google Fonts CDN, realistic content (not lorem ipsum), ARIA preserved
287
+ CSS: css_layout_rules + resolved token values (colors, typography, shadows, radius) +
288
+ component_styles + typography.combinations + animation keyframes/interactions + reduced-motion
289
+
290
+ Quality: SVG icons (not emojis), cursor-pointer on clickables, 150-300ms transitions,
291
+ 4.5:1 contrast, prefers-reduced-motion, responsive (375/768/1024/1440px)
292
+
293
+ Output: ${PHASE_DIR}/design-ref/prototypes/${target}-style-${s}-layout-${l}.{html,css}
294
+ ```
295
+
296
+ **Agent grouping**: Max 6 concurrent agents. Each agent processes ONE style (may handle multiple layouts).
297
+
298
+ **Generate compare.html**: Interactive matrix viewer with:
299
+ - Style tabs × Layout tabs × Target tabs
300
+ - Each cell: iframe loading the corresponding HTML
301
+ - Side-by-side comparison mode
302
+
303
+ ---
304
+
305
+ ### Step 7: User Selection & Solidification
306
+
307
+ **Purpose:** Present variants, collect user choice, solidify as canonical reference.
308
+
309
+ #### 7a. Present overview
310
+
311
+ Present S x L x T matrix overview with compare.html link. Per style: name, colors, fonts, 6D scores.
312
+ Selection options: `1-N` (select), `mix` (merge), `redo` (regenerate), `all` (keep all).
313
+
314
+ #### 7b. Process selection
315
+
316
+ Auto mode (-y): select variant 1. Otherwise: `redo` -> Step 3, `mix` -> merge tokens, `all` -> keep all, number -> select that variant.
317
+
318
+ #### 7c. Solidify selected design
319
+
320
+ **Write MASTER.md:**
321
+ Sections: Selected Style (6D attributes), Color Palette (token table), Typography (fonts/scale/combinations),
322
+ Spacing & Layout, Effects & Interactions, Component Styles, Animation System, Anti-Patterns, Reference Prototypes.
323
+
324
+ **Copy canonical files:**
325
+ - `design-ref/design-tokens.json` ← selected variant's tokens
326
+ - `design-ref/animation-tokens.json` ← already at root
327
+ - `design-ref/layout-templates/` ← already populated
328
+
329
+ **Write selection.json:**
330
+ ```json
331
+ {
332
+ "selected_variant": 1,
333
+ "variant_name": "Clean Minimalist",
334
+ "selection_mode": "user_choice|auto|mix|all",
335
+ "rationale": "...",
336
+ "design_attributes": { "color_saturation": 0.3, "visual_weight": 0.2, "...": "..." },
337
+ "alternatives_reviewed": 3,
338
+ "selected_at": "ISO timestamp"
339
+ }
340
+ ```
341
+
342
+ **Write page-specific overrides** (if --persist):
343
+ `design-ref/pages/{target}.md` per target page.
344
+
345
+ **Update index.json:**
346
+ ```json
347
+ {
348
+ "design_ref": {
349
+ "status": "selected",
350
+ "variant": "{variant_name}",
351
+ "master": "design-ref/MASTER.md",
352
+ "tokens": "design-ref/design-tokens.json",
353
+ "animation": "design-ref/animation-tokens.json",
354
+ "layouts": "design-ref/layout-templates/",
355
+ "prototypes": "design-ref/prototypes/",
356
+ "created_at": "ISO timestamp"
357
+ }
358
+ }
359
+ ```
360
+
361
+ ---
362
+
363
+ ## Integration with maestro-plan
364
+
365
+ `maestro-plan` P1 (Context Collection):
366
+ - If `${PHASE_DIR}/design-ref/MASTER.md` exists: load as planner context, add `design-tokens.json`, `layout-templates/layout-*.json`, `animation-tokens.json` to UI task `read_first[]`
367
+ - If missing + phase goal has UI keywords: suggest `maestro-impeccable --chain build` (non-blocking)
368
+
369
+ ---
370
+
371
+ ## Error Handling
372
+
373
+ | Error | Action |
374
+ |-------|--------|
375
+ | Python not found | Abort with install instructions per OS |
376
+ | ui-ux-pro-max not found | Abort, suggest skill installation |
377
+ | Design system returns empty | Retry with broader keywords, then abort |
378
+ | Prototype agent fails | Log error, continue with other variants |
379
+ | User cancels selection | Save all variants as-is, exit without MASTER.md |
380
+ | --refine without existing design-ref | Error E004 |
381
+
382
+ ---
383
+
384
+ ## State Updates
385
+
386
+ | When | Field | Value |
387
+ |------|-------|-------|
388
+ | Step 1 start | index.json.status | "designing" |
389
+ | Step 6 complete | index.json.design_ref.status | "variants_ready" |
390
+ | Step 7 complete | index.json.design_ref.status | "selected" |
391
+ | Step 7 complete | index.json.updated_at | Current timestamp |