claude-code-workflow 7.2.26 → 7.2.28

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 (408) hide show
  1. package/.ccw/specs/architecture-constraints.md +5 -0
  2. package/.claude/skills/_shared/SKILL-DESIGN-SPEC.md +140 -0
  3. package/.claude/skills/investigate/SKILL.md +110 -0
  4. package/.claude/skills/investigate/phases/01-root-cause-investigation.md +132 -0
  5. package/.claude/skills/investigate/phases/02-pattern-analysis.md +126 -0
  6. package/.claude/skills/investigate/phases/03-hypothesis-testing.md +177 -0
  7. package/.claude/skills/investigate/phases/04-implementation.md +139 -0
  8. package/.claude/skills/investigate/phases/05-verification-report.md +153 -0
  9. package/.claude/skills/investigate/specs/debug-report-format.md +226 -0
  10. package/.claude/skills/investigate/specs/iron-law.md +101 -0
  11. package/.claude/skills/security-audit/SKILL.md +125 -0
  12. package/.claude/skills/security-audit/phases/01-supply-chain-scan.md +139 -0
  13. package/.claude/skills/security-audit/phases/02-owasp-review.md +156 -0
  14. package/.claude/skills/security-audit/phases/03-threat-modeling.md +180 -0
  15. package/.claude/skills/security-audit/phases/04-report-tracking.md +177 -0
  16. package/.claude/skills/security-audit/specs/owasp-checklist.md +442 -0
  17. package/.claude/skills/security-audit/specs/scoring-gates.md +141 -0
  18. package/.claude/skills/ship/SKILL.md +105 -0
  19. package/.claude/skills/ship/phases/01-preflight-checks.md +121 -0
  20. package/.claude/skills/ship/phases/02-code-review.md +137 -0
  21. package/.claude/skills/ship/phases/03-version-bump.md +171 -0
  22. package/.claude/skills/ship/phases/04-changelog-commit.md +167 -0
  23. package/.claude/skills/ship/phases/05-pr-creation.md +163 -0
  24. package/.claude/skills/skill-generator/templates/sequential-phase.md +10 -0
  25. package/.claude/skills/skill-generator/templates/skill-md.md +4 -0
  26. package/.claude/skills/team-arch-opt/SKILL.md +1 -1
  27. package/.claude/skills/team-arch-opt/roles/coordinator/commands/monitor.md +3 -1
  28. package/.claude/skills/team-arch-opt/roles/refactorer/role.md +3 -1
  29. package/.claude/skills/team-arch-opt/specs/team-config.json +2 -2
  30. package/.claude/skills/team-coordinate/SKILL.md +4 -3
  31. package/.claude/skills/team-coordinate/roles/coordinator/commands/analyze-task.md +1 -1
  32. package/.claude/skills/team-coordinate/roles/coordinator/commands/dispatch.md +3 -2
  33. package/.claude/skills/team-coordinate/roles/coordinator/commands/monitor.md +3 -2
  34. package/.claude/skills/team-coordinate/roles/coordinator/role.md +16 -15
  35. package/.claude/skills/team-coordinate/specs/pipelines.md +7 -4
  36. package/.claude/skills/team-coordinate/specs/role-spec-template.md +1 -0
  37. package/.claude/skills/team-interactive-craft/SKILL.md +127 -0
  38. package/.claude/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
  39. package/.claude/skills/team-interactive-craft/roles/builder/role.md +216 -0
  40. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
  41. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +192 -0
  42. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +183 -0
  43. package/.claude/skills/team-interactive-craft/roles/coordinator/role.md +166 -0
  44. package/.claude/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
  45. package/.claude/skills/team-interactive-craft/roles/researcher/role.md +131 -0
  46. package/.claude/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
  47. package/.claude/skills/team-interactive-craft/specs/pipelines.md +85 -0
  48. package/.claude/skills/team-interactive-craft/specs/team-config.json +105 -0
  49. package/.claude/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
  50. package/.claude/skills/team-lifecycle-v4/SKILL.md +1 -1
  51. package/.claude/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +14 -2
  52. package/.claude/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +24 -2
  53. package/.claude/skills/team-lifecycle-v4/roles/executor/role.md +3 -1
  54. package/.claude/skills/team-motion-design/SKILL.md +129 -0
  55. package/.claude/skills/team-motion-design/roles/animator/role.md +194 -0
  56. package/.claude/skills/team-motion-design/roles/choreographer/role.md +164 -0
  57. package/.claude/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
  58. package/.claude/skills/team-motion-design/roles/coordinator/commands/dispatch.md +203 -0
  59. package/.claude/skills/team-motion-design/roles/coordinator/commands/monitor.md +184 -0
  60. package/.claude/skills/team-motion-design/roles/coordinator/role.md +167 -0
  61. package/.claude/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
  62. package/.claude/skills/team-motion-design/roles/motion-tester/role.md +175 -0
  63. package/.claude/skills/team-motion-design/specs/gpu-constraints.md +114 -0
  64. package/.claude/skills/team-motion-design/specs/motion-tokens.md +128 -0
  65. package/.claude/skills/team-motion-design/specs/pipelines.md +74 -0
  66. package/.claude/skills/team-motion-design/specs/reduced-motion.md +129 -0
  67. package/.claude/skills/team-motion-design/specs/team-config.json +99 -0
  68. package/.claude/skills/team-perf-opt/SKILL.md +1 -1
  69. package/.claude/skills/team-perf-opt/roles/optimizer/role.md +3 -1
  70. package/.claude/skills/team-perf-opt/specs/team-config.json +2 -2
  71. package/.claude/skills/team-quality-assurance/SKILL.md +1 -1
  72. package/.claude/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +4 -2
  73. package/.claude/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +4 -2
  74. package/.claude/skills/team-quality-assurance/roles/executor/role.md +3 -1
  75. package/.claude/skills/team-testing/SKILL.md +1 -1
  76. package/.claude/skills/team-testing/roles/coordinator/commands/dispatch.md +5 -2
  77. package/.claude/skills/team-testing/roles/coordinator/commands/monitor.md +4 -2
  78. package/.claude/skills/team-testing/roles/executor/role.md +3 -1
  79. package/.claude/skills/team-ui-polish/SKILL.md +127 -0
  80. package/.claude/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
  81. package/.claude/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +194 -0
  82. package/.claude/skills/team-ui-polish/roles/coordinator/commands/monitor.md +180 -0
  83. package/.claude/skills/team-ui-polish/roles/coordinator/role.md +170 -0
  84. package/.claude/skills/team-ui-polish/roles/diagnostician/role.md +160 -0
  85. package/.claude/skills/team-ui-polish/roles/optimizer/role.md +225 -0
  86. package/.claude/skills/team-ui-polish/roles/scanner/role.md +356 -0
  87. package/.claude/skills/team-ui-polish/roles/verifier/role.md +142 -0
  88. package/.claude/skills/team-ui-polish/specs/anti-patterns.md +141 -0
  89. package/.claude/skills/team-ui-polish/specs/design-standards.md +356 -0
  90. package/.claude/skills/team-ui-polish/specs/fix-strategies.md +235 -0
  91. package/.claude/skills/team-ui-polish/specs/pipelines.md +81 -0
  92. package/.claude/skills/team-ui-polish/specs/scoring-guide.md +162 -0
  93. package/.claude/skills/team-ui-polish/specs/team-config.json +73 -0
  94. package/.claude/skills/team-uidesign/SKILL.md +6 -1
  95. package/.claude/skills/team-uidesign/roles/designer/role.md +28 -4
  96. package/.claude/skills/team-uidesign/roles/implementer/role.md +25 -3
  97. package/.claude/skills/team-uidesign/roles/researcher/role.md +21 -2
  98. package/.claude/skills/team-uidesign/roles/reviewer/role.md +19 -17
  99. package/.claude/skills/team-uidesign/specs/anti-patterns.md +211 -0
  100. package/.claude/skills/team-uidesign/specs/design-standards.md +329 -0
  101. package/.claude/skills/team-uidesign/specs/scoring-guide.md +114 -0
  102. package/.claude/skills/team-uidesign/specs/team-config.json +1 -1
  103. package/.claude/skills/team-uidesign/specs/ux-writing.md +86 -0
  104. package/.claude/skills/team-ux-improve/SKILL.md +3 -0
  105. package/.claude/skills/team-ux-improve/roles/designer/role.md +30 -0
  106. package/.claude/skills/team-ux-improve/roles/diagnoser/role.md +16 -1
  107. package/.claude/skills/team-ux-improve/roles/scanner/role.md +43 -1
  108. package/.claude/skills/team-ux-improve/specs/anti-patterns.md +103 -0
  109. package/.claude/skills/team-ux-improve/specs/design-standards.md +54 -0
  110. package/.claude/skills/team-ux-improve/specs/heuristics.md +88 -0
  111. package/.claude/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +40 -8
  112. package/.claude/skills/team-ux-improve/wisdom/patterns/state-management.md +32 -12
  113. package/.claude/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +35 -11
  114. package/.claude/skills/team-ux-improve/wisdom/principles/general-ux.md +36 -9
  115. package/.claude/skills/team-visual-a11y/SKILL.md +143 -0
  116. package/.claude/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
  117. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
  118. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +250 -0
  119. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +204 -0
  120. package/.claude/skills/team-visual-a11y/roles/coordinator/role.md +169 -0
  121. package/.claude/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
  122. package/.claude/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
  123. package/.claude/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
  124. package/.claude/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
  125. package/.claude/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
  126. package/.claude/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
  127. package/.claude/skills/team-visual-a11y/specs/pipelines.md +98 -0
  128. package/.claude/skills/team-visual-a11y/specs/team-config.json +109 -0
  129. package/.claude/skills/team-visual-a11y/specs/typography-scale.md +165 -0
  130. package/.claude/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
  131. package/.codex/skills/investigate/agents/investigator.md +392 -0
  132. package/.codex/skills/investigate/orchestrator.md +362 -0
  133. package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
  134. package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
  135. package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
  136. package/.codex/skills/investigate/phases/04-implementation.md +195 -0
  137. package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
  138. package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
  139. package/.codex/skills/security-audit/orchestrator.md +384 -0
  140. package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
  141. package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
  142. package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
  143. package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
  144. package/.codex/skills/ship/agents/ship-operator.md +318 -0
  145. package/.codex/skills/ship/orchestrator.md +426 -0
  146. package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
  147. package/.codex/skills/ship/phases/02-code-review.md +228 -0
  148. package/.codex/skills/ship/phases/03-version-bump.md +259 -0
  149. package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
  150. package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
  151. package/.codex/skills/team-interactive-craft/SKILL.md +220 -0
  152. package/.codex/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
  153. package/.codex/skills/team-interactive-craft/roles/builder/role.md +216 -0
  154. package/.codex/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
  155. package/.codex/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +162 -0
  156. package/.codex/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +233 -0
  157. package/.codex/skills/team-interactive-craft/roles/coordinator/role.md +209 -0
  158. package/.codex/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
  159. package/.codex/skills/team-interactive-craft/roles/researcher/role.md +131 -0
  160. package/.codex/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
  161. package/.codex/skills/team-interactive-craft/specs/pipelines.md +85 -0
  162. package/.codex/skills/team-interactive-craft/specs/team-config.json +105 -0
  163. package/.codex/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
  164. package/.codex/skills/team-motion-design/SKILL.md +222 -0
  165. package/.codex/skills/team-motion-design/roles/animator/role.md +194 -0
  166. package/.codex/skills/team-motion-design/roles/choreographer/role.md +164 -0
  167. package/.codex/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
  168. package/.codex/skills/team-motion-design/roles/coordinator/commands/dispatch.md +168 -0
  169. package/.codex/skills/team-motion-design/roles/coordinator/commands/monitor.md +242 -0
  170. package/.codex/skills/team-motion-design/roles/coordinator/role.md +210 -0
  171. package/.codex/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
  172. package/.codex/skills/team-motion-design/roles/motion-tester/role.md +175 -0
  173. package/.codex/skills/team-motion-design/specs/gpu-constraints.md +114 -0
  174. package/.codex/skills/team-motion-design/specs/motion-tokens.md +128 -0
  175. package/.codex/skills/team-motion-design/specs/pipelines.md +74 -0
  176. package/.codex/skills/team-motion-design/specs/reduced-motion.md +129 -0
  177. package/.codex/skills/team-motion-design/specs/team-config.json +99 -0
  178. package/.codex/skills/team-ui-polish/SKILL.md +218 -0
  179. package/.codex/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
  180. package/.codex/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +167 -0
  181. package/.codex/skills/team-ui-polish/roles/coordinator/commands/monitor.md +230 -0
  182. package/.codex/skills/team-ui-polish/roles/coordinator/role.md +213 -0
  183. package/.codex/skills/team-ui-polish/roles/diagnostician/role.md +164 -0
  184. package/.codex/skills/team-ui-polish/roles/optimizer/role.md +229 -0
  185. package/.codex/skills/team-ui-polish/roles/scanner/role.md +360 -0
  186. package/.codex/skills/team-ui-polish/roles/verifier/role.md +142 -0
  187. package/.codex/skills/team-ui-polish/specs/anti-patterns.md +141 -0
  188. package/.codex/skills/team-ui-polish/specs/design-standards.md +356 -0
  189. package/.codex/skills/team-ui-polish/specs/fix-strategies.md +235 -0
  190. package/.codex/skills/team-ui-polish/specs/pipelines.md +81 -0
  191. package/.codex/skills/team-ui-polish/specs/scoring-guide.md +162 -0
  192. package/.codex/skills/team-ui-polish/specs/team-config.json +73 -0
  193. package/.codex/skills/team-visual-a11y/SKILL.md +319 -0
  194. package/.codex/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
  195. package/.codex/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
  196. package/.codex/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +188 -0
  197. package/.codex/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +281 -0
  198. package/.codex/skills/team-visual-a11y/roles/coordinator/role.md +213 -0
  199. package/.codex/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
  200. package/.codex/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
  201. package/.codex/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
  202. package/.codex/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
  203. package/.codex/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
  204. package/.codex/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
  205. package/.codex/skills/team-visual-a11y/specs/pipelines.md +98 -0
  206. package/.codex/skills/team-visual-a11y/specs/team-config.json +109 -0
  207. package/.codex/skills/team-visual-a11y/specs/typography-scale.md +165 -0
  208. package/.codex/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
  209. package/README.md +8 -0
  210. package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
  211. package/ccw/dist/core/hooks/hook-templates.js +114 -1
  212. package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
  213. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  214. package/ccw/dist/core/routes/cli-routes.js +34 -0
  215. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  216. package/ccw/dist/core/routes/system-routes.js +2 -2
  217. package/ccw/dist/core/routes/system-routes.js.map +1 -1
  218. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-BjP1ydDR.js} +2 -2
  219. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-BjP1ydDR.js.map} +1 -1
  220. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-CAX3xqMf.js} +2 -2
  221. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-CAX3xqMf.js.map} +1 -1
  222. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-CtWlmztq.js} +2 -2
  223. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-CtWlmztq.js.map} +1 -1
  224. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-hR4a-eLX.js} +2 -2
  225. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-hR4a-eLX.js.map} +1 -1
  226. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-DzNPkFN9.js} +2 -2
  227. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-DzNPkFN9.js.map} +1 -1
  228. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BPEGN4TT.js} +2 -2
  229. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BPEGN4TT.js.map} +1 -1
  230. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cf0r2RHY.js} +2 -2
  231. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cf0r2RHY.js.map} +1 -1
  232. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DEm1rJ4h.js} +2 -2
  233. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DEm1rJ4h.js.map} +1 -1
  234. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-BpeWw8HO.js} +2 -2
  235. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-BpeWw8HO.js.map} +1 -1
  236. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-BEsmh2vF.js} +2 -2
  237. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-BEsmh2vF.js.map} +1 -1
  238. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-B30SFdtU.js} +2 -2
  239. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-B30SFdtU.js.map} +1 -1
  240. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-BVvMpg1O.js} +2 -2
  241. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-BVvMpg1O.js.map} +1 -1
  242. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-CL73dHbh.js} +2 -2
  243. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-CL73dHbh.js.map} +1 -1
  244. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-BL-28lMZ.js} +2 -2
  245. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-BL-28lMZ.js.map} +1 -1
  246. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BzZDciHZ.js} +2 -2
  247. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BzZDciHZ.js.map} +1 -1
  248. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-CDp6-d8P.js} +2 -2
  249. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-CDp6-d8P.js.map} +1 -1
  250. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-fZY_7O9n.js} +2 -2
  251. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-fZY_7O9n.js.map} +1 -1
  252. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-4LJeC9bq.js} +2 -2
  253. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-4LJeC9bq.js.map} +1 -1
  254. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-Bpigrbhw.js} +2 -2
  255. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-Bpigrbhw.js.map} +1 -1
  256. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-BP0zJc1R.js} +2 -2
  257. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-BP0zJc1R.js.map} +1 -1
  258. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-CSt2oVKQ.js} +2 -2
  259. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-CSt2oVKQ.js.map} +1 -1
  260. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-B-xaMA0w.js} +2 -2
  261. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-B-xaMA0w.js.map} +1 -1
  262. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-CJqo_7DY.js} +2 -2
  263. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-CJqo_7DY.js.map} +1 -1
  264. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-ibZeQA-Y.js} +2 -2
  265. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-ibZeQA-Y.js.map} +1 -1
  266. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-DgJ4ctPQ.js} +2 -2
  267. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-DgJ4ctPQ.js.map} +1 -1
  268. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-Cit0Yq0D.js} +2 -2
  269. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-Cit0Yq0D.js.map} +1 -1
  270. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-Ce1HDIK0.js} +2 -2
  271. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-Ce1HDIK0.js.map} +1 -1
  272. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-J1KikNrk.js} +2 -2
  273. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-J1KikNrk.js.map} +1 -1
  274. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CdBjTmth.js} +2 -2
  275. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CdBjTmth.js.map} +1 -1
  276. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-B9ZK7LvX.js} +2 -2
  277. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-B9ZK7LvX.js.map} +1 -1
  278. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-CW_nS5UR.js} +2 -2
  279. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-CW_nS5UR.js.map} +1 -1
  280. package/ccw/frontend/dist/assets/{SettingsPage-BPDbXPSM.js → SettingsPage-B2PYzSoO.js} +35 -35
  281. package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +1 -0
  282. package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js → SkillsManagerPage-CTnWrrwp.js} +2 -2
  283. package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js.map → SkillsManagerPage-CTnWrrwp.js.map} +1 -1
  284. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DJpi9XQL.js} +2 -2
  285. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DJpi9XQL.js.map} +1 -1
  286. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-Ac6Ov7uy.js} +2 -2
  287. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-Ac6Ov7uy.js.map} +1 -1
  288. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-DZAAspqR.js} +2 -2
  289. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-DZAAspqR.js.map} +1 -1
  290. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-BJkwfhIZ.js} +2 -2
  291. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-BJkwfhIZ.js.map} +1 -1
  292. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-BJgjxBgb.js} +2 -2
  293. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-BJgjxBgb.js.map} +1 -1
  294. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-D1WekoOy.js} +2 -2
  295. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-D1WekoOy.js.map} +1 -1
  296. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-DxemgIhF.js} +2 -2
  297. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-DxemgIhF.js.map} +1 -1
  298. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-CjS83f1V.js} +2 -2
  299. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-CjS83f1V.js.map} +1 -1
  300. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-B5PUcn8I.js} +2 -2
  301. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-B5PUcn8I.js.map} +1 -1
  302. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-DCc9aPbb.js} +2 -2
  303. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-DCc9aPbb.js.map} +1 -1
  304. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-DOwFtzak.js} +2 -2
  305. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-DOwFtzak.js.map} +1 -1
  306. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-96qH3aFh.js} +2 -2
  307. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-96qH3aFh.js.map} +1 -1
  308. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CCxSuil1.js} +2 -2
  309. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CCxSuil1.js.map} +1 -1
  310. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-CZNSJFdq.js} +2 -2
  311. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-CZNSJFdq.js.map} +1 -1
  312. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-h8xtvw2_.js} +2 -2
  313. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-h8xtvw2_.js.map} +1 -1
  314. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-D3NY0bm6.js} +2 -2
  315. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-D3NY0bm6.js.map} +1 -1
  316. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-Cy2vkc8p.js} +2 -2
  317. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-Cy2vkc8p.js.map} +1 -1
  318. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-Bzq3U1Mx.js} +2 -2
  319. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-Bzq3U1Mx.js.map} +1 -1
  320. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-DwuwPDPi.js} +2 -2
  321. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-DwuwPDPi.js.map} +1 -1
  322. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-q9g-bknU.js} +2 -2
  323. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-q9g-bknU.js.map} +1 -1
  324. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-CL6vb42J.js} +2 -2
  325. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-CL6vb42J.js.map} +1 -1
  326. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-BkrcQBly.js} +2 -2
  327. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-BkrcQBly.js.map} +1 -1
  328. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-BQbwyNeV.js} +2 -2
  329. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-BQbwyNeV.js.map} +1 -1
  330. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-x5_7DrN7.js} +2 -2
  331. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-x5_7DrN7.js.map} +1 -1
  332. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-DTyWXwzf.js} +2 -2
  333. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-DTyWXwzf.js.map} +1 -1
  334. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-80O0kJO7.js} +2 -2
  335. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-80O0kJO7.js.map} +1 -1
  336. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-DDlN2Bwa.js} +2 -2
  337. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-DDlN2Bwa.js.map} +1 -1
  338. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-B9A3Hnrk.js} +2 -2
  339. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-B9A3Hnrk.js.map} +1 -1
  340. package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-Bs80iCX0.js} +2 -2
  341. package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-Bs80iCX0.js.map} +1 -1
  342. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index-mbeo62f8.js} +2 -2
  343. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index-mbeo62f8.js.map} +1 -1
  344. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-rLgoBCfV.js} +3 -3
  345. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-rLgoBCfV.js.map} +1 -1
  346. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-C1niOWJx.js} +2 -2
  347. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-C1niOWJx.js.map} +1 -1
  348. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-BTmI7SUg.js} +2 -2
  349. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-BTmI7SUg.js.map} +1 -1
  350. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CB9HKeuZ.js} +2 -2
  351. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CB9HKeuZ.js.map} +1 -1
  352. package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-koEYiemK.js} +2 -2
  353. package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-koEYiemK.js.map} +1 -1
  354. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-v2_GaLdC.js} +2 -2
  355. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-v2_GaLdC.js.map} +1 -1
  356. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BQNfAqG_.js} +2 -2
  357. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BQNfAqG_.js.map} +1 -1
  358. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-Dzq5LGg9.js} +2 -2
  359. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-Dzq5LGg9.js.map} +1 -1
  360. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CtkoJXcz.js} +2 -2
  361. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CtkoJXcz.js.map} +1 -1
  362. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-CH3smL37.js} +2 -2
  363. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-CH3smL37.js.map} +1 -1
  364. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CZ0aL_yF.js} +2 -2
  365. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CZ0aL_yF.js.map} +1 -1
  366. package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-F2A_J4l6.js} +2 -2
  367. package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-F2A_J4l6.js.map} +1 -1
  368. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-Byxot0YU.js} +2 -2
  369. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-Byxot0YU.js.map} +1 -1
  370. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-JjqhUkpw.js} +2 -2
  371. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-JjqhUkpw.js.map} +1 -1
  372. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2--SuN9rAt.js} +2 -2
  373. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2--SuN9rAt.js.map} +1 -1
  374. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-BbngGB2h.js} +2 -2
  375. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-BbngGB2h.js.map} +1 -1
  376. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-CgrHgZSl.js} +2 -2
  377. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-CgrHgZSl.js.map} +1 -1
  378. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-BU3TQr7Z.js} +2 -2
  379. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-BU3TQr7Z.js.map} +1 -1
  380. package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CKs7nnn3.js} +2 -2
  381. package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CKs7nnn3.js.map} +1 -1
  382. package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-DW5tsDW6.js} +2 -2
  383. package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-DW5tsDW6.js.map} +1 -1
  384. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-BHm7w3ON.js} +2 -2
  385. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-BHm7w3ON.js.map} +1 -1
  386. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-DYR7PWwt.js} +2 -2
  387. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-DYR7PWwt.js.map} +1 -1
  388. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-D0TVgQD_.js} +2 -2
  389. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-D0TVgQD_.js.map} +1 -1
  390. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-DfY8mAP8.js} +2 -2
  391. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-DfY8mAP8.js.map} +1 -1
  392. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-CGusDp0F.js} +2 -2
  393. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-CGusDp0F.js.map} +1 -1
  394. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-CIwh0fF1.js} +2 -2
  395. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-CIwh0fF1.js.map} +1 -1
  396. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-FMyFv39K.js} +2 -2
  397. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-FMyFv39K.js.map} +1 -1
  398. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-B2qhsoTb.js} +2 -2
  399. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-B2qhsoTb.js.map} +1 -1
  400. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-cxKXMBm3.js} +3 -3
  401. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-cxKXMBm3.js.map} +1 -1
  402. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-B-xUT_z-.js} +2 -2
  403. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-B-xUT_z-.js.map} +1 -1
  404. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-DZV_3lPr.js} +2 -2
  405. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-DZV_3lPr.js.map} +1 -1
  406. package/ccw/frontend/dist/index.html +1 -1
  407. package/package.json +105 -105
  408. package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
@@ -0,0 +1,203 @@
1
+ # Command: Dispatch
2
+
3
+ Create the motion design task chain with correct dependencies and structured task descriptions. Supports tokens, component, and page pipeline modes.
4
+
5
+ ## Phase 2: Context Loading
6
+
7
+ | Input | Source | Required |
8
+ |-------|--------|----------|
9
+ | User requirement | From coordinator Phase 1 | Yes |
10
+ | Session folder | From coordinator Phase 2 | Yes |
11
+ | Pipeline mode | From session.json `pipeline` | Yes |
12
+ | Framework config | From session.json `framework` | Yes |
13
+
14
+ 1. Load user requirement and motion scope from session.json
15
+ 2. Load pipeline stage definitions from specs/pipelines.md
16
+ 3. Read `pipeline` and `framework` from session.json
17
+
18
+ ## Phase 3: Task Chain Creation (Mode-Branched)
19
+
20
+ ### Task Description Template
21
+
22
+ Every task description uses structured format:
23
+
24
+ ```
25
+ TaskCreate({
26
+ subject: "<TASK-ID>",
27
+ description: "PURPOSE: <what this task achieves> | Success: <measurable completion criteria>
28
+ TASK:
29
+ - <step 1: specific action>
30
+ - <step 2: specific action>
31
+ - <step 3: specific action>
32
+ CONTEXT:
33
+ - Session: <session-folder>
34
+ - Scope: <motion-scope>
35
+ - Framework: <framework>
36
+ - Upstream artifacts: <artifact-1>, <artifact-2>
37
+ - Shared memory: <session>/wisdom/.msg/meta.json
38
+ EXPECTED: <deliverable path> + <quality criteria>
39
+ CONSTRAINTS: <scope limits, focus areas>"
40
+ })
41
+ TaskUpdate({ taskId: "<TASK-ID>", addBlockedBy: [<dependency-list>], owner: "<role>" })
42
+ ```
43
+
44
+ ### Mode Router
45
+
46
+ | Mode | Action |
47
+ |------|--------|
48
+ | `tokens` | Create 4 tasks: MRESEARCH -> CHOREO -> ANIM -> MTEST |
49
+ | `component` | Create 4 tasks: MRESEARCH -> CHOREO -> ANIM -> MTEST (GC loop) |
50
+ | `page` | Create 4+ tasks: MRESEARCH -> CHOREO -> [ANIM-001..N parallel] -> MTEST |
51
+
52
+ ---
53
+
54
+ ### Tokens Pipeline Task Chain
55
+
56
+ **MRESEARCH-001** (motion-researcher):
57
+ ```
58
+ TaskCreate({
59
+ subject: "MRESEARCH-001",
60
+ description: "PURPOSE: Audit existing animations, measure performance baseline, catalog easing patterns | Success: 3 research artifacts produced with valid data
61
+ TASK:
62
+ - Scan codebase for existing CSS @keyframes, transitions, JS animation code
63
+ - Measure paint/composite costs via Chrome DevTools performance traces (if available)
64
+ - Catalog existing easing functions and timing patterns
65
+ - Identify properties being animated (safe vs unsafe for compositor)
66
+ CONTEXT:
67
+ - Session: <session-folder>
68
+ - Scope: <motion-scope>
69
+ - Framework: <framework>
70
+ - Shared memory: <session>/wisdom/.msg/meta.json
71
+ EXPECTED: <session>/research/*.json | All 3 research files with valid JSON
72
+ CONSTRAINTS: Read-only analysis | Focus on existing animation patterns"
73
+ })
74
+ TaskUpdate({ taskId: "MRESEARCH-001", owner: "motion-researcher" })
75
+ ```
76
+
77
+ **CHOREO-001** (choreographer):
78
+ ```
79
+ TaskCreate({
80
+ subject: "CHOREO-001",
81
+ description: "PURPOSE: Design animation token system with easing functions, duration scale, stagger formulas | Success: Complete motion-tokens.json with all token categories
82
+ TASK:
83
+ - Define easing functions (ease-out, ease-in-out, ease-spring) as cubic-bezier values
84
+ - Define duration scale (fast, base, slow, slower, slowest)
85
+ - Define stagger formula with base delay and increment
86
+ - Define reduced-motion fallback tokens
87
+ - Reference specs/motion-tokens.md for token schema
88
+ CONTEXT:
89
+ - Session: <session-folder>
90
+ - Scope: <motion-scope>
91
+ - Framework: <framework>
92
+ - Upstream artifacts: research/*.json
93
+ - Shared memory: <session>/wisdom/.msg/meta.json
94
+ EXPECTED: <session>/choreography/motion-tokens.json | Complete token system
95
+ CONSTRAINTS: Follow motion-tokens.md schema | All tokens must have reduced-motion fallback"
96
+ })
97
+ TaskUpdate({ taskId: "CHOREO-001", addBlockedBy: ["MRESEARCH-001"], owner: "choreographer" })
98
+ ```
99
+
100
+ **ANIM-001** (animator):
101
+ ```
102
+ TaskCreate({
103
+ subject: "ANIM-001",
104
+ description: "PURPOSE: Implement CSS custom properties and utility classes from motion tokens | Success: Production-ready CSS with token consumption and reduced-motion overrides
105
+ TASK:
106
+ - Generate CSS custom properties from motion-tokens.json
107
+ - Create utility animation classes consuming tokens
108
+ - Add prefers-reduced-motion media query overrides
109
+ - Ensure compositor-only properties (transform, opacity) per specs/gpu-constraints.md
110
+ CONTEXT:
111
+ - Session: <session-folder>
112
+ - Scope: <motion-scope>
113
+ - Framework: <framework>
114
+ - Upstream artifacts: choreography/motion-tokens.json
115
+ - Shared memory: <session>/wisdom/.msg/meta.json
116
+ EXPECTED: <session>/animations/keyframes/*.css | Token CSS + utility classes + reduced-motion
117
+ CONSTRAINTS: Compositor-only animations | No layout-triggering properties | will-change budget"
118
+ })
119
+ TaskUpdate({ taskId: "ANIM-001", addBlockedBy: ["CHOREO-001"], owner: "animator" })
120
+ ```
121
+
122
+ **MTEST-001** (motion-tester):
123
+ ```
124
+ TaskCreate({
125
+ subject: "MTEST-001",
126
+ description: "PURPOSE: Verify animation performance and accessibility compliance | Success: 60fps confirmed, no layout thrashing, reduced-motion present
127
+ TASK:
128
+ - Start Chrome DevTools performance trace (if available)
129
+ - Verify compositor-only animations (no paint/layout triggers)
130
+ - Check will-change usage (not excessive, max 3-4 elements)
131
+ - Validate prefers-reduced-motion @media query presence
132
+ - Static code analysis as fallback if Chrome DevTools unavailable
133
+ CONTEXT:
134
+ - Session: <session-folder>
135
+ - Scope: <motion-scope>
136
+ - Framework: <framework>
137
+ - Upstream artifacts: animations/keyframes/*.css, choreography/motion-tokens.json
138
+ - Shared memory: <session>/wisdom/.msg/meta.json
139
+ EXPECTED: <session>/testing/reports/perf-report-001.md | Performance validation report
140
+ CONSTRAINTS: Target 60fps | Flag any layout-triggering properties"
141
+ })
142
+ TaskUpdate({ taskId: "MTEST-001", addBlockedBy: ["ANIM-001"], owner: "motion-tester" })
143
+ ```
144
+
145
+ ---
146
+
147
+ ### Component Pipeline Task Chain
148
+
149
+ Same as Tokens pipeline with enhanced task descriptions:
150
+
151
+ - **MRESEARCH-001**: Same as tokens, plus focus on target component(s) existing animation
152
+ - **CHOREO-001**: Same token design, plus transition state diagrams (entry/exit/hover/focus/loading) and scroll-triggered reveal sequences for the component(s)
153
+ - **ANIM-001**: Implement component-specific animations: @keyframes, IntersectionObserver triggers, rAF coordination, staggered orchestration
154
+ - **MTEST-001**: Same as tokens, plus GC loop -- if FPS < 60 or layout thrashing, send `fix_required` signal
155
+
156
+ GC loop between animator and motion-tester (max 2 rounds).
157
+
158
+ ---
159
+
160
+ ### Page Pipeline Task Chain
161
+
162
+ **MRESEARCH-001** and **CHOREO-001**: Same as component, but scope is full page with multiple scroll sections.
163
+
164
+ **CHOREO-001** additionally defines scroll section boundaries, parallax depths, and staggered entry sequences per section.
165
+
166
+ **ANIM-001..N** (parallel): One ANIM task per scroll section or page area:
167
+ ```
168
+ TaskCreate({
169
+ subject: "ANIM-<NNN>",
170
+ description: "PURPOSE: Implement animations for <section-name> | Success: Scroll-triggered reveals with 60fps performance
171
+ TASK:
172
+ - Implement IntersectionObserver-based scroll triggers for <section-name>
173
+ - Apply staggered entry animations with calculated delays
174
+ - Add scroll-linked parallax (if specified in choreography)
175
+ - Ensure prefers-reduced-motion fallback
176
+ CONTEXT:
177
+ - Session: <session-folder>
178
+ - Section: <section-name>
179
+ - Upstream artifacts: choreography/sequences/<section>.md, choreography/motion-tokens.json
180
+ - Shared memory: <session>/wisdom/.msg/meta.json
181
+ EXPECTED: <session>/animations/keyframes/<section>.css + orchestrators/<section>.js
182
+ CONSTRAINTS: Compositor-only | will-change budget | Follow motion-tokens"
183
+ })
184
+ TaskUpdate({ taskId: "ANIM-<NNN>", addBlockedBy: ["CHOREO-001"], owner: "animator" })
185
+ ```
186
+
187
+ **MTEST-001**: Blocked by all ANIM tasks. Full page performance validation.
188
+
189
+ ---
190
+
191
+ ## Phase 4: Validation
192
+
193
+ Verify task chain integrity:
194
+
195
+ | Check | Method | Expected |
196
+ |-------|--------|----------|
197
+ | Task count correct | TaskList count | tokens: 4, component: 4, page: 4+N |
198
+ | Dependencies correct | Trace dependency graph | Acyclic, correct blockedBy |
199
+ | No circular dependencies | Trace dependency graph | Acyclic |
200
+ | Task IDs use correct prefixes | Pattern check | MRESEARCH/CHOREO/ANIM/MTEST |
201
+ | Structured descriptions complete | Each has PURPOSE/TASK/CONTEXT/EXPECTED/CONSTRAINTS | All present |
202
+
203
+ If validation fails, fix the specific task and re-validate.
@@ -0,0 +1,184 @@
1
+ # Monitor Pipeline
2
+
3
+ Event-driven pipeline coordination. Beat model: coordinator wake -> process -> spawn -> STOP.
4
+
5
+ ## Constants
6
+
7
+ - SPAWN_MODE: background
8
+ - ONE_STEP_PER_INVOCATION: true
9
+ - FAST_ADVANCE_AWARE: true
10
+ - WORKER_AGENT: team-worker
11
+ - MAX_GC_ROUNDS: 2
12
+
13
+ ## Handler Router
14
+
15
+ | Source | Handler |
16
+ |--------|---------|
17
+ | Message contains [motion-researcher], [choreographer], [animator], [motion-tester] | handleCallback |
18
+ | "capability_gap" | handleAdapt |
19
+ | "check" or "status" | handleCheck |
20
+ | "resume" or "continue" | handleResume |
21
+ | All tasks completed | handleComplete |
22
+ | Default | handleSpawnNext |
23
+
24
+ ## handleCallback
25
+
26
+ Worker completed. Process and advance.
27
+
28
+ 1. Parse message to identify role and task ID:
29
+
30
+ | Message Pattern | Role |
31
+ |----------------|------|
32
+ | `[motion-researcher]` or `MRESEARCH-*` | motion-researcher |
33
+ | `[choreographer]` or `CHOREO-*` | choreographer |
34
+ | `[animator]` or `ANIM-*` | animator |
35
+ | `[motion-tester]` or `MTEST-*` | motion-tester |
36
+
37
+ 2. Mark task completed: `TaskUpdate({ taskId: "<task-id>", status: "completed" })`
38
+ 3. Record completion in session state
39
+
40
+ 4. Check checkpoint for completed task:
41
+
42
+ | Completed Task | Checkpoint | Action |
43
+ |---------------|------------|--------|
44
+ | MRESEARCH-001 | - | Notify user: research complete |
45
+ | CHOREO-001 | - | Proceed to ANIM task(s) |
46
+ | ANIM-* (single) | - | Proceed to MTEST-001 |
47
+ | ANIM-* (page mode) | - | Check if all ANIM tasks complete, then unblock MTEST-001 |
48
+ | MTEST-001 | PERF-001: Performance Gate | Check perf signal -> GC loop or complete |
49
+
50
+ 5. **Performance Gate handling** (MTEST task completed):
51
+ Read performance signal from message: `perf_passed`, `perf_warning`, or `fix_required`
52
+
53
+ | Signal | Condition | Action |
54
+ |--------|-----------|--------|
55
+ | `perf_passed` | FPS >= 60, no layout thrashing, reduced-motion present | Performance gate passed -> pipeline complete |
56
+ | `perf_warning` | Minor issues (will-change count high, near 60fps) | gc_rounds < max -> create ANIM-fix task |
57
+ | `fix_required` | FPS < 60 or layout thrashing detected | gc_rounds < max -> create ANIM-fix task (CRITICAL) |
58
+ | Any | gc_rounds >= max | Escalate to user |
59
+
60
+ **GC Fix Task Creation**:
61
+ ```
62
+ TaskCreate({ subject: "ANIM-fix-<round>",
63
+ description: "PURPOSE: Address performance issues from motion-tester report | Success: All critical perf issues resolved
64
+ TASK:
65
+ - Parse performance report for specific issues (layout thrashing, unsafe properties, excessive will-change)
66
+ - Replace layout-triggering properties with compositor-only alternatives
67
+ - Optimize will-change usage
68
+ - Verify reduced-motion fallback completeness
69
+ CONTEXT:
70
+ - Session: <session-folder>
71
+ - Upstream artifacts: testing/reports/perf-report-<NNN>.md" })
72
+ TaskUpdate({ taskId: "ANIM-fix-<round>", owner: "animator" })
73
+ ```
74
+ Then create new MTEST task blocked by fix. Increment gc_state.round.
75
+
76
+ **GC Escalation Options** (when max rounds exceeded):
77
+ 1. Accept current animations - skip performance review, continue
78
+ 2. Try one more round
79
+ 3. Terminate
80
+
81
+ 6. -> handleSpawnNext
82
+
83
+ ## handleCheck
84
+
85
+ Read-only status report, then STOP.
86
+
87
+ ```
88
+ Pipeline Status (<pipeline-mode>):
89
+ [DONE] MRESEARCH-001 (motion-researcher) -> research/*.json
90
+ [DONE] CHOREO-001 (choreographer) -> motion-tokens.json + sequences/
91
+ [RUN] ANIM-001 (animator) -> implementing animations...
92
+ [WAIT] MTEST-001 (motion-tester) -> blocked by ANIM-001
93
+
94
+ GC Rounds: 0/2
95
+ Performance Gate: pending
96
+ Session: <session-id>
97
+ Commands: 'resume' to advance | 'check' to refresh
98
+ ```
99
+
100
+ Output status -- do NOT advance pipeline.
101
+
102
+ ## handleResume
103
+
104
+ 1. Audit task list for inconsistencies:
105
+ - Tasks stuck in "in_progress" -> reset to "pending"
106
+ - Tasks with completed blockers but still "pending" -> include in spawn list
107
+ 2. -> handleSpawnNext
108
+
109
+ ## handleSpawnNext
110
+
111
+ Find ready tasks, spawn workers, STOP.
112
+
113
+ 1. Collect: completedSubjects, inProgressSubjects, readySubjects (pending + all blockedBy completed)
114
+ 2. No ready + work in progress -> report waiting, STOP
115
+ 3. No ready + nothing in progress -> handleComplete
116
+ 4. Has ready -> for each:
117
+ a. Check inner loop role with active worker -> skip (worker picks up)
118
+ b. TaskUpdate -> in_progress
119
+ c. team_msg log -> task_unblocked
120
+ d. Spawn team-worker:
121
+
122
+ ```
123
+ Agent({
124
+ subagent_type: "team-worker",
125
+ description: "Spawn <role> worker for <task-id>",
126
+ team_name: "motion-design",
127
+ name: "<role>",
128
+ run_in_background: true,
129
+ prompt: `## Role Assignment
130
+ role: <role>
131
+ role_spec: ~ or <project>/.claude/skills/team-motion-design/roles/<role>/role.md
132
+ session: <session-folder>
133
+ session_id: <session-id>
134
+ team_name: motion-design
135
+ requirement: <task-description>
136
+ inner_loop: <true|false>
137
+
138
+ Read role_spec file to load Phase 2-4 domain instructions.
139
+ Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5 (report).`
140
+ })
141
+ ```
142
+
143
+ **Parallel spawn rules by mode**:
144
+
145
+ | Mode | Scenario | Spawn Behavior |
146
+ |------|----------|---------------|
147
+ | tokens | Sequential | One task at a time |
148
+ | component | Sequential | One task at a time, GC loop on MTEST |
149
+ | page | After CHOREO-001 | Spawn ANIM-001..N in parallel (CP-3 Fan-out) |
150
+ | page | After all ANIM complete | Spawn MTEST-001 |
151
+
152
+ 5. Add to active_workers, update session, output summary, STOP
153
+
154
+ ## handleComplete
155
+
156
+ Pipeline done. Generate report and completion action.
157
+
158
+ **Completion check by mode**:
159
+
160
+ | Mode | Completion Condition |
161
+ |------|---------------------|
162
+ | tokens | All 4 tasks (+ fix tasks) completed |
163
+ | component | All 4 tasks (+ fix tasks) completed |
164
+ | page | All 4+N tasks (+ fix tasks) completed |
165
+
166
+ 1. If any tasks not completed -> handleSpawnNext
167
+ 2. If all completed -> transition to coordinator Phase 5
168
+
169
+ ## handleAdapt
170
+
171
+ Capability gap reported mid-pipeline.
172
+
173
+ 1. Parse gap description
174
+ 2. Check if existing role covers it -> redirect
175
+ 3. Role count < 5 -> generate dynamic role spec
176
+ 4. Create new task, spawn worker
177
+ 5. Role count >= 5 -> merge or pause
178
+
179
+ ## Fast-Advance Reconciliation
180
+
181
+ On every coordinator wake:
182
+ 1. Read team_msg entries with type="fast_advance"
183
+ 2. Sync active_workers with spawned successors
184
+ 3. No duplicate spawns
@@ -0,0 +1,167 @@
1
+ # Coordinator Role
2
+
3
+ Motion Design Team coordinator. Orchestrate pipeline: analyze -> dispatch -> spawn -> monitor -> report. Manages animation task chains with GC loops for performance validation.
4
+
5
+ ## Identity
6
+ - **Name**: coordinator | **Tag**: [coordinator]
7
+ - **Responsibility**: Analyze task -> Create team -> Dispatch tasks -> Monitor progress -> Report results
8
+
9
+ ## Boundaries
10
+
11
+ ### MUST
12
+ - All output (SendMessage, team_msg, logs) must carry `[coordinator]` identifier
13
+ - Use `team-worker` agent type for all worker spawns (NOT `general-purpose`)
14
+ - Dispatch tasks with proper dependency chains and blockedBy
15
+ - Monitor worker progress via message bus and route messages
16
+ - Handle Generator-Critic loops with max 2 iterations
17
+ - Maintain session state persistence
18
+
19
+ ### MUST NOT
20
+ - Implement domain logic (researching, choreographing, animating, testing) -- workers handle this
21
+ - Spawn workers without creating tasks first
22
+ - Skip sync points when configured
23
+ - Force-advance pipeline past failed performance test
24
+ - Modify source code or animation artifacts directly -- delegate to workers
25
+ - Omit `[coordinator]` identifier in any output
26
+
27
+ ## Command Execution Protocol
28
+
29
+ When coordinator needs to execute a command (analyze, dispatch, monitor):
30
+
31
+ 1. Read `commands/<command>.md`
32
+ 2. Follow the workflow defined in the command
33
+ 3. Commands are inline execution guides, NOT separate agents
34
+ 4. Execute synchronously, complete before proceeding
35
+
36
+ ## Entry Router
37
+
38
+ | Detection | Condition | Handler |
39
+ |-----------|-----------|---------|
40
+ | Worker callback | Message contains [motion-researcher], [choreographer], [animator], [motion-tester] | -> handleCallback (monitor.md) |
41
+ | Status check | Args contain "check" or "status" | -> handleCheck (monitor.md) |
42
+ | Manual resume | Args contain "resume" or "continue" | -> handleResume (monitor.md) |
43
+ | Capability gap | Message contains "capability_gap" | -> handleAdapt (monitor.md) |
44
+ | Pipeline complete | All tasks have status "completed" | -> handleComplete (monitor.md) |
45
+ | Interrupted session | Active/paused session exists in .workflow/.team/MD-* | -> Phase 0 |
46
+ | New session | None of above | -> Phase 1 |
47
+
48
+ For callback/check/resume/adapt/complete: load `@commands/monitor.md`, execute matched handler, STOP.
49
+
50
+ ## Phase 0: Session Resume Check
51
+
52
+ 1. Scan `.workflow/.team/MD-*/.msg/meta.json` for active/paused sessions
53
+ 2. No sessions -> Phase 1
54
+ 3. Single session -> reconcile (audit TaskList, reset in_progress->pending, rebuild team, kick first ready task)
55
+ 4. Multiple -> AskUserQuestion for selection
56
+
57
+ ## Phase 1: Requirement Clarification
58
+
59
+ TEXT-LEVEL ONLY. No source code reading.
60
+
61
+ 1. Parse task description from arguments
62
+ 2. Detect motion scope:
63
+
64
+ | Signal | Pipeline Mode |
65
+ |--------|---------------|
66
+ | Token, easing, duration system, motion tokens | tokens |
67
+ | Animate specific component(s), single element | component |
68
+ | Full page scroll choreography, page transitions | page |
69
+ | Unclear | ask user |
70
+
71
+ 3. Ask for missing parameters if scope unclear:
72
+ ```
73
+ AskUserQuestion({
74
+ questions: [
75
+ { question: "Motion design scope?", header: "Scope", options: [
76
+ { label: "Animation token system", description: "Easing functions, duration scale, stagger formulas" },
77
+ { label: "Component animation", description: "Animate specific component(s) with transitions" },
78
+ { label: "Page scroll choreography", description: "Full page scroll-triggered reveals and transitions" }
79
+ ]},
80
+ { question: "Target framework?", header: "Framework", options: [
81
+ { label: "CSS-only" }, { label: "React" },
82
+ { label: "Vue" }, { label: "Vanilla JS" }, { label: "Other" }
83
+ ]}
84
+ ]
85
+ })
86
+ ```
87
+ 4. Delegate to `@commands/analyze.md` -> output scope context
88
+ 5. Record: pipeline_mode, framework, complexity
89
+
90
+ ## Phase 2: Create Team + Initialize Session
91
+
92
+ 1. Resolve workspace paths (MUST do first):
93
+ - `project_root` = result of `Bash({ command: "pwd" })`
94
+ - `skill_root` = `<project_root>/.claude/skills/team-motion-design`
95
+ 2. Generate session ID: `MD-<slug>-<YYYY-MM-DD>`
96
+ 3. Create session folder structure:
97
+ ```
98
+ .workflow/.team/MD-<slug>-<date>/research/perf-traces/
99
+ .workflow/.team/MD-<slug>-<date>/choreography/sequences/
100
+ .workflow/.team/MD-<slug>-<date>/animations/keyframes/
101
+ .workflow/.team/MD-<slug>-<date>/animations/orchestrators/
102
+ .workflow/.team/MD-<slug>-<date>/testing/traces/
103
+ .workflow/.team/MD-<slug>-<date>/testing/reports/
104
+ .workflow/.team/MD-<slug>-<date>/wisdom/
105
+ .workflow/.team/MD-<slug>-<date>/.msg/
106
+ ```
107
+ 4. Initialize `.msg/meta.json` via team_msg state_update with pipeline metadata
108
+ 5. TeamCreate(team_name="motion-design")
109
+ 6. Do NOT spawn workers yet - deferred to Phase 4
110
+
111
+ ## Phase 3: Create Task Chain
112
+
113
+ Delegate to `@commands/dispatch.md`. Task chains by mode:
114
+
115
+ | Mode | Task Chain |
116
+ |------|------------|
117
+ | tokens | MRESEARCH-001 -> CHOREO-001 -> ANIM-001 -> MTEST-001 |
118
+ | component | MRESEARCH-001 -> CHOREO-001 -> ANIM-001 -> MTEST-001 (GC loop) |
119
+ | page | MRESEARCH-001 -> CHOREO-001 -> [ANIM-001..N parallel] -> MTEST-001 |
120
+
121
+ ## Phase 4: Spawn-and-Stop
122
+
123
+ Delegate to `@commands/monitor.md#handleSpawnNext`:
124
+ 1. Find ready tasks (pending + blockedBy resolved)
125
+ 2. Spawn team-worker agents (see SKILL.md Spawn Template)
126
+ 3. Output status summary
127
+ 4. STOP
128
+
129
+ ## Phase 5: Report + Completion Action
130
+
131
+ 1. Read session state -> collect all results
132
+ 2. List deliverables:
133
+
134
+ | Deliverable | Path |
135
+ |-------------|------|
136
+ | Animation Inventory | <session>/research/animation-inventory.json |
137
+ | Performance Baseline | <session>/research/performance-baseline.json |
138
+ | Easing Catalog | <session>/research/easing-catalog.json |
139
+ | Motion Tokens | <session>/choreography/motion-tokens.json |
140
+ | Choreography Sequences | <session>/choreography/sequences/*.md |
141
+ | CSS Keyframes | <session>/animations/keyframes/*.css |
142
+ | JS Orchestrators | <session>/animations/orchestrators/*.js |
143
+ | Performance Reports | <session>/testing/reports/perf-report-*.md |
144
+
145
+ 3. Calculate: completed_tasks, gc_rounds, perf_score, final_fps
146
+ 4. Output pipeline summary with [coordinator] prefix
147
+ 5. Execute completion action:
148
+ ```
149
+ AskUserQuestion({
150
+ questions: [{ question: "Pipeline complete. What next?", header: "Completion", options: [
151
+ { label: "Archive & Clean", description: "Archive session and clean up team resources" },
152
+ { label: "Keep Active", description: "Keep session for follow-up work" },
153
+ { label: "Export Results", description: "Export deliverables to specified location" }
154
+ ]}]
155
+ })
156
+ ```
157
+
158
+ ## Error Handling
159
+
160
+ | Error | Resolution |
161
+ |-------|------------|
162
+ | Task timeout | Log, mark failed, ask user to retry or skip |
163
+ | Worker crash | Reset task to pending, respawn worker |
164
+ | Dependency cycle | Detect, report to user, halt |
165
+ | Invalid scope | Reject with error, ask to clarify |
166
+ | Session corruption | Attempt recovery, fallback to manual reconciliation |
167
+ | GC loop stuck > 2 rounds | Escalate to user: accept / try one more / terminate |
@@ -0,0 +1,115 @@
1
+ ---
2
+ role: motion-researcher
3
+ prefix: MRESEARCH
4
+ inner_loop: false
5
+ message_types: [state_update]
6
+ ---
7
+
8
+ # Motion & Animation Researcher
9
+
10
+ Audit existing animations in the codebase, measure paint/composite costs via Chrome DevTools performance traces, and catalog easing patterns. Produce foundation data for downstream choreographer, animator, and motion-tester roles.
11
+
12
+ ## Phase 2: Context & Environment Detection
13
+
14
+ | Input | Source | Required |
15
+ |-------|--------|----------|
16
+ | Task description | From task subject/description | Yes |
17
+ | Session path | Extracted from task description | Yes |
18
+ | .msg/meta.json | <session>/wisdom/.msg/meta.json | No |
19
+
20
+ 1. Extract session path and target scope from task description
21
+ 2. Detect project type and tech stack from package.json or equivalent:
22
+
23
+ | Package | Detected Stack |
24
+ |---------|---------------|
25
+ | next | nextjs |
26
+ | react | react |
27
+ | vue | vue |
28
+ | svelte | svelte |
29
+ | gsap | gsap |
30
+ | framer-motion | framer-motion |
31
+ | @react-spring/web | react-spring |
32
+ | (default) | css-vanilla |
33
+
34
+ 3. Use CLI tools (e.g., `ccw cli -p "..." --tool gemini --mode analysis`) or direct tools (Glob, Grep) to scan for existing animations, transitions, keyframes
35
+ 4. Read framework context from session config
36
+
37
+ ## Phase 3: Research Execution
38
+
39
+ Execute 3 analysis streams:
40
+
41
+ **Stream 1 -- Animation Inventory**:
42
+ - Search for CSS @keyframes declarations (pattern: `@keyframes`)
43
+ - Search for CSS transition properties (pattern: `transition:`, `transition-property:`)
44
+ - Search for JS animation APIs (requestAnimationFrame, Web Animations API, GSAP, Framer Motion)
45
+ - Search for IntersectionObserver usage (scroll-triggered animations)
46
+ - Catalog each animation: name, properties animated, duration, easing, trigger mechanism
47
+ - Flag unsafe properties (width, height, top, left, margin, padding, color, background-color)
48
+ - Output: `<session>/research/animation-inventory.json`
49
+ ```json
50
+ {
51
+ "css_keyframes": [{ "name": "", "file": "", "properties": [], "safe": true }],
52
+ "css_transitions": [{ "file": "", "line": 0, "properties": [], "duration": "", "easing": "" }],
53
+ "js_animations": [{ "file": "", "type": "rAF|WAAPI|gsap|framer", "properties": [] }],
54
+ "scroll_triggers": [{ "file": "", "type": "IntersectionObserver|scroll-event", "threshold": 0 }],
55
+ "unsafe_animations": [{ "file": "", "line": 0, "property": "", "suggestion": "" }],
56
+ "summary": { "total": 0, "safe_count": 0, "unsafe_count": 0 }
57
+ }
58
+ ```
59
+
60
+ **Stream 2 -- Performance Baseline**:
61
+ - If Chrome DevTools MCP available:
62
+ - Start performance trace: `mcp__chrome-devtools__performance_start_trace()`
63
+ - Trigger page load or scroll interaction
64
+ - Stop trace: `mcp__chrome-devtools__performance_stop_trace()`
65
+ - Analyze: `mcp__chrome-devtools__performance_analyze_insight()`
66
+ - Extract: FPS data, paint/composite times, layout thrashing events, layer count
67
+ - If Chrome DevTools unavailable:
68
+ - Static analysis: count layout-triggering properties, estimate performance from code patterns
69
+ - Mark `_source: "static-analysis"`
70
+ - Output: `<session>/research/performance-baseline.json`
71
+ ```json
72
+ {
73
+ "_source": "chrome-devtools|static-analysis",
74
+ "fps": { "average": 0, "minimum": 0, "drops": [] },
75
+ "paint_time_ms": 0,
76
+ "composite_time_ms": 0,
77
+ "layout_thrashing": [],
78
+ "layer_count": 0,
79
+ "will_change_count": 0
80
+ }
81
+ ```
82
+
83
+ **Stream 3 -- Easing Catalog**:
84
+ - Search for cubic-bezier declarations in CSS
85
+ - Search for named easing functions (ease, ease-in, ease-out, ease-in-out, linear)
86
+ - Search for JS easing implementations (spring physics, custom curves)
87
+ - Catalog each: name/value, usage count, context (hover, scroll, entry)
88
+ - Recommend additions based on gaps (missing ease-spring, missing stagger patterns)
89
+ - Reference specs/motion-tokens.md for recommended token schema
90
+ - Output: `<session>/research/easing-catalog.json`
91
+ ```json
92
+ {
93
+ "existing": [{ "value": "", "usage_count": 0, "contexts": [] }],
94
+ "recommended_additions": [{ "name": "", "value": "", "reason": "" }],
95
+ "duration_patterns": [{ "value": "", "usage_count": 0, "contexts": [] }],
96
+ "stagger_patterns": [{ "found": false, "details": "" }]
97
+ }
98
+ ```
99
+
100
+ Compile research summary metrics: animation_count, safe_percentage, fps_baseline, easing_count, has_reduced_motion.
101
+
102
+ ## Phase 4: Validation & Output
103
+
104
+ 1. Verify all 3 output files exist and contain valid JSON with required fields:
105
+
106
+ | File | Required Fields |
107
+ |------|----------------|
108
+ | animation-inventory.json | css_keyframes array, summary |
109
+ | performance-baseline.json | _source |
110
+ | easing-catalog.json | existing array |
111
+
112
+ 2. If any file missing or invalid, re-run corresponding stream
113
+
114
+ 3. Update `<session>/wisdom/.msg/meta.json` under `motion-researcher` namespace:
115
+ - Read existing -> merge `{ "motion-researcher": { detected_stack, animation_count, safe_percentage, fps_baseline, easing_count, has_reduced_motion } }` -> write back