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,188 @@
1
+ # Command: Dispatch
2
+
3
+ Create the visual accessibility task chain with correct dependencies and structured task descriptions. Supports audit-only and full 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 session tasks.json `pipeline_mode` | Yes |
12
+ | Target info | From session tasks.json `target` | 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 `target` from tasks.json
17
+
18
+ ## Phase 3: Task Chain Creation (Mode-Branched)
19
+
20
+ ### Task Description Template
21
+
22
+ Every task is added to tasks.json with structured format:
23
+
24
+ ```json
25
+ {
26
+ "<TASK-ID>": {
27
+ "title": "<task title>",
28
+ "description": "PURPOSE: <what this task achieves> | Success: <measurable completion criteria>\nTASK:\n - <step 1: specific action>\n - <step 2: specific action>\n - <step 3: specific action>\nCONTEXT:\n - Session: <session-folder>\n - Target: <URL or file path>\n - WCAG Level: <AA|AAA>\n - Upstream artifacts: <artifact-1>, <artifact-2>\n - Shared memory: <session>/.msg/meta.json\nEXPECTED: <deliverable path> + <quality criteria>\nCONSTRAINTS: <scope limits, focus areas>",
29
+ "role": "<role-name>",
30
+ "prefix": "<PREFIX>",
31
+ "deps": ["<dependency-list>"],
32
+ "status": "pending",
33
+ "findings": "",
34
+ "error": ""
35
+ }
36
+ }
37
+ ```
38
+
39
+ ### Mode Router
40
+
41
+ | Mode | Action |
42
+ |------|--------|
43
+ | `audit-only` | Create 4 tasks: [COLOR-001 + TYPO-001 + FOCUS-001] parallel -> REMED-001 |
44
+ | `full` | Create 7 tasks: [COLOR-001 + TYPO-001 + FOCUS-001] -> REMED-001 -> FIX-001 -> [COLOR-002 + FOCUS-002] |
45
+
46
+ ---
47
+
48
+ ### Audit-Only Pipeline Task Chain
49
+
50
+ **COLOR-001** (color-auditor):
51
+ ```json
52
+ {
53
+ "COLOR-001": {
54
+ "title": "OKLCH Color Contrast Audit",
55
+ "description": "PURPOSE: OKLCH color contrast audit for all color combinations | Success: Complete color audit with WCAG 2.1 + APCA contrast ratios and color blindness assessment\nTASK:\n - Extract all color values (OKLCH, HSL, RGB, hex) from stylesheets\n - Calculate WCAG 2.1 contrast ratios for all text/background combinations\n - Calculate APCA Lc values for body and large text\n - Assess OKLCH lightness ranges for text and backgrounds\n - Simulate color blindness (protanopia, deuteranopia, tritanopia)\n - Check dark mode color parity if applicable\nCONTEXT:\n - Session: <session-folder>\n - Target: <target>\n - WCAG Level: <level>\n - Shared memory: <session>/.msg/meta.json\nEXPECTED: <session>/audits/color/color-audit-001.md | Pass/fail per color combination\nCONSTRAINTS: Read-only analysis | Use Chrome DevTools for computed styles when available",
56
+ "role": "color-auditor",
57
+ "prefix": "COLOR",
58
+ "deps": [],
59
+ "status": "pending",
60
+ "findings": "",
61
+ "error": ""
62
+ }
63
+ }
64
+ ```
65
+
66
+ **TYPO-001** (typo-auditor):
67
+ ```json
68
+ {
69
+ "TYPO-001": {
70
+ "title": "Typography Readability Audit",
71
+ "description": "PURPOSE: Typography readability audit across all viewports | Success: Complete typography audit with size, line-height, reading width at each breakpoint\nTASK:\n - Audit font sizes at each breakpoint (320px, 768px, 1024px, 1400px)\n - Validate minimum body text >= 16px on mobile\n - Check line-height ratios (body 1.5-1.75, headings 1.1-1.3)\n - Validate clamp() functions for responsive scaling\n - Measure reading width (45-75 characters per line)\n - Assess font loading strategy (font-display values)\nCONTEXT:\n - Session: <session-folder>\n - Target: <target>\n - WCAG Level: <level>\n - Shared memory: <session>/.msg/meta.json\nEXPECTED: <session>/audits/typography/typo-audit-001.md | Breakpoint-by-breakpoint report\nCONSTRAINTS: Read-only analysis | Screenshot at multiple viewports if Chrome DevTools available",
72
+ "role": "typo-auditor",
73
+ "prefix": "TYPO",
74
+ "deps": [],
75
+ "status": "pending",
76
+ "findings": "",
77
+ "error": ""
78
+ }
79
+ }
80
+ ```
81
+
82
+ **FOCUS-001** (focus-auditor):
83
+ ```json
84
+ {
85
+ "FOCUS-001": {
86
+ "title": "Focus & Keyboard Accessibility Audit",
87
+ "description": "PURPOSE: Focus management and keyboard accessibility audit | Success: Complete focus audit with tab order, indicator visibility, ARIA coverage\nTASK:\n - Audit tab order for logical sequence and no tab traps\n - Check focus indicator visibility (outline >= 2px, contrast >= 3:1)\n - Verify :focus-visible usage for keyboard vs mouse distinction\n - Check skip link presence and functionality\n - Audit focus traps in modals/dialogs (Tab cycles, Escape dismisses)\n - Verify ARIA live regions for dynamic content\n - Check ARIA roles and states on interactive elements\n - Validate keyboard operability (Enter/Space, Arrow keys)\nCONTEXT:\n - Session: <session-folder>\n - Target: <target>\n - WCAG Level: <level>\n - Shared memory: <session>/.msg/meta.json\nEXPECTED: <session>/audits/focus/focus-audit-001.md | Element-by-element focus report\nCONSTRAINTS: Read-only analysis | Tab through elements if Chrome DevTools available",
88
+ "role": "focus-auditor",
89
+ "prefix": "FOCUS",
90
+ "deps": [],
91
+ "status": "pending",
92
+ "findings": "",
93
+ "error": ""
94
+ }
95
+ }
96
+ ```
97
+
98
+ **CRITICAL**: COLOR-001, TYPO-001, FOCUS-001 have NO deps -- they run in PARALLEL.
99
+
100
+ **REMED-001** (remediation-planner):
101
+ ```json
102
+ {
103
+ "REMED-001": {
104
+ "title": "Prioritized Remediation Plan",
105
+ "description": "PURPOSE: Synthesize all 3 audit findings into prioritized remediation plan | Success: Complete remediation plan with severity ranking, code-level fix guidance, WCAG criterion mapping\nTASK:\n - Read color, typography, and focus audit reports\n - Merge and deduplicate findings\n - Prioritize by severity (Critical > High > Medium > Low)\n - Group by file/component for efficient fixing\n - Provide code-level fix guidance (specific CSS/HTML changes)\n - Map each fix to WCAG success criterion\n - Estimate effort per fix\nCONTEXT:\n - Session: <session-folder>\n - Target: <target>\n - WCAG Level: <level>\n - Upstream artifacts: audits/color/color-audit-001.md, audits/typography/typo-audit-001.md, audits/focus/focus-audit-001.md\n - Shared memory: <session>/.msg/meta.json\nEXPECTED: <session>/remediation/remediation-plan.md | All critical/high issues addressed\nCONSTRAINTS: Read-only synthesis | No code modifications",
106
+ "role": "remediation-planner",
107
+ "prefix": "REMED",
108
+ "deps": ["COLOR-001", "TYPO-001", "FOCUS-001"],
109
+ "status": "pending",
110
+ "findings": "",
111
+ "error": ""
112
+ }
113
+ }
114
+ ```
115
+
116
+ ---
117
+
118
+ ### Full Pipeline Task Chain
119
+
120
+ Same as audit-only (COLOR-001, TYPO-001, FOCUS-001, REMED-001), plus:
121
+
122
+ **FIX-001** (fix-implementer):
123
+ ```json
124
+ {
125
+ "FIX-001": {
126
+ "title": "Implement Accessibility Fixes",
127
+ "description": "PURPOSE: Implement accessibility fixes from remediation plan | Success: All critical and high severity issues fixed with passing contrast ratios and ARIA validation\nTASK:\n - Read remediation plan for prioritized fix list\n - Apply OKLCH color corrections for contrast compliance\n - Add/fix focus styles (outline, outline-offset, :focus-visible)\n - Add missing ARIA attributes (role, aria-label, aria-live, aria-expanded)\n - Add reduced-motion media queries where needed\n - Fix typography (clamp(), line-height, max-width for reading)\n - Add skip link if missing\n - Apply fixes in priority order (critical first)\nCONTEXT:\n - Session: <session-folder>\n - Target: <target>\n - WCAG Level: <level>\n - Upstream artifacts: remediation/remediation-plan.md\n - Shared memory: <session>/.msg/meta.json\nEXPECTED: Modified source files + <session>/fixes/fix-summary-001.md | All critical/high fixes applied\nCONSTRAINTS: Modify only files identified in remediation plan | Preserve existing functionality",
128
+ "role": "fix-implementer",
129
+ "prefix": "FIX",
130
+ "deps": ["REMED-001"],
131
+ "status": "pending",
132
+ "findings": "",
133
+ "error": ""
134
+ }
135
+ }
136
+ ```
137
+
138
+ **COLOR-002** (color-auditor):
139
+ ```json
140
+ {
141
+ "COLOR-002": {
142
+ "title": "Re-audit Color Contrast After Fixes",
143
+ "description": "PURPOSE: Re-audit color contrast after fixes applied | Success: All color combinations pass WCAG target level\nTASK:\n - Re-extract all color values from modified stylesheets\n - Re-calculate WCAG 2.1 contrast ratios\n - Re-calculate APCA Lc values\n - Compare before/after for each fixed combination\n - Verify no regressions in unfixed combinations\nCONTEXT:\n - Session: <session-folder>\n - Target: <target>\n - WCAG Level: <level>\n - Upstream artifacts: fixes/fix-summary-001.md, audits/color/color-audit-001.md\n - Shared memory: <session>/.msg/meta.json\nEXPECTED: <session>/re-audit/color-audit-002.md | Before/after comparison with pass/fail\nCONSTRAINTS: Read-only verification | Focus on fixed items + regression check",
144
+ "role": "color-auditor",
145
+ "prefix": "COLOR",
146
+ "deps": ["FIX-001"],
147
+ "status": "pending",
148
+ "findings": "",
149
+ "error": ""
150
+ }
151
+ }
152
+ ```
153
+
154
+ **FOCUS-002** (focus-auditor):
155
+ ```json
156
+ {
157
+ "FOCUS-002": {
158
+ "title": "Re-audit Focus Management After Fixes",
159
+ "description": "PURPOSE: Re-audit focus management after fixes applied | Success: All focus indicators visible with correct ARIA attributes\nTASK:\n - Re-audit tab order after DOM changes\n - Verify focus indicator fixes (outline, contrast)\n - Check new ARIA attributes are valid\n - Verify skip link implementation\n - Test keyboard operability of fixed elements\n - Compare before/after for each fixed element\nCONTEXT:\n - Session: <session-folder>\n - Target: <target>\n - WCAG Level: <level>\n - Upstream artifacts: fixes/fix-summary-001.md, audits/focus/focus-audit-001.md\n - Shared memory: <session>/.msg/meta.json\nEXPECTED: <session>/re-audit/focus-audit-002.md | Before/after comparison with pass/fail\nCONSTRAINTS: Read-only verification | Focus on fixed items + regression check",
160
+ "role": "focus-auditor",
161
+ "prefix": "FOCUS",
162
+ "deps": ["FIX-001"],
163
+ "status": "pending",
164
+ "findings": "",
165
+ "error": ""
166
+ }
167
+ }
168
+ ```
169
+
170
+ **CRITICAL**: COLOR-002 and FOCUS-002 both blocked only by FIX-001 -- they run in PARALLEL after fixes.
171
+
172
+ ---
173
+
174
+ ## Phase 4: Validation
175
+
176
+ Verify task chain integrity:
177
+
178
+ | Check | Method | Expected |
179
+ |-------|--------|----------|
180
+ | Task count correct | tasks.json count | audit-only: 4, full: 7 |
181
+ | Dependencies correct | Trace dependency graph | Acyclic, correct deps |
182
+ | No circular dependencies | Trace dependency graph | Acyclic |
183
+ | 3 audit tasks have NO deps | Pattern check | COLOR-001, TYPO-001, FOCUS-001 are parallel |
184
+ | REMED-001 blocked by all 3 | Check deps | [COLOR-001, TYPO-001, FOCUS-001] |
185
+ | Task IDs use correct prefixes | Pattern check | COLOR/TYPO/FOCUS/REMED/FIX |
186
+ | Structured descriptions complete | Each has PURPOSE/TASK/CONTEXT/EXPECTED/CONSTRAINTS | All present |
187
+
188
+ If validation fails, fix the specific task and re-validate.
@@ -0,0 +1,281 @@
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
+ | `COLOR-*` | color-auditor |
29
+ | `TYPO-*` | typo-auditor |
30
+ | `FOCUS-*` | focus-auditor |
31
+ | `REMED-*` | remediation-planner |
32
+ | `FIX-*` | fix-implementer |
33
+
34
+ 2. Mark task completed in tasks.json: `state.tasks[taskId].status = 'completed'`
35
+ 3. Record completion in session state
36
+
37
+ 4. Check checkpoint for completed task:
38
+
39
+ | Completed Task | Checkpoint | Action |
40
+ |---------------|------------|--------|
41
+ | COLOR-001 | Parallel fan-in | Check if all 3 audits complete -> unblock REMED-001 |
42
+ | TYPO-001 | Parallel fan-in | Check if all 3 audits complete -> unblock REMED-001 |
43
+ | FOCUS-001 | Parallel fan-in | Check if all 3 audits complete -> unblock REMED-001 |
44
+ | REMED-001 | -- | Unblock FIX-001 (full mode only) |
45
+ | FIX-001 | GC check | Spawn COLOR-002 + FOCUS-002 in parallel (full mode) |
46
+ | COLOR-002 | Re-audit fan-in | Check if both re-audits complete -> handleComplete |
47
+ | FOCUS-002 | Re-audit fan-in | Check if both re-audits complete -> handleComplete |
48
+
49
+ 5. **Parallel fan-in handling** (audit task completed):
50
+
51
+ **CRITICAL**: REMED-001 must wait for ALL 3 auditors (COLOR-001 + TYPO-001 + FOCUS-001) to complete.
52
+
53
+ Since all 3 are spawned together and waited on together:
54
+ ```javascript
55
+ // Spawn all 3 auditors
56
+ spawn_agent({ agent_type: "team_worker", task_name: "COLOR-001", ... })
57
+ spawn_agent({ agent_type: "team_worker", task_name: "TYPO-001", ... })
58
+ spawn_agent({ agent_type: "team_worker", task_name: "FOCUS-001", ... })
59
+
60
+ // Wait for ALL 3 to complete
61
+ wait_agent({ targets: ["COLOR-001", "TYPO-001", "FOCUS-001"], timeout_ms: 900000 })
62
+
63
+ // Close all 3
64
+ close_agent({ target: "COLOR-001" })
65
+ close_agent({ target: "TYPO-001" })
66
+ close_agent({ target: "FOCUS-001" })
67
+
68
+ // Mark all 3 completed in tasks.json
69
+ // Then spawn REMED-001
70
+ ```
71
+
72
+ 6. **GC loop handling** (full mode, after FIX-001 completes):
73
+
74
+ Spawn COLOR-002 + FOCUS-002 in parallel, wait for both:
75
+ ```javascript
76
+ spawn_agent({ agent_type: "team_worker", task_name: "COLOR-002", ... })
77
+ spawn_agent({ agent_type: "team_worker", task_name: "FOCUS-002", ... })
78
+ wait_agent({ targets: ["COLOR-002", "FOCUS-002"], timeout_ms: 900000 })
79
+ close_agent({ target: "COLOR-002" })
80
+ close_agent({ target: "FOCUS-002" })
81
+ ```
82
+
83
+ Read re-audit results:
84
+
85
+ | Signal | Condition | Action |
86
+ |--------|-----------|--------|
87
+ | All pass | No critical/high issues remaining | GC converged -> handleComplete |
88
+ | Issues remain | Critical/high issues found | gc_rounds < max -> create FIX-002 + re-audit tasks |
89
+ | Any | gc_rounds >= max | Escalate to user |
90
+
91
+ **GC Fix Task Creation** (when re-audit finds issues):
92
+ ```json
93
+ {
94
+ "FIX-002": {
95
+ "title": "Address remaining issues from re-audit",
96
+ "description": "PURPOSE: Address remaining issues from re-audit | Success: All critical/high issues resolved\nTASK:\n - Parse re-audit reports for remaining issues\n - Apply targeted fixes for color and focus issues\nCONTEXT:\n - Session: <session-folder>\n - Upstream artifacts: re-audit/color-audit-002.md, re-audit/focus-audit-002.md",
97
+ "role": "fix-implementer",
98
+ "prefix": "FIX",
99
+ "deps": ["COLOR-002", "FOCUS-002"],
100
+ "status": "pending",
101
+ "findings": "",
102
+ "error": ""
103
+ }
104
+ }
105
+ ```
106
+ Then create new re-audit tasks with deps on FIX-002. Increment gc_rounds.
107
+
108
+ **GC Escalation Options** (when max rounds exceeded):
109
+ 1. Accept current state - acknowledge remaining issues
110
+ 2. Try one more round
111
+ 3. Terminate
112
+
113
+ 7. -> handleSpawnNext
114
+
115
+ ## handleCheck
116
+
117
+ Read-only status report from tasks.json, then STOP.
118
+
119
+ ```
120
+ Pipeline Status (<pipeline-mode>):
121
+ [DONE] COLOR-001 (color-auditor) -> audits/color/color-audit-001.md
122
+ [DONE] TYPO-001 (typo-auditor) -> audits/typography/typo-audit-001.md
123
+ [RUN] FOCUS-001 (focus-auditor) -> auditing focus...
124
+ [WAIT] REMED-001 (remediation-planner) -> blocked by COLOR-001, TYPO-001, FOCUS-001
125
+ [WAIT] FIX-001 (fix-implementer) -> blocked by REMED-001
126
+ [WAIT] COLOR-002 (color-auditor) -> blocked by FIX-001
127
+ [WAIT] FOCUS-002 (focus-auditor) -> blocked by FIX-001
128
+
129
+ Fan-in: 2/3 audits complete
130
+ GC Rounds: 0/2
131
+ Session: <session-id>
132
+ Commands: 'resume' to advance | 'check' to refresh
133
+ ```
134
+
135
+ Output status -- do NOT advance pipeline.
136
+
137
+ ## handleResume
138
+
139
+ **Agent Health Check** (v4):
140
+ ```
141
+ // Verify actual running agents match session state
142
+ const runningAgents = list_agents({})
143
+ // For each active_agent in tasks.json:
144
+ // - If agent NOT in runningAgents -> agent crashed
145
+ // - Reset that task to pending, remove from active_agents
146
+ // This prevents stale agent references from blocking the pipeline
147
+ ```
148
+
149
+ 1. Audit tasks.json for inconsistencies:
150
+ - Tasks stuck in "in_progress" -> reset to "pending"
151
+ - Tasks with completed deps but still "pending" -> include in spawn list
152
+ 2. -> handleSpawnNext
153
+
154
+ ## handleSpawnNext
155
+
156
+ Find ready tasks, spawn workers, wait for results.
157
+
158
+ 1. Read tasks.json: completedTasks, inProgressTasks, readyTasks (pending + all deps completed)
159
+ 2. No ready + work in progress -> report waiting, STOP
160
+ 3. No ready + nothing in progress -> handleComplete
161
+ 4. Has ready -> for each:
162
+ a. Check inner loop role with active worker -> skip (worker picks up)
163
+ b. Update task status to in_progress in tasks.json
164
+ c. team_msg log -> task_unblocked
165
+ d. Spawn team_worker:
166
+
167
+ ```javascript
168
+ // 1) Update status in tasks.json
169
+ state.tasks[taskId].status = 'in_progress'
170
+
171
+ // 2) Spawn worker
172
+ const agentId = spawn_agent({
173
+ agent_type: "team_worker",
174
+ task_name: taskId, // e.g., "COLOR-001" -- enables named targeting
175
+ fork_context: false,
176
+ items: [
177
+ { type: "text", text: `## Role Assignment
178
+ role: ${role}
179
+ role_spec: ${skillRoot}/roles/${role}/role.md
180
+ session: ${sessionFolder}
181
+ session_id: ${sessionId}
182
+ requirement: ${taskDescription}
183
+ inner_loop: ${innerLoop}
184
+
185
+ Read role_spec file to load Phase 2-4 domain instructions.` },
186
+
187
+ { type: "text", text: `## Task Context
188
+ task_id: ${taskId}
189
+ title: ${taskTitle}
190
+ description: ${taskDescription}
191
+ pipeline_phase: ${pipelinePhase}` },
192
+
193
+ { type: "text", text: `## Upstream Context
194
+ ${upstreamContext}` }
195
+ ]
196
+ })
197
+
198
+ // 3) Track agent
199
+ state.active_agents[taskId] = { agentId, role, started_at: now }
200
+
201
+ // 4) Wait for completion -- use task_name for stable targeting (v4)
202
+ const waitResult = wait_agent({ targets: [taskId], timeout_ms: 900000 })
203
+ if (waitResult.timed_out) {
204
+ state.tasks[taskId].status = 'timed_out'
205
+ close_agent({ target: taskId })
206
+ delete state.active_agents[taskId]
207
+ } else {
208
+ // 5) Collect results and update tasks.json
209
+ state.tasks[taskId].status = 'completed'
210
+ close_agent({ target: taskId }) // Use task_name, not agentId
211
+ delete state.active_agents[taskId]
212
+ }
213
+ ```
214
+
215
+ **Parallel spawn rules by mode**:
216
+
217
+ | Mode | Scenario | Spawn Behavior |
218
+ |------|----------|---------------|
219
+ | audit-only | Initial | Spawn COLOR-001 + TYPO-001 + FOCUS-001 in parallel, wait_agent for all 3 |
220
+ | audit-only | After 3 audits complete | Spawn REMED-001 |
221
+ | full | Initial | Spawn COLOR-001 + TYPO-001 + FOCUS-001 in parallel, wait_agent for all 3 |
222
+ | full | After 3 audits complete | Spawn REMED-001 |
223
+ | full | After REMED-001 | Spawn FIX-001 |
224
+ | full | After FIX-001 | Spawn COLOR-002 + FOCUS-002 in parallel, wait_agent for both |
225
+ | full (GC) | After re-audit fan-in | If issues: spawn FIX-002, then new re-audits |
226
+
227
+ **Cross-Agent Supplementary Context** (v4):
228
+
229
+ When spawning workers in a later pipeline phase, send upstream results as supplementary context to already-running workers:
230
+
231
+ ```
232
+ // Example: Send audit results to running remediation-planner
233
+ send_message({
234
+ target: "<running-agent-task-name>",
235
+ items: [{ type: "text", text: `## Supplementary Context\n${upstreamFindings}` }]
236
+ })
237
+ // Note: send_message queues info without interrupting the agent's current work
238
+ ```
239
+
240
+ Use `send_message` (not `assign_task`) for supplementary info that enriches but doesn't redirect the agent's current task.
241
+
242
+ 5. Update tasks.json, output summary, STOP
243
+
244
+ ## handleComplete
245
+
246
+ **Cleanup Verification** (v4):
247
+ ```
248
+ // Verify all agents are properly closed
249
+ const remaining = list_agents({})
250
+ // If any team agents still running -> close_agent each
251
+ // Ensures clean session shutdown
252
+ ```
253
+
254
+ Pipeline done. Generate report and completion action.
255
+
256
+ **Completion check by mode**:
257
+
258
+ | Mode | Completion Condition |
259
+ |------|---------------------|
260
+ | audit-only | All 4 tasks (+ any fix tasks) completed |
261
+ | full | All 7 tasks (+ any GC fix tasks) completed |
262
+
263
+ 1. If any tasks not completed -> handleSpawnNext
264
+ 2. If all completed -> transition to coordinator Phase 5
265
+
266
+ ## handleAdapt
267
+
268
+ Capability gap reported mid-pipeline.
269
+
270
+ 1. Parse gap description
271
+ 2. Check if existing role covers it -> redirect
272
+ 3. Role count < 6 -> generate dynamic role spec
273
+ 4. Create new task in tasks.json, spawn worker
274
+ 5. Role count >= 6 -> merge or pause
275
+
276
+ ## Fast-Advance Reconciliation
277
+
278
+ On every coordinator wake:
279
+ 1. Read tasks.json for completed tasks
280
+ 2. Sync active_agents with actual state
281
+ 3. No duplicate spawns
@@ -0,0 +1,213 @@
1
+ # Coordinator Role
2
+
3
+ Visual Accessibility Team coordinator. Orchestrate pipeline: analyze -> dispatch -> spawn -> monitor -> report. Manages parallel fan-in (3 auditors), remediation synthesis, fix implementation, and optional re-audit GC loop.
4
+
5
+ ## Scope Lock (READ FIRST -- overrides all other sections)
6
+
7
+ **You are a dispatcher, not a doer.** Your ONLY outputs are:
8
+ - Session state files (`.workflow/.team/` directory)
9
+ - `spawn_agent` / `wait_agent` / `close_agent` / `send_message` / `assign_task` calls
10
+ - Status reports to the user / `request_user_input` prompts
11
+
12
+ **FORBIDDEN** (even if the task seems trivial):
13
+ ```
14
+ WRONG: Read/Grep/Glob on project source code -- worker work
15
+ WRONG: Bash("ccw cli ...") -- worker work
16
+ WRONG: Edit/Write on project source files -- worker work
17
+ ```
18
+
19
+ **Self-check gate**: Before ANY tool call, ask: "Is this orchestration or project work? If project work -> STOP -> spawn worker."
20
+
21
+ ---
22
+
23
+ ## Identity
24
+ - **Name**: coordinator | **Tag**: [coordinator]
25
+ - **Responsibility**: Analyze scope -> Create session -> Dispatch tasks -> Monitor progress -> Report results
26
+
27
+ ## Boundaries
28
+
29
+ ### MUST
30
+ - All output (team_msg, logs) must carry `[coordinator]` identifier
31
+ - Use `team_worker` agent type for all worker spawns (NOT `general-purpose`)
32
+ - Dispatch tasks with proper dependency chains and deps in tasks.json
33
+ - Spawn COLOR-001, TYPO-001, FOCUS-001 in PARALLEL (no deps between them)
34
+ - Monitor worker progress via wait_agent and process results
35
+ - Handle Generator-Critic loops with max 2 iterations
36
+ - Maintain session state persistence (tasks.json)
37
+ - **Always proceed through full Phase 1-5 workflow, never skip to direct execution**
38
+ - Use `send_message` for supplementary context (non-interrupting) and `assign_task` for triggering new work
39
+ - Use `list_agents` for session resume health checks and cleanup verification
40
+
41
+ ### MUST NOT
42
+ - Implement domain logic (auditing, planning, fixing) -- workers handle this
43
+ - Spawn workers without creating tasks first
44
+ - Skip sync points when configured
45
+ - Force-advance pipeline past failed audit
46
+ - Modify source code or design artifacts directly -- delegate to workers
47
+ - Omit `[coordinator]` identifier in any output
48
+ - Call CLI tools (ccw cli) -- only workers use CLI
49
+
50
+ ## Command Execution Protocol
51
+
52
+ When coordinator needs to execute a command (analyze, dispatch, monitor):
53
+
54
+ 1. Read `commands/<command>.md`
55
+ 2. Follow the workflow defined in the command
56
+ 3. Commands are inline execution guides, NOT separate agents
57
+ 4. Execute synchronously, complete before proceeding
58
+
59
+ ## Entry Router
60
+
61
+ | Detection | Condition | Handler |
62
+ |-----------|-----------|---------|
63
+ | Status check | Args contain "check" or "status" | -> handleCheck (monitor.md) |
64
+ | Manual resume | Args contain "resume" or "continue" | -> handleResume (monitor.md) |
65
+ | Capability gap | Message contains "capability_gap" | -> handleAdapt (monitor.md) |
66
+ | Pipeline complete | All tasks have status "completed" | -> handleComplete (monitor.md) |
67
+ | Interrupted session | Active/paused session exists in .workflow/.team/VA-* | -> Phase 0 |
68
+ | New session | None of above | -> Phase 1 |
69
+
70
+ For check/resume/adapt/complete: load `@commands/monitor.md`, execute matched handler, STOP.
71
+
72
+ ## Phase 0: Session Resume Check
73
+
74
+ 1. Scan `.workflow/.team/VA-*/tasks.json` for active/paused sessions
75
+ 2. No sessions -> Phase 1
76
+ 3. Single session -> reconcile (read tasks.json, reset in_progress->pending, kick first ready task)
77
+ 4. Multiple -> request_user_input for selection
78
+
79
+ ## Phase 1: Requirement Clarification
80
+
81
+ TEXT-LEVEL ONLY. No source code reading.
82
+
83
+ 1. Parse task description from arguments
84
+ 2. Detect audit scope:
85
+
86
+ | Signal | Pipeline Mode |
87
+ |--------|---------------|
88
+ | "audit only", "no fixes", "assessment" | audit-only |
89
+ | "full audit", "fix", "remediate", "full cycle" | full |
90
+ | Unclear | ask user |
91
+
92
+ 3. Ask for missing parameters if scope unclear:
93
+ ```
94
+ request_user_input({
95
+ questions: [
96
+ { question: "Accessibility audit scope?", header: "Scope", options: [
97
+ { label: "Audit only", description: "Color + typography + focus audit with remediation plan" },
98
+ { label: "Full cycle", description: "Audit + fix + re-audit verification" }
99
+ ]},
100
+ { question: "Target?", header: "Target", options: [
101
+ { label: "URL (rendered page)" },
102
+ { label: "Component path (source)" },
103
+ { label: "Full site" }
104
+ ]}
105
+ ]
106
+ })
107
+ ```
108
+ 4. Delegate to `@commands/analyze.md` -> output scope context
109
+ 5. Record: pipeline_mode, target, wcag_level
110
+
111
+ ## Phase 2: Create Session + Initialize
112
+
113
+ 1. Resolve workspace paths (MUST do first):
114
+ - `project_root` = result of `Bash({ command: "pwd" })`
115
+ - `skill_root` = `<project_root>/.codex/skills/team-visual-a11y`
116
+ 2. Generate session ID: `VA-<slug>-<YYYY-MM-DD>`
117
+ 3. Create session folder structure:
118
+ ```
119
+ .workflow/.team/VA-<slug>-<date>/audits/color/
120
+ .workflow/.team/VA-<slug>-<date>/audits/typography/
121
+ .workflow/.team/VA-<slug>-<date>/audits/focus/
122
+ .workflow/.team/VA-<slug>-<date>/remediation/
123
+ .workflow/.team/VA-<slug>-<date>/fixes/
124
+ .workflow/.team/VA-<slug>-<date>/re-audit/
125
+ .workflow/.team/VA-<slug>-<date>/evidence/
126
+ .workflow/.team/VA-<slug>-<date>/.msg/
127
+ ```
128
+ 4. Initialize `.msg/meta.json` via team_msg state_update with pipeline metadata
129
+ 5. Write initial tasks.json:
130
+ ```json
131
+ {
132
+ "session_id": "<id>",
133
+ "pipeline_mode": "<audit-only|full>",
134
+ "target": "<target>",
135
+ "wcag_level": "<AA|AAA>",
136
+ "created_at": "<ISO timestamp>",
137
+ "gc_rounds": 0,
138
+ "max_gc_rounds": 2,
139
+ "active_agents": {},
140
+ "tasks": {}
141
+ }
142
+ ```
143
+ 6. Do NOT spawn workers yet - deferred to Phase 4
144
+
145
+ ## Phase 3: Create Task Chain
146
+
147
+ Delegate to `@commands/dispatch.md`. Task chains by mode:
148
+
149
+ | Mode | Task Chain |
150
+ |------|------------|
151
+ | audit-only | [COLOR-001 + TYPO-001 + FOCUS-001 parallel] -> REMED-001 |
152
+ | full | [COLOR-001 + TYPO-001 + FOCUS-001 parallel] -> REMED-001 -> FIX-001 -> [COLOR-002 + FOCUS-002 parallel] |
153
+
154
+ ## Phase 4: Spawn-and-Wait
155
+
156
+ **CRITICAL**: Spawn COLOR-001, TYPO-001, FOCUS-001 in PARALLEL (all 3 have NO deps).
157
+
158
+ Delegate to `@commands/monitor.md#handleSpawnNext`:
159
+ 1. Find ready tasks (pending + deps resolved)
160
+ 2. Spawn team_worker agents via spawn_agent, wait_agent for results
161
+ 3. Output status summary
162
+ 4. STOP
163
+
164
+ ## Phase 5: Report + Completion Action
165
+
166
+ 1. Read session state -> collect all results
167
+ 2. List deliverables:
168
+
169
+ | Deliverable | Path |
170
+ |-------------|------|
171
+ | Color Audit | <session>/audits/color/color-audit-001.md |
172
+ | Typography Audit | <session>/audits/typography/typo-audit-001.md |
173
+ | Focus Audit | <session>/audits/focus/focus-audit-001.md |
174
+ | Remediation Plan | <session>/remediation/remediation-plan.md |
175
+ | Fix Summary | <session>/fixes/fix-summary-001.md (full mode) |
176
+ | Re-audit Color | <session>/re-audit/color-audit-002.md (full mode) |
177
+ | Re-audit Focus | <session>/re-audit/focus-audit-002.md (full mode) |
178
+ | Evidence | <session>/evidence/*.png (if Chrome DevTools used) |
179
+
180
+ 3. Calculate: completed_tasks, gc_rounds, issues_found, issues_fixed, wcag_compliance_level
181
+ 4. Output pipeline summary with [coordinator] prefix
182
+ 5. Execute completion action:
183
+ ```
184
+ request_user_input({
185
+ questions: [{ question: "Pipeline complete. What next?", header: "Completion", options: [
186
+ { label: "Archive & Clean", description: "Archive session and clean up resources" },
187
+ { label: "Keep Active", description: "Keep session for follow-up work" },
188
+ { label: "Export Results", description: "Export deliverables to specified location" }
189
+ ]}]
190
+ })
191
+ ```
192
+
193
+ ## v4 Coordination Patterns
194
+
195
+ ### Message Semantics
196
+ - **send_message**: Queue supplementary info to a running agent. Does NOT interrupt current processing. Use for: sharing upstream results, context enrichment, FYI notifications.
197
+ - **assign_task**: Assign new work and trigger processing. Use for: waking idle agents, redirecting work, requesting new output.
198
+
199
+ ### Agent Lifecycle Management
200
+ - **list_agents({})**: Returns all running agents. Use in handleResume to reconcile session state with actual running agents. Use in handleComplete to verify clean shutdown.
201
+ - **Named targeting**: Workers spawned with `task_name: "<task-id>"` can be addressed by name in send_message, assign_task, and close_agent calls.
202
+
203
+ ## Error Handling
204
+
205
+ | Error | Resolution |
206
+ |-------|------------|
207
+ | Task timeout | Log, mark failed, ask user to retry or skip |
208
+ | Worker crash | Reset task to pending, respawn worker |
209
+ | Dependency cycle | Detect, report to user, halt |
210
+ | Invalid scope | Reject with error, ask to clarify |
211
+ | Session corruption | Attempt recovery, fallback to manual reconciliation |
212
+ | GC loop stuck > 2 rounds | Escalate to user: accept / try one more / terminate |
213
+ | Chrome DevTools unavailable | Mark in meta.json, auditors degrade to static analysis |