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,165 @@
1
+ # Typography Accessibility Standards
2
+
3
+ Reference guide for typography readability analysis. Used by typo-auditor and fix-implementer roles.
4
+
5
+ ## Font Stack Hierarchy
6
+
7
+ | Purpose | Category | Example | Usage |
8
+ |---------|----------|---------|-------|
9
+ | Display | Serif | Cormorant Garamond, Georgia, serif | Headings, hero text |
10
+ | Body | Sans-serif | Instrument Sans, Inter, system-ui, sans-serif | Paragraphs, UI text |
11
+ | Mono | Monospace | Space Grotesk, Fira Code, monospace | Code blocks, labels |
12
+
13
+ ### System Font Stack (Fallback)
14
+
15
+ ```css
16
+ --font-body: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
17
+ --font-mono: ui-monospace, "Cascadia Code", "Fira Code", Menlo, monospace;
18
+ ```
19
+
20
+ ## Responsive Size Scale
21
+
22
+ ### clamp() Formula Pattern
23
+
24
+ ```css
25
+ /* clamp(minimum, preferred, maximum) */
26
+ /* preferred = slope * 100vw + intercept */
27
+ /* slope = (max - min) / (max-viewport - min-viewport) */
28
+ ```
29
+
30
+ ### Recommended Scale
31
+
32
+ | Element | clamp() Value | Min (320px) | Max (1400px) | WCAG |
33
+ |---------|--------------|-------------|-------------|------|
34
+ | Hero | `clamp(2.5rem, 7vw, 4.5rem)` | 40px | 72px | -- |
35
+ | Section title | `clamp(1.75rem, 4vw, 2.5rem)` | 28px | 40px | -- |
36
+ | H1 | `clamp(2rem, 5vw, 3rem)` | 32px | 48px | -- |
37
+ | H2 | `clamp(1.5rem, 3vw, 2.25rem)` | 24px | 36px | -- |
38
+ | H3 | `clamp(1.25rem, 2vw, 1.75rem)` | 20px | 28px | -- |
39
+ | Body | `clamp(1rem, 1vw + 0.875rem, 1.25rem)` | 16px | 20px | 1.4.4 |
40
+ | Small/caption | 14px (fixed floor) | 14px | 14px | 1.4.4 |
41
+
42
+ ### Absolute Minimums
43
+
44
+ | Element | Minimum | Rationale |
45
+ |---------|---------|-----------|
46
+ | Body text | 16px | WCAG 1.4.4 baseline readability |
47
+ | Small text / caption | 14px | Absolute floor for legibility |
48
+ | Interactive labels | 14px | Touch/click target readability |
49
+
50
+ **Never**: Set body text below 14px at any viewport width.
51
+
52
+ ## Line Height Scale
53
+
54
+ | Element Type | Range | Optimal | Rationale |
55
+ |-------------|-------|---------|-----------|
56
+ | Body text | 1.5 - 1.75 | 1.625 | WCAG 1.4.12, optimal readability |
57
+ | Headings | 1.1 - 1.3 | 1.2 | Tight for visual impact, still readable |
58
+ | Code blocks | 1.5 - 1.7 | 1.6 | Generous for scanning |
59
+ | Buttons/labels | 1.2 - 1.5 | 1.3 | Compact UI element |
60
+ | Lists | 1.4 - 1.6 | 1.5 | Slightly tighter than body |
61
+
62
+ ### Line Height Rules
63
+
64
+ - Use unitless values (not px or em) for proper inheritance
65
+ - `line-height: 1.5` (unitless) is preferred over `line-height: 24px` (fixed)
66
+ - WCAG 1.4.12 requires text to remain readable at 1.5x font-size line-height
67
+
68
+ ## Letter Spacing Scale
69
+
70
+ | Element Type | Range | Optimal | Notes |
71
+ |-------------|-------|---------|-------|
72
+ | Display headings | -0.02em to 0 | -0.015em | Tight for visual weight |
73
+ | Body text | 0 (default) | 0 | Browser default is optimal |
74
+ | Uppercase labels | 0.05em - 0.1em | 0.08em | Open for legibility |
75
+ | Monospace code | 0.08em - 0.15em | 0.1em | Wide for character distinction |
76
+ | Small caps | 0.05em - 0.08em | 0.06em | Slight opening |
77
+
78
+ ### WCAG 1.4.12 Override Requirements
79
+
80
+ Content must remain readable when user applies:
81
+ - Letter spacing: 0.12em
82
+ - Word spacing: 0.16em
83
+ - These overrides should not cause content overflow or overlap
84
+
85
+ ## Reading Width
86
+
87
+ | Metric | Optimal | Acceptable | Flag |
88
+ |--------|---------|-----------|------|
89
+ | Characters per line | 66ch | 45-75ch | < 45 (too narrow) or > 75 (too wide) |
90
+ | Container max-width | 65ch | 60ch-75ch | > 80ch |
91
+ | Content column width | Up to 900px | Up to 1000px | > 1000px without columns |
92
+
93
+ ### Implementation
94
+
95
+ ```css
96
+ /* Preferred: ch-based */
97
+ .content { max-width: 70ch; }
98
+
99
+ /* Alternative: px-based */
100
+ .content { max-width: 700px; }
101
+
102
+ /* With centering */
103
+ .content {
104
+ max-width: 70ch;
105
+ margin-inline: auto;
106
+ padding-inline: 1rem;
107
+ }
108
+ ```
109
+
110
+ ## Font Loading Strategy
111
+
112
+ ### font-display Values
113
+
114
+ | Value | Behavior | Recommended For |
115
+ |-------|----------|----------------|
116
+ | `swap` | Show fallback immediately, swap when loaded | Body text |
117
+ | `optional` | Show fallback, swap only if already cached | Display/decorative fonts |
118
+ | `fallback` | Brief invisible period (~100ms), then fallback | Important fonts |
119
+ | `block` | Invisible text up to 3s | Avoid for body text |
120
+ | `auto` | Browser decides | Avoid (unpredictable) |
121
+
122
+ ### Best Practices
123
+
124
+ ```css
125
+ /* Body font: swap for immediate readability */
126
+ @font-face {
127
+ font-family: "Body Font";
128
+ src: url("body.woff2") format("woff2");
129
+ font-display: swap;
130
+ }
131
+
132
+ /* Display font: optional to prevent layout shift */
133
+ @font-face {
134
+ font-family: "Display Font";
135
+ src: url("display.woff2") format("woff2");
136
+ font-display: optional;
137
+ }
138
+ ```
139
+
140
+ ### Preloading Critical Fonts
141
+
142
+ ```html
143
+ <link rel="preload" href="/fonts/body.woff2" as="font" type="font/woff2" crossorigin>
144
+ ```
145
+
146
+ ### Fallback Stack Requirements
147
+
148
+ - Every custom font must have a system fallback
149
+ - Fallback should have similar metrics (x-height, width) to minimize layout shift
150
+ - Use `size-adjust`, `ascent-override`, `descent-override` for metric matching
151
+
152
+ ## Responsive Typography Checklist
153
+
154
+ | # | Check | Standard | Method |
155
+ |---|-------|----------|--------|
156
+ | 1 | Body text >= 16px at 320px | WCAG 1.4.4 | Computed style at mobile viewport |
157
+ | 2 | No text below 14px at any viewport | Best practice | Search for font-size values |
158
+ | 3 | clamp() min >= 14px | Best practice | Parse clamp() functions |
159
+ | 4 | Line-height unitless | Best practice | Search for px/em line-height |
160
+ | 5 | Body line-height 1.5-1.75 | WCAG 1.4.12 | Computed style check |
161
+ | 6 | Reading width 45-75ch | Best practice | Measure container + font size |
162
+ | 7 | font-display: swap on body | Best practice | Parse @font-face rules |
163
+ | 8 | System fallback defined | Best practice | Parse font-family stacks |
164
+ | 9 | 200% zoom no overflow | WCAG 1.4.4 | Zoom test |
165
+ | 10 | Text spacing override safe | WCAG 1.4.12 | Apply overrides, check layout |
@@ -0,0 +1,133 @@
1
+ # WCAG 2.1 Criteria Matrix
2
+
3
+ Reference matrix for visual accessibility audit. Maps WCAG success criteria to audit methods and responsible roles.
4
+
5
+ ## Criteria Covered by This Team
6
+
7
+ | Criterion | Level | Automated | Manual | Check Method | Primary Role |
8
+ |-----------|-------|-----------|--------|-------------|-------------|
9
+ | 1.4.3 Contrast (Minimum) | AA | Yes | - | Color ratio calculation (4.5:1 normal, 3:1 large) | color-auditor |
10
+ | 1.4.6 Contrast (Enhanced) | AAA | Yes | - | Color ratio calculation (7:1 normal, 4.5:1 large) | color-auditor |
11
+ | 1.4.11 Non-text Contrast | AA | Partial | Yes | UI component border/fill contrast >= 3:1 | color-auditor |
12
+ | 1.4.4 Resize Text | AA | Yes | - | 200% zoom, no content loss | typo-auditor |
13
+ | 1.4.12 Text Spacing | AA | Partial | Yes | Override line-height 1.5x, letter-spacing 0.12em, word-spacing 0.16em | typo-auditor |
14
+ | 2.1.1 Keyboard | A | Partial | Yes | Tab through all interactive elements | focus-auditor |
15
+ | 2.1.2 No Keyboard Trap | A | - | Yes | Tab can escape all contexts (except intentional traps with Escape) | focus-auditor |
16
+ | 2.4.1 Bypass Blocks | A | Yes | - | Skip link present and functional | focus-auditor |
17
+ | 2.4.3 Focus Order | A | - | Yes | Logical tab sequence | focus-auditor |
18
+ | 2.4.7 Focus Visible | AA | Partial | Yes | Visible focus indicator on all interactive elements | focus-auditor |
19
+ | 2.4.11 Focus Not Obscured (Min) | AA | - | Yes | Focus indicator not hidden by overlays, sticky headers | focus-auditor |
20
+ | 2.5.8 Target Size (Minimum) | AA | Yes | - | Minimum 24x24px CSS pixel touch targets | focus-auditor |
21
+ | 4.1.2 Name, Role, Value | A | Yes | - | ARIA roles, labels, and states on interactive elements | focus-auditor |
22
+ | 4.1.3 Status Messages | AA | Partial | Yes | aria-live regions for dynamic status updates | focus-auditor |
23
+
24
+ ## Audit Method Legend
25
+
26
+ | Method | Description |
27
+ |--------|-------------|
28
+ | Automated | Can be verified programmatically (CSS parsing, contrast calculation) |
29
+ | Manual | Requires human judgment or runtime interaction |
30
+ | Partial | Automated detection of presence, manual verification of correctness |
31
+
32
+ ## Criterion Details
33
+
34
+ ### 1.4.3 Contrast (Minimum) - AA
35
+
36
+ **Requirement**: Text and images of text have a contrast ratio of at least 4.5:1 (3:1 for large text).
37
+
38
+ **Large text definition**: >= 18pt (24px) or >= 14pt bold (18.66px bold).
39
+
40
+ **Exceptions**: Decorative text, logos, inactive UI components.
41
+
42
+ **Check**: Extract foreground/background colors -> calculate contrast ratio -> compare against threshold.
43
+
44
+ ### 1.4.6 Contrast (Enhanced) - AAA
45
+
46
+ **Requirement**: Text has contrast ratio of at least 7:1 (4.5:1 for large text).
47
+
48
+ **Check**: Same as 1.4.3 but with higher thresholds.
49
+
50
+ ### 1.4.11 Non-text Contrast - AA
51
+
52
+ **Requirement**: UI components and graphical objects have at least 3:1 contrast against adjacent colors.
53
+
54
+ **Applies to**: Buttons, inputs, icons, focus indicators, charts, custom controls.
55
+
56
+ **Check**: Extract border/fill colors of UI components -> calculate contrast against background.
57
+
58
+ ### 1.4.4 Resize Text - AA
59
+
60
+ **Requirement**: Text can be resized up to 200% without loss of content or functionality.
61
+
62
+ **Check**: Zoom to 200% -> verify no horizontal scrolling, no content clipping, no overlap.
63
+
64
+ ### 1.4.12 Text Spacing - AA
65
+
66
+ **Requirement**: Content must remain readable when user overrides:
67
+ - Line height to 1.5x font size
68
+ - Paragraph spacing to 2x font size
69
+ - Letter spacing to 0.12x font size
70
+ - Word spacing to 0.16x font size
71
+
72
+ **Check**: Apply overrides via JavaScript/CSS -> verify no content loss or overlap.
73
+
74
+ ### 2.1.1 Keyboard - A
75
+
76
+ **Requirement**: All functionality available via keyboard (Enter, Space, Tab, Arrow keys, Escape).
77
+
78
+ **Check**: Tab to every interactive element -> activate with Enter/Space -> navigate composites with Arrows.
79
+
80
+ ### 2.1.2 No Keyboard Trap - A
81
+
82
+ **Requirement**: Keyboard focus can be moved away from any component using standard keys.
83
+
84
+ **Exception**: Modal dialogs that trap focus intentionally (must have Escape to exit).
85
+
86
+ **Check**: Tab forward and backward through all elements -> verify escape from all containers.
87
+
88
+ ### 2.4.1 Bypass Blocks - A
89
+
90
+ **Requirement**: Mechanism to bypass repeated content blocks (skip links, landmarks, headings).
91
+
92
+ **Check**: Verify skip link as first focusable element, target exists, focus moves correctly.
93
+
94
+ ### 2.4.3 Focus Order - A
95
+
96
+ **Requirement**: Focus order preserves meaning and operability (logical sequence).
97
+
98
+ **Check**: Tab through page -> verify order matches visual/reading order.
99
+
100
+ ### 2.4.7 Focus Visible - AA
101
+
102
+ **Requirement**: Keyboard focus indicator is visible on all interactive elements.
103
+
104
+ **Check**: Tab to each element -> verify visible outline/border/shadow change.
105
+
106
+ ### 2.4.11 Focus Not Obscured (Minimum) - AA
107
+
108
+ **Requirement**: Focused element is not entirely hidden by other content (sticky headers, overlays, banners).
109
+
110
+ **Check**: Tab through elements near sticky/fixed positioned elements -> verify focus indicator partially visible.
111
+
112
+ ### 2.5.8 Target Size (Minimum) - AA
113
+
114
+ **Requirement**: Interactive targets are at least 24x24 CSS pixels, or have adequate spacing.
115
+
116
+ **Exceptions**: Inline links within text, user agent default controls, essential presentation.
117
+
118
+ **Check**: Measure interactive element dimensions -> verify >= 24x24px or adequate spacing.
119
+
120
+ ### 4.1.2 Name, Role, Value - A
121
+
122
+ **Requirement**: All UI components have accessible name, role, and state programmatically determined.
123
+
124
+ **Check**: Verify interactive elements have:
125
+ - Accessible name (text content, aria-label, aria-labelledby)
126
+ - Appropriate role (native HTML or ARIA role)
127
+ - Current state (aria-expanded, aria-pressed, aria-selected, aria-checked)
128
+
129
+ ### 4.1.3 Status Messages - AA
130
+
131
+ **Requirement**: Status messages can be programmatically determined through role or properties without receiving focus.
132
+
133
+ **Check**: Verify dynamic content updates use `aria-live` or appropriate roles (`status`, `alert`, `log`).
@@ -0,0 +1,392 @@
1
+ # Investigator Agent
2
+
3
+ Executes all 5 phases of the systematic debugging investigation under the Iron Law methodology. Single long-running agent driven through phases by orchestrator assign_task calls.
4
+
5
+ ## Identity
6
+
7
+ - **Type**: `investigation`
8
+ - **Role File**: `~/.codex/skills/investigate/agents/investigator.md`
9
+ - **task_name**: `investigator`
10
+ - **Responsibility**: Full 5-phase investigation execution — evidence collection, pattern search, hypothesis testing, minimal fix, verification
11
+ - **fork_context**: false
12
+ - **Reasoning Effort**: high
13
+
14
+ ## Boundaries
15
+
16
+ ### MUST
17
+
18
+ - Load role definition via MANDATORY FIRST STEPS pattern before any phase execution
19
+ - Read the phase file at the start of each phase before executing that phase's steps
20
+ - Collect concrete evidence before forming any theories (evidence-first)
21
+ - Check `confirmed_root_cause` exists before executing Phase 4 (Iron Law gate)
22
+ - Track 3-strike counter accurately in Phase 3
23
+ - Implement only minimal fix — change only what addresses the confirmed root cause
24
+ - Add a regression test that fails without the fix and passes with it
25
+ - Write the final debug report to `.workflow/.debug/` using the schema in `~/.codex/skills/investigate/specs/debug-report-format.md`
26
+ - Produce structured output after each phase, then await next assign_task
27
+
28
+ ### MUST NOT
29
+
30
+ - Skip MANDATORY FIRST STEPS role loading
31
+ - Proceed to Phase 4 without `confirmed_root_cause` (Iron Law violation)
32
+ - Modify production code during Phases 1-3 (read-only investigation)
33
+ - Count a rejected hypothesis as a strike if it yielded new actionable insight
34
+ - Refactor, add features, or change formatting beyond the minimal fix
35
+ - Change more than 3 files without written justification
36
+ - Proceed past Phase 3 BLOCKED status
37
+
38
+ ---
39
+
40
+ ## Toolbox
41
+
42
+ ### Available Tools
43
+
44
+ | Tool | Type | Purpose |
45
+ |------|------|---------|
46
+ | `Bash` | Shell execution | Run tests, reproduce bug, detect test framework, run full test suite |
47
+ | `Read` | File read | Read source files, test files, phase docs, role files |
48
+ | `Write` | File write | Write debug report to `.workflow/.debug/` |
49
+ | `Edit` | File edit | Apply minimal fix in Phase 4 |
50
+ | `Glob` | Pattern search | Find test files, affected module files |
51
+ | `Grep` | Content search | Find error patterns, antipatterns, similar code |
52
+ | `spawn_agent` | Agent spawn | Spawn inline CLI analysis subagent |
53
+ | `wait_agent` | Agent wait | Wait for inline subagent results |
54
+ | `close_agent` | Agent close | Close inline subagent after use |
55
+
56
+ ### Tool Usage Patterns
57
+
58
+ **Investigation Pattern** (Phases 1-3): Use Grep and Read to collect evidence. No Write or Edit.
59
+
60
+ **Analysis Pattern** (Phases 1-3 when patterns span many files): Spawn inline-cli-analysis subagent for cross-file diagnostic work.
61
+
62
+ **Implementation Pattern** (Phase 4 only): Use Edit to apply fix, Write/Edit to add regression test.
63
+
64
+ **Report Pattern** (Phase 5): Use Bash to run test suite, Write to output JSON report.
65
+
66
+ ---
67
+
68
+ ## Execution
69
+
70
+ ### Phase 1: Root Cause Investigation
71
+
72
+ **Objective**: Reproduce the bug, collect all evidence, and generate initial diagnosis.
73
+
74
+ **Input**:
75
+
76
+ | Source | Required | Description |
77
+ |--------|----------|-------------|
78
+ | assign_task message | Yes | Bug description, symptoms, error messages, context |
79
+ | Phase file | Yes | `~/.codex/skills/investigate/phases/01-root-cause-investigation.md` |
80
+
81
+ **Steps**:
82
+
83
+ 1. Read `~/.codex/skills/investigate/phases/01-root-cause-investigation.md` before executing.
84
+ 2. Parse bug report — extract symptom, expected behavior, context, user-provided files and errors.
85
+ 3. Attempt reproduction using the most direct method available:
86
+ - Run failing test if one exists
87
+ - Run failing command if CLI/script
88
+ - Trace code path statically if complex setup required
89
+ 4. Collect evidence — search for error messages in source, find related log output, identify affected files and modules.
90
+ 5. Run inline-cli-analysis subagent for initial diagnostic perspective (see Inline Subagent Calls).
91
+ 6. Assemble `investigation-report` in memory: bug_description, reproduction result, evidence, initial_diagnosis.
92
+ 7. Output Phase 1 summary and await assign_task for Phase 2.
93
+
94
+ **Output**: In-memory investigation-report (phase 1 fields populated)
95
+
96
+ ---
97
+
98
+ ### Phase 2: Pattern Analysis
99
+
100
+ **Objective**: Search for similar patterns in the codebase, classify bug scope.
101
+
102
+ **Input**:
103
+
104
+ | Source | Required | Description |
105
+ |--------|----------|-------------|
106
+ | assign_task message | Yes | Phase 2 instruction |
107
+ | Phase file | Yes | `~/.codex/skills/investigate/phases/02-pattern-analysis.md` |
108
+ | investigation-report | Yes | Phase 1 output in context |
109
+
110
+ **Steps**:
111
+
112
+ 1. Read `~/.codex/skills/investigate/phases/02-pattern-analysis.md` before executing.
113
+ 2. Search for identical or similar error messages in source (Grep with context lines).
114
+ 3. Search for the same exception/error type across the codebase.
115
+ 4. If initial diagnosis identified an antipattern, search for it globally (missing null checks, unchecked async, shared state mutation, etc.).
116
+ 5. Examine affected module for structural issues — list files, check imports and dependencies.
117
+ 6. For complex patterns spanning many files, run inline-cli-analysis subagent for cross-file scope mapping.
118
+ 7. Classify scope: `isolated` | `module-wide` | `systemic` with justification.
119
+ 8. Document all similar occurrences with file:line references and risk classification (`same_bug` | `potential_bug` | `safe`).
120
+ 9. Add `pattern_analysis` section to investigation-report in memory.
121
+ 10. Output Phase 2 summary and await assign_task for Phase 3.
122
+
123
+ **Output**: investigation-report with pattern_analysis section added
124
+
125
+ ---
126
+
127
+ ### Phase 3: Hypothesis Testing
128
+
129
+ **Objective**: Form up to 3 hypotheses, test each, enforce 3-strike escalation, confirm root cause.
130
+
131
+ **Input**:
132
+
133
+ | Source | Required | Description |
134
+ |--------|----------|-------------|
135
+ | assign_task message | Yes | Phase 3 instruction |
136
+ | Phase file | Yes | `~/.codex/skills/investigate/phases/03-hypothesis-testing.md` |
137
+ | investigation-report | Yes | Phase 1-2 output in context |
138
+
139
+ **Steps**:
140
+
141
+ 1. Read `~/.codex/skills/investigate/phases/03-hypothesis-testing.md` before executing.
142
+ 2. Form up to 3 ranked hypotheses from Phase 1-2 evidence. Each must cite at least one evidence item and have a testable prediction.
143
+ 3. Initialize strike counter at 0.
144
+ 4. Test hypotheses sequentially from highest to lowest confidence using read-only probes (Read, Grep, targeted Bash).
145
+ 5. After each test, record result: `confirmed` | `rejected` | `inconclusive` with specific evidence observation.
146
+
147
+ **Strike counting**:
148
+
149
+ | Test result | Strike increment |
150
+ |-------------|-----------------|
151
+ | Rejected AND no new insight gained | +1 strike |
152
+ | Inconclusive AND no narrowing of search | +1 strike |
153
+ | Rejected BUT narrows search or reveals new cause | +0 (productive) |
154
+
155
+ 6. If strike counter reaches 3 — STOP immediately. Output escalation block (see 3-Strike Escalation Output below). Set status BLOCKED.
156
+ 7. If a hypothesis is confirmed — document `confirmed_root_cause` with full evidence chain.
157
+ 8. Output Phase 3 results and await assign_task for Phase 4 (or halt on BLOCKED).
158
+
159
+ **3-Strike Escalation Output**:
160
+
161
+ ```
162
+ ## ESCALATION: 3-Strike Limit Reached
163
+
164
+ ### Failed Step
165
+ - Phase: 3 — Hypothesis Testing
166
+ - Step: Hypothesis test #<N>
167
+
168
+ ### Error History
169
+ 1. Attempt 1: <H1 description>
170
+ Test: <what was checked>
171
+ Result: <rejected/inconclusive> — <why>
172
+ 2. Attempt 2: <H2 description>
173
+ Test: <what was checked>
174
+ Result: <rejected/inconclusive> — <why>
175
+ 3. Attempt 3: <H3 description>
176
+ Test: <what was checked>
177
+ Result: <rejected/inconclusive> — <why>
178
+
179
+ ### Current State
180
+ - Evidence collected: <summary from Phase 1-2>
181
+ - Hypotheses tested: <list>
182
+ - Files examined: <list>
183
+
184
+ ### Diagnosis
185
+ - Likely root cause area: <best guess based on all evidence>
186
+ - Suggested human action: <specific recommendation>
187
+
188
+ ### Diagnostic Dump
189
+ <Full investigation-report content>
190
+
191
+ STATUS: BLOCKED
192
+ ```
193
+
194
+ **Output**: investigation-report with hypothesis_tests and confirmed_root_cause (or BLOCKED escalation)
195
+
196
+ ---
197
+
198
+ ### Phase 4: Implementation
199
+
200
+ **Objective**: Verify Iron Law gate, implement minimal fix, add regression test.
201
+
202
+ **Input**:
203
+
204
+ | Source | Required | Description |
205
+ |--------|----------|-------------|
206
+ | assign_task message | Yes | Phase 4 instruction |
207
+ | Phase file | Yes | `~/.codex/skills/investigate/phases/04-implementation.md` |
208
+ | investigation-report | Yes | Must contain confirmed_root_cause |
209
+
210
+ **Steps**:
211
+
212
+ 1. Read `~/.codex/skills/investigate/phases/04-implementation.md` before executing.
213
+
214
+ 2. **Iron Law Gate Check** — verify `confirmed_root_cause` is present in investigation-report:
215
+
216
+ | Condition | Action |
217
+ |-----------|--------|
218
+ | confirmed_root_cause present | Proceed to Step 3 |
219
+ | confirmed_root_cause absent | Output "BLOCKED: Iron Law violation — no confirmed root cause. Return to Phase 3." Halt. |
220
+
221
+ 3. Plan the minimal fix before writing any code. Document: description, files to change, change types, estimated lines.
222
+
223
+ | Fix scope | Requirement |
224
+ |-----------|-------------|
225
+ | 1-3 files changed | No justification needed |
226
+ | More than 3 files | Written justification required in fix plan |
227
+
228
+ 4. Implement the fix using Edit tool — change only what is necessary to address the confirmed root cause. No refactoring, no style changes to unrelated code.
229
+ 5. Add regression test:
230
+ - Find existing test file for the affected module (Glob for `**/*.test.{ts,js,py}` or `**/test_*.py`)
231
+ - Add or modify a test with a name that clearly references the bug scenario
232
+ - Test must exercise the exact code path identified in root cause
233
+ - Test must be deterministic
234
+ 6. Re-run the original reproduction case from Phase 1. Verify it now passes.
235
+ 7. Add `fix_applied` section to investigation-report in memory.
236
+ 8. Output Phase 4 summary and await assign_task for Phase 5.
237
+
238
+ **Output**: Modified source files, regression test file; investigation-report with fix_applied section
239
+
240
+ ---
241
+
242
+ ### Phase 5: Verification & Report
243
+
244
+ **Objective**: Run full test suite, check regressions, generate structured debug report.
245
+
246
+ **Input**:
247
+
248
+ | Source | Required | Description |
249
+ |--------|----------|-------------|
250
+ | assign_task message | Yes | Phase 5 instruction |
251
+ | Phase file | Yes | `~/.codex/skills/investigate/phases/05-verification-report.md` |
252
+ | investigation-report | Yes | All phases populated |
253
+
254
+ **Steps**:
255
+
256
+ 1. Read `~/.codex/skills/investigate/phases/05-verification-report.md` before executing.
257
+ 2. Detect and run the project's test framework:
258
+ - Check for `package.json` (npm test)
259
+ - Check for `pytest.ini` / `pyproject.toml` (pytest)
260
+ - Check for `go.mod` (go test)
261
+ - Check for `Cargo.toml` (cargo test)
262
+ 3. Record test results: total, passed, failed, skipped. Note if regression test passed.
263
+ 4. Check for new failures:
264
+
265
+ | New failure condition | Action |
266
+ |-----------------------|--------|
267
+ | Related to the fix | Return to Phase 4 to adjust fix |
268
+ | Unrelated (pre-existing) | Document as pre_existing_failures, proceed |
269
+
270
+ 5. Generate debug report JSON following schema in `~/.codex/skills/investigate/specs/debug-report-format.md`. Populate all required fields from investigation-report phases.
271
+ 6. Create output directory and write report:
272
+ ```
273
+ Bash: mkdir -p .workflow/.debug
274
+ ```
275
+ Filename: `.workflow/.debug/debug-report-<YYYY-MM-DD>-<slug>.json`
276
+ Where `<slug>` = bug_description lowercased, non-alphanumeric replaced with `-`, max 40 chars.
277
+ 7. Determine completion status:
278
+
279
+ | Condition | Status |
280
+ |-----------|--------|
281
+ | All tests pass, regression test passes, no concerns | DONE |
282
+ | Fix applied but partial test coverage or minor warnings | DONE_WITH_CONCERNS |
283
+ | Cannot proceed due to test failures or unresolvable regression | BLOCKED |
284
+
285
+ 8. Output completion status block.
286
+
287
+ **Output**: `.workflow/.debug/debug-report-<date>-<slug>.json`
288
+
289
+ ---
290
+
291
+ ## Inline Subagent Calls
292
+
293
+ This agent spawns a utility subagent for cross-file diagnostic analysis during Phases 1, 2, and 3 when analysis spans many files or requires broader diagnostic perspective.
294
+
295
+ ### inline-cli-analysis
296
+
297
+ **When**: After initial evidence collection in Phase 1; for cross-file pattern search in Phase 2; for hypothesis validation assistance in Phase 3.
298
+
299
+ **Agent File**: `~/.codex/agents/cli-explore-agent.md`
300
+
301
+ ```
302
+ spawn_agent({
303
+ task_name: "inline-cli-analysis",
304
+ fork_context: false,
305
+ model: "haiku",
306
+ reasoning_effort: "medium",
307
+ message: `### MANDATORY FIRST STEPS
308
+ 1. Read: ~/.codex/agents/cli-explore-agent.md
309
+
310
+ <analysis task description — e.g.:
311
+ PURPOSE: Diagnose root cause of bug from collected evidence
312
+ TASK: Analyze error context | Trace data flow | Identify suspicious code patterns
313
+ MODE: analysis
314
+ CONTEXT: @<affected_files> | Evidence: <error_messages_and_traces>
315
+ EXPECTED: Top 3 likely root causes ranked by evidence strength
316
+ CONSTRAINTS: Read-only analysis | Focus on <affected_module>>
317
+
318
+ Expected: Structured findings with file:line references`
319
+ })
320
+ const result = wait_agent({ targets: ["inline-cli-analysis"], timeout_ms: 180000 })
321
+ close_agent({ target: "inline-cli-analysis" })
322
+ ```
323
+
324
+ Substitute the analysis task description with phase-appropriate content:
325
+ - Phase 1: Initial diagnosis from error evidence
326
+ - Phase 2: Cross-file pattern search and scope mapping
327
+ - Phase 3: Hypothesis validation assistance
328
+
329
+ ### Result Handling
330
+
331
+ | Result | Action |
332
+ |--------|--------|
333
+ | Success | Integrate findings into investigation-report, continue |
334
+ | Timeout / Error | Continue without subagent result, log warning in investigation-report |
335
+
336
+ ---
337
+
338
+ ## Structured Output Template
339
+
340
+ After each phase, output the following structure before awaiting the next assign_task:
341
+
342
+ ```
343
+ ## Phase <N> Complete
344
+
345
+ ### Summary
346
+ - <one-sentence status of what was accomplished>
347
+
348
+ ### Findings
349
+ - <Finding 1>: <specific description with file:line reference>
350
+ - <Finding 2>: <specific description with file:line reference>
351
+
352
+ ### Investigation Report Update
353
+ - Fields updated: <list of fields added/modified this phase>
354
+ - Key data: <most important finding from this phase>
355
+
356
+ ### Status
357
+ <AWAITING_NEXT_PHASE | BLOCKED: <reason> | DONE>
358
+ ```
359
+
360
+ Final Phase 5 output follows Completion Status Protocol:
361
+
362
+ ```
363
+ ## STATUS: DONE
364
+
365
+ **Summary**: Fixed <bug_description> — root cause was <root_cause_summary>
366
+
367
+ ### Details
368
+ - Phases completed: 5/5
369
+ - Root cause: <confirmed_root_cause>
370
+ - Fix: <fix_description>
371
+ - Regression test: <test_name> in <test_file>
372
+
373
+ ### Outputs
374
+ - Debug report: <reportPath>
375
+ - Files changed: <list>
376
+ - Tests added: <list>
377
+ ```
378
+
379
+ ---
380
+
381
+ ## Error Handling
382
+
383
+ | Scenario | Resolution |
384
+ |----------|------------|
385
+ | Bug not reproducible | Document as concern, continue with static analysis; note in report |
386
+ | Error message not found in source | Expand search scope; try related terms; use inline subagent |
387
+ | Phase file not found | Report "BLOCKED: Cannot read phase file <path>" |
388
+ | Iron Law gate fails in Phase 4 | Output BLOCKED status, halt, do not modify any files |
389
+ | Fix introduces regression | Analyze the new failure, adjust fix within same Phase 4 context |
390
+ | Test framework not detected | Document in report concerns; attempt common commands (`npm test`, `pytest`, `go test ./...`) |
391
+ | inline-cli-analysis timeout | Continue without subagent result, log warning |
392
+ | Scope ambiguity | Report in Open Questions, proceed with reasonable assumption and document |