claude-code-workflow 7.2.27 → 7.2.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/.ccw/specs/architecture-constraints.md +5 -0
  2. package/.claude/skills/_shared/SKILL-DESIGN-SPEC.md +140 -0
  3. package/.claude/skills/investigate/SKILL.md +110 -0
  4. package/.claude/skills/investigate/phases/01-root-cause-investigation.md +132 -0
  5. package/.claude/skills/investigate/phases/02-pattern-analysis.md +126 -0
  6. package/.claude/skills/investigate/phases/03-hypothesis-testing.md +177 -0
  7. package/.claude/skills/investigate/phases/04-implementation.md +139 -0
  8. package/.claude/skills/investigate/phases/05-verification-report.md +153 -0
  9. package/.claude/skills/investigate/specs/debug-report-format.md +226 -0
  10. package/.claude/skills/investigate/specs/iron-law.md +101 -0
  11. package/.claude/skills/security-audit/SKILL.md +125 -0
  12. package/.claude/skills/security-audit/phases/01-supply-chain-scan.md +139 -0
  13. package/.claude/skills/security-audit/phases/02-owasp-review.md +156 -0
  14. package/.claude/skills/security-audit/phases/03-threat-modeling.md +180 -0
  15. package/.claude/skills/security-audit/phases/04-report-tracking.md +177 -0
  16. package/.claude/skills/security-audit/specs/owasp-checklist.md +442 -0
  17. package/.claude/skills/security-audit/specs/scoring-gates.md +141 -0
  18. package/.claude/skills/ship/SKILL.md +105 -0
  19. package/.claude/skills/ship/phases/01-preflight-checks.md +121 -0
  20. package/.claude/skills/ship/phases/02-code-review.md +137 -0
  21. package/.claude/skills/ship/phases/03-version-bump.md +171 -0
  22. package/.claude/skills/ship/phases/04-changelog-commit.md +167 -0
  23. package/.claude/skills/ship/phases/05-pr-creation.md +163 -0
  24. package/.claude/skills/skill-generator/templates/sequential-phase.md +10 -0
  25. package/.claude/skills/skill-generator/templates/skill-md.md +4 -0
  26. package/.claude/skills/team-interactive-craft/SKILL.md +127 -0
  27. package/.claude/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
  28. package/.claude/skills/team-interactive-craft/roles/builder/role.md +216 -0
  29. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
  30. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +192 -0
  31. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +183 -0
  32. package/.claude/skills/team-interactive-craft/roles/coordinator/role.md +166 -0
  33. package/.claude/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
  34. package/.claude/skills/team-interactive-craft/roles/researcher/role.md +131 -0
  35. package/.claude/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
  36. package/.claude/skills/team-interactive-craft/specs/pipelines.md +85 -0
  37. package/.claude/skills/team-interactive-craft/specs/team-config.json +105 -0
  38. package/.claude/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
  39. package/.claude/skills/team-motion-design/SKILL.md +129 -0
  40. package/.claude/skills/team-motion-design/roles/animator/role.md +194 -0
  41. package/.claude/skills/team-motion-design/roles/choreographer/role.md +164 -0
  42. package/.claude/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
  43. package/.claude/skills/team-motion-design/roles/coordinator/commands/dispatch.md +203 -0
  44. package/.claude/skills/team-motion-design/roles/coordinator/commands/monitor.md +184 -0
  45. package/.claude/skills/team-motion-design/roles/coordinator/role.md +167 -0
  46. package/.claude/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
  47. package/.claude/skills/team-motion-design/roles/motion-tester/role.md +175 -0
  48. package/.claude/skills/team-motion-design/specs/gpu-constraints.md +114 -0
  49. package/.claude/skills/team-motion-design/specs/motion-tokens.md +128 -0
  50. package/.claude/skills/team-motion-design/specs/pipelines.md +74 -0
  51. package/.claude/skills/team-motion-design/specs/reduced-motion.md +129 -0
  52. package/.claude/skills/team-motion-design/specs/team-config.json +99 -0
  53. package/.claude/skills/team-ui-polish/SKILL.md +127 -0
  54. package/.claude/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
  55. package/.claude/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +194 -0
  56. package/.claude/skills/team-ui-polish/roles/coordinator/commands/monitor.md +180 -0
  57. package/.claude/skills/team-ui-polish/roles/coordinator/role.md +170 -0
  58. package/.claude/skills/team-ui-polish/roles/diagnostician/role.md +160 -0
  59. package/.claude/skills/team-ui-polish/roles/optimizer/role.md +225 -0
  60. package/.claude/skills/team-ui-polish/roles/scanner/role.md +356 -0
  61. package/.claude/skills/team-ui-polish/roles/verifier/role.md +142 -0
  62. package/.claude/skills/team-ui-polish/specs/anti-patterns.md +141 -0
  63. package/.claude/skills/team-ui-polish/specs/design-standards.md +356 -0
  64. package/.claude/skills/team-ui-polish/specs/fix-strategies.md +235 -0
  65. package/.claude/skills/team-ui-polish/specs/pipelines.md +81 -0
  66. package/.claude/skills/team-ui-polish/specs/scoring-guide.md +162 -0
  67. package/.claude/skills/team-ui-polish/specs/team-config.json +73 -0
  68. package/.claude/skills/team-uidesign/SKILL.md +6 -1
  69. package/.claude/skills/team-uidesign/roles/designer/role.md +28 -4
  70. package/.claude/skills/team-uidesign/roles/implementer/role.md +25 -3
  71. package/.claude/skills/team-uidesign/roles/researcher/role.md +21 -2
  72. package/.claude/skills/team-uidesign/roles/reviewer/role.md +19 -17
  73. package/.claude/skills/team-uidesign/specs/anti-patterns.md +211 -0
  74. package/.claude/skills/team-uidesign/specs/design-standards.md +329 -0
  75. package/.claude/skills/team-uidesign/specs/scoring-guide.md +114 -0
  76. package/.claude/skills/team-uidesign/specs/team-config.json +1 -1
  77. package/.claude/skills/team-uidesign/specs/ux-writing.md +86 -0
  78. package/.claude/skills/team-ux-improve/SKILL.md +3 -0
  79. package/.claude/skills/team-ux-improve/roles/designer/role.md +30 -0
  80. package/.claude/skills/team-ux-improve/roles/diagnoser/role.md +16 -1
  81. package/.claude/skills/team-ux-improve/roles/scanner/role.md +43 -1
  82. package/.claude/skills/team-ux-improve/specs/anti-patterns.md +103 -0
  83. package/.claude/skills/team-ux-improve/specs/design-standards.md +54 -0
  84. package/.claude/skills/team-ux-improve/specs/heuristics.md +88 -0
  85. package/.claude/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +40 -8
  86. package/.claude/skills/team-ux-improve/wisdom/patterns/state-management.md +32 -12
  87. package/.claude/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +35 -11
  88. package/.claude/skills/team-ux-improve/wisdom/principles/general-ux.md +36 -9
  89. package/.claude/skills/team-visual-a11y/SKILL.md +143 -0
  90. package/.claude/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
  91. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
  92. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +250 -0
  93. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +204 -0
  94. package/.claude/skills/team-visual-a11y/roles/coordinator/role.md +169 -0
  95. package/.claude/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
  96. package/.claude/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
  97. package/.claude/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
  98. package/.claude/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
  99. package/.claude/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
  100. package/.claude/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
  101. package/.claude/skills/team-visual-a11y/specs/pipelines.md +98 -0
  102. package/.claude/skills/team-visual-a11y/specs/team-config.json +109 -0
  103. package/.claude/skills/team-visual-a11y/specs/typography-scale.md +165 -0
  104. package/.claude/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
  105. package/.codex/skills/brainstorm/SKILL.md +3 -3
  106. package/.codex/skills/clean/SKILL.md +3 -3
  107. package/.codex/skills/investigate/agents/investigator.md +392 -0
  108. package/.codex/skills/investigate/orchestrator.md +362 -0
  109. package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
  110. package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
  111. package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
  112. package/.codex/skills/investigate/phases/04-implementation.md +195 -0
  113. package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
  114. package/.codex/skills/issue-discover/SKILL.md +13 -13
  115. package/.codex/skills/issue-discover/phases/02-discover.md +4 -4
  116. package/.codex/skills/issue-discover/phases/03-discover-by-prompt.md +3 -3
  117. package/.codex/skills/parallel-dev-cycle/SKILL.md +4 -4
  118. package/.codex/skills/parallel-dev-cycle/phases/02-agent-execution.md +6 -6
  119. package/.codex/skills/parallel-dev-cycle/phases/03-result-aggregation.md +10 -10
  120. package/.codex/skills/review-cycle/SKILL.md +10 -10
  121. package/.codex/skills/review-cycle/phases/02-parallel-review.md +6 -6
  122. package/.codex/skills/review-cycle/phases/04-iterative-deep-dive.md +4 -4
  123. package/.codex/skills/review-cycle/phases/07-fix-parallel-planning.md +4 -4
  124. package/.codex/skills/review-cycle/phases/08-fix-execution.md +2 -2
  125. package/.codex/skills/roadmap-with-file/SKILL.md +14 -14
  126. package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
  127. package/.codex/skills/security-audit/orchestrator.md +384 -0
  128. package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
  129. package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
  130. package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
  131. package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
  132. package/.codex/skills/ship/agents/ship-operator.md +318 -0
  133. package/.codex/skills/ship/orchestrator.md +426 -0
  134. package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
  135. package/.codex/skills/ship/phases/02-code-review.md +228 -0
  136. package/.codex/skills/ship/phases/03-version-bump.md +259 -0
  137. package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
  138. package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
  139. package/.codex/skills/spec-generator/README.md +1 -1
  140. package/.codex/skills/spec-generator/SKILL.md +184 -88
  141. package/.codex/skills/spec-generator/phases/01-5-requirement-clarification.md +4 -7
  142. package/.codex/skills/spec-generator/phases/01-discovery.md +30 -11
  143. package/.codex/skills/spec-generator/phases/02-product-brief.md +2 -5
  144. package/.codex/skills/spec-generator/phases/03-requirements.md +4 -6
  145. package/.codex/skills/spec-generator/phases/04-architecture.md +4 -6
  146. package/.codex/skills/spec-generator/phases/05-epics-stories.md +4 -6
  147. package/.codex/skills/spec-generator/phases/06-5-auto-fix.md +4 -5
  148. package/.codex/skills/spec-generator/phases/06-readiness-check.md +8 -8
  149. package/.codex/skills/spec-generator/phases/07-issue-export.md +2 -2
  150. package/.codex/skills/spec-setup/SKILL.md +4 -4
  151. package/.codex/skills/team-interactive-craft/SKILL.md +220 -0
  152. package/.codex/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
  153. package/.codex/skills/team-interactive-craft/roles/builder/role.md +216 -0
  154. package/.codex/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
  155. package/.codex/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +162 -0
  156. package/.codex/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +233 -0
  157. package/.codex/skills/team-interactive-craft/roles/coordinator/role.md +209 -0
  158. package/.codex/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
  159. package/.codex/skills/team-interactive-craft/roles/researcher/role.md +131 -0
  160. package/.codex/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
  161. package/.codex/skills/team-interactive-craft/specs/pipelines.md +85 -0
  162. package/.codex/skills/team-interactive-craft/specs/team-config.json +105 -0
  163. package/.codex/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
  164. package/.codex/skills/team-motion-design/SKILL.md +222 -0
  165. package/.codex/skills/team-motion-design/roles/animator/role.md +194 -0
  166. package/.codex/skills/team-motion-design/roles/choreographer/role.md +164 -0
  167. package/.codex/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
  168. package/.codex/skills/team-motion-design/roles/coordinator/commands/dispatch.md +168 -0
  169. package/.codex/skills/team-motion-design/roles/coordinator/commands/monitor.md +242 -0
  170. package/.codex/skills/team-motion-design/roles/coordinator/role.md +210 -0
  171. package/.codex/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
  172. package/.codex/skills/team-motion-design/roles/motion-tester/role.md +175 -0
  173. package/.codex/skills/team-motion-design/specs/gpu-constraints.md +114 -0
  174. package/.codex/skills/team-motion-design/specs/motion-tokens.md +128 -0
  175. package/.codex/skills/team-motion-design/specs/pipelines.md +74 -0
  176. package/.codex/skills/team-motion-design/specs/reduced-motion.md +129 -0
  177. package/.codex/skills/team-motion-design/specs/team-config.json +99 -0
  178. package/.codex/skills/team-ui-polish/SKILL.md +218 -0
  179. package/.codex/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
  180. package/.codex/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +167 -0
  181. package/.codex/skills/team-ui-polish/roles/coordinator/commands/monitor.md +230 -0
  182. package/.codex/skills/team-ui-polish/roles/coordinator/role.md +213 -0
  183. package/.codex/skills/team-ui-polish/roles/diagnostician/role.md +164 -0
  184. package/.codex/skills/team-ui-polish/roles/optimizer/role.md +229 -0
  185. package/.codex/skills/team-ui-polish/roles/scanner/role.md +360 -0
  186. package/.codex/skills/team-ui-polish/roles/verifier/role.md +142 -0
  187. package/.codex/skills/team-ui-polish/specs/anti-patterns.md +141 -0
  188. package/.codex/skills/team-ui-polish/specs/design-standards.md +356 -0
  189. package/.codex/skills/team-ui-polish/specs/fix-strategies.md +235 -0
  190. package/.codex/skills/team-ui-polish/specs/pipelines.md +81 -0
  191. package/.codex/skills/team-ui-polish/specs/scoring-guide.md +162 -0
  192. package/.codex/skills/team-ui-polish/specs/team-config.json +73 -0
  193. package/.codex/skills/team-visual-a11y/SKILL.md +319 -0
  194. package/.codex/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
  195. package/.codex/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
  196. package/.codex/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +188 -0
  197. package/.codex/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +281 -0
  198. package/.codex/skills/team-visual-a11y/roles/coordinator/role.md +213 -0
  199. package/.codex/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
  200. package/.codex/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
  201. package/.codex/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
  202. package/.codex/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
  203. package/.codex/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
  204. package/.codex/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
  205. package/.codex/skills/team-visual-a11y/specs/pipelines.md +98 -0
  206. package/.codex/skills/team-visual-a11y/specs/team-config.json +109 -0
  207. package/.codex/skills/team-visual-a11y/specs/typography-scale.md +165 -0
  208. package/.codex/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
  209. package/.codex/skills/workflow-plan/SKILL.md +6 -6
  210. package/.codex/skills/workflow-tdd-plan/SKILL.md +5 -5
  211. package/.codex/skills/workflow-test-fix-cycle/SKILL.md +19 -19
  212. package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +5 -5
  213. package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +5 -5
  214. package/README.md +8 -0
  215. package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
  216. package/ccw/dist/core/hooks/hook-templates.js +114 -1
  217. package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
  218. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  219. package/ccw/dist/core/routes/cli-routes.js +34 -0
  220. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  221. package/ccw/dist/core/routes/system-routes.js +2 -2
  222. package/ccw/dist/core/routes/system-routes.js.map +1 -1
  223. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-exlTDW81.js} +3 -3
  224. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-exlTDW81.js.map} +1 -1
  225. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-cgV9LfAI.js} +2 -2
  226. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-cgV9LfAI.js.map} +1 -1
  227. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-Dk5jJdWt.js} +2 -2
  228. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-Dk5jJdWt.js.map} +1 -1
  229. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-Be9xsPiv.js} +2 -2
  230. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-Be9xsPiv.js.map} +1 -1
  231. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-Bh9jBtPI.js} +2 -2
  232. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-Bh9jBtPI.js.map} +1 -1
  233. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BrE-oyEq.js} +2 -2
  234. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BrE-oyEq.js.map} +1 -1
  235. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cd3nrC93.js} +2 -2
  236. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cd3nrC93.js.map} +1 -1
  237. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DXFl3VKF.js} +2 -2
  238. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DXFl3VKF.js.map} +1 -1
  239. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-IV8zpjgX.js} +2 -2
  240. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-IV8zpjgX.js.map} +1 -1
  241. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-CpDxtmRX.js} +2 -2
  242. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-CpDxtmRX.js.map} +1 -1
  243. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-BchjWe7s.js} +2 -2
  244. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-BchjWe7s.js.map} +1 -1
  245. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-CbWvaJ0y.js} +2 -2
  246. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-CbWvaJ0y.js.map} +1 -1
  247. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-YMjVRiCk.js} +2 -2
  248. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-YMjVRiCk.js.map} +1 -1
  249. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-JW2ehYY_.js} +2 -2
  250. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-JW2ehYY_.js.map} +1 -1
  251. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BtqzqDVq.js} +2 -2
  252. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BtqzqDVq.js.map} +1 -1
  253. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-BsJL_W4d.js} +3 -3
  254. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-BsJL_W4d.js.map} +1 -1
  255. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-BuWpQ7k5.js} +2 -2
  256. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-BuWpQ7k5.js.map} +1 -1
  257. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-D0BtMIWy.js} +2 -2
  258. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-D0BtMIWy.js.map} +1 -1
  259. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-C7dwsAKG.js} +2 -2
  260. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-C7dwsAKG.js.map} +1 -1
  261. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-D0nCNaeB.js} +2 -2
  262. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-D0nCNaeB.js.map} +1 -1
  263. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-B5c2Kb9r.js} +3 -3
  264. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-B5c2Kb9r.js.map} +1 -1
  265. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-C-S5CehM.js} +2 -2
  266. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-C-S5CehM.js.map} +1 -1
  267. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-P_B0JVUQ.js} +2 -2
  268. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-P_B0JVUQ.js.map} +1 -1
  269. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-S4Jn9LUE.js} +2 -2
  270. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-S4Jn9LUE.js.map} +1 -1
  271. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-C2Zlr7AC.js} +2 -2
  272. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-C2Zlr7AC.js.map} +1 -1
  273. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-CMVfz8s5.js} +2 -2
  274. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-CMVfz8s5.js.map} +1 -1
  275. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-YEMjFARX.js} +3 -3
  276. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-YEMjFARX.js.map} +1 -1
  277. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-DnTm55nG.js} +2 -2
  278. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-DnTm55nG.js.map} +1 -1
  279. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CUwebtO2.js} +2 -2
  280. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CUwebtO2.js.map} +1 -1
  281. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-0qyH1Z5P.js} +2 -2
  282. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-0qyH1Z5P.js.map} +1 -1
  283. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-BpgP4087.js} +2 -2
  284. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-BpgP4087.js.map} +1 -1
  285. package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js +150 -0
  286. package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js.map +1 -0
  287. package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js +7 -0
  288. package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js.map +1 -0
  289. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DT-yTVkD.js} +4 -4
  290. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DT-yTVkD.js.map} +1 -1
  291. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-CYSPdqWk.js} +2 -2
  292. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-CYSPdqWk.js.map} +1 -1
  293. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-CPh6Zor1.js} +2 -2
  294. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-CPh6Zor1.js.map} +1 -1
  295. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-Ds-8830B.js} +2 -2
  296. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-Ds-8830B.js.map} +1 -1
  297. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-CJODUxBk.js} +2 -2
  298. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-CJODUxBk.js.map} +1 -1
  299. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-Cn3fGUuO.js} +3 -3
  300. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-Cn3fGUuO.js.map} +1 -1
  301. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-CjwVpw6k.js} +2 -2
  302. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-CjwVpw6k.js.map} +1 -1
  303. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-2vZa9Ic3.js} +2 -2
  304. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-2vZa9Ic3.js.map} +1 -1
  305. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-CUU5XDgT.js} +2 -2
  306. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-CUU5XDgT.js.map} +1 -1
  307. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-Cc3nKRZ5.js} +2 -2
  308. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-Cc3nKRZ5.js.map} +1 -1
  309. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-BwpSRDUa.js} +2 -2
  310. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-BwpSRDUa.js.map} +1 -1
  311. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-DBzUW1XC.js} +2 -2
  312. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-DBzUW1XC.js.map} +1 -1
  313. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CGNNsjvE.js} +2 -2
  314. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CGNNsjvE.js.map} +1 -1
  315. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-D27G86Ul.js} +2 -2
  316. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-D27G86Ul.js.map} +1 -1
  317. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-C1Ij47Yz.js} +2 -2
  318. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-C1Ij47Yz.js.map} +1 -1
  319. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-C6MOB7Au.js} +2 -2
  320. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-C6MOB7Au.js.map} +1 -1
  321. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-BxfBlZ26.js} +2 -2
  322. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-BxfBlZ26.js.map} +1 -1
  323. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-NI237wA-.js} +2 -2
  324. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-NI237wA-.js.map} +1 -1
  325. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-Byn2_2v6.js} +2 -2
  326. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-Byn2_2v6.js.map} +1 -1
  327. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-D-7PhZjx.js} +2 -2
  328. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-D-7PhZjx.js.map} +1 -1
  329. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-BoAsK_FL.js} +2 -2
  330. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-BoAsK_FL.js.map} +1 -1
  331. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-DCSxJIS4.js} +2 -2
  332. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-DCSxJIS4.js.map} +1 -1
  333. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-CHS3prza.js} +2 -2
  334. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-CHS3prza.js.map} +1 -1
  335. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-D7K35U7S.js} +2 -2
  336. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-D7K35U7S.js.map} +1 -1
  337. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-eq9xE07G.js} +2 -2
  338. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-eq9xE07G.js.map} +1 -1
  339. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-C1DMpBua.js} +2 -2
  340. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-C1DMpBua.js.map} +1 -1
  341. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-Di5SBCY-.js} +2 -2
  342. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-Di5SBCY-.js.map} +1 -1
  343. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index--_R7COnA.js} +2 -2
  344. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index--_R7COnA.js.map} +1 -1
  345. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-BUol9HDD.js} +3 -3
  346. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-BUol9HDD.js.map} +1 -1
  347. package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-CT9oykfw.js} +2 -2
  348. package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-CT9oykfw.js.map} +1 -1
  349. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-Ddwvf87H.js} +2 -2
  350. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-Ddwvf87H.js.map} +1 -1
  351. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-LiX0qZbN.js} +2 -2
  352. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-LiX0qZbN.js.map} +1 -1
  353. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-CL3DVEwb.js} +2 -2
  354. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-CL3DVEwb.js.map} +1 -1
  355. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CC5cFeq6.js} +2 -2
  356. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CC5cFeq6.js.map} +1 -1
  357. package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-ngFQ9bs0.js} +2 -2
  358. package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-ngFQ9bs0.js.map} +1 -1
  359. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-BEU6I0KK.js} +2 -2
  360. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-BEU6I0KK.js.map} +1 -1
  361. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BWZdLA6y.js} +2 -2
  362. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BWZdLA6y.js.map} +1 -1
  363. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-K6_Chm7n.js} +2 -2
  364. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-K6_Chm7n.js.map} +1 -1
  365. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CWkphauf.js} +2 -2
  366. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CWkphauf.js.map} +1 -1
  367. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-DrNgkamn.js} +2 -2
  368. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-DrNgkamn.js.map} +1 -1
  369. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CMo3sw5_.js} +2 -2
  370. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CMo3sw5_.js.map} +1 -1
  371. package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-DppNTW5e.js} +2 -2
  372. package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-DppNTW5e.js.map} +1 -1
  373. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-CD8aPMbZ.js} +2 -2
  374. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-CD8aPMbZ.js.map} +1 -1
  375. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-B4z90fQD.js} +2 -2
  376. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-B4z90fQD.js.map} +1 -1
  377. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2-CAKRU_QC.js} +2 -2
  378. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2-CAKRU_QC.js.map} +1 -1
  379. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-KhI3HrzX.js} +2 -2
  380. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-KhI3HrzX.js.map} +1 -1
  381. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-BtdGIpuq.js} +2 -2
  382. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-BtdGIpuq.js.map} +1 -1
  383. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-ZoBUkXoD.js} +2 -2
  384. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-ZoBUkXoD.js.map} +1 -1
  385. package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CltxQP-P.js} +2 -2
  386. package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CltxQP-P.js.map} +1 -1
  387. package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-C32OUSGf.js} +2 -2
  388. package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-C32OUSGf.js.map} +1 -1
  389. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-0IxoyAVZ.js} +2 -2
  390. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-0IxoyAVZ.js.map} +1 -1
  391. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-4eKCkyBn.js} +2 -2
  392. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-4eKCkyBn.js.map} +1 -1
  393. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-zLTUWqhi.js} +2 -2
  394. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-zLTUWqhi.js.map} +1 -1
  395. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-BtN2vpOX.js} +2 -2
  396. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-BtN2vpOX.js.map} +1 -1
  397. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-_spj49qL.js} +2 -2
  398. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-_spj49qL.js.map} +1 -1
  399. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-Bm9KFZvd.js} +2 -2
  400. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-Bm9KFZvd.js.map} +1 -1
  401. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-DOmpm6v9.js} +2 -2
  402. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-DOmpm6v9.js.map} +1 -1
  403. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-D2rj4rea.js} +2 -2
  404. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-D2rj4rea.js.map} +1 -1
  405. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-OskEpomF.js} +3 -3
  406. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-OskEpomF.js.map} +1 -1
  407. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-BjMgsNSF.js} +2 -2
  408. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-BjMgsNSF.js.map} +1 -1
  409. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-CLhyYWa7.js} +2 -2
  410. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-CLhyYWa7.js.map} +1 -1
  411. package/ccw/frontend/dist/index.html +1 -1
  412. package/package.json +105 -105
  413. package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js +0 -150
  414. package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
  415. package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js +0 -7
  416. package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js.map +0 -1
@@ -0,0 +1,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
+ ```
@@ -0,0 +1,162 @@
1
+ # Command: Dispatch
2
+
3
+ Create the interactive craft task chain with correct dependencies and structured task descriptions. Supports single, gallery, and page pipeline modes.
4
+
5
+ ## Phase 2: Context Loading
6
+
7
+ | Input | Source | Required |
8
+ |-------|--------|----------|
9
+ | User requirement | From coordinator Phase 1 | Yes |
10
+ | Session folder | From coordinator Phase 2 | Yes |
11
+ | Pipeline mode | From tasks.json `pipeline_mode` | Yes |
12
+ | Interaction type | From tasks.json `interaction_type` | Yes |
13
+
14
+ 1. Load user requirement and scope from tasks.json
15
+ 2. Load pipeline stage definitions from specs/pipelines.md
16
+ 3. Read `pipeline_mode` and `interaction_type` from tasks.json
17
+
18
+ ## Phase 3: Task Chain Creation (Mode-Branched)
19
+
20
+ ### Task Entry Template
21
+
22
+ Each task in tasks.json `tasks` object:
23
+ ```json
24
+ {
25
+ "<TASK-ID>": {
26
+ "title": "<concise title>",
27
+ "description": "PURPOSE: <what this task achieves> | Success: <measurable completion criteria>\nTASK:\n - <step 1: specific action>\n - <step 2: specific action>\n - <step 3: specific action>\nCONTEXT:\n - Session: <session-folder>\n - Scope: <interaction-scope>\n - Components: <component-list>\n - Upstream artifacts: <artifact-1>, <artifact-2>\n - Shared memory: <session>/wisdom/.msg/meta.json\nEXPECTED: <deliverable path> + <quality criteria>\nCONSTRAINTS: <scope limits, focus areas>",
28
+ "role": "<role-name>",
29
+ "prefix": "<PREFIX>",
30
+ "deps": ["<dependency-list>"],
31
+ "status": "pending",
32
+ "findings": "",
33
+ "error": ""
34
+ }
35
+ }
36
+ ```
37
+
38
+ ### Mode Router
39
+
40
+ | Mode | Action |
41
+ |------|--------|
42
+ | `single` | Create 4 tasks: RESEARCH -> INTERACT -> BUILD -> A11Y |
43
+ | `gallery` | Create 6 tasks: RESEARCH -> INTERACT-001 -> BUILD-001 -> INTERACT-002 -> BUILD-002 -> A11Y |
44
+ | `page` | Create 4+ tasks: RESEARCH -> INTERACT -> [BUILD-001..N parallel] -> A11Y |
45
+
46
+ ---
47
+
48
+ ### Single Pipeline Task Chain
49
+
50
+ **RESEARCH-001** (researcher):
51
+ ```json
52
+ {
53
+ "RESEARCH-001": {
54
+ "title": "Interaction pattern analysis and browser API audit",
55
+ "description": "PURPOSE: Analyze interaction patterns, browser API availability, and reference implementations | Success: 3 research artifacts with valid data\nTASK:\n - Catalog existing interactive components in project\n - Audit browser API usage (IntersectionObserver, ResizeObserver, Pointer Events, Touch Events)\n - Collect reference patterns for target component type\nCONTEXT:\n - Session: <session-folder>\n - Scope: <interaction-scope>\n - Components: <component-list>\n - Shared memory: <session>/wisdom/.msg/meta.json\nEXPECTED: <session>/research/*.json | All 3 research files with valid JSON\nCONSTRAINTS: Read-only analysis | Focus on <interaction-scope>",
56
+ "role": "researcher",
57
+ "prefix": "RESEARCH",
58
+ "deps": [],
59
+ "status": "pending",
60
+ "findings": "",
61
+ "error": ""
62
+ }
63
+ }
64
+ ```
65
+
66
+ **INTERACT-001** (interaction-designer):
67
+ ```json
68
+ {
69
+ "INTERACT-001": {
70
+ "title": "Interaction blueprint with state machine and event flows",
71
+ "description": "PURPOSE: Design complete interaction blueprint with state machine and event flows | Success: Blueprint with all states, events, and keyboard mappings defined\nTASK:\n - Define state machine (idle -> hover -> active -> animating -> complete)\n - Map event flows (pointer/touch/keyboard -> handlers -> state transitions)\n - Specify gesture parameters (lerp speed, thresholds, easing)\n - Design animation choreography (entry/exit/idle transitions)\n - Create touch/keyboard/mouse mapping table\nCONTEXT:\n - Session: <session-folder>\n - Scope: <interaction-scope>\n - Upstream artifacts: research/*.json\n - Shared memory: <session>/wisdom/.msg/meta.json\nEXPECTED: <session>/interaction/blueprints/<component-name>.md | Complete state machine + event map + keyboard coverage\nCONSTRAINTS: Vanilla JS only | GPU-only animations | Progressive enhancement",
72
+ "role": "interaction-designer",
73
+ "prefix": "INTERACT",
74
+ "deps": ["RESEARCH-001"],
75
+ "status": "pending",
76
+ "findings": "",
77
+ "error": ""
78
+ }
79
+ }
80
+ ```
81
+
82
+ **BUILD-001** (builder):
83
+ ```json
84
+ {
85
+ "BUILD-001": {
86
+ "title": "Vanilla JS + CSS interactive component implementation",
87
+ "description": "PURPOSE: Implement interactive component as vanilla JS + CSS | Success: Working ES module + CSS with all states, touch-aware, keyboard accessible\nTASK:\n - Implement ES module component class from interaction blueprint\n - Write CSS with custom properties (no preprocessor)\n - Add progressive enhancement (content works without JS)\n - Use GPU-only animations (transform + opacity)\n - Implement pointer events with touch fallback\n - Add ResizeObserver for responsive behavior\n - Add IntersectionObserver for scroll triggers (if applicable)\nCONTEXT:\n - Session: <session-folder>\n - Scope: <interaction-scope>\n - Upstream artifacts: interaction/blueprints/*.md, research/*.json\n - Shared memory: <session>/wisdom/.msg/meta.json\nEXPECTED: <session>/build/components/<name>.js + <name>.css | Zero dependencies, all states implemented\nCONSTRAINTS: No npm packages | ES modules only | No inline styles | < 5ms per frame",
88
+ "role": "builder",
89
+ "prefix": "BUILD",
90
+ "deps": ["INTERACT-001"],
91
+ "status": "pending",
92
+ "findings": "",
93
+ "error": ""
94
+ }
95
+ }
96
+ ```
97
+
98
+ **A11Y-001** (a11y-tester):
99
+ ```json
100
+ {
101
+ "A11Y-001": {
102
+ "title": "Accessibility audit of built component",
103
+ "description": "PURPOSE: Audit accessibility of built component | Success: Audit report with pass/fail per check, 0 critical issues\nTASK:\n - Test keyboard navigation (tab order, arrow keys, escape, enter/space)\n - Check screen reader compatibility (ARIA roles, states, live regions)\n - Verify reduced motion fallback (prefers-reduced-motion)\n - Test focus management (visible indicator, focus trap for overlays)\n - Check color contrast (foreground/background ratio)\nCONTEXT:\n - Session: <session-folder>\n - Scope: <interaction-scope>\n - Upstream artifacts: build/components/*.js, build/components/*.css, interaction/blueprints/*.md\n - Shared memory: <session>/wisdom/.msg/meta.json\nEXPECTED: <session>/a11y/a11y-audit-001.md | Per-check pass/fail with remediation suggestions\nCONSTRAINTS: Read-only analysis | GC convergence: 0 critical issues",
104
+ "role": "a11y-tester",
105
+ "prefix": "A11Y",
106
+ "deps": ["BUILD-001"],
107
+ "status": "pending",
108
+ "findings": "",
109
+ "error": ""
110
+ }
111
+ }
112
+ ```
113
+
114
+ ---
115
+
116
+ ### Gallery Pipeline Task Chain
117
+
118
+ Create tasks in dependency order:
119
+
120
+ | Task | Role | deps | Description |
121
+ |------|------|------|-------------|
122
+ | RESEARCH-001 | researcher | [] | Interaction patterns + browser API audit |
123
+ | INTERACT-001 | interaction-designer | [RESEARCH-001] | Base component interaction blueprint |
124
+ | BUILD-001 | builder | [INTERACT-001] | Base component implementation |
125
+ | INTERACT-002 | interaction-designer | [BUILD-001] | Gallery/scroll-snap interaction blueprint |
126
+ | BUILD-002 | builder | [INTERACT-002] | Gallery container + navigation implementation |
127
+ | A11Y-001 | a11y-tester | [BUILD-002] | Full gallery accessibility audit |
128
+
129
+ Task descriptions follow same template as single pipeline, with subject-specific content:
130
+ - INTERACT-002 focuses on scroll-snap container, navigation dots, active item detection
131
+ - BUILD-002 focuses on gallery container with CSS scroll-snap, IntersectionObserver for active item, navigation controls
132
+
133
+ ---
134
+
135
+ ### Page Pipeline Task Chain
136
+
137
+ | Task | Role | deps | Description |
138
+ |------|------|------|-------------|
139
+ | RESEARCH-001 | researcher | [] | Interaction patterns for all page sections |
140
+ | INTERACT-001 | interaction-designer | [RESEARCH-001] | Blueprints for all interactive sections |
141
+ | BUILD-001..N | builder | [INTERACT-001] | One task per section (parallel fan-out) |
142
+ | A11Y-001 | a11y-tester | [BUILD-001..N] | Full page accessibility audit |
143
+
144
+ **Parallel fan-out**: Create one BUILD task per distinct interactive section detected in the interaction blueprint. Each BUILD task deps only on INTERACT-001. A11Y-001 deps on ALL BUILD tasks.
145
+
146
+ Task descriptions for each BUILD-00N specify which section to implement, referencing the corresponding section in the interaction blueprint.
147
+
148
+ ---
149
+
150
+ ## Phase 4: Validation
151
+
152
+ Verify task chain integrity:
153
+
154
+ | Check | Method | Expected |
155
+ |-------|--------|----------|
156
+ | Task count correct | tasks.json count | single: 4, gallery: 6, page: 3+N |
157
+ | Dependencies correct | Trace dependency graph | Acyclic, correct deps |
158
+ | No circular dependencies | Trace dependency graph | Acyclic |
159
+ | Task IDs use correct prefixes | Pattern check | RESEARCH/INTERACT/BUILD/A11Y |
160
+ | Structured descriptions complete | Each has PURPOSE/TASK/CONTEXT/EXPECTED/CONSTRAINTS | All present |
161
+
162
+ If validation fails, fix the specific task and re-validate.
@@ -0,0 +1,233 @@
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
+ | `RESEARCH-*` | researcher |
29
+ | `INTERACT-*` | interaction-designer |
30
+ | `BUILD-*` | builder |
31
+ | `A11Y-*` | a11y-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
+ | RESEARCH-001 | - | Notify user: research complete |
41
+ | INTERACT-001 | - | Proceed to BUILD-001 (single/gallery) or BUILD-001..N (page parallel) |
42
+ | INTERACT-002 | - | Proceed to BUILD-002 (gallery) |
43
+ | BUILD-001 | - | Check mode: single -> A11Y-001; gallery -> INTERACT-002; page -> check if all BUILD done |
44
+ | BUILD-001..N | - | Page mode: check if all BUILD tasks done -> A11Y-001 |
45
+ | BUILD-002 | - | Gallery: proceed to A11Y-001 |
46
+ | A11Y-001 | QUALITY: A11y Gate | Check a11y signal -> GC loop or complete |
47
+
48
+ 5. **A11y Gate handling** (A11Y task completed):
49
+ Read a11y signal from result: `a11y_passed`, `a11y_result`, or `fix_required`
50
+
51
+ | Signal | Condition | Action |
52
+ |--------|-----------|--------|
53
+ | `a11y_passed` | 0 critical issues | GC converged -> record gate -> handleComplete |
54
+ | `a11y_result` | Minor issues only | gc_rounds < max -> create BUILD-fix task in tasks.json |
55
+ | `fix_required` | Critical issues found | gc_rounds < max -> create BUILD-fix task (CRITICAL) in tasks.json |
56
+ | Any | gc_rounds >= max | Escalate to user |
57
+
58
+ **GC Fix Task Creation** (add to tasks.json):
59
+ ```json
60
+ {
61
+ "BUILD-fix-<round>": {
62
+ "title": "Address a11y audit feedback",
63
+ "description": "PURPOSE: Address a11y audit feedback | Success: All critical/high issues resolved\nTASK:\n - Parse a11y audit feedback for specific issues\n - Apply targeted fixes to component JS/CSS\nCONTEXT:\n - Session: <session-folder>\n - Upstream artifacts: a11y/a11y-audit-<NNN>.md",
64
+ "role": "builder",
65
+ "prefix": "BUILD",
66
+ "deps": [],
67
+ "status": "pending",
68
+ "findings": "",
69
+ "error": ""
70
+ }
71
+ }
72
+ ```
73
+ Then create new A11Y task in tasks.json with deps on fix. Increment gc_state.round.
74
+
75
+ **GC Escalation Options** (when max rounds exceeded):
76
+ 1. Accept current implementation - skip remaining a11y fixes
77
+ 2. Try one more round
78
+ 3. Terminate
79
+
80
+ 6. -> handleSpawnNext
81
+
82
+ ## handleCheck
83
+
84
+ Read-only status report from tasks.json, then STOP.
85
+
86
+ ```
87
+ Pipeline Status (<pipeline-mode>):
88
+ [DONE] RESEARCH-001 (researcher) -> research/*.json
89
+ [DONE] INTERACT-001 (interaction-designer) -> blueprints/*.md
90
+ [RUN] BUILD-001 (builder) -> building component...
91
+ [WAIT] A11Y-001 (a11y-tester) -> blocked by BUILD-001
92
+
93
+ GC Rounds: 0/2
94
+ Session: <session-id>
95
+ Commands: 'resume' to advance | 'check' to refresh
96
+ ```
97
+
98
+ Output status -- do NOT advance pipeline.
99
+
100
+ ## handleResume
101
+
102
+ **Agent Health Check** (v4):
103
+ ```
104
+ // Verify actual running agents match session state
105
+ const runningAgents = list_agents({})
106
+ // For each active_agent in tasks.json:
107
+ // - If agent NOT in runningAgents -> agent crashed
108
+ // - Reset that task to pending, remove from active_agents
109
+ // This prevents stale agent references from blocking the pipeline
110
+ ```
111
+
112
+ 1. Audit tasks.json for inconsistencies:
113
+ - Tasks stuck in "in_progress" -> reset to "pending"
114
+ - Tasks with completed deps but still "pending" -> include in spawn list
115
+ 2. -> handleSpawnNext
116
+
117
+ ## handleSpawnNext
118
+
119
+ Find ready tasks, spawn workers, wait for results.
120
+
121
+ 1. Read tasks.json: completedTasks, inProgressTasks, readyTasks (pending + all deps completed)
122
+ 2. No ready + work in progress -> report waiting, STOP
123
+ 3. No ready + nothing in progress -> handleComplete
124
+ 4. Has ready -> for each:
125
+ a. Check inner loop role with active worker -> skip (worker picks up)
126
+ b. Update task status to in_progress in tasks.json
127
+ c. team_msg log -> task_unblocked
128
+ d. Spawn team_worker:
129
+
130
+ ```javascript
131
+ // 1) Update status in tasks.json
132
+ state.tasks[taskId].status = 'in_progress'
133
+
134
+ // 2) Spawn worker
135
+ const agentId = spawn_agent({
136
+ agent_type: "team_worker",
137
+ task_name: taskId, // e.g., "BUILD-001" -- enables named targeting
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
+ { type: "text", text: `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
+ })
151
+
152
+ // 3) Track agent
153
+ state.active_agents[taskId] = { agentId, role, started_at: now }
154
+
155
+ // 4) Wait for completion -- use task_name for stable targeting (v4)
156
+ const waitResult = wait_agent({ targets: [taskId], timeout_ms: 900000 })
157
+ if (waitResult.timed_out) {
158
+ state.tasks[taskId].status = 'timed_out'
159
+ close_agent({ target: taskId })
160
+ delete state.active_agents[taskId]
161
+ } else {
162
+ // 5) Collect results and update tasks.json
163
+ state.tasks[taskId].status = 'completed'
164
+ close_agent({ target: taskId }) // Use task_name, not agentId
165
+ delete state.active_agents[taskId]
166
+ }
167
+ ```
168
+
169
+ **Parallel spawn rules by mode**:
170
+
171
+ | Mode | Scenario | Spawn Behavior |
172
+ |------|----------|---------------|
173
+ | single | Sequential | One task at a time |
174
+ | gallery | Sequential | One task at a time |
175
+ | page | After INTERACT-001 | Spawn BUILD-001..N in parallel, wait_agent for all |
176
+ | page | After all BUILD done | Spawn A11Y-001 |
177
+
178
+ **Cross-Agent Supplementary Context** (v4):
179
+
180
+ When spawning workers in a later pipeline phase, send upstream results as supplementary context to already-running workers:
181
+
182
+ ```
183
+ // Example: Send research results to running interaction-designer
184
+ send_message({
185
+ target: "<running-agent-task-name>",
186
+ items: [{ type: "text", text: `## Supplementary Context\n${upstreamFindings}` }]
187
+ })
188
+ // Note: send_message queues info without interrupting the agent's current work
189
+ ```
190
+
191
+ Use `send_message` (not `assign_task`) for supplementary info that enriches but doesn't redirect the agent's current task.
192
+
193
+ 5. Update tasks.json, output summary, STOP
194
+
195
+ ## handleComplete
196
+
197
+ **Cleanup Verification** (v4):
198
+ ```
199
+ // Verify all agents are properly closed
200
+ const remaining = list_agents({})
201
+ // If any team agents still running -> close_agent each
202
+ // Ensures clean session shutdown
203
+ ```
204
+
205
+ Pipeline done. Generate report and completion action.
206
+
207
+ **Completion check by mode**:
208
+
209
+ | Mode | Completion Condition |
210
+ |------|---------------------|
211
+ | single | All 4 tasks (+ fix tasks) completed |
212
+ | gallery | All 6 tasks (+ fix tasks) completed |
213
+ | page | All 3+N tasks (+ fix tasks) completed |
214
+
215
+ 1. If any tasks not completed -> handleSpawnNext
216
+ 2. If all completed -> transition to coordinator Phase 5
217
+
218
+ ## handleAdapt
219
+
220
+ Capability gap reported mid-pipeline.
221
+
222
+ 1. Parse gap description
223
+ 2. Check if existing role covers it -> redirect
224
+ 3. Role count < 5 -> generate dynamic role spec
225
+ 4. Create new task in tasks.json, spawn worker
226
+ 5. Role count >= 5 -> merge or pause
227
+
228
+ ## Fast-Advance Reconciliation
229
+
230
+ On every coordinator wake:
231
+ 1. Read tasks.json for completed tasks
232
+ 2. Sync active_agents with actual state
233
+ 3. No duplicate spawns