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