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,220 @@
1
+ ---
2
+ name: team-interactive-craft
3
+ description: Unified team skill for interactive component crafting. Vanilla JS + CSS interactive components with zero dependencies. Research -> interaction design -> build -> a11y test. Uses team-worker agent architecture with roles/ for domain logic. Coordinator orchestrates pipeline with GC loops and sync points. Triggers on "team interactive craft", "interactive component".
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__ace-tool__search_context(*), mcp__ccw-tools__read_file(*), mcp__ccw-tools__write_file(*), mcp__ccw-tools__edit_file(*), mcp__ccw-tools__team_msg(*)
5
+ ---
6
+
7
+ # Team Interactive Craft
8
+
9
+ Systematic interactive component pipeline: research -> interaction design -> build -> a11y test. 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-interactive-craft", 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
+ researcher interaction-designer builder a11y-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
+ | researcher | [roles/researcher/role.md](roles/researcher/role.md) | RESEARCH-* | false |
39
+ | interaction-designer | [roles/interaction-designer/role.md](roles/interaction-designer/role.md) | INTERACT-* | false |
40
+ | builder | [roles/builder/role.md](roles/builder/role.md) | BUILD-* | true |
41
+ | a11y-tester | [roles/a11y-tester/role.md](roles/a11y-tester/role.md) | A11Y-* | 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**: `IC`
77
+ - **Session path**: `.workflow/.team/IC-<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
+ Interactive craft is a technical pipeline where research informs interaction design, which guides implementation. Builder needs creative problem-solving for vanilla JS constraints, a11y-tester needs thorough analysis.
120
+
121
+ | Role | reasoning_effort | Rationale |
122
+ |------|-------------------|-----------|
123
+ | researcher | high | Deep analysis of existing interactive patterns and browser APIs |
124
+ | interaction-designer | high | Creative state machine and event flow design |
125
+ | builder | high | Complex vanilla JS implementation with GPU animation and touch handling |
126
+ | a11y-tester | high | Thorough accessibility audit must catch all keyboard/screen reader issues |
127
+
128
+ ### Research-to-Design Context Flow
129
+
130
+ Researcher findings must reach interaction-designer via coordinator's upstream context:
131
+ ```
132
+ // After RESEARCH-001 completes, coordinator sends findings to interaction-designer
133
+ spawn_agent({
134
+ agent_type: "team_worker",
135
+ task_name: "INTERACT-001",
136
+ fork_context: false,
137
+ items: [
138
+ ...,
139
+ { type: "text", text: `## Upstream Context
140
+ Research findings: <session>/research/interaction-inventory.json
141
+ Browser API audit: <session>/research/browser-api-audit.json
142
+ Pattern reference: <session>/research/pattern-reference.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/interaction-patterns.md](specs/interaction-patterns.md) -- Interaction pattern catalog
158
+ - [specs/vanilla-constraints.md](specs/vanilla-constraints.md) -- Zero-dependency rules
159
+
160
+ ## Session Directory
161
+
162
+ ```
163
+ .workflow/.team/IC-<slug>-<date>/
164
+ +-- .msg/
165
+ | +-- messages.jsonl # Team message bus
166
+ | +-- meta.json # Pipeline config + GC state
167
+ +-- research/ # Researcher output
168
+ | +-- interaction-inventory.json
169
+ | +-- browser-api-audit.json
170
+ | +-- pattern-reference.json
171
+ +-- interaction/ # Interaction designer output
172
+ | +-- blueprints/
173
+ | +-- {component-name}.md
174
+ +-- build/ # Builder output
175
+ | +-- components/
176
+ | +-- {name}.js
177
+ | +-- {name}.css
178
+ +-- a11y/ # A11y tester output
179
+ | +-- a11y-audit-{NNN}.md
180
+ +-- wisdom/ # Cross-task knowledge
181
+ ```
182
+
183
+ ## v4 Agent Coordination
184
+
185
+ ### Message Semantics
186
+
187
+ | Intent | API | Example |
188
+ |--------|-----|---------|
189
+ | Queue supplementary info (don't interrupt) | `send_message` | Send research findings to running interaction-designer |
190
+ | Assign build from reviewed blueprints | `assign_task` | Assign BUILD task after blueprint review |
191
+ | Check running agents | `list_agents` | Verify agent health during resume |
192
+
193
+ ### Agent Health Check
194
+
195
+ Use `list_agents({})` in handleResume and handleComplete:
196
+
197
+ ```
198
+ // Reconcile session state with actual running agents
199
+ const running = list_agents({})
200
+ // Compare with tasks.json active_agents
201
+ // Reset orphaned tasks (in_progress but agent gone) to pending
202
+ ```
203
+
204
+ ### Named Agent Targeting
205
+
206
+ Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
207
+ - `send_message({ target: "INTERACT-001", items: [...] })` -- send research findings to interaction-designer
208
+ - `assign_task({ target: "BUILD-001", items: [...] })` -- assign implementation from interaction blueprint
209
+ - `close_agent({ target: "A11Y-001" })` -- cleanup after a11y audit
210
+
211
+ ## Error Handling
212
+
213
+ | Scenario | Resolution |
214
+ |----------|------------|
215
+ | Unknown command | Error with available command list |
216
+ | Role not found | Error with role registry |
217
+ | Session corruption | Attempt recovery, fallback to manual |
218
+ | Fast-advance conflict | Coordinator reconciles on next callback |
219
+ | Completion action fails | Default to Keep Active |
220
+ | GC loop stuck > 2 rounds | Escalate to user: accept / retry / terminate |
@@ -0,0 +1,159 @@
1
+ ---
2
+ role: a11y-tester
3
+ prefix: A11Y
4
+ inner_loop: false
5
+ message_types: [state_update]
6
+ ---
7
+
8
+ # Accessibility Tester
9
+
10
+ Test interactive components for keyboard navigation, screen reader compatibility, reduced motion fallback, focus management, and color contrast. Act as Critic in the builder<->a11y-tester Generator-Critic loop. Serve as quality gate before pipeline completion.
11
+
12
+ ## Phase 2: Context & Artifact Loading
13
+
14
+ | Input | Source | Required |
15
+ |-------|--------|----------|
16
+ | Built components | <session>/build/components/*.js, *.css | Yes |
17
+ | Interaction blueprints | <session>/interaction/blueprints/*.md | Yes |
18
+ | Research artifacts | <session>/research/browser-api-audit.json | No |
19
+ | Previous audits | <session>/a11y/a11y-audit-*.md | Only for GC re-audit |
20
+ | .msg/meta.json | <session>/wisdom/.msg/meta.json | Yes |
21
+
22
+ 1. Extract session path from task description
23
+ 2. Read all built component files (JS + CSS)
24
+ 3. Read interaction blueprints for expected behavior reference
25
+ 4. If GC re-audit: read previous audit to track improvement/regression
26
+ 5. Load audit history from meta.json for trend analysis
27
+
28
+ ## Phase 3: Audit Execution
29
+
30
+ Test 5 accessibility dimensions. For each, evaluate every built component:
31
+
32
+ ### Dimension 1: Keyboard Navigation (Weight: 25%)
33
+
34
+ | Check | Method | Pass Criteria |
35
+ |-------|--------|---------------|
36
+ | Tab order | Scan tabindex values, focusable elements | Logical tab order, no tabindex > 0 |
37
+ | Arrow key navigation | Check onKeyDown for ArrowLeft/Right/Up/Down | All navigable items reachable via arrows |
38
+ | Enter/Space activation | Check onKeyDown for Enter, Space | All interactive elements activatable |
39
+ | Escape dismissal | Check onKeyDown for Escape | Overlays/modals dismiss on Escape |
40
+ | Focus trap (overlays) | Check focus cycling logic | Tab stays within overlay when open |
41
+ | No keyboard trap | Verify all states have keyboard exit | Can always Tab/Escape out of component |
42
+
43
+ Score: count(pass) / count(total_checks) * 10
44
+
45
+ ### Dimension 2: Screen Reader Compatibility (Weight: 25%)
46
+
47
+ | Check | Method | Pass Criteria |
48
+ |-------|--------|---------------|
49
+ | ARIA role | Scan for role attribute | Appropriate role set (slider, dialog, tablist, etc.) |
50
+ | ARIA label | Scan for aria-label, aria-labelledby | All interactive elements have accessible name |
51
+ | ARIA states | Scan for aria-expanded, aria-selected, aria-hidden | Dynamic states update with interaction |
52
+ | Live regions | Scan for aria-live, aria-atomic | State changes announced (polite/assertive as needed) |
53
+ | Semantic HTML | Check element types | Uses button/a/input where appropriate, not div-only |
54
+ | Alt text | Check img/svg elements | Decorative: aria-hidden; informative: alt/aria-label |
55
+
56
+ Score: count(pass) / count(total_checks) * 10
57
+
58
+ ### Dimension 3: Reduced Motion (Weight: 20%)
59
+
60
+ | Check | Method | Pass Criteria |
61
+ |-------|--------|---------------|
62
+ | Media query present | Search CSS for prefers-reduced-motion | @media (prefers-reduced-motion: reduce) exists |
63
+ | Transitions disabled | Check reduced-motion block | transition-duration near 0 or removed |
64
+ | Animations disabled | Check reduced-motion block | animation-duration near 0 or removed |
65
+ | Content still accessible | Verify no content depends on animation | Information conveyed without motion |
66
+ | JS respects preference | Check matchMedia usage | JS checks prefers-reduced-motion before animating |
67
+
68
+ Score: count(pass) / count(total_checks) * 10
69
+
70
+ ### Dimension 4: Focus Management (Weight: 20%)
71
+
72
+ | Check | Method | Pass Criteria |
73
+ |-------|--------|---------------|
74
+ | Visible focus indicator | Search CSS for :focus-visible | Visible outline/ring on keyboard focus |
75
+ | Focus contrast | Check outline color against background | >= 3:1 contrast ratio |
76
+ | Focus on open | Check overlay/modal open logic | Focus moves to first interactive element |
77
+ | Focus on close | Check overlay/modal close logic | Focus returns to trigger element |
78
+ | No focus loss | Check state transitions | Focus never moves to non-interactive element |
79
+ | Skip link (page mode) | Check for skip navigation | Present if multiple interactive sections |
80
+
81
+ Score: count(pass) / count(total_checks) * 10
82
+
83
+ ### Dimension 5: Color Contrast (Weight: 10%)
84
+
85
+ | Check | Method | Pass Criteria |
86
+ |-------|--------|---------------|
87
+ | Text contrast | Evaluate CSS color vs background | >= 4.5:1 for normal text, >= 3:1 for large text |
88
+ | UI component contrast | Evaluate interactive element borders/fills | >= 3:1 against adjacent colors |
89
+ | Focus indicator contrast | Evaluate outline color | >= 3:1 against background |
90
+ | State indication | Check non-color state indicators | State not conveyed by color alone |
91
+
92
+ Score: count(pass) / count(total_checks) * 10
93
+
94
+ ### Overall Score Calculation
95
+
96
+ `overallScore = round(keyboard*0.25 + screenReader*0.25 + reducedMotion*0.20 + focus*0.20 + contrast*0.10)`
97
+
98
+ ### Issue Classification
99
+
100
+ | Severity | Definition | Examples |
101
+ |----------|-----------|----------|
102
+ | Critical | Component unusable for assistive tech users | No keyboard access, no ARIA role, focus trap |
103
+ | High | Significant barrier, workaround exists | Missing aria-label, no reduced motion, poor focus |
104
+ | Medium | Minor inconvenience | Suboptimal tab order, missing live region |
105
+ | Low | Enhancement opportunity | Could improve contrast, better semantic HTML |
106
+
107
+ ### Signal Determination
108
+
109
+ | Condition | Signal |
110
+ |-----------|--------|
111
+ | 0 critical AND 0 high issues | `a11y_passed` (GC CONVERGED) |
112
+ | 0 critical AND high_count > 0 | `a11y_result` (GC REVISION NEEDED) |
113
+ | critical_count > 0 | `fix_required` (CRITICAL FIX NEEDED) |
114
+
115
+ ## Phase 4: Report & Output
116
+
117
+ 1. Write audit report to `<session>/a11y/a11y-audit-{NNN}.md`:
118
+
119
+ ```markdown
120
+ # A11y Audit Report - {NNN}
121
+
122
+ ## Summary
123
+ - **Overall Score**: X/10
124
+ - **Signal**: a11y_passed | a11y_result | fix_required
125
+ - **Critical**: N | **High**: N | **Medium**: N | **Low**: N
126
+
127
+ ## Dimension Scores
128
+
129
+ | Dimension | Score | Weight | Weighted |
130
+ |-----------|-------|--------|----------|
131
+ | Keyboard Navigation | X/10 | 25% | X.XX |
132
+ | Screen Reader | X/10 | 25% | X.XX |
133
+ | Reduced Motion | X/10 | 20% | X.XX |
134
+ | Focus Management | X/10 | 20% | X.XX |
135
+ | Color Contrast | X/10 | 10% | X.XX |
136
+
137
+ ## Issues
138
+
139
+ ### Critical
140
+ - [C-001] {description} | File: {file}:{line} | Fix: {remediation}
141
+
142
+ ### High
143
+ - [H-001] {description} | File: {file}:{line} | Fix: {remediation}
144
+
145
+ ### Medium
146
+ - [M-001] {description} | File: {file}:{line} | Fix: {remediation}
147
+
148
+ ## GC Loop Status
149
+ - **Signal**: {signal}
150
+ - **Action Required**: {none | builder fix | escalate}
151
+
152
+ ## Trend (if previous audit exists)
153
+ - Previous score: X/10 -> Current: X/10 ({improving|stable|declining})
154
+ - Resolved issues: [list]
155
+ - New issues: [list]
156
+ ```
157
+
158
+ 2. Update `<session>/wisdom/.msg/meta.json` under `a11y-tester` namespace:
159
+ - Read existing -> merge `{ "a11y-tester": { audit_id, score, critical_count, high_count, signal, timestamp } }` -> write back
@@ -0,0 +1,216 @@
1
+ ---
2
+ role: builder
3
+ prefix: BUILD
4
+ inner_loop: true
5
+ message_types: [state_update]
6
+ ---
7
+
8
+ # Interactive Component Builder
9
+
10
+ Implement vanilla JS + CSS interactive components from interaction blueprints. Zero dependencies, ES modules, progressive enhancement, GPU-only animations, touch-aware. Act as Generator in the builder<->a11y-tester Generator-Critic loop.
11
+
12
+ ## Phase 2: Context & Artifact Loading
13
+
14
+ | Input | Source | Required |
15
+ |-------|--------|----------|
16
+ | Interaction blueprints | <session>/interaction/blueprints/*.md | Yes |
17
+ | Research artifacts | <session>/research/*.json | Yes |
18
+ | .msg/meta.json | <session>/wisdom/.msg/meta.json | Yes |
19
+ | A11y audit feedback | <session>/a11y/a11y-audit-*.md | Only for GC fix tasks |
20
+
21
+ 1. Extract session path from task description
22
+ 2. Read interaction blueprint for target component
23
+ 3. Read research artifacts: browser-api-audit.json (API availability), pattern-reference.json (reference patterns)
24
+ 4. Detect task type from subject: numbered -> New component, "fix" -> GC fix
25
+ 5. If GC fix task: read latest a11y audit feedback
26
+
27
+ ## Phase 3: Implementation Execution
28
+
29
+ **Component Implementation (BUILD-001, BUILD-002, etc.)**:
30
+
31
+ ### JavaScript (ES Module)
32
+ Implement component class in `<session>/build/components/{name}.js`:
33
+
34
+ ```javascript
35
+ // Structure template (adapt to component type)
36
+ export class ComponentName {
37
+ // --- Configuration ---
38
+ static defaults = { /* configurable params from blueprint */ };
39
+
40
+ // --- Lifecycle ---
41
+ constructor(element, options = {}) { /* merge options, query DOM, bind events */ }
42
+ init() { /* setup observers, initial state */ }
43
+ destroy() { /* cleanup: remove listeners, disconnect observers */ }
44
+
45
+ // --- State Machine ---
46
+ #state = 'idle';
47
+ #setState(next) { /* validate transition, update, trigger side effects */ }
48
+
49
+ // --- Event Handlers (from blueprint event flow map) ---
50
+ #onPointerDown(e) { /* setPointerCapture, transition state */ }
51
+ #onPointerMove(e) { /* lerp interpolation, update transform */ }
52
+ #onPointerUp(e) { /* releasePointerCapture, settle animation */ }
53
+ #onKeyDown(e) { /* keyboard mapping from blueprint */ }
54
+
55
+ // --- Animation ---
56
+ #lerp(current, target, speed) { return current + (target - current) * speed; }
57
+ #animate() { /* requestAnimationFrame loop, GPU-only transforms */ }
58
+
59
+ // --- Observers ---
60
+ #resizeObserver = null; // responsive behavior
61
+ #intersectionObserver = null; // scroll triggers
62
+
63
+ // --- Accessibility ---
64
+ #announceToScreenReader(message) { /* aria-live region update */ }
65
+ }
66
+
67
+ // Auto-init: progressive enhancement
68
+ document.querySelectorAll('[data-component-name]').forEach(el => {
69
+ new ComponentName(el);
70
+ });
71
+ ```
72
+
73
+ Requirements:
74
+ - Pure ES module with `export` (no CommonJS, no bundler)
75
+ - Class-based with private fields (#)
76
+ - Constructor accepts DOM element + options object
77
+ - State machine from blueprint with validated transitions
78
+ - Event handlers from blueprint event flow map
79
+ - Lerp interpolation for smooth drag/follow (speed from blueprint)
80
+ - requestAnimationFrame for frame-synced updates
81
+ - setPointerCapture for reliable drag tracking
82
+ - ResizeObserver for responsive layout adjustments
83
+ - IntersectionObserver for scroll-triggered behavior (when applicable)
84
+ - Proper cleanup in destroy() method
85
+ - Auto-init via data attribute for progressive enhancement
86
+
87
+ ### CSS (Custom Properties)
88
+ Implement styles in `<session>/build/components/{name}.css`:
89
+
90
+ ```css
91
+ /* Structure template */
92
+ /* --- Custom Properties (configurable) --- */
93
+ .component-name {
94
+ --component-duration: 400ms;
95
+ --component-easing: cubic-bezier(0.16, 1, 0.3, 1);
96
+ --component-color-primary: #1a1a2e;
97
+ /* ... from blueprint animation choreography */
98
+ }
99
+
100
+ /* --- Base Layout (works without JS) --- */
101
+ .component-name { /* progressive enhancement base */ }
102
+
103
+ /* --- States (from blueprint state machine) --- */
104
+ .component-name[data-state="idle"] { }
105
+ .component-name[data-state="hover"] { }
106
+ .component-name[data-state="active"] { }
107
+ .component-name[data-state="dragging"] { }
108
+
109
+ /* --- Animations (GPU-only: transform + opacity) --- */
110
+ .component-name__element {
111
+ transform: translateX(0);
112
+ opacity: 1;
113
+ transition: transform var(--component-duration) var(--component-easing),
114
+ opacity var(--component-duration) var(--component-easing);
115
+ will-change: transform, opacity;
116
+ }
117
+
118
+ /* --- Focus Styles --- */
119
+ .component-name:focus-visible {
120
+ outline: 2px solid var(--component-focus-color, #4a9eff);
121
+ outline-offset: 2px;
122
+ }
123
+
124
+ /* --- Reduced Motion --- */
125
+ @media (prefers-reduced-motion: reduce) {
126
+ .component-name,
127
+ .component-name * {
128
+ transition-duration: 0.01ms !important;
129
+ animation-duration: 0.01ms !important;
130
+ }
131
+ }
132
+
133
+ /* --- Responsive --- */
134
+ @media (max-width: 768px) { /* touch-optimized sizes */ }
135
+ ```
136
+
137
+ Requirements:
138
+ - CSS custom properties for all configurable values (no preprocessor)
139
+ - Base layout works without JavaScript (progressive enhancement)
140
+ - State-driven via data attributes (`data-state`, `data-active`)
141
+ - GPU-only animations: transform + opacity ONLY (no width/height/top/left)
142
+ - `will-change` on animated elements
143
+ - `prefers-reduced-motion` media query with instant transitions
144
+ - `focus-visible` for keyboard-only focus ring
145
+ - Responsive breakpoints for touch targets (min 44x44px)
146
+ - No inline styles from JS -- use CSS classes and custom properties
147
+
148
+ ### Native Platform APIs (prefer over custom implementations)
149
+
150
+ **Dialog API** (`<dialog>`):
151
+ - Use `<dialog>` for modals -- provides built-in focus trap and backdrop
152
+ - `dialog.showModal()` for modal (with backdrop, escape-to-close, focus trap)
153
+ - `dialog.show()` for non-modal
154
+ - `dialog.close()` to dismiss
155
+ - Style `::backdrop` pseudo-element for overlay
156
+ - Returns focus to trigger element on close
157
+ - Add `inert` attribute to siblings when modal is open (prevents background interaction)
158
+
159
+ **Popover API** (native tooltips/dropdowns):
160
+ - `<div popover>` for light-dismiss popovers (click-outside-to-close)
161
+ - `<button popovertarget="id">` for trigger
162
+ - Auto-stacking (no z-index management needed)
163
+ - Built-in accessibility (focus management, escape-to-close)
164
+ - Use for: tooltips, dropdown menus, date pickers, color pickers
165
+
166
+ **CSS Anchor Positioning** (Chrome 125+, progressive enhancement):
167
+ - `anchor-name: --trigger` on trigger element
168
+ - `position-anchor: --trigger` on positioned element
169
+ - `@position-try` for fallback positioning
170
+ - Fallback: `position: fixed` with JS-calculated coordinates
171
+
172
+ **GC Fix Mode (BUILD-fix-N)**:
173
+ - Parse a11y audit feedback for specific issues
174
+ - Re-read affected component files
175
+ - Apply targeted fixes: missing ARIA attributes, keyboard handlers, focus management, contrast adjustments
176
+ - Re-write affected files
177
+ - Signal `build_revision` instead of `build_ready`
178
+
179
+ ## Phase 4: Self-Validation & Output
180
+
181
+ 1. Zero-dependency check:
182
+
183
+ | Check | Pass Criteria |
184
+ |-------|---------------|
185
+ | No imports from npm | No `import` from node_modules paths |
186
+ | No require() | No CommonJS require statements |
187
+ | ES module exports | Uses `export class` or `export function` |
188
+ | No build tools needed | Runs directly in browser with `<script type="module">` |
189
+
190
+ 2. State machine completeness:
191
+
192
+ | Check | Pass Criteria |
193
+ |-------|---------------|
194
+ | All states from blueprint | Every blueprint state has corresponding code path |
195
+ | All transitions | Every transition has handler code |
196
+ | Error recovery | All states can reach idle via reset |
197
+
198
+ 3. Accessibility baseline:
199
+
200
+ | Check | Pass Criteria |
201
+ |-------|---------------|
202
+ | Keyboard handlers | onKeyDown handles Enter, Space, Escape, Arrows |
203
+ | ARIA attributes | role, aria-label, aria-expanded (as needed) set |
204
+ | Focus management | tabindex, focus-visible styles present |
205
+ | Reduced motion | prefers-reduced-motion media query in CSS |
206
+
207
+ 4. Performance baseline:
208
+
209
+ | Check | Pass Criteria |
210
+ |-------|---------------|
211
+ | GPU-only transforms | No width/height/top/left in transitions |
212
+ | No forced reflow | No offsetWidth/getBoundingClientRect in animation loop |
213
+ | Cleanup | destroy() disconnects all observers and listeners |
214
+
215
+ 5. Update `<session>/wisdom/.msg/meta.json` under `builder` namespace:
216
+ - Read existing -> merge `{ "builder": { task_type, component_name, file_count, output_dir, states_implemented, events_bound } }` -> write back
@@ -0,0 +1,71 @@
1
+ # Analyze Task
2
+
3
+ Parse user task -> detect interactive component scope -> identify browser APIs -> 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
+ | split, compare, before/after, slider, divider | split-compare | single |
12
+ | gallery, carousel, scroll-snap, horizontal scroll | scroll-snap-gallery | gallery |
13
+ | lightbox, modal, overlay, fullscreen view | lightbox | single |
14
+ | scroll reveal, appear on scroll, fade in, stagger | scroll-reveal | single or gallery |
15
+ | glass, terminal, frosted, blur, backdrop | glass-terminal | single |
16
+ | lens, magnify, zoom, loupe | lens-effect | single |
17
+ | drag, resize, pointer, touch | pointer-interaction | single |
18
+ | page, landing, sections, multi-section | interactive-page | page |
19
+ | multiple components, collection, set | multi-component | gallery or page |
20
+
21
+ ## Scope Determination
22
+
23
+ | Signal | Pipeline Mode |
24
+ |--------|---------------|
25
+ | Single component mentioned | single |
26
+ | Gallery or scroll-based multi-component | gallery |
27
+ | Full interactive page or multi-section | page |
28
+ | Unclear | ask user |
29
+
30
+ ## Complexity Scoring
31
+
32
+ | Factor | Points |
33
+ |--------|--------|
34
+ | Single component | +1 |
35
+ | Gallery / scroll collection | +2 |
36
+ | Full interactive page | +3 |
37
+ | Pointer/drag interactions | +1 |
38
+ | Scroll-based triggers (IntersectionObserver) | +1 |
39
+ | Touch gestures (pinch, swipe) | +1 |
40
+ | Overlay/modal with focus trap | +1 |
41
+ | Animation choreography (stagger, sequence) | +1 |
42
+
43
+ Results: 1-2 Low (single), 3-4 Medium (gallery), 5+ High (page)
44
+
45
+ ## Browser API Detection
46
+
47
+ | Keywords | Browser API |
48
+ |----------|-------------|
49
+ | scroll, appear, visibility, threshold | IntersectionObserver |
50
+ | resize, container, responsive, layout | ResizeObserver |
51
+ | drag, pointer, mouse, click | Pointer Events |
52
+ | touch, swipe, pinch, gesture | Touch Events |
53
+ | scroll snap, snap point, mandatory | CSS scroll-snap |
54
+ | clip, mask, reveal, wipe | CSS clip-path |
55
+ | blur, frosted, glass | CSS backdrop-filter |
56
+ | animate, transition, keyframe | Web Animations API |
57
+ | focus, trap, tab, keyboard | Focus Management |
58
+
59
+ ## Output
60
+
61
+ Write scope context to coordinator memory:
62
+ ```json
63
+ {
64
+ "pipeline_mode": "<single|gallery|page>",
65
+ "scope": "<description>",
66
+ "interaction_type": "<pointer|scroll|overlay|mixed>",
67
+ "components": ["<detected-component-types>"],
68
+ "browser_apis": ["<detected-apis>"],
69
+ "complexity": { "score": 0, "level": "Low|Medium|High" }
70
+ }
71
+ ```