claude-code-workflow 7.2.26 → 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 (408) 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-arch-opt/SKILL.md +1 -1
  27. package/.claude/skills/team-arch-opt/roles/coordinator/commands/monitor.md +3 -1
  28. package/.claude/skills/team-arch-opt/roles/refactorer/role.md +3 -1
  29. package/.claude/skills/team-arch-opt/specs/team-config.json +2 -2
  30. package/.claude/skills/team-coordinate/SKILL.md +4 -3
  31. package/.claude/skills/team-coordinate/roles/coordinator/commands/analyze-task.md +1 -1
  32. package/.claude/skills/team-coordinate/roles/coordinator/commands/dispatch.md +3 -2
  33. package/.claude/skills/team-coordinate/roles/coordinator/commands/monitor.md +3 -2
  34. package/.claude/skills/team-coordinate/roles/coordinator/role.md +16 -15
  35. package/.claude/skills/team-coordinate/specs/pipelines.md +7 -4
  36. package/.claude/skills/team-coordinate/specs/role-spec-template.md +1 -0
  37. package/.claude/skills/team-interactive-craft/SKILL.md +127 -0
  38. package/.claude/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
  39. package/.claude/skills/team-interactive-craft/roles/builder/role.md +216 -0
  40. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
  41. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +192 -0
  42. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +183 -0
  43. package/.claude/skills/team-interactive-craft/roles/coordinator/role.md +166 -0
  44. package/.claude/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
  45. package/.claude/skills/team-interactive-craft/roles/researcher/role.md +131 -0
  46. package/.claude/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
  47. package/.claude/skills/team-interactive-craft/specs/pipelines.md +85 -0
  48. package/.claude/skills/team-interactive-craft/specs/team-config.json +105 -0
  49. package/.claude/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
  50. package/.claude/skills/team-lifecycle-v4/SKILL.md +1 -1
  51. package/.claude/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +14 -2
  52. package/.claude/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +24 -2
  53. package/.claude/skills/team-lifecycle-v4/roles/executor/role.md +3 -1
  54. package/.claude/skills/team-motion-design/SKILL.md +129 -0
  55. package/.claude/skills/team-motion-design/roles/animator/role.md +194 -0
  56. package/.claude/skills/team-motion-design/roles/choreographer/role.md +164 -0
  57. package/.claude/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
  58. package/.claude/skills/team-motion-design/roles/coordinator/commands/dispatch.md +203 -0
  59. package/.claude/skills/team-motion-design/roles/coordinator/commands/monitor.md +184 -0
  60. package/.claude/skills/team-motion-design/roles/coordinator/role.md +167 -0
  61. package/.claude/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
  62. package/.claude/skills/team-motion-design/roles/motion-tester/role.md +175 -0
  63. package/.claude/skills/team-motion-design/specs/gpu-constraints.md +114 -0
  64. package/.claude/skills/team-motion-design/specs/motion-tokens.md +128 -0
  65. package/.claude/skills/team-motion-design/specs/pipelines.md +74 -0
  66. package/.claude/skills/team-motion-design/specs/reduced-motion.md +129 -0
  67. package/.claude/skills/team-motion-design/specs/team-config.json +99 -0
  68. package/.claude/skills/team-perf-opt/SKILL.md +1 -1
  69. package/.claude/skills/team-perf-opt/roles/optimizer/role.md +3 -1
  70. package/.claude/skills/team-perf-opt/specs/team-config.json +2 -2
  71. package/.claude/skills/team-quality-assurance/SKILL.md +1 -1
  72. package/.claude/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +4 -2
  73. package/.claude/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +4 -2
  74. package/.claude/skills/team-quality-assurance/roles/executor/role.md +3 -1
  75. package/.claude/skills/team-testing/SKILL.md +1 -1
  76. package/.claude/skills/team-testing/roles/coordinator/commands/dispatch.md +5 -2
  77. package/.claude/skills/team-testing/roles/coordinator/commands/monitor.md +4 -2
  78. package/.claude/skills/team-testing/roles/executor/role.md +3 -1
  79. package/.claude/skills/team-ui-polish/SKILL.md +127 -0
  80. package/.claude/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
  81. package/.claude/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +194 -0
  82. package/.claude/skills/team-ui-polish/roles/coordinator/commands/monitor.md +180 -0
  83. package/.claude/skills/team-ui-polish/roles/coordinator/role.md +170 -0
  84. package/.claude/skills/team-ui-polish/roles/diagnostician/role.md +160 -0
  85. package/.claude/skills/team-ui-polish/roles/optimizer/role.md +225 -0
  86. package/.claude/skills/team-ui-polish/roles/scanner/role.md +356 -0
  87. package/.claude/skills/team-ui-polish/roles/verifier/role.md +142 -0
  88. package/.claude/skills/team-ui-polish/specs/anti-patterns.md +141 -0
  89. package/.claude/skills/team-ui-polish/specs/design-standards.md +356 -0
  90. package/.claude/skills/team-ui-polish/specs/fix-strategies.md +235 -0
  91. package/.claude/skills/team-ui-polish/specs/pipelines.md +81 -0
  92. package/.claude/skills/team-ui-polish/specs/scoring-guide.md +162 -0
  93. package/.claude/skills/team-ui-polish/specs/team-config.json +73 -0
  94. package/.claude/skills/team-uidesign/SKILL.md +6 -1
  95. package/.claude/skills/team-uidesign/roles/designer/role.md +28 -4
  96. package/.claude/skills/team-uidesign/roles/implementer/role.md +25 -3
  97. package/.claude/skills/team-uidesign/roles/researcher/role.md +21 -2
  98. package/.claude/skills/team-uidesign/roles/reviewer/role.md +19 -17
  99. package/.claude/skills/team-uidesign/specs/anti-patterns.md +211 -0
  100. package/.claude/skills/team-uidesign/specs/design-standards.md +329 -0
  101. package/.claude/skills/team-uidesign/specs/scoring-guide.md +114 -0
  102. package/.claude/skills/team-uidesign/specs/team-config.json +1 -1
  103. package/.claude/skills/team-uidesign/specs/ux-writing.md +86 -0
  104. package/.claude/skills/team-ux-improve/SKILL.md +3 -0
  105. package/.claude/skills/team-ux-improve/roles/designer/role.md +30 -0
  106. package/.claude/skills/team-ux-improve/roles/diagnoser/role.md +16 -1
  107. package/.claude/skills/team-ux-improve/roles/scanner/role.md +43 -1
  108. package/.claude/skills/team-ux-improve/specs/anti-patterns.md +103 -0
  109. package/.claude/skills/team-ux-improve/specs/design-standards.md +54 -0
  110. package/.claude/skills/team-ux-improve/specs/heuristics.md +88 -0
  111. package/.claude/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +40 -8
  112. package/.claude/skills/team-ux-improve/wisdom/patterns/state-management.md +32 -12
  113. package/.claude/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +35 -11
  114. package/.claude/skills/team-ux-improve/wisdom/principles/general-ux.md +36 -9
  115. package/.claude/skills/team-visual-a11y/SKILL.md +143 -0
  116. package/.claude/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
  117. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
  118. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +250 -0
  119. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +204 -0
  120. package/.claude/skills/team-visual-a11y/roles/coordinator/role.md +169 -0
  121. package/.claude/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
  122. package/.claude/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
  123. package/.claude/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
  124. package/.claude/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
  125. package/.claude/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
  126. package/.claude/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
  127. package/.claude/skills/team-visual-a11y/specs/pipelines.md +98 -0
  128. package/.claude/skills/team-visual-a11y/specs/team-config.json +109 -0
  129. package/.claude/skills/team-visual-a11y/specs/typography-scale.md +165 -0
  130. package/.claude/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
  131. package/.codex/skills/investigate/agents/investigator.md +392 -0
  132. package/.codex/skills/investigate/orchestrator.md +362 -0
  133. package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
  134. package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
  135. package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
  136. package/.codex/skills/investigate/phases/04-implementation.md +195 -0
  137. package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
  138. package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
  139. package/.codex/skills/security-audit/orchestrator.md +384 -0
  140. package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
  141. package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
  142. package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
  143. package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
  144. package/.codex/skills/ship/agents/ship-operator.md +318 -0
  145. package/.codex/skills/ship/orchestrator.md +426 -0
  146. package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
  147. package/.codex/skills/ship/phases/02-code-review.md +228 -0
  148. package/.codex/skills/ship/phases/03-version-bump.md +259 -0
  149. package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
  150. package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
  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/README.md +8 -0
  210. package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
  211. package/ccw/dist/core/hooks/hook-templates.js +114 -1
  212. package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
  213. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  214. package/ccw/dist/core/routes/cli-routes.js +34 -0
  215. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  216. package/ccw/dist/core/routes/system-routes.js +2 -2
  217. package/ccw/dist/core/routes/system-routes.js.map +1 -1
  218. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-BjP1ydDR.js} +2 -2
  219. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-BjP1ydDR.js.map} +1 -1
  220. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-CAX3xqMf.js} +2 -2
  221. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-CAX3xqMf.js.map} +1 -1
  222. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-CtWlmztq.js} +2 -2
  223. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-CtWlmztq.js.map} +1 -1
  224. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-hR4a-eLX.js} +2 -2
  225. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-hR4a-eLX.js.map} +1 -1
  226. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-DzNPkFN9.js} +2 -2
  227. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-DzNPkFN9.js.map} +1 -1
  228. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BPEGN4TT.js} +2 -2
  229. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BPEGN4TT.js.map} +1 -1
  230. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cf0r2RHY.js} +2 -2
  231. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cf0r2RHY.js.map} +1 -1
  232. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DEm1rJ4h.js} +2 -2
  233. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DEm1rJ4h.js.map} +1 -1
  234. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-BpeWw8HO.js} +2 -2
  235. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-BpeWw8HO.js.map} +1 -1
  236. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-BEsmh2vF.js} +2 -2
  237. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-BEsmh2vF.js.map} +1 -1
  238. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-B30SFdtU.js} +2 -2
  239. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-B30SFdtU.js.map} +1 -1
  240. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-BVvMpg1O.js} +2 -2
  241. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-BVvMpg1O.js.map} +1 -1
  242. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-CL73dHbh.js} +2 -2
  243. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-CL73dHbh.js.map} +1 -1
  244. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-BL-28lMZ.js} +2 -2
  245. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-BL-28lMZ.js.map} +1 -1
  246. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BzZDciHZ.js} +2 -2
  247. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BzZDciHZ.js.map} +1 -1
  248. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-CDp6-d8P.js} +2 -2
  249. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-CDp6-d8P.js.map} +1 -1
  250. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-fZY_7O9n.js} +2 -2
  251. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-fZY_7O9n.js.map} +1 -1
  252. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-4LJeC9bq.js} +2 -2
  253. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-4LJeC9bq.js.map} +1 -1
  254. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-Bpigrbhw.js} +2 -2
  255. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-Bpigrbhw.js.map} +1 -1
  256. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-BP0zJc1R.js} +2 -2
  257. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-BP0zJc1R.js.map} +1 -1
  258. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-CSt2oVKQ.js} +2 -2
  259. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-CSt2oVKQ.js.map} +1 -1
  260. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-B-xaMA0w.js} +2 -2
  261. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-B-xaMA0w.js.map} +1 -1
  262. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-CJqo_7DY.js} +2 -2
  263. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-CJqo_7DY.js.map} +1 -1
  264. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-ibZeQA-Y.js} +2 -2
  265. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-ibZeQA-Y.js.map} +1 -1
  266. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-DgJ4ctPQ.js} +2 -2
  267. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-DgJ4ctPQ.js.map} +1 -1
  268. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-Cit0Yq0D.js} +2 -2
  269. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-Cit0Yq0D.js.map} +1 -1
  270. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-Ce1HDIK0.js} +2 -2
  271. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-Ce1HDIK0.js.map} +1 -1
  272. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-J1KikNrk.js} +2 -2
  273. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-J1KikNrk.js.map} +1 -1
  274. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CdBjTmth.js} +2 -2
  275. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CdBjTmth.js.map} +1 -1
  276. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-B9ZK7LvX.js} +2 -2
  277. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-B9ZK7LvX.js.map} +1 -1
  278. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-CW_nS5UR.js} +2 -2
  279. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-CW_nS5UR.js.map} +1 -1
  280. package/ccw/frontend/dist/assets/{SettingsPage-BPDbXPSM.js → SettingsPage-B2PYzSoO.js} +35 -35
  281. package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +1 -0
  282. package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js → SkillsManagerPage-CTnWrrwp.js} +2 -2
  283. package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js.map → SkillsManagerPage-CTnWrrwp.js.map} +1 -1
  284. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DJpi9XQL.js} +2 -2
  285. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DJpi9XQL.js.map} +1 -1
  286. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-Ac6Ov7uy.js} +2 -2
  287. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-Ac6Ov7uy.js.map} +1 -1
  288. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-DZAAspqR.js} +2 -2
  289. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-DZAAspqR.js.map} +1 -1
  290. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-BJkwfhIZ.js} +2 -2
  291. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-BJkwfhIZ.js.map} +1 -1
  292. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-BJgjxBgb.js} +2 -2
  293. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-BJgjxBgb.js.map} +1 -1
  294. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-D1WekoOy.js} +2 -2
  295. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-D1WekoOy.js.map} +1 -1
  296. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-DxemgIhF.js} +2 -2
  297. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-DxemgIhF.js.map} +1 -1
  298. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-CjS83f1V.js} +2 -2
  299. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-CjS83f1V.js.map} +1 -1
  300. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-B5PUcn8I.js} +2 -2
  301. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-B5PUcn8I.js.map} +1 -1
  302. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-DCc9aPbb.js} +2 -2
  303. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-DCc9aPbb.js.map} +1 -1
  304. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-DOwFtzak.js} +2 -2
  305. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-DOwFtzak.js.map} +1 -1
  306. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-96qH3aFh.js} +2 -2
  307. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-96qH3aFh.js.map} +1 -1
  308. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CCxSuil1.js} +2 -2
  309. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CCxSuil1.js.map} +1 -1
  310. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-CZNSJFdq.js} +2 -2
  311. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-CZNSJFdq.js.map} +1 -1
  312. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-h8xtvw2_.js} +2 -2
  313. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-h8xtvw2_.js.map} +1 -1
  314. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-D3NY0bm6.js} +2 -2
  315. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-D3NY0bm6.js.map} +1 -1
  316. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-Cy2vkc8p.js} +2 -2
  317. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-Cy2vkc8p.js.map} +1 -1
  318. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-Bzq3U1Mx.js} +2 -2
  319. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-Bzq3U1Mx.js.map} +1 -1
  320. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-DwuwPDPi.js} +2 -2
  321. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-DwuwPDPi.js.map} +1 -1
  322. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-q9g-bknU.js} +2 -2
  323. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-q9g-bknU.js.map} +1 -1
  324. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-CL6vb42J.js} +2 -2
  325. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-CL6vb42J.js.map} +1 -1
  326. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-BkrcQBly.js} +2 -2
  327. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-BkrcQBly.js.map} +1 -1
  328. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-BQbwyNeV.js} +2 -2
  329. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-BQbwyNeV.js.map} +1 -1
  330. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-x5_7DrN7.js} +2 -2
  331. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-x5_7DrN7.js.map} +1 -1
  332. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-DTyWXwzf.js} +2 -2
  333. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-DTyWXwzf.js.map} +1 -1
  334. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-80O0kJO7.js} +2 -2
  335. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-80O0kJO7.js.map} +1 -1
  336. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-DDlN2Bwa.js} +2 -2
  337. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-DDlN2Bwa.js.map} +1 -1
  338. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-B9A3Hnrk.js} +2 -2
  339. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-B9A3Hnrk.js.map} +1 -1
  340. package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-Bs80iCX0.js} +2 -2
  341. package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-Bs80iCX0.js.map} +1 -1
  342. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index-mbeo62f8.js} +2 -2
  343. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index-mbeo62f8.js.map} +1 -1
  344. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-rLgoBCfV.js} +3 -3
  345. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-rLgoBCfV.js.map} +1 -1
  346. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-C1niOWJx.js} +2 -2
  347. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-C1niOWJx.js.map} +1 -1
  348. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-BTmI7SUg.js} +2 -2
  349. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-BTmI7SUg.js.map} +1 -1
  350. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CB9HKeuZ.js} +2 -2
  351. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CB9HKeuZ.js.map} +1 -1
  352. package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-koEYiemK.js} +2 -2
  353. package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-koEYiemK.js.map} +1 -1
  354. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-v2_GaLdC.js} +2 -2
  355. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-v2_GaLdC.js.map} +1 -1
  356. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BQNfAqG_.js} +2 -2
  357. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BQNfAqG_.js.map} +1 -1
  358. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-Dzq5LGg9.js} +2 -2
  359. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-Dzq5LGg9.js.map} +1 -1
  360. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CtkoJXcz.js} +2 -2
  361. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CtkoJXcz.js.map} +1 -1
  362. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-CH3smL37.js} +2 -2
  363. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-CH3smL37.js.map} +1 -1
  364. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CZ0aL_yF.js} +2 -2
  365. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CZ0aL_yF.js.map} +1 -1
  366. package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-F2A_J4l6.js} +2 -2
  367. package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-F2A_J4l6.js.map} +1 -1
  368. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-Byxot0YU.js} +2 -2
  369. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-Byxot0YU.js.map} +1 -1
  370. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-JjqhUkpw.js} +2 -2
  371. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-JjqhUkpw.js.map} +1 -1
  372. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2--SuN9rAt.js} +2 -2
  373. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2--SuN9rAt.js.map} +1 -1
  374. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-BbngGB2h.js} +2 -2
  375. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-BbngGB2h.js.map} +1 -1
  376. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-CgrHgZSl.js} +2 -2
  377. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-CgrHgZSl.js.map} +1 -1
  378. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-BU3TQr7Z.js} +2 -2
  379. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-BU3TQr7Z.js.map} +1 -1
  380. package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CKs7nnn3.js} +2 -2
  381. package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CKs7nnn3.js.map} +1 -1
  382. package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-DW5tsDW6.js} +2 -2
  383. package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-DW5tsDW6.js.map} +1 -1
  384. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-BHm7w3ON.js} +2 -2
  385. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-BHm7w3ON.js.map} +1 -1
  386. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-DYR7PWwt.js} +2 -2
  387. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-DYR7PWwt.js.map} +1 -1
  388. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-D0TVgQD_.js} +2 -2
  389. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-D0TVgQD_.js.map} +1 -1
  390. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-DfY8mAP8.js} +2 -2
  391. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-DfY8mAP8.js.map} +1 -1
  392. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-CGusDp0F.js} +2 -2
  393. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-CGusDp0F.js.map} +1 -1
  394. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-CIwh0fF1.js} +2 -2
  395. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-CIwh0fF1.js.map} +1 -1
  396. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-FMyFv39K.js} +2 -2
  397. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-FMyFv39K.js.map} +1 -1
  398. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-B2qhsoTb.js} +2 -2
  399. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-B2qhsoTb.js.map} +1 -1
  400. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-cxKXMBm3.js} +3 -3
  401. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-cxKXMBm3.js.map} +1 -1
  402. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-B-xUT_z-.js} +2 -2
  403. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-B-xUT_z-.js.map} +1 -1
  404. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-DZV_3lPr.js} +2 -2
  405. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-DZV_3lPr.js.map} +1 -1
  406. package/ccw/frontend/dist/index.html +1 -1
  407. package/package.json +105 -105
  408. package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
@@ -0,0 +1,204 @@
1
+ # Monitor Pipeline
2
+
3
+ Event-driven pipeline coordination. Beat model: coordinator wake -> process -> spawn -> STOP.
4
+
5
+ ## Constants
6
+
7
+ - SPAWN_MODE: background
8
+ - ONE_STEP_PER_INVOCATION: true
9
+ - FAST_ADVANCE_AWARE: true
10
+ - WORKER_AGENT: team-worker
11
+ - MAX_GC_ROUNDS: 2
12
+
13
+ ## Handler Router
14
+
15
+ | Source | Handler |
16
+ |--------|---------|
17
+ | Message contains [color-auditor], [typo-auditor], [focus-auditor], [remediation-planner], [fix-implementer] | handleCallback |
18
+ | "capability_gap" | handleAdapt |
19
+ | "check" or "status" | handleCheck |
20
+ | "resume" or "continue" | handleResume |
21
+ | All tasks completed | handleComplete |
22
+ | Default | handleSpawnNext |
23
+
24
+ ## handleCallback
25
+
26
+ Worker completed. Process and advance.
27
+
28
+ 1. Parse message to identify role and task ID:
29
+
30
+ | Message Pattern | Role |
31
+ |----------------|------|
32
+ | `[color-auditor]` or `COLOR-*` | color-auditor |
33
+ | `[typo-auditor]` or `TYPO-*` | typo-auditor |
34
+ | `[focus-auditor]` or `FOCUS-*` | focus-auditor |
35
+ | `[remediation-planner]` or `REMED-*` | remediation-planner |
36
+ | `[fix-implementer]` or `FIX-*` | fix-implementer |
37
+
38
+ 2. Mark task completed: `TaskUpdate({ taskId: "<task-id>", status: "completed" })`
39
+ 3. Record completion in session state
40
+
41
+ 4. Check checkpoint for completed task:
42
+
43
+ | Completed Task | Checkpoint | Action |
44
+ |---------------|------------|--------|
45
+ | COLOR-001 | Parallel fan-in | Check if all 3 audits complete -> unblock REMED-001 |
46
+ | TYPO-001 | Parallel fan-in | Check if all 3 audits complete -> unblock REMED-001 |
47
+ | FOCUS-001 | Parallel fan-in | Check if all 3 audits complete -> unblock REMED-001 |
48
+ | REMED-001 | -- | Unblock FIX-001 (full mode only) |
49
+ | FIX-001 | GC check | Spawn COLOR-002 + FOCUS-002 in parallel (full mode) |
50
+ | COLOR-002 | Re-audit fan-in | Check if both re-audits complete -> handleComplete |
51
+ | FOCUS-002 | Re-audit fan-in | Check if both re-audits complete -> handleComplete |
52
+
53
+ 5. **Parallel fan-in handling** (audit task completed):
54
+
55
+ **CRITICAL**: REMED-001 must wait for ALL 3 auditors (COLOR-001 + TYPO-001 + FOCUS-001) to complete.
56
+
57
+ Check completion state:
58
+ ```
59
+ completed_audits = count of completed tasks in [COLOR-001, TYPO-001, FOCUS-001]
60
+ if completed_audits < 3:
61
+ -> Log "[coordinator] Audit fan-in: {completed_audits}/3 complete, waiting for remaining"
62
+ -> STOP (do NOT advance)
63
+ if completed_audits === 3:
64
+ -> Log "[coordinator] All 3 audits complete, advancing to REMED-001"
65
+ -> handleSpawnNext (will pick up REMED-001)
66
+ ```
67
+
68
+ 6. **GC loop handling** (full mode, after FIX-001 completes):
69
+
70
+ Read re-audit results when COLOR-002 and FOCUS-002 both complete:
71
+
72
+ | Signal | Condition | Action |
73
+ |--------|-----------|--------|
74
+ | All pass | No critical/high issues remaining | GC converged -> handleComplete |
75
+ | Issues remain | Critical/high issues found | gc_rounds < max -> create FIX-002 + re-audit tasks |
76
+ | Any | gc_rounds >= max | Escalate to user |
77
+
78
+ **GC Fix Task Creation** (when re-audit finds issues):
79
+ ```
80
+ TaskCreate({ subject: "FIX-002",
81
+ description: "PURPOSE: Address remaining issues from re-audit | Success: All critical/high issues resolved
82
+ TASK:
83
+ - Parse re-audit reports for remaining issues
84
+ - Apply targeted fixes for color and focus issues
85
+ CONTEXT:
86
+ - Session: <session-folder>
87
+ - Upstream artifacts: re-audit/color-audit-002.md, re-audit/focus-audit-002.md" })
88
+ TaskUpdate({ taskId: "FIX-002", addBlockedBy: ["COLOR-002", "FOCUS-002"], owner: "fix-implementer" })
89
+ ```
90
+ Then create new re-audit tasks blocked by FIX-002. Increment gc_state.round.
91
+
92
+ **GC Escalation Options** (when max rounds exceeded):
93
+ 1. Accept current state - acknowledge remaining issues
94
+ 2. Try one more round
95
+ 3. Terminate
96
+
97
+ 7. -> handleSpawnNext
98
+
99
+ ## handleCheck
100
+
101
+ Read-only status report, then STOP.
102
+
103
+ ```
104
+ Pipeline Status (<pipeline-mode>):
105
+ [DONE] COLOR-001 (color-auditor) -> audits/color/color-audit-001.md
106
+ [DONE] TYPO-001 (typo-auditor) -> audits/typography/typo-audit-001.md
107
+ [RUN] FOCUS-001 (focus-auditor) -> auditing focus...
108
+ [WAIT] REMED-001 (remediation-planner) -> blocked by COLOR-001, TYPO-001, FOCUS-001
109
+ [WAIT] FIX-001 (fix-implementer) -> blocked by REMED-001
110
+ [WAIT] COLOR-002 (color-auditor) -> blocked by FIX-001
111
+ [WAIT] FOCUS-002 (focus-auditor) -> blocked by FIX-001
112
+
113
+ Fan-in: 2/3 audits complete
114
+ GC Rounds: 0/2
115
+ Session: <session-id>
116
+ Commands: 'resume' to advance | 'check' to refresh
117
+ ```
118
+
119
+ Output status -- do NOT advance pipeline.
120
+
121
+ ## handleResume
122
+
123
+ 1. Audit task list for inconsistencies:
124
+ - Tasks stuck in "in_progress" -> reset to "pending"
125
+ - Tasks with completed blockers but still "pending" -> include in spawn list
126
+ 2. -> handleSpawnNext
127
+
128
+ ## handleSpawnNext
129
+
130
+ Find ready tasks, spawn workers, STOP.
131
+
132
+ 1. Collect: completedSubjects, inProgressSubjects, readySubjects (pending + all blockedBy completed)
133
+ 2. No ready + work in progress -> report waiting, STOP
134
+ 3. No ready + nothing in progress -> handleComplete
135
+ 4. Has ready -> for each:
136
+ a. Check inner loop role with active worker -> skip (worker picks up)
137
+ b. TaskUpdate -> in_progress
138
+ c. team_msg log -> task_unblocked
139
+ d. Spawn team-worker:
140
+
141
+ ```
142
+ Agent({
143
+ subagent_type: "team-worker",
144
+ description: "Spawn <role> worker for <task-id>",
145
+ team_name: "visual-a11y",
146
+ name: "<role>",
147
+ run_in_background: true,
148
+ prompt: `## Role Assignment
149
+ role: <role>
150
+ role_spec: <skill_root>/roles/<role>/role.md
151
+ session: <session-folder>
152
+ session_id: <session-id>
153
+ team_name: visual-a11y
154
+ requirement: <task-description>
155
+ inner_loop: <true|false>
156
+
157
+ Read role_spec file to load Phase 2-4 domain instructions.
158
+ Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5 (report).`
159
+ })
160
+ ```
161
+
162
+ **Parallel spawn rules by mode**:
163
+
164
+ | Mode | Scenario | Spawn Behavior |
165
+ |------|----------|---------------|
166
+ | audit-only | Initial | Spawn COLOR-001 + TYPO-001 + FOCUS-001 in parallel |
167
+ | audit-only | After 3 audits complete | Spawn REMED-001 |
168
+ | full | Initial | Spawn COLOR-001 + TYPO-001 + FOCUS-001 in parallel |
169
+ | full | After 3 audits complete | Spawn REMED-001 |
170
+ | full | After REMED-001 | Spawn FIX-001 |
171
+ | full | After FIX-001 | Spawn COLOR-002 + FOCUS-002 in parallel |
172
+
173
+ 5. Add to active_workers, update session, output summary, STOP
174
+
175
+ ## handleComplete
176
+
177
+ Pipeline done. Generate report and completion action.
178
+
179
+ **Completion check by mode**:
180
+
181
+ | Mode | Completion Condition |
182
+ |------|---------------------|
183
+ | audit-only | All 4 tasks (+ any fix tasks) completed |
184
+ | full | All 7 tasks (+ any GC fix tasks) completed |
185
+
186
+ 1. If any tasks not completed -> handleSpawnNext
187
+ 2. If all completed -> transition to coordinator Phase 5
188
+
189
+ ## handleAdapt
190
+
191
+ Capability gap reported mid-pipeline.
192
+
193
+ 1. Parse gap description
194
+ 2. Check if existing role covers it -> redirect
195
+ 3. Role count < 6 -> generate dynamic role spec
196
+ 4. Create new task, spawn worker
197
+ 5. Role count >= 6 -> merge or pause
198
+
199
+ ## Fast-Advance Reconciliation
200
+
201
+ On every coordinator wake:
202
+ 1. Read team_msg entries with type="fast_advance"
203
+ 2. Sync active_workers with spawned successors
204
+ 3. No duplicate spawns
@@ -0,0 +1,169 @@
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
+ ## Identity
6
+ - **Name**: coordinator | **Tag**: [coordinator]
7
+ - **Responsibility**: Analyze scope -> Create team -> Dispatch tasks -> Monitor progress -> Report results
8
+
9
+ ## Boundaries
10
+
11
+ ### MUST
12
+ - All output (SendMessage, team_msg, logs) must carry `[coordinator]` identifier
13
+ - Use `team-worker` agent type for all worker spawns (NOT `general-purpose`)
14
+ - Dispatch tasks with proper dependency chains and blockedBy
15
+ - Spawn COLOR-001, TYPO-001, FOCUS-001 in PARALLEL (no blockedBy between them)
16
+ - Monitor worker progress via message bus and route messages
17
+ - Handle Generator-Critic loops with max 2 iterations
18
+ - Maintain session state persistence
19
+
20
+ ### MUST NOT
21
+ - Implement domain logic (auditing, planning, fixing) -- workers handle this
22
+ - Spawn workers without creating tasks first
23
+ - Skip sync points when configured
24
+ - Force-advance pipeline past failed audit
25
+ - Modify source code or design artifacts directly -- delegate to workers
26
+ - Omit `[coordinator]` identifier in any output
27
+
28
+ ## Command Execution Protocol
29
+
30
+ When coordinator needs to execute a command (analyze, dispatch, monitor):
31
+
32
+ 1. Read `commands/<command>.md`
33
+ 2. Follow the workflow defined in the command
34
+ 3. Commands are inline execution guides, NOT separate agents
35
+ 4. Execute synchronously, complete before proceeding
36
+
37
+ ## Entry Router
38
+
39
+ | Detection | Condition | Handler |
40
+ |-----------|-----------|---------|
41
+ | Worker callback | Message contains [color-auditor], [typo-auditor], [focus-auditor], [remediation-planner], [fix-implementer] | -> handleCallback (monitor.md) |
42
+ | Status check | Args contain "check" or "status" | -> handleCheck (monitor.md) |
43
+ | Manual resume | Args contain "resume" or "continue" | -> handleResume (monitor.md) |
44
+ | Capability gap | Message contains "capability_gap" | -> handleAdapt (monitor.md) |
45
+ | Pipeline complete | All tasks have status "completed" | -> handleComplete (monitor.md) |
46
+ | Interrupted session | Active/paused session exists in .workflow/.team/VA-* | -> Phase 0 |
47
+ | New session | None of above | -> Phase 1 |
48
+
49
+ For callback/check/resume/adapt/complete: load `@commands/monitor.md`, execute matched handler, STOP.
50
+
51
+ ## Phase 0: Session Resume Check
52
+
53
+ 1. Scan `.workflow/.team/VA-*/.msg/meta.json` for active/paused sessions
54
+ 2. No sessions -> Phase 1
55
+ 3. Single session -> reconcile (audit TaskList, reset in_progress->pending, rebuild team, kick first ready task)
56
+ 4. Multiple -> AskUserQuestion for selection
57
+
58
+ ## Phase 1: Requirement Clarification
59
+
60
+ TEXT-LEVEL ONLY. No source code reading.
61
+
62
+ 1. Parse task description from arguments
63
+ 2. Detect audit scope:
64
+
65
+ | Signal | Pipeline Mode |
66
+ |--------|---------------|
67
+ | "audit only", "no fixes", "assessment" | audit-only |
68
+ | "full audit", "fix", "remediate", "full cycle" | full |
69
+ | Unclear | ask user |
70
+
71
+ 3. Ask for missing parameters if scope unclear:
72
+ ```
73
+ AskUserQuestion({
74
+ questions: [
75
+ { question: "Accessibility audit scope?", header: "Scope", options: [
76
+ { label: "Audit only", description: "Color + typography + focus audit with remediation plan" },
77
+ { label: "Full cycle", description: "Audit + fix + re-audit verification" }
78
+ ]},
79
+ { question: "Target?", header: "Target", options: [
80
+ { label: "URL (rendered page)" },
81
+ { label: "Component path (source)" },
82
+ { label: "Full site" }
83
+ ]}
84
+ ]
85
+ })
86
+ ```
87
+ 4. Delegate to `@commands/analyze.md` -> output scope context
88
+ 5. Record: pipeline_mode, target, wcag_level
89
+
90
+ ## Phase 2: Create Team + Initialize Session
91
+
92
+ 1. Resolve workspace paths (MUST do first):
93
+ - `project_root` = result of `Bash({ command: "pwd" })`
94
+ - `skill_root` = `<project_root>/.claude/skills/team-visual-a11y`
95
+ 2. Generate session ID: `VA-<slug>-<YYYY-MM-DD>`
96
+ 3. Create session folder structure:
97
+ ```
98
+ .workflow/.team/VA-<slug>-<date>/audits/color/
99
+ .workflow/.team/VA-<slug>-<date>/audits/typography/
100
+ .workflow/.team/VA-<slug>-<date>/audits/focus/
101
+ .workflow/.team/VA-<slug>-<date>/remediation/
102
+ .workflow/.team/VA-<slug>-<date>/fixes/
103
+ .workflow/.team/VA-<slug>-<date>/re-audit/
104
+ .workflow/.team/VA-<slug>-<date>/evidence/
105
+ .workflow/.team/VA-<slug>-<date>/.msg/
106
+ ```
107
+ 4. Initialize `.msg/meta.json` via team_msg state_update with pipeline metadata
108
+ 5. TeamCreate(team_name="visual-a11y")
109
+ 6. Do NOT spawn workers yet - deferred to Phase 4
110
+
111
+ ## Phase 3: Create Task Chain
112
+
113
+ Delegate to `@commands/dispatch.md`. Task chains by mode:
114
+
115
+ | Mode | Task Chain |
116
+ |------|------------|
117
+ | audit-only | [COLOR-001 + TYPO-001 + FOCUS-001 parallel] -> REMED-001 |
118
+ | full | [COLOR-001 + TYPO-001 + FOCUS-001 parallel] -> REMED-001 -> FIX-001 -> [COLOR-002 + FOCUS-002 parallel] |
119
+
120
+ ## Phase 4: Spawn-and-Stop
121
+
122
+ **CRITICAL**: Spawn COLOR-001, TYPO-001, FOCUS-001 in PARALLEL (all 3 have NO blockedBy).
123
+
124
+ Delegate to `@commands/monitor.md#handleSpawnNext`:
125
+ 1. Find ready tasks (pending + blockedBy resolved)
126
+ 2. Spawn team-worker agents (see SKILL.md Spawn Template)
127
+ 3. Output status summary
128
+ 4. STOP
129
+
130
+ ## Phase 5: Report + Completion Action
131
+
132
+ 1. Read session state -> collect all results
133
+ 2. List deliverables:
134
+
135
+ | Deliverable | Path |
136
+ |-------------|------|
137
+ | Color Audit | <session>/audits/color/color-audit-001.md |
138
+ | Typography Audit | <session>/audits/typography/typo-audit-001.md |
139
+ | Focus Audit | <session>/audits/focus/focus-audit-001.md |
140
+ | Remediation Plan | <session>/remediation/remediation-plan.md |
141
+ | Fix Summary | <session>/fixes/fix-summary-001.md (full mode) |
142
+ | Re-audit Color | <session>/re-audit/color-audit-002.md (full mode) |
143
+ | Re-audit Focus | <session>/re-audit/focus-audit-002.md (full mode) |
144
+ | Evidence | <session>/evidence/*.png (if Chrome DevTools used) |
145
+
146
+ 3. Calculate: completed_tasks, gc_rounds, issues_found, issues_fixed, wcag_compliance_level
147
+ 4. Output pipeline summary with [coordinator] prefix
148
+ 5. Execute completion action:
149
+ ```
150
+ AskUserQuestion({
151
+ questions: [{ question: "Pipeline complete. What next?", header: "Completion", options: [
152
+ { label: "Archive & Clean", description: "Archive session and clean up team resources" },
153
+ { label: "Keep Active", description: "Keep session for follow-up work" },
154
+ { label: "Export Results", description: "Export deliverables to specified location" }
155
+ ]}]
156
+ })
157
+ ```
158
+
159
+ ## Error Handling
160
+
161
+ | Error | Resolution |
162
+ |-------|------------|
163
+ | Task timeout | Log, mark failed, ask user to retry or skip |
164
+ | Worker crash | Reset task to pending, respawn worker |
165
+ | Dependency cycle | Detect, report to user, halt |
166
+ | Invalid scope | Reject with error, ask to clarify |
167
+ | Session corruption | Attempt recovery, fallback to manual reconciliation |
168
+ | GC loop stuck > 2 rounds | Escalate to user: accept / try one more / terminate |
169
+ | Chrome DevTools unavailable | Mark in meta.json, auditors degrade to static analysis |
@@ -0,0 +1,246 @@
1
+ ---
2
+ role: fix-implementer
3
+ prefix: FIX
4
+ inner_loop: true
5
+ message_types: [state_update]
6
+ ---
7
+
8
+ # Accessibility Fix Implementer
9
+
10
+ Implement accessibility fixes from the remediation plan. OKLCH color corrections, focus styles, ARIA attributes, reduced-motion queries, typography adjustments. Apply fixes in priority order (critical first) and self-validate results.
11
+
12
+ ## Phase 2: Context & Artifact Loading
13
+
14
+ | Input | Source | Required |
15
+ |-------|--------|----------|
16
+ | Task description | From task subject/description | Yes |
17
+ | Session path | Extracted from task description | Yes |
18
+ | Remediation plan | <session>/remediation/remediation-plan.md | Yes |
19
+ | Color audit report | <session>/audits/color/color-audit-001.md | Yes |
20
+ | Focus audit report | <session>/audits/focus/focus-audit-001.md | Yes |
21
+ | Typography audit report | <session>/audits/typography/typo-audit-001.md | Yes |
22
+ | .msg/meta.json | <session>/.msg/meta.json | Yes |
23
+ | Re-audit reports (GC loop) | <session>/re-audit/*.md | Only for FIX-002+ |
24
+
25
+ 1. Extract session path from task description
26
+ 2. Read remediation plan -- this is the primary work instruction
27
+ 3. Parse priority matrix for ordered fix list
28
+ 4. Read audit reports for detailed context on each issue
29
+ 5. For FIX-002+ (GC loop): read re-audit reports for remaining issues
30
+
31
+ ## Phase 3: Fix Implementation
32
+
33
+ Apply fixes in priority order: Critical -> High -> Medium -> Low.
34
+
35
+ ### Category 1: OKLCH Color Corrections
36
+
37
+ **Goal**: Adjust OKLCH lightness/chroma to meet contrast requirements.
38
+
39
+ **Process**:
40
+ 1. Read remediation plan for specific color changes needed
41
+ 2. Locate CSS custom properties or color definitions in source files
42
+ 3. Apply lightness adjustments:
43
+ - Text too light -> decrease L% (e.g., L 55% -> L 35%)
44
+ - Background too dark -> increase L% (e.g., L 80% -> L 92%)
45
+ - Maintain hue (H) and adjust chroma (C) minimally
46
+ 4. Verify new contrast ratios meet WCAG target
47
+ 5. If dark mode exists, apply corresponding adjustments
48
+
49
+ **Example**:
50
+ ```css
51
+ /* Before: contrast 3.2:1 */
52
+ --color-text: oklch(55% 0 0);
53
+ --color-bg: oklch(98% 0 0);
54
+
55
+ /* After: contrast 7.2:1 (AAA) */
56
+ --color-text: oklch(25% 0 0);
57
+ --color-bg: oklch(98% 0 0);
58
+ ```
59
+
60
+ ### Category 2: Focus Styles
61
+
62
+ **Goal**: Add visible, high-contrast focus indicators for keyboard users.
63
+
64
+ **Process**:
65
+ 1. Add `:focus-visible` rules per specs/focus-patterns.md:
66
+ ```css
67
+ :focus-visible {
68
+ outline: 2px solid var(--color-accent);
69
+ outline-offset: 2px;
70
+ }
71
+ :focus:not(:focus-visible) {
72
+ outline: none;
73
+ }
74
+ ```
75
+ 2. Remove bare `outline: none` or `outline: 0` that suppress focus without alternative
76
+ 3. Verify focus indicator contrast >= 3:1 against adjacent colors
77
+ 4. Add consistent focus style across all interactive elements
78
+
79
+ ### Category 3: ARIA Attributes
80
+
81
+ **Goal**: Add missing ARIA roles, states, and properties.
82
+
83
+ **Process**:
84
+ 1. Add `role` attributes where semantic HTML is not used:
85
+ - `<div onclick>` -> add `role="button"` and `tabindex="0"`
86
+ - Custom widgets -> appropriate ARIA role
87
+ 2. Add state attributes:
88
+ - Toggle buttons: `aria-pressed="true|false"`
89
+ - Expandable: `aria-expanded="true|false"`, `aria-controls="panel-id"`
90
+ - Dialogs: `role="dialog"`, `aria-modal="true"`, `aria-labelledby="title-id"`
91
+ 3. Add labels:
92
+ - `aria-label` for icon-only buttons
93
+ - `aria-labelledby` for dialogs and sections
94
+ - `aria-describedby` for form error messages
95
+ 4. Add live regions:
96
+ - Status messages: `aria-live="polite"`
97
+ - Error messages: `aria-live="assertive"`
98
+
99
+ ### Category 4: Reduced-Motion Queries
100
+
101
+ **Goal**: Respect user's motion preferences.
102
+
103
+ **Process**:
104
+ 1. Wrap animations and transitions in media query:
105
+ ```css
106
+ @media (prefers-reduced-motion: reduce) {
107
+ *,
108
+ *::before,
109
+ *::after {
110
+ animation-duration: 0.01ms !important;
111
+ animation-iteration-count: 1 !important;
112
+ transition-duration: 0.01ms !important;
113
+ scroll-behavior: auto !important;
114
+ }
115
+ }
116
+ ```
117
+ 2. Or per-element: disable specific animations while keeping layout
118
+ 3. Ensure no content is lost when motion is reduced
119
+
120
+ ### Category 5: Typography Adjustments
121
+
122
+ **Goal**: Fix font sizes, line heights, and reading widths.
123
+
124
+ **Process**:
125
+ 1. Replace fixed font sizes with responsive clamp():
126
+ ```css
127
+ body { font-size: clamp(1rem, 1vw + 0.875rem, 1.25rem); }
128
+ ```
129
+ 2. Fix line-height to acceptable ranges:
130
+ ```css
131
+ body { line-height: 1.625; }
132
+ h1, h2, h3 { line-height: 1.2; }
133
+ ```
134
+ 3. Add max-width for reading containers:
135
+ ```css
136
+ .content { max-width: 70ch; }
137
+ ```
138
+
139
+ ### Category 6: Skip Link
140
+
141
+ **Goal**: Add skip-to-main-content link if missing.
142
+
143
+ **Process** (per specs/focus-patterns.md):
144
+ 1. Add as first child of `<body>`:
145
+ ```html
146
+ <a href="#main" class="skip-link">Skip to main content</a>
147
+ ```
148
+ 2. Add CSS:
149
+ ```css
150
+ .skip-link {
151
+ position: absolute;
152
+ left: -9999px;
153
+ top: auto;
154
+ }
155
+ .skip-link:focus {
156
+ position: fixed;
157
+ left: 16px;
158
+ top: 16px;
159
+ z-index: 9999;
160
+ background: var(--color-paper, #fff);
161
+ color: var(--color-ink, #000);
162
+ padding: 8px 16px;
163
+ border-radius: 4px;
164
+ text-decoration: underline;
165
+ }
166
+ ```
167
+ 3. Ensure main content has `id="main"` (or equivalent target)
168
+
169
+ ### Category 7: Focus Trap for Modals
170
+
171
+ **Goal**: Implement proper focus management in dialogs.
172
+
173
+ **Process** (per specs/focus-patterns.md):
174
+ 1. On dialog open:
175
+ - Store `document.activeElement` as return target
176
+ - Move focus to first focusable element within dialog
177
+ 2. Trap Tab/Shift+Tab within dialog:
178
+ - Collect all focusable elements within dialog
179
+ - On Tab at last element -> focus first element
180
+ - On Shift+Tab at first element -> focus last element
181
+ 3. On Escape -> close dialog, restore focus to stored element
182
+ 4. Set `aria-modal="true"` on dialog container
183
+ 5. Optional: set `inert` on background content
184
+
185
+ ## Phase 4: Self-Validation & Output
186
+
187
+ 1. Validate each fix category:
188
+
189
+ | Category | Validation Method |
190
+ |----------|------------------|
191
+ | Color | Recalculate contrast ratios for changed colors, verify >= target |
192
+ | Focus | Search for :focus-visible rules, verify no bare outline:none |
193
+ | ARIA | Check all dialogs have role+aria-modal, all buttons have labels |
194
+ | Motion | Verify prefers-reduced-motion media query exists |
195
+ | Typography | Check clamp() minimum >= 1rem, line-height in range |
196
+ | Skip link | Verify skip link element exists, CSS hides then shows on focus |
197
+ | Focus trap | Verify dialog has focus management code |
198
+
199
+ 2. Write fix summary to `<session>/fixes/fix-summary-{NNN}.md`:
200
+
201
+ ```markdown
202
+ # Fix Summary - {NNN}
203
+ [fix-implementer]
204
+
205
+ ## Overview
206
+ - **Total fixes applied**: {count}
207
+ - **Critical fixed**: {count}
208
+ - **High fixed**: {count}
209
+ - **Medium fixed**: {count}
210
+ - **Files modified**: {count}
211
+
212
+ ## Fixes Applied
213
+
214
+ ### Fix 1: Color contrast (Critical, WCAG 1.4.3)
215
+ - **File**: `src/styles/globals.css:12`
216
+ - **Before**: `--color-text: oklch(55% 0 0)` (contrast 3.2:1)
217
+ - **After**: `--color-text: oklch(25% 0 0)` (contrast 7.2:1)
218
+ - **Validated**: PASS
219
+
220
+ ### Fix 2: Focus indicators (High, WCAG 2.4.7)
221
+ - **File**: `src/styles/globals.css:45`
222
+ - **Before**: No :focus-visible rules
223
+ - **After**: Added :focus-visible with 2px outline
224
+ - **Validated**: PASS
225
+
226
+ ...
227
+
228
+ ## Files Modified
229
+ | File | Changes |
230
+ |------|---------|
231
+ | src/styles/globals.css | Color adjustments, focus styles, reduced-motion |
232
+ | src/components/Modal.tsx | Focus trap, ARIA attributes |
233
+ | src/app/layout.tsx | Skip link |
234
+
235
+ ## Remaining Issues
236
+ - {Any medium/low issues not addressed in this round}
237
+
238
+ ## Verification Status
239
+ - [ ] Color contrast: {n}/{total} passing
240
+ - [ ] Focus indicators: {n}/{total} visible
241
+ - [ ] ARIA coverage: {n}/{total} complete
242
+ - [ ] Typography: {n}/{total} compliant
243
+ ```
244
+
245
+ 3. Update `<session>/.msg/meta.json` under `fix-implementer` namespace:
246
+ - Read existing -> merge `{ "fix-implementer": { fix_id, total_fixes, critical_fixed, high_fixed, medium_fixed, files_modified, timestamp } }` -> write back