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,194 @@
1
+ ---
2
+ role: animator
3
+ prefix: ANIM
4
+ inner_loop: true
5
+ message_types: [state_update]
6
+ ---
7
+
8
+ # Animation Implementer
9
+
10
+ Implement CSS animations/transitions and JS orchestration from choreography specs. Build @keyframes with motion tokens as custom properties, IntersectionObserver-based scroll triggers, requestAnimationFrame coordination, and prefers-reduced-motion overrides. GPU-accelerated, compositor-only animations.
11
+
12
+ ## Phase 2: Context & Artifact Loading
13
+
14
+ | Input | Source | Required |
15
+ |-------|--------|----------|
16
+ | Motion tokens | <session>/choreography/motion-tokens.json | Yes |
17
+ | Choreography sequences | <session>/choreography/sequences/*.md | Yes (component/page) |
18
+ | Research artifacts | <session>/research/*.json | Yes |
19
+ | GPU constraints | specs/gpu-constraints.md | Yes |
20
+ | Reduced motion spec | specs/reduced-motion.md | Yes |
21
+ | Performance report | <session>/testing/reports/perf-report-*.md | Only for GC fix tasks |
22
+ | .msg/meta.json | <session>/wisdom/.msg/meta.json | Yes |
23
+
24
+ 1. Extract session path from task description
25
+ 2. Read motion tokens from choreography/motion-tokens.json
26
+ 3. Read choreography sequences (if applicable) from choreography/sequences/*.md
27
+ 4. Read research artifacts for existing animation context
28
+ 5. Read GPU constraints and reduced motion specs
29
+ 6. Detect task type from subject: "token" -> Token CSS, "section" -> Section animation, "fix" -> GC fix
30
+ 7. If GC fix task: read latest performance report from testing/reports/
31
+
32
+ ## Phase 3: Implementation Execution
33
+
34
+ ### Token CSS Implementation (ANIM-001 in tokens mode)
35
+
36
+ Generate CSS custom properties and utility classes:
37
+
38
+ **File: `<session>/animations/keyframes/motion-tokens.css`**:
39
+ ```css
40
+ :root {
41
+ /* Easing functions */
42
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
43
+ --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
44
+ --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
45
+
46
+ /* Duration scale */
47
+ --duration-fast: 0.15s;
48
+ --duration-base: 0.3s;
49
+ --duration-slow: 0.6s;
50
+ --duration-slower: 0.8s;
51
+ --duration-slowest: 1.2s;
52
+
53
+ /* Stagger */
54
+ --stagger-increment: 0.05s;
55
+ }
56
+
57
+ /* Reduced motion overrides */
58
+ @media (prefers-reduced-motion: reduce) {
59
+ *, *::before, *::after {
60
+ animation-duration: 0.01ms !important;
61
+ animation-iteration-count: 1 !important;
62
+ transition-duration: 0.01ms !important;
63
+ scroll-behavior: auto !important;
64
+ }
65
+ }
66
+ ```
67
+
68
+ **File: `<session>/animations/keyframes/utility-animations.css`**:
69
+ - `@keyframes fade-in` (opacity 0->1)
70
+ - `@keyframes fade-up` (opacity 0->1, translateY 20px->0)
71
+ - `@keyframes fade-down` (opacity 0->1, translateY -20px->0)
72
+ - `@keyframes slide-in-left` (translateX -100%->0)
73
+ - `@keyframes slide-in-right` (translateX 100%->0)
74
+ - `@keyframes scale-in` (scale 0.95->1, opacity 0->1)
75
+ - Utility classes: `.animate-fade-in`, `.animate-fade-up`, etc.
76
+ - All animations consume motion token custom properties
77
+ - All use compositor-only properties (transform, opacity)
78
+
79
+ ### Component/Section Animation (ANIM-001..N in component/page mode)
80
+
81
+ For each section or component defined in choreography sequences:
82
+
83
+ **CSS @keyframes** (`<session>/animations/keyframes/<name>.css`):
84
+ - Define @keyframes consuming motion tokens via `var(--ease-out)`, `var(--duration-slow)`
85
+ - Use `will-change: transform, opacity` on animated elements (remove after animation via JS)
86
+ - Only animate compositor-safe properties: transform (translate, scale, rotate), opacity, filter
87
+ - NEVER animate: width, height, top, left, margin, padding, border, color, background-color
88
+
89
+ **JS Orchestrator** (`<session>/animations/orchestrators/<name>.js`):
90
+ ```javascript
91
+ // IntersectionObserver-based scroll trigger
92
+ const observer = new IntersectionObserver((entries) => {
93
+ entries.forEach(entry => {
94
+ if (entry.isIntersecting) {
95
+ entry.target.classList.add('is-visible');
96
+ observer.unobserve(entry.target); // one-shot
97
+ }
98
+ });
99
+ }, { threshold: 0.2, rootMargin: '0px 0px -100px 0px' });
100
+
101
+ // Staggered animation orchestrator
102
+ function staggerReveal(container, itemSelector) {
103
+ const items = container.querySelectorAll(itemSelector);
104
+ const increment = parseFloat(getComputedStyle(document.documentElement)
105
+ .getPropertyValue('--stagger-increment')) || 0.05;
106
+
107
+ items.forEach((item, index) => {
108
+ item.style.transitionDelay = `${index * increment}s`;
109
+ });
110
+ // Trigger via IntersectionObserver on container
111
+ observer.observe(container);
112
+ }
113
+
114
+ // Reduced motion detection
115
+ const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
116
+ if (prefersReducedMotion.matches) {
117
+ // Skip parallax, disable springs, use instant transitions
118
+ }
119
+
120
+ // requestAnimationFrame for scroll-linked effects (parallax)
121
+ function parallaxScroll(element, rate) {
122
+ if (prefersReducedMotion.matches) return; // skip for reduced motion
123
+ let ticking = false;
124
+ window.addEventListener('scroll', () => {
125
+ if (!ticking) {
126
+ requestAnimationFrame(() => {
127
+ const scrolled = window.pageYOffset;
128
+ element.style.transform = `translateY(${scrolled * rate}px)`;
129
+ ticking = false;
130
+ });
131
+ ticking = true;
132
+ }
133
+ });
134
+ }
135
+ ```
136
+
137
+ ### Height Animation Workaround
138
+ Since `height` triggers layout (NEVER animate), use the grid trick:
139
+ ```css
140
+ .expandable {
141
+ display: grid;
142
+ grid-template-rows: 0fr;
143
+ transition: grid-template-rows var(--duration-normal) var(--ease-out-quart);
144
+ }
145
+ .expandable.open {
146
+ grid-template-rows: 1fr;
147
+ }
148
+ .expandable > .content {
149
+ overflow: hidden;
150
+ }
151
+ ```
152
+ This achieves smooth height animation using only grid layout changes (compositor-friendly).
153
+
154
+ ### Perceived Performance
155
+ - **80ms threshold**: Any response under 80ms feels instant to the human brain
156
+ - **Preemptive starts**: Begin animation on `pointerdown` not `click` (saves ~80-120ms perceived)
157
+ - **Early completion**: Visual feedback can "finish" before actual operation completes (optimistic UI)
158
+ - **Ease-in compresses perceived time**: Use ease-in for waiting states (progress bars) -- makes them feel faster
159
+ - **Ease-out satisfies entrances**: Use ease-out for content appearing -- natural deceleration feels "settled"
160
+
161
+ ### GC Fix Mode (ANIM-fix-N)
162
+
163
+ - Parse performance report for specific issues
164
+ - Replace layout-triggering properties with compositor-only alternatives:
165
+ - `width/height` -> `transform: scale()`
166
+ - `top/left` -> `transform: translate()`
167
+ - `background-color` -> `opacity` on overlay
168
+ - Reduce will-change elements to max 3-4 simultaneous
169
+ - Add missing prefers-reduced-motion overrides
170
+ - Signal `animation_revision` instead of `animation_ready`
171
+
172
+ ## Phase 4: Self-Validation & Output
173
+
174
+ 1. Animation integrity checks:
175
+
176
+ | Check | Pass Criteria |
177
+ |-------|---------------|
178
+ | no_layout_triggers | No width, height, top, left, margin, padding in @keyframes |
179
+ | will_change_budget | Max 3-4 elements with will-change simultaneously |
180
+ | reduced_motion | @media (prefers-reduced-motion: reduce) query present |
181
+ | token_consumption | Animations use var(--token) references, no hardcoded values |
182
+ | compositor_only | Only transform, opacity, filter in animation properties |
183
+
184
+ 2. JS orchestrator checks:
185
+
186
+ | Check | Pass Criteria |
187
+ |-------|---------------|
188
+ | intersection_observer | IntersectionObserver used for scroll triggers (not scroll events) |
189
+ | raf_throttled | requestAnimationFrame used with ticking guard for scroll |
190
+ | reduced_motion_js | `matchMedia('(prefers-reduced-motion: reduce)')` check present |
191
+ | cleanup | will-change removed after animation completes (if applicable) |
192
+
193
+ 3. Update `<session>/wisdom/.msg/meta.json` under `animator` namespace:
194
+ - Read existing -> merge `{ "animator": { task_type, keyframe_count, orchestrator_count, uses_intersection_observer, has_parallax, has_stagger } }` -> write back
@@ -0,0 +1,164 @@
1
+ ---
2
+ role: choreographer
3
+ prefix: CHOREO
4
+ inner_loop: false
5
+ message_types: [state_update]
6
+ ---
7
+
8
+ # Motion Choreographer
9
+
10
+ Design animation token systems (easing functions, duration/delay scales), scroll-triggered reveal sequences, and transition state diagrams. Consume research findings from motion-researcher. Define the motion language that the animator implements.
11
+
12
+ ## Phase 2: Context & Artifact Loading
13
+
14
+ | Input | Source | Required |
15
+ |-------|--------|----------|
16
+ | Research artifacts | <session>/research/*.json | Yes |
17
+ | .msg/meta.json | <session>/wisdom/.msg/meta.json | Yes |
18
+ | Motion token spec | specs/motion-tokens.md | Yes |
19
+ | GPU constraints | specs/gpu-constraints.md | Yes |
20
+ | Reduced motion spec | specs/reduced-motion.md | Yes |
21
+
22
+ 1. Extract session path from task description
23
+ 2. Read research findings: animation-inventory.json, performance-baseline.json, easing-catalog.json
24
+ 3. Read motion token schema from specs/motion-tokens.md
25
+ 4. Read GPU constraints from specs/gpu-constraints.md for safe property list
26
+ 5. Read reduced motion guidelines from specs/reduced-motion.md
27
+
28
+ ## Phase 3: Design Execution
29
+
30
+ ### Motion Token System
31
+
32
+ Define complete token system as CSS custom properties + JSON:
33
+
34
+ **Easing Functions**:
35
+ - `--ease-out`: `cubic-bezier(0.16, 1, 0.3, 1)` -- emphasis exit, deceleration
36
+ - `--ease-in-out`: `cubic-bezier(0.65, 0, 0.35, 1)` -- smooth symmetrical
37
+ - `--ease-spring`: `cubic-bezier(0.34, 1.56, 0.64, 1)` -- overshoot bounce
38
+ - Integrate existing easing functions from research (avoid duplicates, reconcile naming)
39
+
40
+ **Duration Scale**:
41
+ - `--duration-fast`: `0.15s` -- micro-interactions (button press, toggle)
42
+ - `--duration-base`: `0.3s` -- standard transitions (hover, focus)
43
+ - `--duration-slow`: `0.6s` -- content reveals, panel slides
44
+ - `--duration-slower`: `0.8s` -- page transitions, large moves
45
+ - `--duration-slowest`: `1.2s` -- hero animations, splash
46
+
47
+ **Delay Scale**:
48
+ - `--stagger-base`: `0s` -- first item in stagger sequence
49
+ - `--stagger-increment`: `0.05s` to `0.1s` -- per-item delay addition
50
+ - Formula: `delay = base_delay + (index * stagger_increment)`
51
+ - Max visible stagger: 8 items (avoid >0.8s total delay)
52
+
53
+ **Reduced Motion Overrides**:
54
+ - All durations -> `0.01ms`
55
+ - All easings -> `linear` (instant)
56
+ - No parallax, no bounce/spring
57
+ - Opacity-only fades allowed (<0.15s)
58
+
59
+ Output: `<session>/choreography/motion-tokens.json`
60
+ ```json
61
+ {
62
+ "easing": {
63
+ "ease-out": { "value": "cubic-bezier(0.16, 1, 0.3, 1)", "use": "exit emphasis, deceleration" },
64
+ "ease-in-out": { "value": "cubic-bezier(0.65, 0, 0.35, 1)", "use": "smooth symmetrical" },
65
+ "ease-spring": { "value": "cubic-bezier(0.34, 1.56, 0.64, 1)", "use": "overshoot bounce" }
66
+ },
67
+ "duration": {
68
+ "fast": { "value": "0.15s", "use": "micro-interactions" },
69
+ "base": { "value": "0.3s", "use": "standard transitions" },
70
+ "slow": { "value": "0.6s", "use": "content reveals" },
71
+ "slower": { "value": "0.8s", "use": "page transitions" },
72
+ "slowest": { "value": "1.2s", "use": "hero animations" }
73
+ },
74
+ "stagger": {
75
+ "base_delay": "0s",
76
+ "increment": "0.05s",
77
+ "max_items": 8
78
+ },
79
+ "reduced_motion": {
80
+ "duration_override": "0.01ms",
81
+ "easing_override": "linear",
82
+ "allowed": ["opacity"],
83
+ "disallowed": ["parallax", "bounce", "spring", "infinite-loop"]
84
+ }
85
+ }
86
+ ```
87
+
88
+ ### Scroll Choreography Sequences
89
+
90
+ For component and page modes, define reveal sequences:
91
+
92
+ - IntersectionObserver thresholds per section (typical: 0.1 to 0.3)
93
+ - Entry direction: fade-up, fade-in, slide-left, slide-right
94
+ - Stagger groups: which elements stagger together, with calculated delays
95
+ - Parallax depths: foreground (1x), midground (0.5x), background (0.2x) scroll rates
96
+ - Scroll-linked effects: progress-based opacity, transform interpolation
97
+
98
+ Output per section: `<session>/choreography/sequences/<section-name>.md`
99
+ ```markdown
100
+ # Section: <name>
101
+
102
+ ## Trigger
103
+ - Observer threshold: 0.2
104
+ - Root margin: "0px 0px -100px 0px"
105
+
106
+ ## Sequence
107
+ 1. Heading: fade-up, duration-slow, ease-out, delay 0s
108
+ 2. Subheading: fade-up, duration-slow, ease-out, delay 0.05s
109
+ 3. Cards[0..N]: fade-up, duration-slow, ease-out, stagger 0.08s each
110
+
111
+ ## Parallax (if applicable)
112
+ - Background image: 0.2x scroll rate
113
+ - Foreground elements: 1x (normal)
114
+
115
+ ## Reduced Motion Fallback
116
+ - All elements: opacity fade only, duration-fast
117
+ - No parallax, no directional movement
118
+ ```
119
+
120
+ ### Transition State Diagrams
121
+
122
+ Define state transitions for interactive elements:
123
+
124
+ | State Pair | Properties | Duration | Easing |
125
+ |------------|-----------|----------|--------|
126
+ | hidden -> visible (entry) | opacity: 0->1, transform: translateY(20px)->0 | duration-slow | ease-out |
127
+ | visible -> hidden (exit) | opacity: 1->0, transform: 0->translateY(-10px) | duration-base | ease-in-out |
128
+ | idle -> hover | opacity: 1->0.8, transform: scale(1)->scale(1.02) | duration-fast | ease-out |
129
+ | idle -> focus | outline: none->2px solid, outline-offset: 0->2px | duration-fast | ease-out |
130
+ | idle -> active (pressed) | transform: scale(1)->scale(0.98) | duration-fast | ease-out |
131
+ | idle -> loading | opacity: 1->0.6, add pulse animation | duration-base | ease-in-out |
132
+
133
+ All transitions use compositor-only properties (transform, opacity) per GPU constraints.
134
+
135
+ ## Phase 4: Self-Validation
136
+
137
+ 1. Token completeness checks:
138
+
139
+ | Check | Pass Criteria |
140
+ |-------|---------------|
141
+ | easing_complete | All 3 easing functions defined with valid cubic-bezier |
142
+ | duration_complete | All 5 duration steps defined |
143
+ | stagger_defined | Base delay, increment, and max items specified |
144
+ | reduced_motion | Override values defined for all token categories |
145
+
146
+ 2. Sequence checks (if applicable):
147
+
148
+ | Check | Pass Criteria |
149
+ |-------|---------------|
150
+ | threshold_valid | IntersectionObserver threshold between 0 and 1 |
151
+ | safe_properties | Only compositor-safe properties in animations |
152
+ | stagger_budget | No stagger sequence exceeds 0.8s total |
153
+ | fallback_present | Reduced motion fallback defined for each sequence |
154
+
155
+ 3. State diagram checks:
156
+
157
+ | Check | Pass Criteria |
158
+ |-------|---------------|
159
+ | states_covered | entry, exit, hover, focus, active states defined |
160
+ | compositor_only | All animated properties are transform or opacity |
161
+ | durations_use_tokens | All durations reference token scale values |
162
+
163
+ 4. Update `<session>/wisdom/.msg/meta.json` under `choreographer` namespace:
164
+ - Read existing -> merge `{ "choreographer": { token_count, sequence_count, state_diagrams, has_parallax, has_stagger } }` -> write back
@@ -0,0 +1,64 @@
1
+ # Analyze Task
2
+
3
+ Parse user task -> detect motion design scope -> build dependency graph -> determine pipeline mode.
4
+
5
+ **CONSTRAINT**: Text-level analysis only. NO source code reading, NO codebase exploration.
6
+
7
+ ## Signal Detection
8
+
9
+ | Keywords | Capability | Pipeline Hint |
10
+ |----------|------------|---------------|
11
+ | easing, cubic-bezier, duration, timing | token system | tokens |
12
+ | scroll, parallax, reveal, stagger, intersection | scroll choreography | page |
13
+ | transition, hover, focus, state change | component animation | component |
14
+ | @keyframes, will-change, transform, opacity | animation implementation | component |
15
+ | page transition, route animation, full page | page-level motion | page |
16
+ | motion tokens, animation system, design system | token system | tokens |
17
+ | spring, bounce, overshoot | easing design | tokens |
18
+ | reduced-motion, prefers-reduced-motion, a11y | accessibility | component or tokens |
19
+
20
+ ## Scope Determination
21
+
22
+ | Signal | Pipeline Mode |
23
+ |--------|---------------|
24
+ | Token/easing/duration system mentioned | tokens |
25
+ | Animate specific component(s) | component |
26
+ | Full page scroll choreography or page transitions | page |
27
+ | Unclear | ask user |
28
+
29
+ ## Complexity Scoring
30
+
31
+ | Factor | Points |
32
+ |--------|--------|
33
+ | Single easing/token system | +1 |
34
+ | Component animation | +2 |
35
+ | Full page choreography | +3 |
36
+ | Multiple scroll sections | +1 |
37
+ | Parallax effects | +1 |
38
+ | Reduced-motion required | +1 |
39
+ | Performance constraints mentioned | +1 |
40
+
41
+ Results: 1-2 Low (tokens), 3-4 Medium (component), 5+ High (page)
42
+
43
+ ## Framework Detection
44
+
45
+ | Keywords | Framework |
46
+ |----------|-----------|
47
+ | react, jsx, tsx | React |
48
+ | vue, v-bind | Vue |
49
+ | svelte | Svelte |
50
+ | vanilla, plain js | Vanilla JS |
51
+ | css-only, pure css | CSS-only |
52
+ | Default | CSS + Vanilla JS |
53
+
54
+ ## Output
55
+
56
+ Write scope context to coordinator memory:
57
+ ```json
58
+ {
59
+ "pipeline_mode": "<tokens|component|page>",
60
+ "scope": "<description>",
61
+ "framework": "<detected-framework>",
62
+ "complexity": { "score": 0, "level": "Low|Medium|High" }
63
+ }
64
+ ```
@@ -0,0 +1,168 @@
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 tasks.json `pipeline_mode` | Yes |
12
+ | Framework config | From tasks.json `framework` | Yes |
13
+
14
+ 1. Load user requirement and motion scope from tasks.json
15
+ 2. Load pipeline stage definitions from specs/pipelines.md
16
+ 3. Read `pipeline_mode` and `framework` from tasks.json
17
+
18
+ ## Phase 3: Task Chain Creation (Mode-Branched)
19
+
20
+ ### Task Description Template
21
+
22
+ Every task is added to tasks.json with structured format:
23
+
24
+ ```json
25
+ {
26
+ "<TASK-ID>": {
27
+ "title": "<task title>",
28
+ "description": "PURPOSE: <what this task achieves> | Success: <measurable completion criteria>\nTASK:\n - <step 1: specific action>\n - <step 2: specific action>\n - <step 3: specific action>\nCONTEXT:\n - Session: <session-folder>\n - Scope: <motion-scope>\n - Framework: <framework>\n - Upstream artifacts: <artifact-1>, <artifact-2>\n - Shared memory: <session>/wisdom/.msg/meta.json\nEXPECTED: <deliverable path> + <quality criteria>\nCONSTRAINTS: <scope limits, focus areas>",
29
+ "role": "<role>",
30
+ "prefix": "<PREFIX>",
31
+ "deps": ["<dependency-list>"],
32
+ "status": "pending",
33
+ "findings": "",
34
+ "error": ""
35
+ }
36
+ }
37
+ ```
38
+
39
+ ### Mode Router
40
+
41
+ | Mode | Action |
42
+ |------|--------|
43
+ | `tokens` | Create 4 tasks: MRESEARCH -> CHOREO -> ANIM -> MTEST |
44
+ | `component` | Create 4 tasks: MRESEARCH -> CHOREO -> ANIM -> MTEST (GC loop) |
45
+ | `page` | Create 4+ tasks: MRESEARCH -> CHOREO -> [ANIM-001..N parallel] -> MTEST |
46
+
47
+ ---
48
+
49
+ ### Tokens Pipeline Task Chain
50
+
51
+ **MRESEARCH-001** (motion-researcher):
52
+ ```json
53
+ {
54
+ "MRESEARCH-001": {
55
+ "title": "Audit existing animations and measure performance baseline",
56
+ "description": "PURPOSE: Audit existing animations, measure performance baseline, catalog easing patterns | Success: 3 research artifacts produced with valid data\nTASK:\n - Scan codebase for existing CSS @keyframes, transitions, JS animation code\n - Measure paint/composite costs via Chrome DevTools performance traces (if available)\n - Catalog existing easing functions and timing patterns\n - Identify properties being animated (safe vs unsafe for compositor)\nCONTEXT:\n - Session: <session-folder>\n - Scope: <motion-scope>\n - Framework: <framework>\n - Shared memory: <session>/wisdom/.msg/meta.json\nEXPECTED: <session>/research/*.json | All 3 research files with valid JSON\nCONSTRAINTS: Read-only analysis | Focus on existing animation patterns",
57
+ "role": "motion-researcher",
58
+ "prefix": "MRESEARCH",
59
+ "deps": [],
60
+ "status": "pending",
61
+ "findings": "",
62
+ "error": ""
63
+ }
64
+ }
65
+ ```
66
+
67
+ **CHOREO-001** (choreographer):
68
+ ```json
69
+ {
70
+ "CHOREO-001": {
71
+ "title": "Design animation token system",
72
+ "description": "PURPOSE: Design animation token system with easing functions, duration scale, stagger formulas | Success: Complete motion-tokens.json with all token categories\nTASK:\n - Define easing functions (ease-out, ease-in-out, ease-spring) as cubic-bezier values\n - Define duration scale (fast, base, slow, slower, slowest)\n - Define stagger formula with base delay and increment\n - Define reduced-motion fallback tokens\n - Reference specs/motion-tokens.md for token schema\nCONTEXT:\n - Session: <session-folder>\n - Scope: <motion-scope>\n - Framework: <framework>\n - Upstream artifacts: research/*.json\n - Shared memory: <session>/wisdom/.msg/meta.json\nEXPECTED: <session>/choreography/motion-tokens.json | Complete token system\nCONSTRAINTS: Follow motion-tokens.md schema | All tokens must have reduced-motion fallback",
73
+ "role": "choreographer",
74
+ "prefix": "CHOREO",
75
+ "deps": ["MRESEARCH-001"],
76
+ "status": "pending",
77
+ "findings": "",
78
+ "error": ""
79
+ }
80
+ }
81
+ ```
82
+
83
+ **ANIM-001** (animator):
84
+ ```json
85
+ {
86
+ "ANIM-001": {
87
+ "title": "Implement CSS custom properties and utility classes from motion tokens",
88
+ "description": "PURPOSE: Implement CSS custom properties and utility classes from motion tokens | Success: Production-ready CSS with token consumption and reduced-motion overrides\nTASK:\n - Generate CSS custom properties from motion-tokens.json\n - Create utility animation classes consuming tokens\n - Add prefers-reduced-motion media query overrides\n - Ensure compositor-only properties (transform, opacity) per specs/gpu-constraints.md\nCONTEXT:\n - Session: <session-folder>\n - Scope: <motion-scope>\n - Framework: <framework>\n - Upstream artifacts: choreography/motion-tokens.json\n - Shared memory: <session>/wisdom/.msg/meta.json\nEXPECTED: <session>/animations/keyframes/*.css | Token CSS + utility classes + reduced-motion\nCONSTRAINTS: Compositor-only animations | No layout-triggering properties | will-change budget",
89
+ "role": "animator",
90
+ "prefix": "ANIM",
91
+ "deps": ["CHOREO-001"],
92
+ "status": "pending",
93
+ "findings": "",
94
+ "error": ""
95
+ }
96
+ }
97
+ ```
98
+
99
+ **MTEST-001** (motion-tester):
100
+ ```json
101
+ {
102
+ "MTEST-001": {
103
+ "title": "Verify animation performance and accessibility compliance",
104
+ "description": "PURPOSE: Verify animation performance and accessibility compliance | Success: 60fps confirmed, no layout thrashing, reduced-motion present\nTASK:\n - Start Chrome DevTools performance trace (if available)\n - Verify compositor-only animations (no paint/layout triggers)\n - Check will-change usage (not excessive, max 3-4 elements)\n - Validate prefers-reduced-motion @media query presence\n - Static code analysis as fallback if Chrome DevTools unavailable\nCONTEXT:\n - Session: <session-folder>\n - Scope: <motion-scope>\n - Framework: <framework>\n - Upstream artifacts: animations/keyframes/*.css, choreography/motion-tokens.json\n - Shared memory: <session>/wisdom/.msg/meta.json\nEXPECTED: <session>/testing/reports/perf-report-001.md | Performance validation report\nCONSTRAINTS: Target 60fps | Flag any layout-triggering properties",
105
+ "role": "motion-tester",
106
+ "prefix": "MTEST",
107
+ "deps": ["ANIM-001"],
108
+ "status": "pending",
109
+ "findings": "",
110
+ "error": ""
111
+ }
112
+ }
113
+ ```
114
+
115
+ ---
116
+
117
+ ### Component Pipeline Task Chain
118
+
119
+ Same as Tokens pipeline with enhanced task descriptions:
120
+
121
+ - **MRESEARCH-001**: Same as tokens, plus focus on target component(s) existing animation
122
+ - **CHOREO-001**: Same token design, plus transition state diagrams (entry/exit/hover/focus/loading) and scroll-triggered reveal sequences for the component(s)
123
+ - **ANIM-001**: Implement component-specific animations: @keyframes, IntersectionObserver triggers, rAF coordination, staggered orchestration
124
+ - **MTEST-001**: Same as tokens, plus GC loop -- if FPS < 60 or layout thrashing, send `fix_required` signal
125
+
126
+ GC loop between animator and motion-tester (max 2 rounds).
127
+
128
+ ---
129
+
130
+ ### Page Pipeline Task Chain
131
+
132
+ **MRESEARCH-001** and **CHOREO-001**: Same as component, but scope is full page with multiple scroll sections.
133
+
134
+ **CHOREO-001** additionally defines scroll section boundaries, parallax depths, and staggered entry sequences per section.
135
+
136
+ **ANIM-001..N** (parallel): One ANIM task per scroll section or page area:
137
+ ```json
138
+ {
139
+ "ANIM-<NNN>": {
140
+ "title": "Implement animations for <section-name>",
141
+ "description": "PURPOSE: Implement animations for <section-name> | Success: Scroll-triggered reveals with 60fps performance\nTASK:\n - Implement IntersectionObserver-based scroll triggers for <section-name>\n - Apply staggered entry animations with calculated delays\n - Add scroll-linked parallax (if specified in choreography)\n - Ensure prefers-reduced-motion fallback\nCONTEXT:\n - Session: <session-folder>\n - Section: <section-name>\n - Upstream artifacts: choreography/sequences/<section>.md, choreography/motion-tokens.json\n - Shared memory: <session>/wisdom/.msg/meta.json\nEXPECTED: <session>/animations/keyframes/<section>.css + orchestrators/<section>.js\nCONSTRAINTS: Compositor-only | will-change budget | Follow motion-tokens",
142
+ "role": "animator",
143
+ "prefix": "ANIM",
144
+ "deps": ["CHOREO-001"],
145
+ "status": "pending",
146
+ "findings": "",
147
+ "error": ""
148
+ }
149
+ }
150
+ ```
151
+
152
+ **MTEST-001**: Blocked by all ANIM tasks. Full page performance validation.
153
+
154
+ ---
155
+
156
+ ## Phase 4: Validation
157
+
158
+ Verify task chain integrity:
159
+
160
+ | Check | Method | Expected |
161
+ |-------|--------|----------|
162
+ | Task count correct | tasks.json count | tokens: 4, component: 4, page: 4+N |
163
+ | Dependencies correct | Trace dependency graph | Acyclic, correct deps |
164
+ | No circular dependencies | Trace dependency graph | Acyclic |
165
+ | Task IDs use correct prefixes | Pattern check | MRESEARCH/CHOREO/ANIM/MTEST |
166
+ | Structured descriptions complete | Each has PURPOSE/TASK/CONTEXT/EXPECTED/CONSTRAINTS | All present |
167
+
168
+ If validation fails, fix the specific task and re-validate.