claude-code-workflow 7.2.27 → 7.2.29

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 (416) 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-interactive-craft/SKILL.md +127 -0
  27. package/.claude/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
  28. package/.claude/skills/team-interactive-craft/roles/builder/role.md +216 -0
  29. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
  30. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +192 -0
  31. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +183 -0
  32. package/.claude/skills/team-interactive-craft/roles/coordinator/role.md +166 -0
  33. package/.claude/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
  34. package/.claude/skills/team-interactive-craft/roles/researcher/role.md +131 -0
  35. package/.claude/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
  36. package/.claude/skills/team-interactive-craft/specs/pipelines.md +85 -0
  37. package/.claude/skills/team-interactive-craft/specs/team-config.json +105 -0
  38. package/.claude/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
  39. package/.claude/skills/team-motion-design/SKILL.md +129 -0
  40. package/.claude/skills/team-motion-design/roles/animator/role.md +194 -0
  41. package/.claude/skills/team-motion-design/roles/choreographer/role.md +164 -0
  42. package/.claude/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
  43. package/.claude/skills/team-motion-design/roles/coordinator/commands/dispatch.md +203 -0
  44. package/.claude/skills/team-motion-design/roles/coordinator/commands/monitor.md +184 -0
  45. package/.claude/skills/team-motion-design/roles/coordinator/role.md +167 -0
  46. package/.claude/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
  47. package/.claude/skills/team-motion-design/roles/motion-tester/role.md +175 -0
  48. package/.claude/skills/team-motion-design/specs/gpu-constraints.md +114 -0
  49. package/.claude/skills/team-motion-design/specs/motion-tokens.md +128 -0
  50. package/.claude/skills/team-motion-design/specs/pipelines.md +74 -0
  51. package/.claude/skills/team-motion-design/specs/reduced-motion.md +129 -0
  52. package/.claude/skills/team-motion-design/specs/team-config.json +99 -0
  53. package/.claude/skills/team-ui-polish/SKILL.md +127 -0
  54. package/.claude/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
  55. package/.claude/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +194 -0
  56. package/.claude/skills/team-ui-polish/roles/coordinator/commands/monitor.md +180 -0
  57. package/.claude/skills/team-ui-polish/roles/coordinator/role.md +170 -0
  58. package/.claude/skills/team-ui-polish/roles/diagnostician/role.md +160 -0
  59. package/.claude/skills/team-ui-polish/roles/optimizer/role.md +225 -0
  60. package/.claude/skills/team-ui-polish/roles/scanner/role.md +356 -0
  61. package/.claude/skills/team-ui-polish/roles/verifier/role.md +142 -0
  62. package/.claude/skills/team-ui-polish/specs/anti-patterns.md +141 -0
  63. package/.claude/skills/team-ui-polish/specs/design-standards.md +356 -0
  64. package/.claude/skills/team-ui-polish/specs/fix-strategies.md +235 -0
  65. package/.claude/skills/team-ui-polish/specs/pipelines.md +81 -0
  66. package/.claude/skills/team-ui-polish/specs/scoring-guide.md +162 -0
  67. package/.claude/skills/team-ui-polish/specs/team-config.json +73 -0
  68. package/.claude/skills/team-uidesign/SKILL.md +6 -1
  69. package/.claude/skills/team-uidesign/roles/designer/role.md +28 -4
  70. package/.claude/skills/team-uidesign/roles/implementer/role.md +25 -3
  71. package/.claude/skills/team-uidesign/roles/researcher/role.md +21 -2
  72. package/.claude/skills/team-uidesign/roles/reviewer/role.md +19 -17
  73. package/.claude/skills/team-uidesign/specs/anti-patterns.md +211 -0
  74. package/.claude/skills/team-uidesign/specs/design-standards.md +329 -0
  75. package/.claude/skills/team-uidesign/specs/scoring-guide.md +114 -0
  76. package/.claude/skills/team-uidesign/specs/team-config.json +1 -1
  77. package/.claude/skills/team-uidesign/specs/ux-writing.md +86 -0
  78. package/.claude/skills/team-ux-improve/SKILL.md +3 -0
  79. package/.claude/skills/team-ux-improve/roles/designer/role.md +30 -0
  80. package/.claude/skills/team-ux-improve/roles/diagnoser/role.md +16 -1
  81. package/.claude/skills/team-ux-improve/roles/scanner/role.md +43 -1
  82. package/.claude/skills/team-ux-improve/specs/anti-patterns.md +103 -0
  83. package/.claude/skills/team-ux-improve/specs/design-standards.md +54 -0
  84. package/.claude/skills/team-ux-improve/specs/heuristics.md +88 -0
  85. package/.claude/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +40 -8
  86. package/.claude/skills/team-ux-improve/wisdom/patterns/state-management.md +32 -12
  87. package/.claude/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +35 -11
  88. package/.claude/skills/team-ux-improve/wisdom/principles/general-ux.md +36 -9
  89. package/.claude/skills/team-visual-a11y/SKILL.md +143 -0
  90. package/.claude/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
  91. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
  92. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +250 -0
  93. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +204 -0
  94. package/.claude/skills/team-visual-a11y/roles/coordinator/role.md +169 -0
  95. package/.claude/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
  96. package/.claude/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
  97. package/.claude/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
  98. package/.claude/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
  99. package/.claude/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
  100. package/.claude/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
  101. package/.claude/skills/team-visual-a11y/specs/pipelines.md +98 -0
  102. package/.claude/skills/team-visual-a11y/specs/team-config.json +109 -0
  103. package/.claude/skills/team-visual-a11y/specs/typography-scale.md +165 -0
  104. package/.claude/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
  105. package/.codex/skills/brainstorm/SKILL.md +3 -3
  106. package/.codex/skills/clean/SKILL.md +3 -3
  107. package/.codex/skills/investigate/agents/investigator.md +392 -0
  108. package/.codex/skills/investigate/orchestrator.md +362 -0
  109. package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
  110. package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
  111. package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
  112. package/.codex/skills/investigate/phases/04-implementation.md +195 -0
  113. package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
  114. package/.codex/skills/issue-discover/SKILL.md +13 -13
  115. package/.codex/skills/issue-discover/phases/02-discover.md +4 -4
  116. package/.codex/skills/issue-discover/phases/03-discover-by-prompt.md +3 -3
  117. package/.codex/skills/parallel-dev-cycle/SKILL.md +4 -4
  118. package/.codex/skills/parallel-dev-cycle/phases/02-agent-execution.md +6 -6
  119. package/.codex/skills/parallel-dev-cycle/phases/03-result-aggregation.md +10 -10
  120. package/.codex/skills/review-cycle/SKILL.md +10 -10
  121. package/.codex/skills/review-cycle/phases/02-parallel-review.md +6 -6
  122. package/.codex/skills/review-cycle/phases/04-iterative-deep-dive.md +4 -4
  123. package/.codex/skills/review-cycle/phases/07-fix-parallel-planning.md +4 -4
  124. package/.codex/skills/review-cycle/phases/08-fix-execution.md +2 -2
  125. package/.codex/skills/roadmap-with-file/SKILL.md +14 -14
  126. package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
  127. package/.codex/skills/security-audit/orchestrator.md +384 -0
  128. package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
  129. package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
  130. package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
  131. package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
  132. package/.codex/skills/ship/agents/ship-operator.md +318 -0
  133. package/.codex/skills/ship/orchestrator.md +426 -0
  134. package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
  135. package/.codex/skills/ship/phases/02-code-review.md +228 -0
  136. package/.codex/skills/ship/phases/03-version-bump.md +259 -0
  137. package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
  138. package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
  139. package/.codex/skills/spec-generator/README.md +1 -1
  140. package/.codex/skills/spec-generator/SKILL.md +184 -88
  141. package/.codex/skills/spec-generator/phases/01-5-requirement-clarification.md +4 -7
  142. package/.codex/skills/spec-generator/phases/01-discovery.md +30 -11
  143. package/.codex/skills/spec-generator/phases/02-product-brief.md +2 -5
  144. package/.codex/skills/spec-generator/phases/03-requirements.md +4 -6
  145. package/.codex/skills/spec-generator/phases/04-architecture.md +4 -6
  146. package/.codex/skills/spec-generator/phases/05-epics-stories.md +4 -6
  147. package/.codex/skills/spec-generator/phases/06-5-auto-fix.md +4 -5
  148. package/.codex/skills/spec-generator/phases/06-readiness-check.md +8 -8
  149. package/.codex/skills/spec-generator/phases/07-issue-export.md +2 -2
  150. package/.codex/skills/spec-setup/SKILL.md +4 -4
  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/.codex/skills/workflow-plan/SKILL.md +6 -6
  210. package/.codex/skills/workflow-tdd-plan/SKILL.md +5 -5
  211. package/.codex/skills/workflow-test-fix-cycle/SKILL.md +19 -19
  212. package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +5 -5
  213. package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +5 -5
  214. package/README.md +8 -0
  215. package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
  216. package/ccw/dist/core/hooks/hook-templates.js +114 -1
  217. package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
  218. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  219. package/ccw/dist/core/routes/cli-routes.js +34 -0
  220. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  221. package/ccw/dist/core/routes/system-routes.js +2 -2
  222. package/ccw/dist/core/routes/system-routes.js.map +1 -1
  223. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-exlTDW81.js} +3 -3
  224. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-exlTDW81.js.map} +1 -1
  225. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-cgV9LfAI.js} +2 -2
  226. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-cgV9LfAI.js.map} +1 -1
  227. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-Dk5jJdWt.js} +2 -2
  228. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-Dk5jJdWt.js.map} +1 -1
  229. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-Be9xsPiv.js} +2 -2
  230. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-Be9xsPiv.js.map} +1 -1
  231. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-Bh9jBtPI.js} +2 -2
  232. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-Bh9jBtPI.js.map} +1 -1
  233. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BrE-oyEq.js} +2 -2
  234. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BrE-oyEq.js.map} +1 -1
  235. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cd3nrC93.js} +2 -2
  236. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cd3nrC93.js.map} +1 -1
  237. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DXFl3VKF.js} +2 -2
  238. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DXFl3VKF.js.map} +1 -1
  239. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-IV8zpjgX.js} +2 -2
  240. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-IV8zpjgX.js.map} +1 -1
  241. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-CpDxtmRX.js} +2 -2
  242. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-CpDxtmRX.js.map} +1 -1
  243. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-BchjWe7s.js} +2 -2
  244. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-BchjWe7s.js.map} +1 -1
  245. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-CbWvaJ0y.js} +2 -2
  246. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-CbWvaJ0y.js.map} +1 -1
  247. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-YMjVRiCk.js} +2 -2
  248. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-YMjVRiCk.js.map} +1 -1
  249. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-JW2ehYY_.js} +2 -2
  250. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-JW2ehYY_.js.map} +1 -1
  251. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BtqzqDVq.js} +2 -2
  252. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BtqzqDVq.js.map} +1 -1
  253. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-BsJL_W4d.js} +3 -3
  254. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-BsJL_W4d.js.map} +1 -1
  255. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-BuWpQ7k5.js} +2 -2
  256. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-BuWpQ7k5.js.map} +1 -1
  257. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-D0BtMIWy.js} +2 -2
  258. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-D0BtMIWy.js.map} +1 -1
  259. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-C7dwsAKG.js} +2 -2
  260. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-C7dwsAKG.js.map} +1 -1
  261. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-D0nCNaeB.js} +2 -2
  262. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-D0nCNaeB.js.map} +1 -1
  263. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-B5c2Kb9r.js} +3 -3
  264. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-B5c2Kb9r.js.map} +1 -1
  265. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-C-S5CehM.js} +2 -2
  266. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-C-S5CehM.js.map} +1 -1
  267. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-P_B0JVUQ.js} +2 -2
  268. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-P_B0JVUQ.js.map} +1 -1
  269. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-S4Jn9LUE.js} +2 -2
  270. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-S4Jn9LUE.js.map} +1 -1
  271. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-C2Zlr7AC.js} +2 -2
  272. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-C2Zlr7AC.js.map} +1 -1
  273. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-CMVfz8s5.js} +2 -2
  274. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-CMVfz8s5.js.map} +1 -1
  275. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-YEMjFARX.js} +3 -3
  276. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-YEMjFARX.js.map} +1 -1
  277. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-DnTm55nG.js} +2 -2
  278. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-DnTm55nG.js.map} +1 -1
  279. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CUwebtO2.js} +2 -2
  280. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CUwebtO2.js.map} +1 -1
  281. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-0qyH1Z5P.js} +2 -2
  282. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-0qyH1Z5P.js.map} +1 -1
  283. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-BpgP4087.js} +2 -2
  284. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-BpgP4087.js.map} +1 -1
  285. package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js +150 -0
  286. package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js.map +1 -0
  287. package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js +7 -0
  288. package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js.map +1 -0
  289. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DT-yTVkD.js} +4 -4
  290. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DT-yTVkD.js.map} +1 -1
  291. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-CYSPdqWk.js} +2 -2
  292. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-CYSPdqWk.js.map} +1 -1
  293. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-CPh6Zor1.js} +2 -2
  294. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-CPh6Zor1.js.map} +1 -1
  295. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-Ds-8830B.js} +2 -2
  296. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-Ds-8830B.js.map} +1 -1
  297. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-CJODUxBk.js} +2 -2
  298. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-CJODUxBk.js.map} +1 -1
  299. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-Cn3fGUuO.js} +3 -3
  300. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-Cn3fGUuO.js.map} +1 -1
  301. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-CjwVpw6k.js} +2 -2
  302. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-CjwVpw6k.js.map} +1 -1
  303. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-2vZa9Ic3.js} +2 -2
  304. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-2vZa9Ic3.js.map} +1 -1
  305. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-CUU5XDgT.js} +2 -2
  306. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-CUU5XDgT.js.map} +1 -1
  307. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-Cc3nKRZ5.js} +2 -2
  308. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-Cc3nKRZ5.js.map} +1 -1
  309. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-BwpSRDUa.js} +2 -2
  310. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-BwpSRDUa.js.map} +1 -1
  311. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-DBzUW1XC.js} +2 -2
  312. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-DBzUW1XC.js.map} +1 -1
  313. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CGNNsjvE.js} +2 -2
  314. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CGNNsjvE.js.map} +1 -1
  315. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-D27G86Ul.js} +2 -2
  316. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-D27G86Ul.js.map} +1 -1
  317. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-C1Ij47Yz.js} +2 -2
  318. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-C1Ij47Yz.js.map} +1 -1
  319. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-C6MOB7Au.js} +2 -2
  320. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-C6MOB7Au.js.map} +1 -1
  321. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-BxfBlZ26.js} +2 -2
  322. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-BxfBlZ26.js.map} +1 -1
  323. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-NI237wA-.js} +2 -2
  324. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-NI237wA-.js.map} +1 -1
  325. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-Byn2_2v6.js} +2 -2
  326. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-Byn2_2v6.js.map} +1 -1
  327. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-D-7PhZjx.js} +2 -2
  328. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-D-7PhZjx.js.map} +1 -1
  329. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-BoAsK_FL.js} +2 -2
  330. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-BoAsK_FL.js.map} +1 -1
  331. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-DCSxJIS4.js} +2 -2
  332. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-DCSxJIS4.js.map} +1 -1
  333. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-CHS3prza.js} +2 -2
  334. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-CHS3prza.js.map} +1 -1
  335. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-D7K35U7S.js} +2 -2
  336. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-D7K35U7S.js.map} +1 -1
  337. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-eq9xE07G.js} +2 -2
  338. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-eq9xE07G.js.map} +1 -1
  339. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-C1DMpBua.js} +2 -2
  340. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-C1DMpBua.js.map} +1 -1
  341. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-Di5SBCY-.js} +2 -2
  342. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-Di5SBCY-.js.map} +1 -1
  343. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index--_R7COnA.js} +2 -2
  344. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index--_R7COnA.js.map} +1 -1
  345. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-BUol9HDD.js} +3 -3
  346. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-BUol9HDD.js.map} +1 -1
  347. package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-CT9oykfw.js} +2 -2
  348. package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-CT9oykfw.js.map} +1 -1
  349. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-Ddwvf87H.js} +2 -2
  350. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-Ddwvf87H.js.map} +1 -1
  351. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-LiX0qZbN.js} +2 -2
  352. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-LiX0qZbN.js.map} +1 -1
  353. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-CL3DVEwb.js} +2 -2
  354. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-CL3DVEwb.js.map} +1 -1
  355. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CC5cFeq6.js} +2 -2
  356. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CC5cFeq6.js.map} +1 -1
  357. package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-ngFQ9bs0.js} +2 -2
  358. package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-ngFQ9bs0.js.map} +1 -1
  359. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-BEU6I0KK.js} +2 -2
  360. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-BEU6I0KK.js.map} +1 -1
  361. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BWZdLA6y.js} +2 -2
  362. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BWZdLA6y.js.map} +1 -1
  363. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-K6_Chm7n.js} +2 -2
  364. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-K6_Chm7n.js.map} +1 -1
  365. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CWkphauf.js} +2 -2
  366. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CWkphauf.js.map} +1 -1
  367. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-DrNgkamn.js} +2 -2
  368. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-DrNgkamn.js.map} +1 -1
  369. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CMo3sw5_.js} +2 -2
  370. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CMo3sw5_.js.map} +1 -1
  371. package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-DppNTW5e.js} +2 -2
  372. package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-DppNTW5e.js.map} +1 -1
  373. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-CD8aPMbZ.js} +2 -2
  374. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-CD8aPMbZ.js.map} +1 -1
  375. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-B4z90fQD.js} +2 -2
  376. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-B4z90fQD.js.map} +1 -1
  377. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2-CAKRU_QC.js} +2 -2
  378. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2-CAKRU_QC.js.map} +1 -1
  379. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-KhI3HrzX.js} +2 -2
  380. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-KhI3HrzX.js.map} +1 -1
  381. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-BtdGIpuq.js} +2 -2
  382. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-BtdGIpuq.js.map} +1 -1
  383. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-ZoBUkXoD.js} +2 -2
  384. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-ZoBUkXoD.js.map} +1 -1
  385. package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CltxQP-P.js} +2 -2
  386. package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CltxQP-P.js.map} +1 -1
  387. package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-C32OUSGf.js} +2 -2
  388. package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-C32OUSGf.js.map} +1 -1
  389. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-0IxoyAVZ.js} +2 -2
  390. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-0IxoyAVZ.js.map} +1 -1
  391. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-4eKCkyBn.js} +2 -2
  392. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-4eKCkyBn.js.map} +1 -1
  393. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-zLTUWqhi.js} +2 -2
  394. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-zLTUWqhi.js.map} +1 -1
  395. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-BtN2vpOX.js} +2 -2
  396. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-BtN2vpOX.js.map} +1 -1
  397. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-_spj49qL.js} +2 -2
  398. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-_spj49qL.js.map} +1 -1
  399. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-Bm9KFZvd.js} +2 -2
  400. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-Bm9KFZvd.js.map} +1 -1
  401. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-DOmpm6v9.js} +2 -2
  402. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-DOmpm6v9.js.map} +1 -1
  403. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-D2rj4rea.js} +2 -2
  404. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-D2rj4rea.js.map} +1 -1
  405. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-OskEpomF.js} +3 -3
  406. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-OskEpomF.js.map} +1 -1
  407. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-BjMgsNSF.js} +2 -2
  408. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-BjMgsNSF.js.map} +1 -1
  409. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-CLhyYWa7.js} +2 -2
  410. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-CLhyYWa7.js.map} +1 -1
  411. package/ccw/frontend/dist/index.html +1 -1
  412. package/package.json +105 -105
  413. package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js +0 -150
  414. package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
  415. package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js +0 -7
  416. package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js.map +0 -1
@@ -0,0 +1,222 @@
1
+ ---
2
+ name: team-motion-design
3
+ description: Unified team skill for motion design. Animation token systems, scroll choreography, GPU-accelerated transforms, reduced-motion fallback. Uses team-worker agent architecture. Triggers on "team motion design", "animation system".
4
+ allowed-tools: spawn_agent(*), wait_agent(*), send_message(*), assign_task(*), close_agent(*), list_agents(*), report_agent_job_result(*), request_user_input(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), mcp__ccw-tools__read_file(*), mcp__ccw-tools__write_file(*), mcp__ccw-tools__edit_file(*), mcp__ccw-tools__team_msg(*), mcp__chrome-devtools__evaluate_script(*), mcp__chrome-devtools__take_screenshot(*), mcp__chrome-devtools__performance_start_trace(*), mcp__chrome-devtools__performance_stop_trace(*), mcp__chrome-devtools__performance_analyze_insight(*)
5
+ ---
6
+
7
+ # Team Motion Design
8
+
9
+ Systematic motion design pipeline: research -> choreography -> animation -> performance testing. Built on **team-worker agent architecture** -- all worker roles share a single agent definition with role-specific Phase 2-4 loaded from `roles/<role>/role.md`.
10
+
11
+ ## Architecture
12
+
13
+ ```
14
+ Skill(skill="team-motion-design", args="task description")
15
+ |
16
+ SKILL.md (this file) = Router
17
+ |
18
+ +--------------+--------------+
19
+ | |
20
+ no --role flag --role <name>
21
+ | |
22
+ Coordinator Worker
23
+ roles/coordinator/role.md roles/<name>/role.md
24
+ |
25
+ +-- analyze -> dispatch -> spawn workers -> STOP
26
+ |
27
+ +-------+-------+-------+-------+
28
+ v v v v
29
+ [team-worker agents, each loads roles/<role>/role.md]
30
+ motion-researcher choreographer animator motion-tester
31
+ ```
32
+
33
+ ## Role Registry
34
+
35
+ | Role | Path | Prefix | Inner Loop |
36
+ |------|------|--------|------------|
37
+ | coordinator | [roles/coordinator/role.md](roles/coordinator/role.md) | -- | -- |
38
+ | motion-researcher | [roles/motion-researcher/role.md](roles/motion-researcher/role.md) | MRESEARCH-* | false |
39
+ | choreographer | [roles/choreographer/role.md](roles/choreographer/role.md) | CHOREO-* | false |
40
+ | animator | [roles/animator/role.md](roles/animator/role.md) | ANIM-* | true |
41
+ | motion-tester | [roles/motion-tester/role.md](roles/motion-tester/role.md) | MTEST-* | false |
42
+
43
+ ## Role Router
44
+
45
+ Parse `$ARGUMENTS`:
46
+ - Has `--role <name>` -> Read `roles/<name>/role.md`, execute Phase 2-4
47
+ - No `--role` -> `roles/coordinator/role.md`, execute entry router
48
+
49
+ ## Delegation Lock
50
+
51
+ **Coordinator is a PURE ORCHESTRATOR. It coordinates, it does NOT do.**
52
+
53
+ Before calling ANY tool, apply this check:
54
+
55
+ | Tool Call | Verdict | Reason |
56
+ |-----------|---------|--------|
57
+ | `spawn_agent`, `wait_agent`, `close_agent`, `send_message`, `assign_task` | ALLOWED | Orchestration |
58
+ | `list_agents` | ALLOWED | Agent health check |
59
+ | `request_user_input` | ALLOWED | User interaction |
60
+ | `mcp__ccw-tools__team_msg` | ALLOWED | Message bus |
61
+ | `Read/Write` on `.workflow/.team/` files | ALLOWED | Session state |
62
+ | `Read` on `roles/`, `commands/`, `specs/` | ALLOWED | Loading own instructions |
63
+ | `Read/Grep/Glob` on project source code | BLOCKED | Delegate to worker |
64
+ | `Edit` on any file outside `.workflow/` | BLOCKED | Delegate to worker |
65
+ | `Bash("ccw cli ...")` | BLOCKED | Only workers call CLI |
66
+ | `Bash` running build/test/lint commands | BLOCKED | Delegate to worker |
67
+
68
+ **If a tool call is BLOCKED**: STOP. Create a task, spawn a worker.
69
+
70
+ **No exceptions for "simple" tasks.** Even a single-file read-and-report MUST go through spawn_agent.
71
+
72
+ ---
73
+
74
+ ## Shared Constants
75
+
76
+ - **Session prefix**: `MD`
77
+ - **Session path**: `.workflow/.team/MD-<slug>-<date>/`
78
+ - **CLI tools**: `ccw cli --mode analysis` (read-only), `ccw cli --mode write` (modifications)
79
+ - **Message bus**: `mcp__ccw-tools__team_msg(session_id=<session-id>, ...)`
80
+ - **Max GC rounds**: 2
81
+
82
+ ## Worker Spawn Template
83
+
84
+ Coordinator spawns workers using this template:
85
+
86
+ ```
87
+ spawn_agent({
88
+ agent_type: "team_worker",
89
+ task_name: "<task-id>",
90
+ fork_context: false,
91
+ items: [
92
+ { type: "text", text: `## Role Assignment
93
+ role: <role>
94
+ role_spec: <skill_root>/roles/<role>/role.md
95
+ session: <session-folder>
96
+ session_id: <session-id>
97
+ requirement: <task-description>
98
+ inner_loop: <true|false>
99
+
100
+ Read role_spec file (<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.` },
101
+
102
+ { type: "text", text: `## Task Context
103
+ task_id: <task-id>
104
+ title: <task-title>
105
+ description: <task-description>
106
+ pipeline_phase: <pipeline-phase>` },
107
+
108
+ { type: "text", text: `## Upstream Context
109
+ <prev_context>` }
110
+ ]
111
+ })
112
+ ```
113
+
114
+ After spawning, use `wait_agent({ targets: [...], timeout_ms: 900000 })` to collect results, then `close_agent({ target })` each worker.
115
+
116
+
117
+ ### Model Selection Guide
118
+
119
+ Motion design is a performance-critical pipeline where research informs choreography decisions and animations must pass strict GPU performance gates. Researcher needs thorough profiling, animator needs creative implementation with inner loop capability.
120
+
121
+ | Role | reasoning_effort | Rationale |
122
+ |------|-------------------|-----------|
123
+ | motion-researcher | high | Deep performance profiling and animation audit across codebase |
124
+ | choreographer | high | Creative token system design and scroll choreography sequencing |
125
+ | animator | high | Complex CSS/JS animation implementation with compositor constraints |
126
+ | motion-tester | medium | Performance validation follows defined test criteria and scoring |
127
+
128
+ ### Research-to-Choreography Context Flow
129
+
130
+ Researcher findings must reach choreographer via coordinator's upstream context:
131
+ ```
132
+ // After MRESEARCH-001 completes, coordinator sends findings to choreographer
133
+ spawn_agent({
134
+ agent_type: "team_worker",
135
+ task_name: "CHOREO-001",
136
+ fork_context: false,
137
+ items: [
138
+ ...,
139
+ { type: "text", text: `## Upstream Context
140
+ Research findings: <session>/research/animation-inventory.json
141
+ Performance baseline: <session>/research/performance-baseline.json
142
+ Easing catalog: <session>/research/easing-catalog.json` }
143
+ ]
144
+ })
145
+ ```
146
+
147
+ ## User Commands
148
+
149
+ | Command | Action |
150
+ |---------|--------|
151
+ | `check` / `status` | View execution status graph |
152
+ | `resume` / `continue` | Advance to next step |
153
+
154
+ ## Specs Reference
155
+
156
+ - [specs/pipelines.md](specs/pipelines.md) -- Pipeline definitions and task registry
157
+ - [specs/motion-tokens.md](specs/motion-tokens.md) -- Animation token schema
158
+ - [specs/gpu-constraints.md](specs/gpu-constraints.md) -- Compositor-only animation rules
159
+ - [specs/reduced-motion.md](specs/reduced-motion.md) -- Accessibility motion preferences
160
+
161
+ ## Session Directory
162
+
163
+ ```
164
+ .workflow/.team/MD-<slug>-<date>/
165
+ +-- .msg/
166
+ | +-- messages.jsonl # Team message bus
167
+ | +-- meta.json # Pipeline config + GC state
168
+ +-- research/ # Motion researcher output
169
+ | +-- perf-traces/ # Chrome DevTools performance traces
170
+ | +-- animation-inventory.json
171
+ | +-- performance-baseline.json
172
+ | +-- easing-catalog.json
173
+ +-- choreography/ # Choreographer output
174
+ | +-- motion-tokens.json
175
+ | +-- sequences/ # Scroll choreography sequences
176
+ +-- animations/ # Animator output
177
+ | +-- keyframes/ # CSS @keyframes files
178
+ | +-- orchestrators/ # JS animation orchestrators
179
+ +-- testing/ # Motion tester output
180
+ | +-- traces/ # Performance trace data
181
+ | +-- reports/ # Performance reports
182
+ +-- wisdom/ # Cross-task knowledge
183
+ ```
184
+
185
+ ## v4 Agent Coordination
186
+
187
+ ### Message Semantics
188
+
189
+ | Intent | API | Example |
190
+ |--------|-----|---------|
191
+ | Queue supplementary info (don't interrupt) | `send_message` | Send research findings to running choreographer |
192
+ | Assign implementation from reviewed specs | `assign_task` | Assign ANIM task after choreography passes |
193
+ | Check running agents | `list_agents` | Verify agent health during resume |
194
+
195
+ ### Agent Health Check
196
+
197
+ Use `list_agents({})` in handleResume and handleComplete:
198
+
199
+ ```
200
+ // Reconcile session state with actual running agents
201
+ const running = list_agents({})
202
+ // Compare with tasks.json active_agents
203
+ // Reset orphaned tasks (in_progress but agent gone) to pending
204
+ ```
205
+
206
+ ### Named Agent Targeting
207
+
208
+ Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
209
+ - `send_message({ target: "CHOREO-001", items: [...] })` -- send additional research findings to choreographer
210
+ - `assign_task({ target: "ANIM-001", items: [...] })` -- assign animation from reviewed choreography specs
211
+ - `close_agent({ target: "MTEST-001" })` -- cleanup after performance test
212
+
213
+ ## Error Handling
214
+
215
+ | Scenario | Resolution |
216
+ |----------|------------|
217
+ | Unknown command | Error with available command list |
218
+ | Role not found | Error with role registry |
219
+ | Session corruption | Attempt recovery, fallback to manual |
220
+ | Fast-advance conflict | Coordinator reconciles on next callback |
221
+ | Completion action fails | Default to Keep Active |
222
+ | GC loop stuck > 2 rounds | Escalate to user: accept / retry / terminate |
@@ -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
+ ```