claude-code-workflow 6.3.32 → 6.3.34

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 (476) hide show
  1. package/.claude/CLAUDE.md +6 -1
  2. package/.claude/agents/action-planning-agent.md +885 -885
  3. package/.claude/agents/cli-discuss-agent.md +391 -391
  4. package/.claude/agents/cli-execution-agent.md +7 -6
  5. package/.claude/agents/cli-lite-planning-agent.md +1 -1
  6. package/.claude/agents/cli-planning-agent.md +2 -2
  7. package/.claude/agents/code-developer.md +407 -403
  8. package/.claude/agents/conceptual-planning-agent.md +11 -0
  9. package/.claude/agents/debug-explore-agent.md +3 -3
  10. package/.claude/agents/doc-generator.md +3 -3
  11. package/.claude/agents/issue-plan-agent.md +333 -340
  12. package/.claude/agents/issue-queue-agent.md +1 -1
  13. package/.claude/agents/memory-bridge.md +95 -95
  14. package/.claude/agents/test-context-search-agent.md +402 -402
  15. package/.claude/agents/ui-design-agent.md +595 -595
  16. package/.claude/agents/universal-executor.md +134 -134
  17. package/.claude/commands/cli/codex-review.md +355 -0
  18. package/.claude/commands/issue/discover-by-prompt.md +1 -1
  19. package/.claude/commands/issue/execute.md +581 -581
  20. package/.claude/commands/issue/new.md +413 -413
  21. package/.claude/commands/issue/plan.md +1 -1
  22. package/.claude/commands/issue/queue.md +441 -382
  23. package/.claude/commands/memory/code-map-memory.md +687 -687
  24. package/.claude/commands/memory/compact.md +383 -383
  25. package/.claude/commands/memory/docs-full-cli.md +471 -471
  26. package/.claude/commands/memory/docs-related-cli.md +386 -386
  27. package/.claude/commands/memory/docs.md +615 -615
  28. package/.claude/commands/memory/load-skill-memory.md +182 -182
  29. package/.claude/commands/memory/skill-memory.md +525 -525
  30. package/.claude/commands/memory/style-skill-memory.md +396 -396
  31. package/.claude/commands/memory/swagger-docs.md +773 -773
  32. package/.claude/commands/memory/tech-research-rules.md +2 -2
  33. package/.claude/commands/memory/update-full.md +332 -332
  34. package/.claude/commands/memory/workflow-skill-memory.md +517 -517
  35. package/.claude/commands/task/create.md +151 -151
  36. package/.claude/commands/task/replan.md +436 -436
  37. package/.claude/commands/version.md +254 -254
  38. package/.claude/commands/workflow/brainstorm/api-designer.md +587 -587
  39. package/.claude/commands/workflow/brainstorm/auto-parallel.md +11 -0
  40. package/.claude/commands/workflow/brainstorm/data-architect.md +220 -220
  41. package/.claude/commands/workflow/brainstorm/product-manager.md +200 -200
  42. package/.claude/commands/workflow/brainstorm/product-owner.md +200 -200
  43. package/.claude/commands/workflow/brainstorm/scrum-master.md +200 -200
  44. package/.claude/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
  45. package/.claude/commands/workflow/brainstorm/system-architect.md +389 -389
  46. package/.claude/commands/workflow/brainstorm/ui-designer.md +221 -221
  47. package/.claude/commands/workflow/brainstorm/ux-expert.md +221 -221
  48. package/.claude/commands/workflow/debug-with-file.md +666 -0
  49. package/.claude/commands/workflow/debug.md +327 -327
  50. package/.claude/commands/workflow/execute.md +498 -498
  51. package/.claude/commands/workflow/lite-execute.md +23 -20
  52. package/.claude/commands/workflow/lite-fix.md +631 -631
  53. package/.claude/commands/workflow/lite-lite-lite.md +39 -11
  54. package/.claude/commands/workflow/lite-plan.md +4 -2
  55. package/.claude/commands/workflow/multi-cli-plan.md +97 -39
  56. package/.claude/commands/workflow/plan.md +551 -551
  57. package/.claude/commands/workflow/replan.md +515 -515
  58. package/.claude/commands/workflow/review-fix.md +610 -610
  59. package/.claude/commands/workflow/review-module-cycle.md +771 -771
  60. package/.claude/commands/workflow/review-session-cycle.md +782 -782
  61. package/.claude/commands/workflow/review.md +322 -322
  62. package/.claude/commands/workflow/session/list.md +95 -95
  63. package/.claude/commands/workflow/session/resume.md +60 -60
  64. package/.claude/commands/workflow/session/solidify.md +299 -299
  65. package/.claude/commands/workflow/tdd-plan.md +597 -460
  66. package/.claude/commands/workflow/test-cycle-execute.md +504 -504
  67. package/.claude/commands/workflow/test-fix-gen.md +699 -699
  68. package/.claude/commands/workflow/tools/conflict-resolution.md +2 -2
  69. package/.claude/commands/workflow/tools/task-generate-tdd.md +517 -517
  70. package/.claude/commands/workflow/tools/tdd-coverage-analysis.md +309 -309
  71. package/.claude/commands/workflow/tools/test-concept-enhanced.md +1 -1
  72. package/.claude/commands/workflow/tools/test-context-gather.md +235 -235
  73. package/.claude/commands/workflow/tools/test-task-generate.md +255 -255
  74. package/.claude/commands/workflow/ui-design/animation-extract.md +1150 -1150
  75. package/.claude/commands/workflow/ui-design/design-sync.md +454 -454
  76. package/.claude/commands/workflow/ui-design/explore-auto.md +678 -678
  77. package/.claude/commands/workflow/ui-design/imitate-auto.md +745 -745
  78. package/.claude/commands/workflow/ui-design/layout-extract.md +788 -788
  79. package/.claude/commands/workflow/ui-design/reference-page-generator.md +356 -356
  80. package/.claude/commands/workflow/ui-design/style-extract.md +773 -773
  81. package/.claude/skills/ccw/SKILL.md +522 -352
  82. package/.claude/skills/ccw/command.json +641 -547
  83. package/.claude/skills/ccw-help/SKILL.md +116 -116
  84. package/.claude/skills/ccw-help/command.json +520 -520
  85. package/.claude/skills/copyright-docs/phases/01.5-project-exploration.md +150 -150
  86. package/.claude/skills/copyright-docs/phases/02.5-consolidation.md +192 -192
  87. package/.claude/skills/copyright-docs/templates/agent-base.md +200 -200
  88. package/.claude/skills/project-analyze/phases/03.5-consolidation.md +233 -233
  89. package/.claude/skills/project-analyze/specs/writing-style.md +152 -152
  90. package/.claude/skills/review-code/phases/state-manager.md +752 -752
  91. package/.claude/skills/review-code/specs/rules/index.md +140 -140
  92. package/.claude/skills/skill-generator/specs/cli-integration.md +13 -19
  93. package/.claude/skills/skill-generator/specs/scripting-integration.md +265 -265
  94. package/.claude/skills/skill-generator/templates/code-analysis-action.md +503 -503
  95. package/.claude/skills/skill-generator/templates/llm-action.md +355 -355
  96. package/.claude/skills/skill-generator/templates/script-bash.md +277 -277
  97. package/.claude/skills/skill-generator/templates/script-python.md +198 -198
  98. package/.claude/skills/skill-generator/templates/skill-md.md +235 -235
  99. package/.claude/skills/skill-tuning/SKILL.md +303 -303
  100. package/.claude/skills/skill-tuning/phases/actions/action-abort.md +164 -164
  101. package/.claude/skills/skill-tuning/phases/actions/action-apply-fix.md +206 -206
  102. package/.claude/skills/skill-tuning/phases/actions/action-complete.md +195 -195
  103. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-agent.md +317 -317
  104. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-context.md +243 -243
  105. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-dataflow.md +318 -318
  106. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-memory.md +269 -269
  107. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-token-consumption.md +200 -200
  108. package/.claude/skills/skill-tuning/phases/actions/action-gemini-analysis.md +322 -322
  109. package/.claude/skills/skill-tuning/phases/actions/action-generate-report.md +228 -228
  110. package/.claude/skills/skill-tuning/phases/actions/action-init.md +149 -149
  111. package/.claude/skills/skill-tuning/phases/actions/action-propose-fixes.md +317 -317
  112. package/.claude/skills/skill-tuning/phases/actions/action-verify.md +222 -222
  113. package/.claude/skills/skill-tuning/phases/orchestrator.md +377 -377
  114. package/.claude/skills/skill-tuning/phases/state-schema.md +378 -378
  115. package/.claude/skills/skill-tuning/specs/problem-taxonomy.md +318 -318
  116. package/.claude/skills/skill-tuning/specs/quality-gates.md +263 -263
  117. package/.claude/skills/skill-tuning/specs/tuning-strategies.md +1537 -1537
  118. package/.claude/skills/skill-tuning/templates/diagnosis-report.md +153 -153
  119. package/.claude/skills/skill-tuning/templates/fix-proposal.md +204 -204
  120. package/.claude/skills/software-manual/SKILL.md +184 -184
  121. package/.claude/skills/software-manual/phases/01-requirements-discovery.md +162 -162
  122. package/.claude/skills/software-manual/phases/02-project-exploration.md +101 -101
  123. package/.claude/skills/software-manual/phases/03-parallel-analysis.md +183 -183
  124. package/.claude/skills/software-manual/phases/03.5-consolidation.md +82 -82
  125. package/.claude/skills/software-manual/phases/04-screenshot-capture.md +89 -89
  126. package/.claude/skills/software-manual/phases/05-html-assembly.md +132 -132
  127. package/.claude/skills/software-manual/phases/06-iterative-refinement.md +259 -259
  128. package/.claude/skills/software-manual/scripts/screenshot-helper.md +447 -447
  129. package/.claude/skills/software-manual/scripts/swagger-runner.md +419 -419
  130. package/.claude/skills/software-manual/scripts/typedoc-runner.md +357 -357
  131. package/.claude/skills/software-manual/specs/html-template.md +325 -325
  132. package/.claude/skills/software-manual/specs/quality-standards.md +253 -253
  133. package/.claude/skills/software-manual/specs/writing-style.md +298 -298
  134. package/.claude/skills/text-formatter/SKILL.md +196 -196
  135. package/.claude/skills/text-formatter/phases/01-input-collection.md +111 -111
  136. package/.claude/skills/text-formatter/phases/02-content-analysis.md +248 -248
  137. package/.claude/skills/text-formatter/phases/03-format-transform.md +245 -245
  138. package/.claude/skills/text-formatter/phases/04-output-preview.md +183 -183
  139. package/.claude/skills/text-formatter/specs/callout-types.md +293 -293
  140. package/.claude/skills/text-formatter/specs/element-mapping.md +226 -226
  141. package/.claude/skills/text-formatter/specs/format-rules.md +273 -273
  142. package/.claude/skills/text-formatter/templates/bbcode-template.md +350 -350
  143. package/.claude/workflows/chinese-response.md +25 -25
  144. package/.claude/workflows/cli-templates/memory/style-skill-memory/skill-md-template.md +299 -299
  145. package/.claude/workflows/cli-templates/planning-roles/product-owner.md +261 -261
  146. package/.claude/workflows/cli-templates/prompts/{analysis/03-analyze-performance.txt → analysis-analyze-performance.txt} +29 -29
  147. package/.claude/workflows/cli-templates/prompts/{analysis/03-assess-security-risks.txt → analysis-assess-security-risks.txt} +29 -29
  148. package/.claude/workflows/cli-templates/prompts/{analysis/02-review-architecture.txt → analysis-review-architecture.txt} +29 -29
  149. package/.claude/workflows/cli-templates/prompts/{analysis/02-review-code-quality.txt → analysis-review-code-quality.txt} +28 -28
  150. package/.claude/workflows/cli-templates/prompts/{analysis/03-review-quality-standards.txt → analysis-review-quality-standards.txt} +29 -29
  151. package/.claude/workflows/cli-templates/prompts/{analysis/01-trace-code-execution.txt → analysis-trace-code-execution.txt} +115 -115
  152. package/.claude/workflows/cli-templates/prompts/{documentation/api.txt → documentation-api.txt} +14 -14
  153. package/.claude/workflows/cli-templates/prompts/{documentation/folder-navigation.txt → documentation-folder-navigation.txt} +26 -26
  154. package/.claude/workflows/cli-templates/prompts/{documentation/project-architecture.txt → documentation-project-architecture.txt} +40 -40
  155. package/.claude/workflows/cli-templates/prompts/{documentation/project-examples.txt → documentation-project-examples.txt} +34 -34
  156. package/.claude/workflows/cli-templates/prompts/{documentation/project-readme.txt → documentation-project-readme.txt} +34 -34
  157. package/.claude/workflows/cli-templates/prompts/{documentation/swagger-api.txt → documentation-swagger-api.txt} +266 -266
  158. package/.claude/workflows/cli-templates/prompts/{planning/02-design-component-spec.txt → planning-design-component-spec.txt} +28 -28
  159. package/.claude/workflows/cli-templates/prompts/{verification/codex-technical.txt → verification-codex-technical.txt} +28 -28
  160. package/.claude/workflows/cli-templates/prompts/{verification/cross-validation.txt → verification-cross-validation.txt} +28 -28
  161. package/.claude/workflows/cli-templates/prompts/{verification/gemini-strategic.txt → verification-gemini-strategic.txt} +27 -27
  162. package/.claude/workflows/cli-templates/prompts/{workflow/analysis-results-structure.txt → workflow-analysis-results-structure.txt} +224 -224
  163. package/.claude/workflows/cli-templates/prompts/{workflow/impl-plan-template.txt → workflow-impl-plan-template.txt} +286 -286
  164. package/.claude/workflows/cli-templates/prompts/{workflow/skill-conflict-patterns.txt → workflow-skill-conflict-patterns.txt} +2 -2
  165. package/.claude/workflows/cli-templates/prompts/{workflow/skill-lessons-learned.txt → workflow-skill-lessons-learned.txt} +2 -2
  166. package/.claude/workflows/cli-templates/prompts/{workflow/task-json-agent-mode.txt → workflow-task-json-agent-mode.txt} +123 -123
  167. package/.claude/workflows/cli-templates/schemas/project-guidelines-schema.json +141 -141
  168. package/.claude/workflows/cli-tools-usage.md +113 -117
  169. package/.claude/workflows/coding-philosophy.md +69 -69
  170. package/.claude/workflows/context-tools.md +76 -76
  171. package/.claude/workflows/file-modification.md +64 -64
  172. package/.claude/workflows/review-directory-specification.md +336 -336
  173. package/.claude/workflows/windows-platform.md +19 -19
  174. package/.claude/workflows/workflow-architecture.md +942 -942
  175. package/.codex/prompts/issue-execute.md +176 -70
  176. package/README.md +250 -214
  177. package/ccw/dist/cli.d.ts.map +1 -1
  178. package/ccw/dist/cli.js +15 -0
  179. package/ccw/dist/cli.js.map +1 -1
  180. package/ccw/dist/commands/cli.d.ts +5 -0
  181. package/ccw/dist/commands/cli.d.ts.map +1 -1
  182. package/ccw/dist/commands/cli.js +116 -19
  183. package/ccw/dist/commands/cli.js.map +1 -1
  184. package/ccw/dist/commands/install.d.ts +17 -0
  185. package/ccw/dist/commands/install.d.ts.map +1 -1
  186. package/ccw/dist/commands/install.js +211 -2
  187. package/ccw/dist/commands/install.js.map +1 -1
  188. package/ccw/dist/commands/issue.d.ts.map +1 -1
  189. package/ccw/dist/commands/issue.js +208 -28
  190. package/ccw/dist/commands/issue.js.map +1 -1
  191. package/ccw/dist/commands/uninstall.d.ts.map +1 -1
  192. package/ccw/dist/commands/uninstall.js +22 -1
  193. package/ccw/dist/commands/uninstall.js.map +1 -1
  194. package/ccw/dist/commands/view.d.ts.map +1 -1
  195. package/ccw/dist/commands/view.js +3 -0
  196. package/ccw/dist/commands/view.js.map +1 -1
  197. package/ccw/dist/commands/workflow.d.ts +11 -0
  198. package/ccw/dist/commands/workflow.d.ts.map +1 -0
  199. package/ccw/dist/commands/workflow.js +294 -0
  200. package/ccw/dist/commands/workflow.js.map +1 -0
  201. package/ccw/dist/core/routes/claude-routes.d.ts.map +1 -1
  202. package/ccw/dist/core/routes/claude-routes.js +57 -3
  203. package/ccw/dist/core/routes/claude-routes.js.map +1 -1
  204. package/ccw/dist/core/routes/cli-routes.d.ts +13 -0
  205. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  206. package/ccw/dist/core/routes/cli-routes.js +46 -0
  207. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  208. package/ccw/dist/core/routes/hooks-routes.d.ts.map +1 -1
  209. package/ccw/dist/core/routes/hooks-routes.js +33 -0
  210. package/ccw/dist/core/routes/hooks-routes.js.map +1 -1
  211. package/ccw/dist/core/routes/issue-routes.d.ts.map +1 -1
  212. package/ccw/dist/core/routes/issue-routes.js +211 -29
  213. package/ccw/dist/core/routes/issue-routes.js.map +1 -1
  214. package/ccw/dist/core/routes/mcp-routes.d.ts.map +1 -1
  215. package/ccw/dist/core/routes/mcp-routes.js +4 -1
  216. package/ccw/dist/core/routes/mcp-routes.js.map +1 -1
  217. package/ccw/dist/core/routes/rules-routes.d.ts.map +1 -1
  218. package/ccw/dist/core/routes/rules-routes.js +22 -6
  219. package/ccw/dist/core/routes/rules-routes.js.map +1 -1
  220. package/ccw/dist/core/routes/session-routes.d.ts.map +1 -1
  221. package/ccw/dist/core/routes/session-routes.js +23 -1
  222. package/ccw/dist/core/routes/session-routes.js.map +1 -1
  223. package/ccw/dist/mcp-server/index.js +8 -2
  224. package/ccw/dist/mcp-server/index.js.map +1 -1
  225. package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -1
  226. package/ccw/dist/tools/claude-cli-tools.js +52 -28
  227. package/ccw/dist/tools/claude-cli-tools.js.map +1 -1
  228. package/ccw/dist/tools/cli-executor-core.d.ts.map +1 -1
  229. package/ccw/dist/tools/cli-executor-core.js +33 -8
  230. package/ccw/dist/tools/cli-executor-core.js.map +1 -1
  231. package/ccw/dist/tools/cli-executor-state.d.ts +2 -0
  232. package/ccw/dist/tools/cli-executor-state.d.ts.map +1 -1
  233. package/ccw/dist/tools/cli-executor-state.js.map +1 -1
  234. package/ccw/dist/tools/cli-executor-utils.d.ts +7 -0
  235. package/ccw/dist/tools/cli-executor-utils.d.ts.map +1 -1
  236. package/ccw/dist/tools/cli-executor-utils.js +18 -4
  237. package/ccw/dist/tools/cli-executor-utils.js.map +1 -1
  238. package/ccw/dist/tools/cli-history-store.d.ts +21 -0
  239. package/ccw/dist/tools/cli-history-store.d.ts.map +1 -1
  240. package/ccw/dist/tools/cli-history-store.js +106 -30
  241. package/ccw/dist/tools/cli-history-store.js.map +1 -1
  242. package/ccw/dist/tools/cli-output-converter.d.ts +2 -1
  243. package/ccw/dist/tools/cli-output-converter.d.ts.map +1 -1
  244. package/ccw/dist/tools/cli-output-converter.js +65 -10
  245. package/ccw/dist/tools/cli-output-converter.js.map +1 -1
  246. package/ccw/dist/tools/codex-lens-lsp.d.ts +61 -0
  247. package/ccw/dist/tools/codex-lens-lsp.d.ts.map +1 -0
  248. package/ccw/dist/tools/codex-lens-lsp.js +320 -0
  249. package/ccw/dist/tools/codex-lens-lsp.js.map +1 -0
  250. package/ccw/dist/tools/codex-lens.d.ts.map +1 -1
  251. package/ccw/dist/tools/codex-lens.js +74 -54
  252. package/ccw/dist/tools/codex-lens.js.map +1 -1
  253. package/ccw/dist/tools/index.d.ts.map +1 -1
  254. package/ccw/dist/tools/index.js +4 -0
  255. package/ccw/dist/tools/index.js.map +1 -1
  256. package/ccw/dist/tools/template-discovery.d.ts +85 -0
  257. package/ccw/dist/tools/template-discovery.d.ts.map +1 -0
  258. package/ccw/dist/tools/template-discovery.js +239 -0
  259. package/ccw/dist/tools/template-discovery.js.map +1 -0
  260. package/ccw/dist/tools/vscode-lsp.d.ts +57 -0
  261. package/ccw/dist/tools/vscode-lsp.d.ts.map +1 -0
  262. package/ccw/dist/tools/vscode-lsp.js +250 -0
  263. package/ccw/dist/tools/vscode-lsp.js.map +1 -0
  264. package/ccw/dist/utils/path-resolver.d.ts +16 -2
  265. package/ccw/dist/utils/path-resolver.d.ts.map +1 -1
  266. package/ccw/dist/utils/path-resolver.js +36 -6
  267. package/ccw/dist/utils/path-resolver.js.map +1 -1
  268. package/ccw/dist/utils/path-validator.d.ts +5 -0
  269. package/ccw/dist/utils/path-validator.d.ts.map +1 -1
  270. package/ccw/dist/utils/path-validator.js +16 -5
  271. package/ccw/dist/utils/path-validator.js.map +1 -1
  272. package/ccw/dist/utils/project-root.d.ts +25 -0
  273. package/ccw/dist/utils/project-root.d.ts.map +1 -0
  274. package/ccw/dist/utils/project-root.js +63 -0
  275. package/ccw/dist/utils/project-root.js.map +1 -0
  276. package/ccw/dist/utils/shell-escape.d.ts +47 -3
  277. package/ccw/dist/utils/shell-escape.d.ts.map +1 -1
  278. package/ccw/dist/utils/shell-escape.js +98 -15
  279. package/ccw/dist/utils/shell-escape.js.map +1 -1
  280. package/ccw/dist/utils/update-checker.d.ts +11 -0
  281. package/ccw/dist/utils/update-checker.d.ts.map +1 -0
  282. package/ccw/dist/utils/update-checker.js +167 -0
  283. package/ccw/dist/utils/update-checker.js.map +1 -0
  284. package/ccw/src/cli.ts +16 -0
  285. package/ccw/src/commands/cli.ts +126 -19
  286. package/ccw/src/commands/install.ts +239 -2
  287. package/ccw/src/commands/issue.ts +245 -31
  288. package/ccw/src/commands/uninstall.ts +23 -1
  289. package/ccw/src/commands/view.ts +4 -0
  290. package/ccw/src/commands/workflow.ts +348 -0
  291. package/ccw/src/core/routes/claude-routes.ts +64 -3
  292. package/ccw/src/core/routes/cli-routes.ts +58 -0
  293. package/ccw/src/core/routes/hooks-routes.ts +32 -0
  294. package/ccw/src/core/routes/issue-routes.ts +242 -28
  295. package/ccw/src/core/routes/mcp-routes.ts +6 -2
  296. package/ccw/src/core/routes/rules-routes.ts +24 -6
  297. package/ccw/src/core/routes/session-routes.ts +24 -1
  298. package/ccw/src/mcp-server/index.ts +7 -2
  299. package/ccw/src/templates/dashboard-css/26-claude-manager.css +179 -0
  300. package/ccw/src/templates/dashboard-css/32-issue-manager.css +3427 -3302
  301. package/ccw/src/templates/dashboard-css/33-cli-stream-viewer.css +3 -2
  302. package/ccw/src/templates/dashboard-js/components/cli-history.js +4 -1
  303. package/ccw/src/templates/dashboard-js/components/cli-stream-viewer.js +57 -21
  304. package/ccw/src/templates/dashboard-js/components/hook-manager.js +1492 -1492
  305. package/ccw/src/templates/dashboard-js/components/mcp-manager.js +107 -20
  306. package/ccw/src/templates/dashboard-js/components/version-check.js +135 -1
  307. package/ccw/src/templates/dashboard-js/i18n.js +42 -0
  308. package/ccw/src/templates/dashboard-js/views/claude-manager.js +168 -0
  309. package/ccw/src/templates/dashboard-js/views/cli-manager.js +1 -0
  310. package/ccw/src/templates/dashboard-js/views/issue-manager.js +201 -1
  311. package/ccw/src/templates/dashboard-js/views/lite-tasks.js +3502 -3478
  312. package/ccw/src/templates/dashboard-js/views/mcp-manager.js +16 -0
  313. package/ccw/src/templates/dashboard.html +112 -0
  314. package/ccw/src/tools/claude-cli-tools.ts +54 -28
  315. package/ccw/src/tools/cli-executor-core.ts +36 -8
  316. package/ccw/src/tools/cli-executor-state.ts +2 -0
  317. package/ccw/src/tools/cli-executor-utils.ts +26 -4
  318. package/ccw/src/tools/cli-history-store.ts +122 -31
  319. package/ccw/src/tools/cli-output-converter.ts +76 -12
  320. package/ccw/src/tools/codex-lens-lsp.ts +405 -0
  321. package/ccw/src/tools/codex-lens.ts +82 -59
  322. package/ccw/src/tools/index.ts +4 -0
  323. package/ccw/src/tools/template-discovery.ts +303 -0
  324. package/ccw/src/tools/vscode-lsp.ts +317 -0
  325. package/ccw/src/utils/path-resolver.ts +37 -6
  326. package/ccw/src/utils/path-validator.ts +17 -5
  327. package/ccw/src/utils/project-root.ts +73 -0
  328. package/ccw/src/utils/shell-escape.ts +103 -16
  329. package/ccw/src/utils/update-checker.ts +178 -0
  330. package/codex-lens/pyproject.toml +14 -0
  331. package/codex-lens/src/codexlens/__pycache__/config.cpython-312.pyc +0 -0
  332. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  333. package/codex-lens/src/codexlens/__pycache__/errors.cpython-312.pyc +0 -0
  334. package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
  335. package/codex-lens/src/codexlens/api/__init__.py +88 -0
  336. package/codex-lens/src/codexlens/api/__pycache__/__init__.cpython-312.pyc +0 -0
  337. package/codex-lens/src/codexlens/api/__pycache__/__init__.cpython-313.pyc +0 -0
  338. package/codex-lens/src/codexlens/api/__pycache__/definition.cpython-312.pyc +0 -0
  339. package/codex-lens/src/codexlens/api/__pycache__/definition.cpython-313.pyc +0 -0
  340. package/codex-lens/src/codexlens/api/__pycache__/file_context.cpython-312.pyc +0 -0
  341. package/codex-lens/src/codexlens/api/__pycache__/file_context.cpython-313.pyc +0 -0
  342. package/codex-lens/src/codexlens/api/__pycache__/hover.cpython-312.pyc +0 -0
  343. package/codex-lens/src/codexlens/api/__pycache__/hover.cpython-313.pyc +0 -0
  344. package/codex-lens/src/codexlens/api/__pycache__/models.cpython-312.pyc +0 -0
  345. package/codex-lens/src/codexlens/api/__pycache__/models.cpython-313.pyc +0 -0
  346. package/codex-lens/src/codexlens/api/__pycache__/references.cpython-312.pyc +0 -0
  347. package/codex-lens/src/codexlens/api/__pycache__/references.cpython-313.pyc +0 -0
  348. package/codex-lens/src/codexlens/api/__pycache__/semantic.cpython-312.pyc +0 -0
  349. package/codex-lens/src/codexlens/api/__pycache__/semantic.cpython-313.pyc +0 -0
  350. package/codex-lens/src/codexlens/api/__pycache__/symbols.cpython-312.pyc +0 -0
  351. package/codex-lens/src/codexlens/api/__pycache__/symbols.cpython-313.pyc +0 -0
  352. package/codex-lens/src/codexlens/api/__pycache__/utils.cpython-312.pyc +0 -0
  353. package/codex-lens/src/codexlens/api/__pycache__/utils.cpython-313.pyc +0 -0
  354. package/codex-lens/src/codexlens/api/definition.py +126 -0
  355. package/codex-lens/src/codexlens/api/file_context.py +271 -0
  356. package/codex-lens/src/codexlens/api/hover.py +148 -0
  357. package/codex-lens/src/codexlens/api/models.py +281 -0
  358. package/codex-lens/src/codexlens/api/references.py +345 -0
  359. package/codex-lens/src/codexlens/api/semantic.py +471 -0
  360. package/codex-lens/src/codexlens/api/symbols.py +146 -0
  361. package/codex-lens/src/codexlens/api/utils.py +153 -0
  362. package/codex-lens/src/codexlens/config.py +7 -0
  363. package/codex-lens/src/codexlens/errors.py +4 -0
  364. package/codex-lens/src/codexlens/hybrid_search/__init__.py +28 -0
  365. package/codex-lens/src/codexlens/hybrid_search/__pycache__/__init__.cpython-312.pyc +0 -0
  366. package/codex-lens/src/codexlens/hybrid_search/__pycache__/__init__.cpython-313.pyc +0 -0
  367. package/codex-lens/src/codexlens/hybrid_search/__pycache__/data_structures.cpython-312.pyc +0 -0
  368. package/codex-lens/src/codexlens/hybrid_search/__pycache__/data_structures.cpython-313.pyc +0 -0
  369. package/codex-lens/src/codexlens/hybrid_search/__pycache__/engine.cpython-313.pyc +0 -0
  370. package/codex-lens/src/codexlens/hybrid_search/data_structures.py +602 -0
  371. package/codex-lens/src/codexlens/lsp/__init__.py +34 -0
  372. package/codex-lens/src/codexlens/lsp/__pycache__/__init__.cpython-312.pyc +0 -0
  373. package/codex-lens/src/codexlens/lsp/__pycache__/__init__.cpython-313.pyc +0 -0
  374. package/codex-lens/src/codexlens/lsp/__pycache__/handlers.cpython-313.pyc +0 -0
  375. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_bridge.cpython-312.pyc +0 -0
  376. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_bridge.cpython-313.pyc +0 -0
  377. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_graph_builder.cpython-312.pyc +0 -0
  378. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_graph_builder.cpython-313.pyc +0 -0
  379. package/codex-lens/src/codexlens/lsp/__pycache__/providers.cpython-313.pyc +0 -0
  380. package/codex-lens/src/codexlens/lsp/__pycache__/server.cpython-313.pyc +0 -0
  381. package/codex-lens/src/codexlens/lsp/__pycache__/standalone_manager.cpython-313.pyc +0 -0
  382. package/codex-lens/src/codexlens/lsp/handlers.py +551 -0
  383. package/codex-lens/src/codexlens/lsp/lsp_bridge.py +834 -0
  384. package/codex-lens/src/codexlens/lsp/lsp_graph_builder.py +375 -0
  385. package/codex-lens/src/codexlens/lsp/providers.py +177 -0
  386. package/codex-lens/src/codexlens/lsp/server.py +263 -0
  387. package/codex-lens/src/codexlens/lsp/standalone_manager.py +1159 -0
  388. package/codex-lens/src/codexlens/mcp/__init__.py +20 -0
  389. package/codex-lens/src/codexlens/mcp/__pycache__/__init__.cpython-313.pyc +0 -0
  390. package/codex-lens/src/codexlens/mcp/__pycache__/hooks.cpython-313.pyc +0 -0
  391. package/codex-lens/src/codexlens/mcp/__pycache__/provider.cpython-313.pyc +0 -0
  392. package/codex-lens/src/codexlens/mcp/__pycache__/schema.cpython-313.pyc +0 -0
  393. package/codex-lens/src/codexlens/mcp/hooks.py +170 -0
  394. package/codex-lens/src/codexlens/mcp/provider.py +202 -0
  395. package/codex-lens/src/codexlens/mcp/schema.py +113 -0
  396. package/codex-lens/src/codexlens/search/__init__.py +53 -15
  397. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-312.pyc +0 -0
  398. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
  399. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-312.pyc +0 -0
  400. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  401. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-312.pyc +0 -0
  402. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  403. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-312.pyc +0 -0
  404. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  405. package/codex-lens/src/codexlens/search/association_tree/QUICK_START.md +257 -0
  406. package/codex-lens/src/codexlens/search/association_tree/README.md +188 -0
  407. package/codex-lens/src/codexlens/search/association_tree/__init__.py +21 -0
  408. package/codex-lens/src/codexlens/search/association_tree/__pycache__/__init__.cpython-313.pyc +0 -0
  409. package/codex-lens/src/codexlens/search/association_tree/__pycache__/builder.cpython-313.pyc +0 -0
  410. package/codex-lens/src/codexlens/search/association_tree/__pycache__/data_structures.cpython-313.pyc +0 -0
  411. package/codex-lens/src/codexlens/search/association_tree/__pycache__/deduplicator.cpython-313.pyc +0 -0
  412. package/codex-lens/src/codexlens/search/association_tree/builder.py +450 -0
  413. package/codex-lens/src/codexlens/search/association_tree/data_structures.py +191 -0
  414. package/codex-lens/src/codexlens/search/association_tree/deduplicator.py +301 -0
  415. package/codex-lens/src/codexlens/search/chain_search.py +864 -3
  416. package/codex-lens/src/codexlens/search/clustering/__init__.py +124 -0
  417. package/codex-lens/src/codexlens/search/clustering/__pycache__/__init__.cpython-312.pyc +0 -0
  418. package/codex-lens/src/codexlens/search/clustering/__pycache__/__init__.cpython-313.pyc +0 -0
  419. package/codex-lens/src/codexlens/search/clustering/__pycache__/base.cpython-312.pyc +0 -0
  420. package/codex-lens/src/codexlens/search/clustering/__pycache__/base.cpython-313.pyc +0 -0
  421. package/codex-lens/src/codexlens/search/clustering/__pycache__/dbscan_strategy.cpython-313.pyc +0 -0
  422. package/codex-lens/src/codexlens/search/clustering/__pycache__/factory.cpython-312.pyc +0 -0
  423. package/codex-lens/src/codexlens/search/clustering/__pycache__/factory.cpython-313.pyc +0 -0
  424. package/codex-lens/src/codexlens/search/clustering/__pycache__/frequency_strategy.cpython-312.pyc +0 -0
  425. package/codex-lens/src/codexlens/search/clustering/__pycache__/frequency_strategy.cpython-313.pyc +0 -0
  426. package/codex-lens/src/codexlens/search/clustering/__pycache__/hdbscan_strategy.cpython-313.pyc +0 -0
  427. package/codex-lens/src/codexlens/search/clustering/__pycache__/noop_strategy.cpython-312.pyc +0 -0
  428. package/codex-lens/src/codexlens/search/clustering/__pycache__/noop_strategy.cpython-313.pyc +0 -0
  429. package/codex-lens/src/codexlens/search/clustering/base.py +153 -0
  430. package/codex-lens/src/codexlens/search/clustering/dbscan_strategy.py +197 -0
  431. package/codex-lens/src/codexlens/search/clustering/factory.py +202 -0
  432. package/codex-lens/src/codexlens/search/clustering/frequency_strategy.py +263 -0
  433. package/codex-lens/src/codexlens/search/clustering/hdbscan_strategy.py +153 -0
  434. package/codex-lens/src/codexlens/search/clustering/noop_strategy.py +83 -0
  435. package/codex-lens/src/codexlens/search/hybrid_search.py +194 -2
  436. package/codex-lens/src/codexlens/search/ranking.py +6 -4
  437. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-312.pyc +0 -0
  438. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-312.pyc +0 -0
  439. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
  440. package/codex-lens/src/codexlens/storage/__pycache__/global_index.cpython-312.pyc +0 -0
  441. package/codex-lens/src/codexlens/storage/__pycache__/global_index.cpython-313.pyc +0 -0
  442. package/codex-lens/src/codexlens/storage/dir_index.py +172 -0
  443. package/codex-lens/src/codexlens/storage/global_index.py +33 -0
  444. package/package.json +92 -92
  445. /package/.claude/workflows/cli-templates/prompts/{analysis/02-analyze-code-patterns.txt → analysis-analyze-code-patterns.txt} +0 -0
  446. /package/.claude/workflows/cli-templates/prompts/{analysis/02-analyze-technical-document.txt → analysis-analyze-technical-document.txt} +0 -0
  447. /package/.claude/workflows/cli-templates/prompts/{analysis/01-diagnose-bug-root-cause.txt → analysis-diagnose-bug-root-cause.txt} +0 -0
  448. /package/.claude/workflows/cli-templates/prompts/{development/03-debug-runtime-issues.txt → development-debug-runtime-issues.txt} +0 -0
  449. /package/.claude/workflows/cli-templates/prompts/{development/02-generate-tests.txt → development-generate-tests.txt} +0 -0
  450. /package/.claude/workflows/cli-templates/prompts/{development/02-implement-component-ui.txt → development-implement-component-ui.txt} +0 -0
  451. /package/.claude/workflows/cli-templates/prompts/{development/02-implement-feature.txt → development-implement-feature.txt} +0 -0
  452. /package/.claude/workflows/cli-templates/prompts/{development/02-refactor-codebase.txt → development-refactor-codebase.txt} +0 -0
  453. /package/.claude/workflows/cli-templates/prompts/{documentation/module-readme.txt → documentation-module-readme.txt} +0 -0
  454. /package/.claude/workflows/cli-templates/prompts/{memory/02-document-module-structure.txt → memory-document-module-structure.txt} +0 -0
  455. /package/.claude/workflows/cli-templates/prompts/{planning/02-breakdown-task-steps.txt → planning-breakdown-task-steps.txt} +0 -0
  456. /package/.claude/workflows/cli-templates/prompts/{planning/03-evaluate-concept-feasibility.txt → planning-evaluate-concept-feasibility.txt} +0 -0
  457. /package/.claude/workflows/cli-templates/prompts/{planning/01-plan-architecture-design.txt → planning-plan-architecture-design.txt} +0 -0
  458. /package/.claude/workflows/cli-templates/prompts/{planning/03-plan-migration-strategy.txt → planning-plan-migration-strategy.txt} +0 -0
  459. /package/.claude/workflows/cli-templates/prompts/{rules/rule-api.txt → rules-rule-api.txt} +0 -0
  460. /package/.claude/workflows/cli-templates/prompts/{rules/rule-components.txt → rules-rule-components.txt} +0 -0
  461. /package/.claude/workflows/cli-templates/prompts/{rules/rule-config.txt → rules-rule-config.txt} +0 -0
  462. /package/.claude/workflows/cli-templates/prompts/{rules/rule-core.txt → rules-rule-core.txt} +0 -0
  463. /package/.claude/workflows/cli-templates/prompts/{rules/rule-patterns.txt → rules-rule-patterns.txt} +0 -0
  464. /package/.claude/workflows/cli-templates/prompts/{rules/rule-testing.txt → rules-rule-testing.txt} +0 -0
  465. /package/.claude/workflows/cli-templates/prompts/{rules/tech-rules-agent-prompt.txt → rules-tech-rules-agent-prompt.txt} +0 -0
  466. /package/.claude/workflows/cli-templates/prompts/{tech/tech-module-format.txt → tech-tech-module-format.txt} +0 -0
  467. /package/.claude/workflows/cli-templates/prompts/{tech/tech-skill-index.txt → tech-tech-skill-index.txt} +0 -0
  468. /package/.claude/workflows/cli-templates/prompts/{test/test-concept-analysis.txt → test-test-concept-analysis.txt} +0 -0
  469. /package/.claude/workflows/cli-templates/prompts/{universal/00-universal-creative-style.txt → universal-universal-creative-style.txt} +0 -0
  470. /package/.claude/workflows/cli-templates/prompts/{universal/00-universal-rigorous-style.txt → universal-universal-rigorous-style.txt} +0 -0
  471. /package/.claude/workflows/cli-templates/prompts/{workflow/codex-feasibility-validation.txt → workflow-codex-feasibility-validation.txt} +0 -0
  472. /package/.claude/workflows/cli-templates/prompts/{workflow/gemini-solution-design.txt → workflow-gemini-solution-design.txt} +0 -0
  473. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-aggregation.txt → workflow-skill-aggregation.txt} +0 -0
  474. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-index.txt → workflow-skill-index.txt} +0 -0
  475. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-sessions-timeline.txt → workflow-skill-sessions-timeline.txt} +0 -0
  476. /package/.claude/workflows/cli-templates/prompts/{workflow/task-json-cli-mode.txt → workflow-task-json-cli-mode.txt} +0 -0
@@ -1,745 +1,745 @@
1
- ---
2
- name: imitate-auto
3
- description: UI design workflow with direct code/image input for design token extraction and prototype generation
4
- argument-hint: "[--input "<value>"] [--session <id>]"
5
- allowed-tools: SlashCommand(*), TodoWrite(*), Read(*), Write(*), Bash(*)
6
- ---
7
-
8
- # UI Design Imitate-Auto Workflow Command
9
-
10
- ## Overview & Execution Model
11
-
12
- **Fully autonomous design orchestrator**: Efficiently create UI prototypes through sequential execution from design token extraction to system integration.
13
-
14
- **Direct Input Strategy**: Accepts local code files and images:
15
- - **Code Files**: Detect file paths in `--prompt` parameter
16
- - **Images**: Reference images via `--images` glob pattern
17
- - **Hybrid**: Combine both code and visual inputs
18
-
19
- **Autonomous Flow** (⚠️ CONTINUOUS EXECUTION - DO NOT STOP):
20
- 1. User triggers: `/workflow:ui-design:imitate-auto [--input "..."]`
21
- 2. Phase 0: Initialize and detect input sources
22
- 3. Phase 2: Style extraction → **Attach tasks → Execute → Collapse** → Auto-continues
23
- 4. Phase 2.3: Animation extraction → **Attach tasks → Execute → Collapse** → Auto-continues
24
- 5. Phase 2.5: Layout extraction → **Attach tasks → Execute → Collapse** → Auto-continues
25
- 6. Phase 3: Batch UI assembly → **Attach tasks → Execute → Collapse** → Auto-continues
26
- 7. Phase 4: Design system integration → **Execute orchestrator task** → Reports completion
27
-
28
- **Phase Transition Mechanism**:
29
- - **Task Attachment**: SlashCommand execute **ATTACHES** tasks to current workflow
30
- - **Task Execution**: Orchestrator **EXECUTES** these attached tasks itself
31
- - **Task Collapse**: After tasks complete, collapse them into phase summary
32
- - **Phase Transition**: Automatically execute next phase after collapsing
33
- - No user interaction required after initial parameter parsing
34
-
35
- **Auto-Continue Mechanism**: TodoWrite tracks phase status with dynamic task attachment/collapse. After executing all attached tasks, you MUST immediately collapse them, restore phase summary, and execute the next phase. No user intervention required. The workflow is NOT complete until reaching Phase 4.
36
-
37
- **Task Attachment Model**: SlashCommand execute is NOT delegation - it's task expansion. The orchestrator executes these attached tasks itself, not waiting for external completion.
38
-
39
- ## Execution Process
40
-
41
- ```
42
- Input Parsing:
43
- ├─ Parse flags: --input, --session (legacy: --images, --prompt)
44
- └─ Decision (input detection):
45
- ├─ Contains * or glob matches → images_input (visual)
46
- ├─ File/directory exists → code import source
47
- └─ Pure text → design prompt
48
-
49
- Phase 0: Parameter Parsing & Input Detection
50
- ├─ Step 1: Normalize parameters (legacy deprecation warning)
51
- ├─ Step 2: Detect design source (hybrid | code_only | visual_only)
52
- └─ Step 3: Initialize directories and metadata
53
-
54
- Phase 0.5: Code Import (Conditional)
55
- └─ Decision (design_source):
56
- ├─ hybrid → Execute /workflow:ui-design:import-from-code
57
- └─ Other → Skip to Phase 2
58
-
59
- Phase 2: Style Extraction
60
- └─ Decision (skip_style):
61
- ├─ code_only AND style_complete → Use code import
62
- └─ Otherwise → Execute /workflow:ui-design:style-extract
63
-
64
- Phase 2.3: Animation Extraction
65
- └─ Decision (skip_animation):
66
- ├─ code_only AND animation_complete → Use code import
67
- └─ Otherwise → Execute /workflow:ui-design:animation-extract
68
-
69
- Phase 2.5: Layout Extraction
70
- └─ Decision (skip_layout):
71
- ├─ code_only AND layout_complete → Use code import
72
- └─ Otherwise → Execute /workflow:ui-design:layout-extract
73
-
74
- Phase 3: UI Assembly
75
- └─ Execute /workflow:ui-design:generate
76
-
77
- Phase 4: Design System Integration
78
- └─ Decision (session_id):
79
- ├─ Provided → Execute /workflow:ui-design:update
80
- └─ Not provided → Standalone completion
81
- ```
82
-
83
- ## Core Rules
84
-
85
- 1. **Start Immediately**: TodoWrite initialization → Phase 2 execution
86
- 2. **No Preliminary Validation**: Sub-commands handle their own validation
87
- 3. **Parse & Pass**: Extract data from each output for next phase
88
- 4. **Track Progress**: Update TodoWrite dynamically with task attachment/collapse pattern
89
- 5. **⚠️ CRITICAL: Task Attachment Model** - SlashCommand execute **ATTACHES** tasks to current workflow. Orchestrator **EXECUTES** these attached tasks itself, not waiting for external completion. This is NOT delegation - it's task expansion.
90
- 6. **⚠️ CRITICAL: DO NOT STOP** - This is a continuous multi-phase workflow. After executing all attached tasks, you MUST immediately collapse them and execute the next phase. Workflow is NOT complete until Phase 4.
91
-
92
- ## Parameter Requirements
93
-
94
- **Recommended Parameter**:
95
- - `--input "<value>"`: Unified input source (auto-detects type)
96
- - **Glob pattern** (images): `"design-refs/*"`, `"screenshots/*.png"`
97
- - **File/directory path** (code): `"./src/components"`, `"/path/to/styles"`
98
- - **Text description** (prompt): `"Focus on dark mode"`, `"Emphasize minimalist design"`
99
- - **Combination**: `"design-refs/* modern dashboard style"` (glob + description)
100
- - Multiple inputs: Separate with `|` → `"design-refs/*|modern style"`
101
-
102
- **Detection Logic**:
103
- - Contains `*` or matches existing files → **glob pattern** (images)
104
- - Existing file/directory path → **code import**
105
- - Pure text without paths → **design prompt**
106
- - Contains `|` separator → **multiple inputs** (glob|prompt or path|prompt)
107
-
108
- **Legacy Parameters** (deprecated, use `--input` instead):
109
- - `--images "<glob>"`: Reference image paths (shows deprecation warning)
110
- - `--prompt "<desc>"`: Design description (shows deprecation warning)
111
-
112
- **Optional Parameters**:
113
- - `--session <id>`: Workflow session ID
114
- - Integrate into existing session (`.workflow/active/WFS-{session}/`)
115
- - Enable automatic design system integration (Phase 4)
116
- - If not provided: standalone mode (`.workflow/`)
117
-
118
- **Input Rules**:
119
- - Must provide: `--input` OR (legacy: `--images`/`--prompt`)
120
- - `--input` can combine multiple input types
121
- - File paths are automatically detected and trigger code import
122
-
123
- ## Execution Modes
124
-
125
- **Input Sources**:
126
- - **Code Files**: Automatically detected from `--prompt` file paths
127
- - Triggers `/workflow:ui-design:import-from-code` for token extraction
128
- - Analyzes existing CSS/JS/HTML files
129
- - **Visual Input**: Images via `--images` glob pattern
130
- - Reference images for style extraction
131
- - Screenshots or design mockups
132
- - **Hybrid Mode**: Combines code import with visual supplements
133
- - Code provides base tokens
134
- - Images supplement missing design elements
135
-
136
- **Token Processing**:
137
- - **Direct Generation**: Complete design systems generated in style-extract phase
138
- - Production-ready design-tokens.json with WCAG compliance
139
- - Complete style-guide.md documentation
140
- - No separate consolidation step required (~30-60s faster)
141
-
142
- **Session Integration**:
143
- - `--session` flag determines session integration or standalone execution
144
- - Integrated: Design system automatically added to session artifacts
145
- - Standalone: Output in `.workflow/active/{run_id}/`
146
-
147
- ## 5-Phase Execution
148
-
149
- ### Phase 0: Parameter Parsing & Input Detection
150
-
151
- ```bash
152
- # Step 0: Parse and normalize parameters
153
- images_input = null
154
- prompt_text = null
155
-
156
- # Handle legacy parameters with deprecation warning
157
- IF --images OR --prompt:
158
- WARN: "⚠️ DEPRECATION: --images and --prompt are deprecated. Use --input instead."
159
- WARN: " Example: --input \"design-refs/*\" or --input \"modern dashboard\""
160
- images_input = --images
161
- prompt_text = --prompt
162
-
163
- # Parse unified --input parameter
164
- IF --input:
165
- # Split by | separator for multiple inputs
166
- input_parts = split(--input, "|")
167
-
168
- FOR part IN input_parts:
169
- part = trim(part)
170
-
171
- # Detection logic
172
- IF contains(part, "*") OR glob_matches_files(part):
173
- # Glob pattern detected → images
174
- images_input = part
175
- ELSE IF file_or_directory_exists(part):
176
- # File/directory path → will be handled in code detection
177
- IF NOT prompt_text:
178
- prompt_text = part
179
- ELSE:
180
- prompt_text = prompt_text + " " + part
181
- ELSE:
182
- # Pure text → prompt
183
- IF NOT prompt_text:
184
- prompt_text = part
185
- ELSE:
186
- prompt_text = prompt_text + " " + part
187
-
188
- # Validation
189
- IF NOT images_input AND NOT prompt_text:
190
- ERROR: "No input provided. Use --input with glob pattern, file path, or text description"
191
- EXIT 1
192
-
193
- # Step 1: Detect design source from parsed inputs
194
- code_files_detected = false
195
- code_base_path = null
196
- has_visual_input = false
197
-
198
- IF prompt_text:
199
- # Extract potential file paths from prompt
200
- potential_paths = extract_paths_from_text(prompt_text)
201
- FOR path IN potential_paths:
202
- IF file_or_directory_exists(path):
203
- code_files_detected = true
204
- code_base_path = path
205
- BREAK
206
-
207
- IF images_input:
208
- # Check if images parameter points to existing files
209
- IF glob_matches_files(images_input):
210
- has_visual_input = true
211
-
212
- # Step 2: Determine design source strategy
213
- design_source = "unknown"
214
- IF code_files_detected AND has_visual_input:
215
- design_source = "hybrid" # Both code and visual
216
- ELSE IF code_files_detected:
217
- design_source = "code_only" # Only code files
218
- ELSE IF has_visual_input OR --prompt:
219
- design_source = "visual_only" # Only visual/prompt
220
- ELSE:
221
- ERROR: "No design source provided (code files, images, or prompt required)"
222
- EXIT 1
223
-
224
- STORE: design_source, code_base_path, has_visual_input
225
-
226
- # Step 3: Initialize directories
227
- design_id = "design-run-$(date +%Y%m%d)-$RANDOM"
228
-
229
- IF --session:
230
- session_id = {provided_session}
231
- relative_base_path = ".workflow/active/WFS-{session_id}/{design_id}"
232
- session_mode = "integrated"
233
- ELSE:
234
- session_id = null
235
- relative_base_path = ".workflow/active/{design_id}"
236
- session_mode = "standalone"
237
-
238
- # Create base directory and convert to absolute path
239
- Bash(mkdir -p "{relative_base_path}")
240
- base_path=$(cd "{relative_base_path}" && pwd)
241
-
242
- # Write metadata
243
- metadata = {
244
- "workflow": "imitate-auto",
245
- "run_id": design_id,
246
- "session_id": session_id,
247
- "timestamp": current_timestamp(),
248
- "parameters": {
249
- "design_source": design_source,
250
- "code_base_path": code_base_path,
251
- "images": images_input OR null,
252
- "prompt": prompt_text OR null,
253
- "input": --input OR null # Store original --input for reference
254
- },
255
- "status": "in_progress"
256
- }
257
-
258
- Write("{base_path}/.run-metadata.json", JSON.stringify(metadata, null, 2))
259
-
260
- # Initialize default flags
261
- animation_complete = false
262
- needs_visual_supplement = false
263
- style_complete = false
264
- layout_complete = false
265
-
266
- # Initialize TodoWrite
267
- TodoWrite({todos: [
268
- {content: "Initialize and detect design source", status: "completed", activeForm: "Initializing"},
269
- {content: "Extract style (complete design systems)", status: "pending", activeForm: "Extracting style"},
270
- {content: "Extract animation (CSS auto mode)", status: "pending", activeForm: "Extracting animation"},
271
- {content: "Extract layout (structure templates)", status: "pending", activeForm: "Extracting layout"},
272
- {content: "Assemble UI prototypes", status: "pending", activeForm: "Assembling UI"},
273
- {content: session_id ? "Integrate design system" : "Standalone completion", status: "pending", activeForm: "Completing"}
274
- ]})
275
- ```
276
-
277
- ### Phase 0.5: Code Import & Completeness Assessment (Conditional)
278
-
279
- **Step 0.5.1: Execute** - Import design system from code files
280
-
281
- ```javascript
282
- # Only execute if code files detected
283
- IF design_source == "hybrid":
284
- REPORT: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
285
- REPORT: "🔍 Phase 0.5: Code Import & Analysis"
286
- REPORT: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
287
- REPORT: " → Source: {code_base_path}"
288
- REPORT: " → Mode: Hybrid (Web + Code)"
289
-
290
- command = "/workflow:ui-design:import-from-code --design-id \"{design_id}\" " +
291
- "--source \"{code_base_path}\""
292
-
293
- TRY:
294
- # SlashCommand execute ATTACHES import-from-code's tasks to current workflow
295
- # Orchestrator will EXECUTE these attached tasks itself:
296
- # - Phase 0: Discover and categorize code files
297
- # - Phase 1.1-1.3: Style/Animation/Layout Agent extraction
298
- SlashCommand(command)
299
- CATCH error:
300
- WARN: "Code import failed: {error}"
301
- WARN: "Falling back to web-only mode"
302
- design_source = "web"
303
-
304
- IF design_source == "hybrid":
305
- # Check file existence and assess completeness
306
- style_exists = exists("{base_path}/style-extraction/style-1/design-tokens.json")
307
- animation_exists = exists("{base_path}/animation-extraction/animation-tokens.json")
308
- layout_count = bash(ls {base_path}/layout-extraction/layout-*.json 2>/dev/null | wc -l)
309
- layout_exists = (layout_count > 0)
310
-
311
- style_complete = false
312
- animation_complete = false
313
- layout_complete = false
314
- missing_categories = []
315
-
316
- # Style completeness check
317
- IF style_exists:
318
- tokens = Read("{base_path}/style-extraction/style-1/design-tokens.json")
319
- style_complete = (
320
- tokens.colors?.brand && tokens.colors?.surface &&
321
- tokens.typography?.font_family && tokens.spacing &&
322
- Object.keys(tokens.colors.brand || {}).length >= 3 &&
323
- Object.keys(tokens.spacing || {}).length >= 8
324
- )
325
- IF NOT style_complete AND tokens._metadata?.completeness?.missing_categories:
326
- missing_categories.extend(tokens._metadata.completeness.missing_categories)
327
- ELSE:
328
- missing_categories.push("style tokens")
329
-
330
- # Animation completeness check
331
- IF animation_exists:
332
- anim = Read("{base_path}/animation-extraction/animation-tokens.json")
333
- animation_complete = (
334
- anim.duration && anim.easing &&
335
- Object.keys(anim.duration || {}).length >= 3 &&
336
- Object.keys(anim.easing || {}).length >= 3
337
- )
338
- IF NOT animation_complete AND anim._metadata?.completeness?.missing_items:
339
- missing_categories.extend(anim._metadata.completeness.missing_items)
340
- ELSE:
341
- missing_categories.push("animation tokens")
342
-
343
- # Layout completeness check
344
- IF layout_exists:
345
- # Read first layout file to verify structure
346
- first_layout = bash(ls {base_path}/layout-extraction/layout-*.json 2>/dev/null | head -1)
347
- layout_data = Read(first_layout)
348
- layout_complete = (
349
- layout_count >= 1 &&
350
- layout_data.template?.dom_structure &&
351
- layout_data.template?.css_layout_rules
352
- )
353
- IF NOT layout_complete:
354
- missing_categories.push("complete layout structure")
355
- ELSE:
356
- missing_categories.push("layout templates")
357
-
358
- # Report code analysis results
359
- IF len(missing_categories) > 0:
360
- REPORT: ""
361
- REPORT: "⚠️ Code Analysis Partial"
362
- REPORT: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
363
- REPORT: "Missing Design Elements:"
364
- FOR category IN missing_categories:
365
- REPORT: " • {category}"
366
- REPORT: ""
367
- REPORT: "Web screenshots will supplement missing elements"
368
- REPORT: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
369
- ELSE:
370
- REPORT: ""
371
- REPORT: "✅ Code Analysis Complete"
372
- REPORT: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
373
- REPORT: "All design elements extracted from code"
374
- REPORT: "Web screenshots will verify and enhance findings"
375
- REPORT: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
376
-
377
- STORE: style_complete, animation_complete, layout_complete
378
-
379
- TodoWrite(mark_completed: "Initialize and detect design source",
380
- mark_in_progress: "Extract style (complete design systems)")
381
- ```
382
-
383
- ### Phase 2: Style Extraction
384
-
385
- **Step 2.1: Execute** - Extract style design system
386
-
387
- ```javascript
388
- # Determine if style extraction needed
389
- skip_style = (design_source == "code_only" AND style_complete)
390
-
391
- IF skip_style:
392
- REPORT: "✅ Phase 2: Style (Using Code Import)"
393
- ELSE:
394
- REPORT: "🚀 Phase 2: Style Extraction"
395
-
396
- # Build command with available inputs
397
- command_parts = [f"/workflow:ui-design:style-extract --design-id \"{design_id}\""]
398
-
399
- IF images_input:
400
- command_parts.append(f"--images \"{images_input}\"")
401
-
402
- IF prompt_text:
403
- extraction_prompt = prompt_text
404
- IF design_source == "hybrid":
405
- extraction_prompt = f"{prompt_text} (supplement code-imported tokens)"
406
- command_parts.append(f"--prompt \"{extraction_prompt}\"")
407
-
408
- command_parts.extend(["--variants 1", "--refine", "--interactive"])
409
-
410
- extract_command = " ".join(command_parts)
411
-
412
- # SlashCommand execute ATTACHES style-extract's tasks to current workflow
413
- # Orchestrator will EXECUTE these attached tasks itself
414
- SlashCommand(extract_command)
415
-
416
- # After executing all attached tasks, collapse them into phase summary
417
- TodoWrite(mark_completed: "Extract style", mark_in_progress: "Extract animation")
418
- ```
419
-
420
- ### Phase 2.3: Animation Extraction
421
-
422
- **Step 2.3.1: Execute** - Extract animation patterns
423
-
424
- ```javascript
425
- skip_animation = (design_source == "code_only" AND animation_complete)
426
-
427
- IF skip_animation:
428
- REPORT: "✅ Phase 2.3: Animation (Using Code Import)"
429
- ELSE:
430
- REPORT: "🚀 Phase 2.3: Animation Extraction"
431
-
432
- # Build command with available inputs
433
- command_parts = [f"/workflow:ui-design:animation-extract --design-id \"{design_id}\""]
434
-
435
- IF images_input:
436
- command_parts.append(f"--images \"{images_input}\"")
437
-
438
- IF prompt_text:
439
- command_parts.append(f"--prompt \"{prompt_text}\"")
440
-
441
- command_parts.extend(["--refine", "--interactive"])
442
-
443
- animation_extract_command = " ".join(command_parts)
444
-
445
- # SlashCommand execute ATTACHES animation-extract's tasks to current workflow
446
- # Orchestrator will EXECUTE these attached tasks itself
447
- SlashCommand(animation_extract_command)
448
-
449
- # After executing all attached tasks, collapse them into phase summary
450
- TodoWrite(mark_completed: "Extract animation", mark_in_progress: "Extract layout")
451
- ```
452
-
453
- ### Phase 2.5: Layout Extraction
454
-
455
- **Step 2.5.1: Execute** - Extract layout templates
456
-
457
- ```javascript
458
- skip_layout = (design_source == "code_only" AND layout_complete)
459
-
460
- IF skip_layout:
461
- REPORT: "✅ Phase 2.5: Layout (Using Code Import)"
462
- ELSE:
463
- REPORT: "🚀 Phase 2.5: Layout Extraction"
464
-
465
- # Build command with available inputs
466
- command_parts = [f"/workflow:ui-design:layout-extract --design-id \"{design_id}\""]
467
-
468
- IF images_input:
469
- command_parts.append(f"--images \"{images_input}\"")
470
-
471
- IF prompt_text:
472
- command_parts.append(f"--prompt \"{prompt_text}\"")
473
-
474
- # Default target if not specified
475
- command_parts.append("--targets \"home\"")
476
- command_parts.extend(["--variants 1", "--refine", "--interactive"])
477
-
478
- layout_extract_command = " ".join(command_parts)
479
-
480
- # SlashCommand execute ATTACHES layout-extract's tasks to current workflow
481
- # Orchestrator will EXECUTE these attached tasks itself
482
- SlashCommand(layout_extract_command)
483
-
484
- # After executing all attached tasks, collapse them into phase summary
485
- TodoWrite(mark_completed: "Extract layout", mark_in_progress: "Assemble UI")
486
- ```
487
-
488
- ### Phase 3: UI Assembly
489
-
490
- **Step 3.1: Execute** - Assemble UI prototypes from design tokens and layout templates
491
-
492
- ```javascript
493
- REPORT: "🚀 Phase 3: UI Assembly"
494
- generate_command = f"/workflow:ui-design:generate --design-id \"{design_id}\""
495
-
496
- # SlashCommand execute ATTACHES generate's tasks to current workflow
497
- # Orchestrator will EXECUTE these attached tasks itself
498
- SlashCommand(generate_command)
499
-
500
- # After executing all attached tasks, collapse them into phase summary
501
- TodoWrite(mark_completed: "Assemble UI", mark_in_progress: session_id ? "Integrate design system" : "Completion")
502
- ```
503
-
504
- ### Phase 4: Design System Integration
505
-
506
- **Step 4.1: Execute** - Integrate design system into workflow session
507
-
508
- ```javascript
509
- IF session_id:
510
- REPORT: "🚀 Phase 4: Design System Integration"
511
- update_command = f"/workflow:ui-design:update --session {session_id}"
512
-
513
- # SlashCommand execute ATTACHES update's tasks to current workflow
514
- # Orchestrator will EXECUTE these attached tasks itself
515
- SlashCommand(update_command)
516
-
517
- # Update metadata
518
- metadata = Read("{base_path}/.run-metadata.json")
519
- metadata.status = "completed"
520
- metadata.completion_time = current_timestamp()
521
- metadata.outputs = {
522
- "screenshots": f"{base_path}/screenshots/",
523
- "style_system": f"{base_path}/style-extraction/style-1/",
524
- "prototypes": f"{base_path}/prototypes/",
525
- "captured_count": captured_count,
526
- "generated_count": generated_count
527
- }
528
- Write("{base_path}/.run-metadata.json", JSON.stringify(metadata, null, 2))
529
-
530
- TodoWrite(mark_completed: session_id ? "Integrate design system" : "Standalone completion")
531
-
532
- # Mark all phases complete
533
- TodoWrite({todos: [
534
- {content: "Initialize and parse url-map", status: "completed", activeForm: "Initializing"},
535
- {content: capture_mode == "batch" ? f"Batch screenshot capture ({len(target_names)} targets)" : f"Deep exploration (depth {depth})", status: "completed", activeForm: "Capturing"},
536
- {content: "Extract style (complete design systems)", status: "completed", activeForm: "Extracting"},
537
- {content: "Extract animation (CSS auto mode)", status: "completed", activeForm: "Extracting animation"},
538
- {content: "Extract layout (structure templates)", status: "completed", activeForm: "Extracting layout"},
539
- {content: f"Assemble UI for {len(target_names)} targets", status: "completed", activeForm: "Assembling"},
540
- {content: session_id ? "Integrate design system" : "Standalone completion", status: "completed", activeForm: "Completing"}
541
- ]})
542
- ```
543
-
544
- ### Phase 4: Completion Report
545
-
546
- **Completion Message**:
547
- ```
548
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
549
- ✅ UI Design Imitate-Auto Complete!
550
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
551
-
552
- ━━━ 📊 Workflow Summary ━━━
553
-
554
- Mode: Direct Input ({design_source})
555
- Session: {session_id or "standalone"}
556
- Run ID: {run_id}
557
-
558
- Phase 0 - Input Detection: ✅ {design_source} mode
559
- {IF design_source == "code_only": "Code files imported" ELSE IF design_source == "hybrid": "Code + visual inputs" ELSE: "Visual inputs"}
560
-
561
- Phase 2 - Style Extraction: ✅ Production-ready design systems
562
- Output: style-extraction/style-1/ (design-tokens.json + style-guide.md)
563
- Quality: WCAG AA compliant, OKLCH colors
564
-
565
- Phase 2.3 - Animation Extraction: ✅ Animation tokens
566
- Output: animation-extraction/ (animation-tokens.json + animation-guide.md)
567
-
568
- Phase 2.5 - Layout Extraction: ✅ Structure templates
569
- Templates: {template_count} layout structures
570
-
571
- Phase 3 - UI Assembly: ✅ {generated_count} prototypes assembled
572
- Configuration: 1 style × 1 layout × {generated_count} pages
573
-
574
- Phase 4 - Integration: {IF session_id: "✅ Integrated into session" ELSE: "⏭️ Standalone mode"}
575
-
576
- ━━━ 📂 Output Structure ━━━
577
-
578
- {base_path}/
579
- ├── style-extraction/ # Production-ready design systems
580
- │ └── style-1/
581
- │ ├── design-tokens.json
582
- │ └── style-guide.md
583
- ├── animation-extraction/ # CSS animations and transitions
584
- │ ├── animation-tokens.json
585
- │ └── animation-guide.md
586
- ├── layout-extraction/ # Structure templates
587
- │ └── layout-home-1.json # Layout templates
588
- └── prototypes/ # {generated_count} HTML/CSS files
589
- ├── home-style-1-layout-1.html + .css
590
- ├── compare.html # Interactive preview
591
- └── index.html # Quick navigation
592
-
593
- ━━━ ⚡ Performance ━━━
594
-
595
- Total workflow time: ~{estimate_total_time()} minutes
596
- Style extraction: ~{extract_time}
597
- Animation extraction: ~{animation_time}
598
- Layout extraction: ~{layout_time}
599
- UI generation: ~{generate_time}
600
-
601
- ━━━ 🌐 Next Steps ━━━
602
-
603
- 1. Preview prototypes:
604
- • Interactive matrix: Open {base_path}/prototypes/compare.html
605
- • Quick navigation: Open {base_path}/prototypes/index.html
606
-
607
- {IF session_id:
608
- 2. Create implementation tasks:
609
- /workflow:plan --session {session_id}
610
-
611
- 3. Generate tests (if needed):
612
- /workflow:test-gen {session_id}
613
- ELSE:
614
- 2. To integrate into a workflow session:
615
- • Create session: /workflow:session:start
616
- • Copy design-tokens.json to session artifacts
617
-
618
- 3. Explore prototypes in {base_path}/prototypes/ directory
619
- }
620
-
621
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
622
- ```
623
-
624
- ## TodoWrite Pattern
625
-
626
- ```javascript
627
- // Initialize IMMEDIATELY at start of Phase 0 to track multi-phase execution (6 orchestrator-level tasks)
628
- TodoWrite({todos: [
629
- {content: "Phase 0: Initialize and Detect Design Source", status: "in_progress", activeForm: "Initializing"},
630
- {content: "Phase 2: Style Extraction", status: "pending", activeForm: "Extracting style"},
631
- {content: "Phase 2.3: Animation Extraction", status: "pending", activeForm: "Extracting animation"},
632
- {content: "Phase 2.5: Layout Extraction", status: "pending", activeForm: "Extracting layout"},
633
- {content: "Phase 3: UI Assembly", status: "pending", activeForm: "Assembling UI"},
634
- {content: "Phase 4: Design System Integration", status: "pending", activeForm: "Integrating"}
635
- ]})
636
-
637
- // ⚠️ CRITICAL: Dynamic TodoWrite task attachment strategy:
638
- //
639
- // **Key Concept**: SlashCommand execute ATTACHES tasks to current workflow.
640
- // Orchestrator EXECUTES these attached tasks itself, not waiting for external completion.
641
- //
642
- // Phase 2-4 SlashCommand Execute Pattern (when tasks are attached):
643
- // Example - Phase 2 with sub-tasks:
644
- // [
645
- // {"content": "Phase 0: Initialize and Detect Design Source", "status": "completed", "activeForm": "Initializing"},
646
- // {"content": "Phase 2: Style Extraction", "status": "in_progress", "activeForm": "Extracting style"},
647
- // {"content": " → Analyze design references", "status": "in_progress", "activeForm": "Analyzing references"},
648
- // {"content": " → Generate design tokens", "status": "pending", "activeForm": "Generating tokens"},
649
- // {"content": " → Create style guide", "status": "pending", "activeForm": "Creating guide"},
650
- // {"content": "Phase 2.3: Animation Extraction", "status": "pending", "activeForm": "Extracting animation"},
651
- // ...
652
- // ]
653
- //
654
- // After sub-tasks complete, COLLAPSE back to:
655
- // [
656
- // {"content": "Phase 0: Initialize and Detect Design Source", "status": "completed", "activeForm": "Initializing"},
657
- // {"content": "Phase 2: Style Extraction", "status": "completed", "activeForm": "Extracting style"},
658
- // {"content": "Phase 2.3: Animation Extraction", "status": "in_progress", "activeForm": "Extracting animation"},
659
- // ...
660
- // ]
661
- //
662
- ```
663
-
664
- ## Error Handling
665
-
666
- ### Pre-execution Checks
667
- - **Input validation**: Must provide at least one of --images or --prompt
668
- - **Design source detection**: Error if no valid inputs found
669
- - **Code import failure**: Fallback to visual-only mode in hybrid, error in code-only mode
670
-
671
- ### Phase-Specific Errors
672
- - **Code import failure (Phase 0.5)**:
673
- - code_only mode: Terminate with clear error
674
- - hybrid mode: Warn and fallback to visual-only mode
675
-
676
- - **Style extraction failure (Phase 2)**:
677
- - If extract fails: Terminate with clear error
678
- - If design-tokens.json missing: Terminate with debugging info
679
-
680
- - **Animation extraction failure (Phase 2.3)**:
681
- - Non-critical: Warn but continue
682
- - Can proceed without animation tokens
683
-
684
- - **Layout extraction failure (Phase 2.5)**:
685
- - If extract fails: Terminate with error
686
- - Need layout templates for assembly
687
-
688
- - **UI generation failure (Phase 3)**:
689
- - If generate fails: Terminate with error
690
- - If generated_count < expected: Warn but proceed
691
-
692
- - **Integration failure (Phase 4)**:
693
- - Non-blocking: Warn but don't terminate
694
- - Prototypes already available
695
-
696
- ### Recovery Strategies
697
- - **Code import failure**: Automatic fallback to visual-only in hybrid mode
698
- - **Generate failure**: Report specific failures, user can re-generate individually
699
- - **Integration failure**: Prototypes still usable, can integrate manually
700
-
701
- ## Integration Points
702
-
703
- - **Input**: `--images` (glob pattern) and/or `--prompt` (text/file paths) + optional `--session`
704
- - **Output**: Complete design system in `{base_path}/` (style-extraction, layout-extraction, prototypes)
705
- - **Sub-commands Executeed**:
706
- 1. `/workflow:ui-design:import-from-code` (Phase 0.5, conditional - if code files detected)
707
- 2. `/workflow:ui-design:style-extract` (Phase 2 - complete design systems)
708
- 3. `/workflow:ui-design:animation-extract` (Phase 2.3 - animation tokens)
709
- 4. `/workflow:ui-design:layout-extract` (Phase 2.5 - structure templates)
710
- 5. `/workflow:ui-design:generate` (Phase 3 - pure assembly)
711
- 6. `/workflow:ui-design:update` (Phase 4, if --session)
712
-
713
- ## Completion Output
714
-
715
- ```
716
- ✅ UI Design Imitate-Auto Workflow Complete!
717
-
718
- Mode: Direct Input ({design_source}) | Session: {session_id or "standalone"}
719
- Run ID: {run_id}
720
-
721
- Phase 0 - Input Detection: ✅ {design_source} mode
722
- Phase 2 - Style Extraction: ✅ Production-ready design systems
723
- Phase 2.3 - Animation Extraction: ✅ Animation tokens
724
- Phase 2.5 - Layout Extraction: ✅ Structure templates
725
- Phase 3 - UI Assembly: ✅ {generated_count} prototypes assembled
726
- Phase 4 - Integration: {IF session_id: "✅ Integrated" ELSE: "⏭️ Standalone"}
727
-
728
- Design Quality:
729
- ✅ Token-Driven Styling: 100% var() usage
730
- ✅ Production-Ready: WCAG AA compliant, OKLCH colors
731
- ✅ Multi-Source: Code import + visual extraction
732
-
733
- 📂 {base_path}/
734
- ├── style-extraction/style-1/ # Production-ready design system
735
- ├── animation-extraction/ # Animation tokens
736
- ├── layout-extraction/ # Structure templates
737
- └── prototypes/ # {generated_count} HTML/CSS files
738
-
739
- 🌐 Preview: {base_path}/prototypes/compare.html
740
- - Interactive preview
741
- - Design token driven
742
- - {generated_count} assembled prototypes
743
-
744
- Next: [/workflow:execute] OR [Open compare.html → /workflow:plan]
745
- ```
1
+ ---
2
+ name: imitate-auto
3
+ description: UI design workflow with direct code/image input for design token extraction and prototype generation
4
+ argument-hint: "[--input "<value>"] [--session <id>]"
5
+ allowed-tools: SlashCommand(*), TodoWrite(*), Read(*), Write(*), Bash(*)
6
+ ---
7
+
8
+ # UI Design Imitate-Auto Workflow Command
9
+
10
+ ## Overview & Execution Model
11
+
12
+ **Fully autonomous design orchestrator**: Efficiently create UI prototypes through sequential execution from design token extraction to system integration.
13
+
14
+ **Direct Input Strategy**: Accepts local code files and images:
15
+ - **Code Files**: Detect file paths in `--prompt` parameter
16
+ - **Images**: Reference images via `--images` glob pattern
17
+ - **Hybrid**: Combine both code and visual inputs
18
+
19
+ **Autonomous Flow** (⚠️ CONTINUOUS EXECUTION - DO NOT STOP):
20
+ 1. User triggers: `/workflow:ui-design:imitate-auto [--input "..."]`
21
+ 2. Phase 0: Initialize and detect input sources
22
+ 3. Phase 2: Style extraction → **Attach tasks → Execute → Collapse** → Auto-continues
23
+ 4. Phase 2.3: Animation extraction → **Attach tasks → Execute → Collapse** → Auto-continues
24
+ 5. Phase 2.5: Layout extraction → **Attach tasks → Execute → Collapse** → Auto-continues
25
+ 6. Phase 3: Batch UI assembly → **Attach tasks → Execute → Collapse** → Auto-continues
26
+ 7. Phase 4: Design system integration → **Execute orchestrator task** → Reports completion
27
+
28
+ **Phase Transition Mechanism**:
29
+ - **Task Attachment**: SlashCommand execute **ATTACHES** tasks to current workflow
30
+ - **Task Execution**: Orchestrator **EXECUTES** these attached tasks itself
31
+ - **Task Collapse**: After tasks complete, collapse them into phase summary
32
+ - **Phase Transition**: Automatically execute next phase after collapsing
33
+ - No user interaction required after initial parameter parsing
34
+
35
+ **Auto-Continue Mechanism**: TodoWrite tracks phase status with dynamic task attachment/collapse. After executing all attached tasks, you MUST immediately collapse them, restore phase summary, and execute the next phase. No user intervention required. The workflow is NOT complete until reaching Phase 4.
36
+
37
+ **Task Attachment Model**: SlashCommand execute is NOT delegation - it's task expansion. The orchestrator executes these attached tasks itself, not waiting for external completion.
38
+
39
+ ## Execution Process
40
+
41
+ ```
42
+ Input Parsing:
43
+ ├─ Parse flags: --input, --session (legacy: --images, --prompt)
44
+ └─ Decision (input detection):
45
+ ├─ Contains * or glob matches → images_input (visual)
46
+ ├─ File/directory exists → code import source
47
+ └─ Pure text → design prompt
48
+
49
+ Phase 0: Parameter Parsing & Input Detection
50
+ ├─ Step 1: Normalize parameters (legacy deprecation warning)
51
+ ├─ Step 2: Detect design source (hybrid | code_only | visual_only)
52
+ └─ Step 3: Initialize directories and metadata
53
+
54
+ Phase 0.5: Code Import (Conditional)
55
+ └─ Decision (design_source):
56
+ ├─ hybrid → Execute /workflow:ui-design:import-from-code
57
+ └─ Other → Skip to Phase 2
58
+
59
+ Phase 2: Style Extraction
60
+ └─ Decision (skip_style):
61
+ ├─ code_only AND style_complete → Use code import
62
+ └─ Otherwise → Execute /workflow:ui-design:style-extract
63
+
64
+ Phase 2.3: Animation Extraction
65
+ └─ Decision (skip_animation):
66
+ ├─ code_only AND animation_complete → Use code import
67
+ └─ Otherwise → Execute /workflow:ui-design:animation-extract
68
+
69
+ Phase 2.5: Layout Extraction
70
+ └─ Decision (skip_layout):
71
+ ├─ code_only AND layout_complete → Use code import
72
+ └─ Otherwise → Execute /workflow:ui-design:layout-extract
73
+
74
+ Phase 3: UI Assembly
75
+ └─ Execute /workflow:ui-design:generate
76
+
77
+ Phase 4: Design System Integration
78
+ └─ Decision (session_id):
79
+ ├─ Provided → Execute /workflow:ui-design:update
80
+ └─ Not provided → Standalone completion
81
+ ```
82
+
83
+ ## Core Rules
84
+
85
+ 1. **Start Immediately**: TodoWrite initialization → Phase 2 execution
86
+ 2. **No Preliminary Validation**: Sub-commands handle their own validation
87
+ 3. **Parse & Pass**: Extract data from each output for next phase
88
+ 4. **Track Progress**: Update TodoWrite dynamically with task attachment/collapse pattern
89
+ 5. **⚠️ CRITICAL: Task Attachment Model** - SlashCommand execute **ATTACHES** tasks to current workflow. Orchestrator **EXECUTES** these attached tasks itself, not waiting for external completion. This is NOT delegation - it's task expansion.
90
+ 6. **⚠️ CRITICAL: DO NOT STOP** - This is a continuous multi-phase workflow. After executing all attached tasks, you MUST immediately collapse them and execute the next phase. Workflow is NOT complete until Phase 4.
91
+
92
+ ## Parameter Requirements
93
+
94
+ **Recommended Parameter**:
95
+ - `--input "<value>"`: Unified input source (auto-detects type)
96
+ - **Glob pattern** (images): `"design-refs/*"`, `"screenshots/*.png"`
97
+ - **File/directory path** (code): `"./src/components"`, `"/path/to/styles"`
98
+ - **Text description** (prompt): `"Focus on dark mode"`, `"Emphasize minimalist design"`
99
+ - **Combination**: `"design-refs/* modern dashboard style"` (glob + description)
100
+ - Multiple inputs: Separate with `|` → `"design-refs/*|modern style"`
101
+
102
+ **Detection Logic**:
103
+ - Contains `*` or matches existing files → **glob pattern** (images)
104
+ - Existing file/directory path → **code import**
105
+ - Pure text without paths → **design prompt**
106
+ - Contains `|` separator → **multiple inputs** (glob|prompt or path|prompt)
107
+
108
+ **Legacy Parameters** (deprecated, use `--input` instead):
109
+ - `--images "<glob>"`: Reference image paths (shows deprecation warning)
110
+ - `--prompt "<desc>"`: Design description (shows deprecation warning)
111
+
112
+ **Optional Parameters**:
113
+ - `--session <id>`: Workflow session ID
114
+ - Integrate into existing session (`.workflow/active/WFS-{session}/`)
115
+ - Enable automatic design system integration (Phase 4)
116
+ - If not provided: standalone mode (`.workflow/`)
117
+
118
+ **Input Rules**:
119
+ - Must provide: `--input` OR (legacy: `--images`/`--prompt`)
120
+ - `--input` can combine multiple input types
121
+ - File paths are automatically detected and trigger code import
122
+
123
+ ## Execution Modes
124
+
125
+ **Input Sources**:
126
+ - **Code Files**: Automatically detected from `--prompt` file paths
127
+ - Triggers `/workflow:ui-design:import-from-code` for token extraction
128
+ - Analyzes existing CSS/JS/HTML files
129
+ - **Visual Input**: Images via `--images` glob pattern
130
+ - Reference images for style extraction
131
+ - Screenshots or design mockups
132
+ - **Hybrid Mode**: Combines code import with visual supplements
133
+ - Code provides base tokens
134
+ - Images supplement missing design elements
135
+
136
+ **Token Processing**:
137
+ - **Direct Generation**: Complete design systems generated in style-extract phase
138
+ - Production-ready design-tokens.json with WCAG compliance
139
+ - Complete style-guide.md documentation
140
+ - No separate consolidation step required (~30-60s faster)
141
+
142
+ **Session Integration**:
143
+ - `--session` flag determines session integration or standalone execution
144
+ - Integrated: Design system automatically added to session artifacts
145
+ - Standalone: Output in `.workflow/active/{run_id}/`
146
+
147
+ ## 5-Phase Execution
148
+
149
+ ### Phase 0: Parameter Parsing & Input Detection
150
+
151
+ ```bash
152
+ # Step 0: Parse and normalize parameters
153
+ images_input = null
154
+ prompt_text = null
155
+
156
+ # Handle legacy parameters with deprecation warning
157
+ IF --images OR --prompt:
158
+ WARN: "⚠️ DEPRECATION: --images and --prompt are deprecated. Use --input instead."
159
+ WARN: " Example: --input \"design-refs/*\" or --input \"modern dashboard\""
160
+ images_input = --images
161
+ prompt_text = --prompt
162
+
163
+ # Parse unified --input parameter
164
+ IF --input:
165
+ # Split by | separator for multiple inputs
166
+ input_parts = split(--input, "|")
167
+
168
+ FOR part IN input_parts:
169
+ part = trim(part)
170
+
171
+ # Detection logic
172
+ IF contains(part, "*") OR glob_matches_files(part):
173
+ # Glob pattern detected → images
174
+ images_input = part
175
+ ELSE IF file_or_directory_exists(part):
176
+ # File/directory path → will be handled in code detection
177
+ IF NOT prompt_text:
178
+ prompt_text = part
179
+ ELSE:
180
+ prompt_text = prompt_text + " " + part
181
+ ELSE:
182
+ # Pure text → prompt
183
+ IF NOT prompt_text:
184
+ prompt_text = part
185
+ ELSE:
186
+ prompt_text = prompt_text + " " + part
187
+
188
+ # Validation
189
+ IF NOT images_input AND NOT prompt_text:
190
+ ERROR: "No input provided. Use --input with glob pattern, file path, or text description"
191
+ EXIT 1
192
+
193
+ # Step 1: Detect design source from parsed inputs
194
+ code_files_detected = false
195
+ code_base_path = null
196
+ has_visual_input = false
197
+
198
+ IF prompt_text:
199
+ # Extract potential file paths from prompt
200
+ potential_paths = extract_paths_from_text(prompt_text)
201
+ FOR path IN potential_paths:
202
+ IF file_or_directory_exists(path):
203
+ code_files_detected = true
204
+ code_base_path = path
205
+ BREAK
206
+
207
+ IF images_input:
208
+ # Check if images parameter points to existing files
209
+ IF glob_matches_files(images_input):
210
+ has_visual_input = true
211
+
212
+ # Step 2: Determine design source strategy
213
+ design_source = "unknown"
214
+ IF code_files_detected AND has_visual_input:
215
+ design_source = "hybrid" # Both code and visual
216
+ ELSE IF code_files_detected:
217
+ design_source = "code_only" # Only code files
218
+ ELSE IF has_visual_input OR --prompt:
219
+ design_source = "visual_only" # Only visual/prompt
220
+ ELSE:
221
+ ERROR: "No design source provided (code files, images, or prompt required)"
222
+ EXIT 1
223
+
224
+ STORE: design_source, code_base_path, has_visual_input
225
+
226
+ # Step 3: Initialize directories
227
+ design_id = "design-run-$(date +%Y%m%d)-$RANDOM"
228
+
229
+ IF --session:
230
+ session_id = {provided_session}
231
+ relative_base_path = ".workflow/active/WFS-{session_id}/{design_id}"
232
+ session_mode = "integrated"
233
+ ELSE:
234
+ session_id = null
235
+ relative_base_path = ".workflow/active/{design_id}"
236
+ session_mode = "standalone"
237
+
238
+ # Create base directory and convert to absolute path
239
+ Bash(mkdir -p "{relative_base_path}")
240
+ base_path=$(cd "{relative_base_path}" && pwd)
241
+
242
+ # Write metadata
243
+ metadata = {
244
+ "workflow": "imitate-auto",
245
+ "run_id": design_id,
246
+ "session_id": session_id,
247
+ "timestamp": current_timestamp(),
248
+ "parameters": {
249
+ "design_source": design_source,
250
+ "code_base_path": code_base_path,
251
+ "images": images_input OR null,
252
+ "prompt": prompt_text OR null,
253
+ "input": --input OR null # Store original --input for reference
254
+ },
255
+ "status": "in_progress"
256
+ }
257
+
258
+ Write("{base_path}/.run-metadata.json", JSON.stringify(metadata, null, 2))
259
+
260
+ # Initialize default flags
261
+ animation_complete = false
262
+ needs_visual_supplement = false
263
+ style_complete = false
264
+ layout_complete = false
265
+
266
+ # Initialize TodoWrite
267
+ TodoWrite({todos: [
268
+ {content: "Initialize and detect design source", status: "completed", activeForm: "Initializing"},
269
+ {content: "Extract style (complete design systems)", status: "pending", activeForm: "Extracting style"},
270
+ {content: "Extract animation (CSS auto mode)", status: "pending", activeForm: "Extracting animation"},
271
+ {content: "Extract layout (structure templates)", status: "pending", activeForm: "Extracting layout"},
272
+ {content: "Assemble UI prototypes", status: "pending", activeForm: "Assembling UI"},
273
+ {content: session_id ? "Integrate design system" : "Standalone completion", status: "pending", activeForm: "Completing"}
274
+ ]})
275
+ ```
276
+
277
+ ### Phase 0.5: Code Import & Completeness Assessment (Conditional)
278
+
279
+ **Step 0.5.1: Execute** - Import design system from code files
280
+
281
+ ```javascript
282
+ # Only execute if code files detected
283
+ IF design_source == "hybrid":
284
+ REPORT: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
285
+ REPORT: "🔍 Phase 0.5: Code Import & Analysis"
286
+ REPORT: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
287
+ REPORT: " → Source: {code_base_path}"
288
+ REPORT: " → Mode: Hybrid (Web + Code)"
289
+
290
+ command = "/workflow:ui-design:import-from-code --design-id \"{design_id}\" " +
291
+ "--source \"{code_base_path}\""
292
+
293
+ TRY:
294
+ # SlashCommand execute ATTACHES import-from-code's tasks to current workflow
295
+ # Orchestrator will EXECUTE these attached tasks itself:
296
+ # - Phase 0: Discover and categorize code files
297
+ # - Phase 1.1-1.3: Style/Animation/Layout Agent extraction
298
+ SlashCommand(command)
299
+ CATCH error:
300
+ WARN: "Code import failed: {error}"
301
+ WARN: "Falling back to web-only mode"
302
+ design_source = "web"
303
+
304
+ IF design_source == "hybrid":
305
+ # Check file existence and assess completeness
306
+ style_exists = exists("{base_path}/style-extraction/style-1/design-tokens.json")
307
+ animation_exists = exists("{base_path}/animation-extraction/animation-tokens.json")
308
+ layout_count = bash(ls {base_path}/layout-extraction/layout-*.json 2>/dev/null | wc -l)
309
+ layout_exists = (layout_count > 0)
310
+
311
+ style_complete = false
312
+ animation_complete = false
313
+ layout_complete = false
314
+ missing_categories = []
315
+
316
+ # Style completeness check
317
+ IF style_exists:
318
+ tokens = Read("{base_path}/style-extraction/style-1/design-tokens.json")
319
+ style_complete = (
320
+ tokens.colors?.brand && tokens.colors?.surface &&
321
+ tokens.typography?.font_family && tokens.spacing &&
322
+ Object.keys(tokens.colors.brand || {}).length >= 3 &&
323
+ Object.keys(tokens.spacing || {}).length >= 8
324
+ )
325
+ IF NOT style_complete AND tokens._metadata?.completeness?.missing_categories:
326
+ missing_categories.extend(tokens._metadata.completeness.missing_categories)
327
+ ELSE:
328
+ missing_categories.push("style tokens")
329
+
330
+ # Animation completeness check
331
+ IF animation_exists:
332
+ anim = Read("{base_path}/animation-extraction/animation-tokens.json")
333
+ animation_complete = (
334
+ anim.duration && anim.easing &&
335
+ Object.keys(anim.duration || {}).length >= 3 &&
336
+ Object.keys(anim.easing || {}).length >= 3
337
+ )
338
+ IF NOT animation_complete AND anim._metadata?.completeness?.missing_items:
339
+ missing_categories.extend(anim._metadata.completeness.missing_items)
340
+ ELSE:
341
+ missing_categories.push("animation tokens")
342
+
343
+ # Layout completeness check
344
+ IF layout_exists:
345
+ # Read first layout file to verify structure
346
+ first_layout = bash(ls {base_path}/layout-extraction/layout-*.json 2>/dev/null | head -1)
347
+ layout_data = Read(first_layout)
348
+ layout_complete = (
349
+ layout_count >= 1 &&
350
+ layout_data.template?.dom_structure &&
351
+ layout_data.template?.css_layout_rules
352
+ )
353
+ IF NOT layout_complete:
354
+ missing_categories.push("complete layout structure")
355
+ ELSE:
356
+ missing_categories.push("layout templates")
357
+
358
+ # Report code analysis results
359
+ IF len(missing_categories) > 0:
360
+ REPORT: ""
361
+ REPORT: "⚠️ Code Analysis Partial"
362
+ REPORT: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
363
+ REPORT: "Missing Design Elements:"
364
+ FOR category IN missing_categories:
365
+ REPORT: " • {category}"
366
+ REPORT: ""
367
+ REPORT: "Web screenshots will supplement missing elements"
368
+ REPORT: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
369
+ ELSE:
370
+ REPORT: ""
371
+ REPORT: "✅ Code Analysis Complete"
372
+ REPORT: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
373
+ REPORT: "All design elements extracted from code"
374
+ REPORT: "Web screenshots will verify and enhance findings"
375
+ REPORT: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
376
+
377
+ STORE: style_complete, animation_complete, layout_complete
378
+
379
+ TodoWrite(mark_completed: "Initialize and detect design source",
380
+ mark_in_progress: "Extract style (complete design systems)")
381
+ ```
382
+
383
+ ### Phase 2: Style Extraction
384
+
385
+ **Step 2.1: Execute** - Extract style design system
386
+
387
+ ```javascript
388
+ # Determine if style extraction needed
389
+ skip_style = (design_source == "code_only" AND style_complete)
390
+
391
+ IF skip_style:
392
+ REPORT: "✅ Phase 2: Style (Using Code Import)"
393
+ ELSE:
394
+ REPORT: "🚀 Phase 2: Style Extraction"
395
+
396
+ # Build command with available inputs
397
+ command_parts = [f"/workflow:ui-design:style-extract --design-id \"{design_id}\""]
398
+
399
+ IF images_input:
400
+ command_parts.append(f"--images \"{images_input}\"")
401
+
402
+ IF prompt_text:
403
+ extraction_prompt = prompt_text
404
+ IF design_source == "hybrid":
405
+ extraction_prompt = f"{prompt_text} (supplement code-imported tokens)"
406
+ command_parts.append(f"--prompt \"{extraction_prompt}\"")
407
+
408
+ command_parts.extend(["--variants 1", "--refine", "--interactive"])
409
+
410
+ extract_command = " ".join(command_parts)
411
+
412
+ # SlashCommand execute ATTACHES style-extract's tasks to current workflow
413
+ # Orchestrator will EXECUTE these attached tasks itself
414
+ SlashCommand(extract_command)
415
+
416
+ # After executing all attached tasks, collapse them into phase summary
417
+ TodoWrite(mark_completed: "Extract style", mark_in_progress: "Extract animation")
418
+ ```
419
+
420
+ ### Phase 2.3: Animation Extraction
421
+
422
+ **Step 2.3.1: Execute** - Extract animation patterns
423
+
424
+ ```javascript
425
+ skip_animation = (design_source == "code_only" AND animation_complete)
426
+
427
+ IF skip_animation:
428
+ REPORT: "✅ Phase 2.3: Animation (Using Code Import)"
429
+ ELSE:
430
+ REPORT: "🚀 Phase 2.3: Animation Extraction"
431
+
432
+ # Build command with available inputs
433
+ command_parts = [f"/workflow:ui-design:animation-extract --design-id \"{design_id}\""]
434
+
435
+ IF images_input:
436
+ command_parts.append(f"--images \"{images_input}\"")
437
+
438
+ IF prompt_text:
439
+ command_parts.append(f"--prompt \"{prompt_text}\"")
440
+
441
+ command_parts.extend(["--refine", "--interactive"])
442
+
443
+ animation_extract_command = " ".join(command_parts)
444
+
445
+ # SlashCommand execute ATTACHES animation-extract's tasks to current workflow
446
+ # Orchestrator will EXECUTE these attached tasks itself
447
+ SlashCommand(animation_extract_command)
448
+
449
+ # After executing all attached tasks, collapse them into phase summary
450
+ TodoWrite(mark_completed: "Extract animation", mark_in_progress: "Extract layout")
451
+ ```
452
+
453
+ ### Phase 2.5: Layout Extraction
454
+
455
+ **Step 2.5.1: Execute** - Extract layout templates
456
+
457
+ ```javascript
458
+ skip_layout = (design_source == "code_only" AND layout_complete)
459
+
460
+ IF skip_layout:
461
+ REPORT: "✅ Phase 2.5: Layout (Using Code Import)"
462
+ ELSE:
463
+ REPORT: "🚀 Phase 2.5: Layout Extraction"
464
+
465
+ # Build command with available inputs
466
+ command_parts = [f"/workflow:ui-design:layout-extract --design-id \"{design_id}\""]
467
+
468
+ IF images_input:
469
+ command_parts.append(f"--images \"{images_input}\"")
470
+
471
+ IF prompt_text:
472
+ command_parts.append(f"--prompt \"{prompt_text}\"")
473
+
474
+ # Default target if not specified
475
+ command_parts.append("--targets \"home\"")
476
+ command_parts.extend(["--variants 1", "--refine", "--interactive"])
477
+
478
+ layout_extract_command = " ".join(command_parts)
479
+
480
+ # SlashCommand execute ATTACHES layout-extract's tasks to current workflow
481
+ # Orchestrator will EXECUTE these attached tasks itself
482
+ SlashCommand(layout_extract_command)
483
+
484
+ # After executing all attached tasks, collapse them into phase summary
485
+ TodoWrite(mark_completed: "Extract layout", mark_in_progress: "Assemble UI")
486
+ ```
487
+
488
+ ### Phase 3: UI Assembly
489
+
490
+ **Step 3.1: Execute** - Assemble UI prototypes from design tokens and layout templates
491
+
492
+ ```javascript
493
+ REPORT: "🚀 Phase 3: UI Assembly"
494
+ generate_command = f"/workflow:ui-design:generate --design-id \"{design_id}\""
495
+
496
+ # SlashCommand execute ATTACHES generate's tasks to current workflow
497
+ # Orchestrator will EXECUTE these attached tasks itself
498
+ SlashCommand(generate_command)
499
+
500
+ # After executing all attached tasks, collapse them into phase summary
501
+ TodoWrite(mark_completed: "Assemble UI", mark_in_progress: session_id ? "Integrate design system" : "Completion")
502
+ ```
503
+
504
+ ### Phase 4: Design System Integration
505
+
506
+ **Step 4.1: Execute** - Integrate design system into workflow session
507
+
508
+ ```javascript
509
+ IF session_id:
510
+ REPORT: "🚀 Phase 4: Design System Integration"
511
+ update_command = f"/workflow:ui-design:update --session {session_id}"
512
+
513
+ # SlashCommand execute ATTACHES update's tasks to current workflow
514
+ # Orchestrator will EXECUTE these attached tasks itself
515
+ SlashCommand(update_command)
516
+
517
+ # Update metadata
518
+ metadata = Read("{base_path}/.run-metadata.json")
519
+ metadata.status = "completed"
520
+ metadata.completion_time = current_timestamp()
521
+ metadata.outputs = {
522
+ "screenshots": f"{base_path}/screenshots/",
523
+ "style_system": f"{base_path}/style-extraction/style-1/",
524
+ "prototypes": f"{base_path}/prototypes/",
525
+ "captured_count": captured_count,
526
+ "generated_count": generated_count
527
+ }
528
+ Write("{base_path}/.run-metadata.json", JSON.stringify(metadata, null, 2))
529
+
530
+ TodoWrite(mark_completed: session_id ? "Integrate design system" : "Standalone completion")
531
+
532
+ # Mark all phases complete
533
+ TodoWrite({todos: [
534
+ {content: "Initialize and parse url-map", status: "completed", activeForm: "Initializing"},
535
+ {content: capture_mode == "batch" ? f"Batch screenshot capture ({len(target_names)} targets)" : f"Deep exploration (depth {depth})", status: "completed", activeForm: "Capturing"},
536
+ {content: "Extract style (complete design systems)", status: "completed", activeForm: "Extracting"},
537
+ {content: "Extract animation (CSS auto mode)", status: "completed", activeForm: "Extracting animation"},
538
+ {content: "Extract layout (structure templates)", status: "completed", activeForm: "Extracting layout"},
539
+ {content: f"Assemble UI for {len(target_names)} targets", status: "completed", activeForm: "Assembling"},
540
+ {content: session_id ? "Integrate design system" : "Standalone completion", status: "completed", activeForm: "Completing"}
541
+ ]})
542
+ ```
543
+
544
+ ### Phase 4: Completion Report
545
+
546
+ **Completion Message**:
547
+ ```
548
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
549
+ ✅ UI Design Imitate-Auto Complete!
550
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
551
+
552
+ ━━━ 📊 Workflow Summary ━━━
553
+
554
+ Mode: Direct Input ({design_source})
555
+ Session: {session_id or "standalone"}
556
+ Run ID: {run_id}
557
+
558
+ Phase 0 - Input Detection: ✅ {design_source} mode
559
+ {IF design_source == "code_only": "Code files imported" ELSE IF design_source == "hybrid": "Code + visual inputs" ELSE: "Visual inputs"}
560
+
561
+ Phase 2 - Style Extraction: ✅ Production-ready design systems
562
+ Output: style-extraction/style-1/ (design-tokens.json + style-guide.md)
563
+ Quality: WCAG AA compliant, OKLCH colors
564
+
565
+ Phase 2.3 - Animation Extraction: ✅ Animation tokens
566
+ Output: animation-extraction/ (animation-tokens.json + animation-guide.md)
567
+
568
+ Phase 2.5 - Layout Extraction: ✅ Structure templates
569
+ Templates: {template_count} layout structures
570
+
571
+ Phase 3 - UI Assembly: ✅ {generated_count} prototypes assembled
572
+ Configuration: 1 style × 1 layout × {generated_count} pages
573
+
574
+ Phase 4 - Integration: {IF session_id: "✅ Integrated into session" ELSE: "⏭️ Standalone mode"}
575
+
576
+ ━━━ 📂 Output Structure ━━━
577
+
578
+ {base_path}/
579
+ ├── style-extraction/ # Production-ready design systems
580
+ │ └── style-1/
581
+ │ ├── design-tokens.json
582
+ │ └── style-guide.md
583
+ ├── animation-extraction/ # CSS animations and transitions
584
+ │ ├── animation-tokens.json
585
+ │ └── animation-guide.md
586
+ ├── layout-extraction/ # Structure templates
587
+ │ └── layout-home-1.json # Layout templates
588
+ └── prototypes/ # {generated_count} HTML/CSS files
589
+ ├── home-style-1-layout-1.html + .css
590
+ ├── compare.html # Interactive preview
591
+ └── index.html # Quick navigation
592
+
593
+ ━━━ ⚡ Performance ━━━
594
+
595
+ Total workflow time: ~{estimate_total_time()} minutes
596
+ Style extraction: ~{extract_time}
597
+ Animation extraction: ~{animation_time}
598
+ Layout extraction: ~{layout_time}
599
+ UI generation: ~{generate_time}
600
+
601
+ ━━━ 🌐 Next Steps ━━━
602
+
603
+ 1. Preview prototypes:
604
+ • Interactive matrix: Open {base_path}/prototypes/compare.html
605
+ • Quick navigation: Open {base_path}/prototypes/index.html
606
+
607
+ {IF session_id:
608
+ 2. Create implementation tasks:
609
+ /workflow:plan --session {session_id}
610
+
611
+ 3. Generate tests (if needed):
612
+ /workflow:test-gen {session_id}
613
+ ELSE:
614
+ 2. To integrate into a workflow session:
615
+ • Create session: /workflow:session:start
616
+ • Copy design-tokens.json to session artifacts
617
+
618
+ 3. Explore prototypes in {base_path}/prototypes/ directory
619
+ }
620
+
621
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
622
+ ```
623
+
624
+ ## TodoWrite Pattern
625
+
626
+ ```javascript
627
+ // Initialize IMMEDIATELY at start of Phase 0 to track multi-phase execution (6 orchestrator-level tasks)
628
+ TodoWrite({todos: [
629
+ {content: "Phase 0: Initialize and Detect Design Source", status: "in_progress", activeForm: "Initializing"},
630
+ {content: "Phase 2: Style Extraction", status: "pending", activeForm: "Extracting style"},
631
+ {content: "Phase 2.3: Animation Extraction", status: "pending", activeForm: "Extracting animation"},
632
+ {content: "Phase 2.5: Layout Extraction", status: "pending", activeForm: "Extracting layout"},
633
+ {content: "Phase 3: UI Assembly", status: "pending", activeForm: "Assembling UI"},
634
+ {content: "Phase 4: Design System Integration", status: "pending", activeForm: "Integrating"}
635
+ ]})
636
+
637
+ // ⚠️ CRITICAL: Dynamic TodoWrite task attachment strategy:
638
+ //
639
+ // **Key Concept**: SlashCommand execute ATTACHES tasks to current workflow.
640
+ // Orchestrator EXECUTES these attached tasks itself, not waiting for external completion.
641
+ //
642
+ // Phase 2-4 SlashCommand Execute Pattern (when tasks are attached):
643
+ // Example - Phase 2 with sub-tasks:
644
+ // [
645
+ // {"content": "Phase 0: Initialize and Detect Design Source", "status": "completed", "activeForm": "Initializing"},
646
+ // {"content": "Phase 2: Style Extraction", "status": "in_progress", "activeForm": "Extracting style"},
647
+ // {"content": " → Analyze design references", "status": "in_progress", "activeForm": "Analyzing references"},
648
+ // {"content": " → Generate design tokens", "status": "pending", "activeForm": "Generating tokens"},
649
+ // {"content": " → Create style guide", "status": "pending", "activeForm": "Creating guide"},
650
+ // {"content": "Phase 2.3: Animation Extraction", "status": "pending", "activeForm": "Extracting animation"},
651
+ // ...
652
+ // ]
653
+ //
654
+ // After sub-tasks complete, COLLAPSE back to:
655
+ // [
656
+ // {"content": "Phase 0: Initialize and Detect Design Source", "status": "completed", "activeForm": "Initializing"},
657
+ // {"content": "Phase 2: Style Extraction", "status": "completed", "activeForm": "Extracting style"},
658
+ // {"content": "Phase 2.3: Animation Extraction", "status": "in_progress", "activeForm": "Extracting animation"},
659
+ // ...
660
+ // ]
661
+ //
662
+ ```
663
+
664
+ ## Error Handling
665
+
666
+ ### Pre-execution Checks
667
+ - **Input validation**: Must provide at least one of --images or --prompt
668
+ - **Design source detection**: Error if no valid inputs found
669
+ - **Code import failure**: Fallback to visual-only mode in hybrid, error in code-only mode
670
+
671
+ ### Phase-Specific Errors
672
+ - **Code import failure (Phase 0.5)**:
673
+ - code_only mode: Terminate with clear error
674
+ - hybrid mode: Warn and fallback to visual-only mode
675
+
676
+ - **Style extraction failure (Phase 2)**:
677
+ - If extract fails: Terminate with clear error
678
+ - If design-tokens.json missing: Terminate with debugging info
679
+
680
+ - **Animation extraction failure (Phase 2.3)**:
681
+ - Non-critical: Warn but continue
682
+ - Can proceed without animation tokens
683
+
684
+ - **Layout extraction failure (Phase 2.5)**:
685
+ - If extract fails: Terminate with error
686
+ - Need layout templates for assembly
687
+
688
+ - **UI generation failure (Phase 3)**:
689
+ - If generate fails: Terminate with error
690
+ - If generated_count < expected: Warn but proceed
691
+
692
+ - **Integration failure (Phase 4)**:
693
+ - Non-blocking: Warn but don't terminate
694
+ - Prototypes already available
695
+
696
+ ### Recovery Strategies
697
+ - **Code import failure**: Automatic fallback to visual-only in hybrid mode
698
+ - **Generate failure**: Report specific failures, user can re-generate individually
699
+ - **Integration failure**: Prototypes still usable, can integrate manually
700
+
701
+ ## Integration Points
702
+
703
+ - **Input**: `--images` (glob pattern) and/or `--prompt` (text/file paths) + optional `--session`
704
+ - **Output**: Complete design system in `{base_path}/` (style-extraction, layout-extraction, prototypes)
705
+ - **Sub-commands Executeed**:
706
+ 1. `/workflow:ui-design:import-from-code` (Phase 0.5, conditional - if code files detected)
707
+ 2. `/workflow:ui-design:style-extract` (Phase 2 - complete design systems)
708
+ 3. `/workflow:ui-design:animation-extract` (Phase 2.3 - animation tokens)
709
+ 4. `/workflow:ui-design:layout-extract` (Phase 2.5 - structure templates)
710
+ 5. `/workflow:ui-design:generate` (Phase 3 - pure assembly)
711
+ 6. `/workflow:ui-design:update` (Phase 4, if --session)
712
+
713
+ ## Completion Output
714
+
715
+ ```
716
+ ✅ UI Design Imitate-Auto Workflow Complete!
717
+
718
+ Mode: Direct Input ({design_source}) | Session: {session_id or "standalone"}
719
+ Run ID: {run_id}
720
+
721
+ Phase 0 - Input Detection: ✅ {design_source} mode
722
+ Phase 2 - Style Extraction: ✅ Production-ready design systems
723
+ Phase 2.3 - Animation Extraction: ✅ Animation tokens
724
+ Phase 2.5 - Layout Extraction: ✅ Structure templates
725
+ Phase 3 - UI Assembly: ✅ {generated_count} prototypes assembled
726
+ Phase 4 - Integration: {IF session_id: "✅ Integrated" ELSE: "⏭️ Standalone"}
727
+
728
+ Design Quality:
729
+ ✅ Token-Driven Styling: 100% var() usage
730
+ ✅ Production-Ready: WCAG AA compliant, OKLCH colors
731
+ ✅ Multi-Source: Code import + visual extraction
732
+
733
+ 📂 {base_path}/
734
+ ├── style-extraction/style-1/ # Production-ready design system
735
+ ├── animation-extraction/ # Animation tokens
736
+ ├── layout-extraction/ # Structure templates
737
+ └── prototypes/ # {generated_count} HTML/CSS files
738
+
739
+ 🌐 Preview: {base_path}/prototypes/compare.html
740
+ - Interactive preview
741
+ - Design token driven
742
+ - {generated_count} assembled prototypes
743
+
744
+ Next: [/workflow:execute] OR [Open compare.html → /workflow:plan]
745
+ ```