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,177 @@
1
+ # Phase 3: Hypothesis Testing
2
+
3
+ Form hypotheses from evidence and test each one. Enforce the 3-strike escalation rule.
4
+
5
+ ## Objective
6
+
7
+ - Form a maximum of 3 hypotheses from Phase 1-2 evidence
8
+ - Test each hypothesis with minimal, read-only probes
9
+ - Confirm or reject each hypothesis with concrete evidence
10
+ - Enforce 3-strike rule: STOP and escalate after 3 consecutive test failures
11
+
12
+ ## Execution Steps
13
+
14
+ ### Step 1: Form Hypotheses
15
+
16
+ Using evidence from Phase 1 (investigation report) and Phase 2 (pattern analysis), form up to 3 ranked hypotheses:
17
+
18
+ ```json
19
+ {
20
+ "hypotheses": [
21
+ {
22
+ "id": "H1",
23
+ "description": "The root cause is X because evidence Y",
24
+ "evidence_supporting": ["evidence item 1", "evidence item 2"],
25
+ "predicted_behavior": "If H1 is correct, then we should observe Z",
26
+ "test_method": "How to verify: read file X line Y, check value Z",
27
+ "confidence": "high|medium|low"
28
+ }
29
+ ]
30
+ }
31
+ ```
32
+
33
+ **Hypothesis Formation Rules**:
34
+ - Each hypothesis must cite at least one piece of evidence from Phase 1-2
35
+ - Each hypothesis must have a testable prediction
36
+ - Rank by confidence (high first)
37
+ - Maximum 3 hypotheses per investigation
38
+
39
+ ### Step 2: Test Hypotheses Sequentially
40
+
41
+ Test each hypothesis starting from highest confidence. Use read-only probes:
42
+
43
+ **Allowed test methods**:
44
+ - `Read` a specific file and check a specific value or condition
45
+ - `Grep` for a pattern that would confirm or deny the hypothesis
46
+ - `Bash` to run a specific test or command that reveals the condition
47
+ - Temporarily add a log statement to observe runtime behavior (revert after)
48
+
49
+ **Prohibited during testing**:
50
+ - Modifying production code (save that for Phase 4)
51
+ - Changing multiple things at once
52
+ - Running the full test suite (targeted checks only)
53
+
54
+ ```javascript
55
+ // Example hypothesis test
56
+ // H1: "Function X receives null because caller Y doesn't check return value"
57
+ const evidence = Read({ file_path: "src/caller.ts" })
58
+ // Check: Does caller Y use the return value without null check?
59
+ // Result: Confirmed / Rejected with specific evidence
60
+ ```
61
+
62
+ ### Step 3: Record Test Results
63
+
64
+ For each hypothesis test:
65
+
66
+ ```json
67
+ {
68
+ "hypothesis_tests": [
69
+ {
70
+ "id": "H1",
71
+ "test_performed": "Read src/caller.ts:42 - checked null handling",
72
+ "result": "confirmed|rejected|inconclusive",
73
+ "evidence": "specific observation that confirms or rejects",
74
+ "files_checked": ["src/caller.ts:42-55"]
75
+ }
76
+ ]
77
+ }
78
+ ```
79
+
80
+ ### Step 4: 3-Strike Escalation Rule
81
+
82
+ Track consecutive test failures. A "failure" means the test was inconclusive or the hypothesis was rejected AND no actionable insight was gained.
83
+
84
+ ```
85
+ Strike Counter:
86
+ [H1 rejected, no insight] → Strike 1
87
+ [H2 rejected, no insight] → Strike 2
88
+ [H3 rejected, no insight] → Strike 3 → STOP
89
+ ```
90
+
91
+ **Important**: A rejected hypothesis that provides useful insight (narrows the search) does NOT count as a strike. Only truly unproductive tests count.
92
+
93
+ **On 3rd Strike — STOP and Escalate**:
94
+
95
+ ```
96
+ ## ESCALATION: 3-Strike Limit Reached
97
+
98
+ ### Failed Step
99
+ - Phase: 3 — Hypothesis Testing
100
+ - Step: Hypothesis test #{N}
101
+
102
+ ### Error History
103
+ 1. Attempt 1: H1 — {description}
104
+ Test: {what was checked}
105
+ Result: {rejected/inconclusive} — {why}
106
+ 2. Attempt 2: H2 — {description}
107
+ Test: {what was checked}
108
+ Result: {rejected/inconclusive} — {why}
109
+ 3. Attempt 3: H3 — {description}
110
+ Test: {what was checked}
111
+ Result: {rejected/inconclusive} — {why}
112
+
113
+ ### Current State
114
+ - Evidence collected: {summary from Phase 1-2}
115
+ - Hypotheses tested: {list}
116
+ - Files examined: {list}
117
+
118
+ ### Diagnosis
119
+ - Likely root cause area: {best guess based on all evidence}
120
+ - Suggested human action: {specific recommendation — e.g., "Add logging to X", "Check runtime config Y", "Reproduce in debugger at Z"}
121
+
122
+ ### Diagnostic Dump
123
+ {Full investigation-report.json content}
124
+ ```
125
+
126
+ After escalation, set status to **BLOCKED** per Completion Status Protocol.
127
+
128
+ ### Step 5: Confirm Root Cause
129
+
130
+ If a hypothesis is confirmed, document the confirmed root cause:
131
+
132
+ ```json
133
+ {
134
+ "phase": 3,
135
+ "confirmed_root_cause": {
136
+ "hypothesis_id": "H1",
137
+ "description": "Root cause description with full evidence chain",
138
+ "evidence_chain": [
139
+ "Phase 1: Error message X observed in Y",
140
+ "Phase 2: Same pattern found in 3 other files",
141
+ "Phase 3: H1 confirmed — null check missing at file.ts:42"
142
+ ],
143
+ "affected_code": {
144
+ "file": "path/to/file.ts",
145
+ "line_range": "42-55",
146
+ "function": "functionName"
147
+ }
148
+ }
149
+ }
150
+ ```
151
+
152
+ ## Output
153
+
154
+ - **Data**: `hypothesis-tests` and `confirmed_root_cause` added to investigation report (in-memory)
155
+ - **Format**: JSON structure as defined above
156
+
157
+ ## Gate for Phase 4
158
+
159
+ **Phase 4 can ONLY proceed if `confirmed_root_cause` is present.** This is the Iron Law gate.
160
+
161
+ | Outcome | Next Step |
162
+ |---------|-----------|
163
+ | Root cause confirmed | Proceed to [Phase 4: Implementation](04-implementation.md) |
164
+ | 3-strike escalation | STOP, output diagnostic dump, status = BLOCKED |
165
+ | Partial insight | Re-form hypotheses with new evidence (stays in Phase 3) |
166
+
167
+ ## Quality Checks
168
+
169
+ - [ ] Maximum 3 hypotheses formed, each with cited evidence
170
+ - [ ] Each hypothesis tested with a specific, documented probe
171
+ - [ ] Test results recorded with concrete evidence
172
+ - [ ] 3-strike counter maintained correctly
173
+ - [ ] Root cause confirmed with full evidence chain OR escalation triggered
174
+
175
+ ## Next Phase
176
+
177
+ Proceed to [Phase 4: Implementation](04-implementation.md) ONLY with confirmed root cause.
@@ -0,0 +1,139 @@
1
+ # Phase 4: Implementation
2
+
3
+ Implement the minimal fix and add a regression test. Iron Law gate enforced.
4
+
5
+ ## Objective
6
+
7
+ - Verify Iron Law gate: confirmed root cause MUST exist from Phase 3
8
+ - Implement the minimal fix that addresses the confirmed root cause
9
+ - Add a regression test that fails without the fix and passes with it
10
+ - Verify the fix resolves the original reproduction case
11
+
12
+ ## Iron Law Gate Check
13
+
14
+ **MANDATORY**: Before any code modification, verify:
15
+
16
+ ```javascript
17
+ if (!investigation_report.confirmed_root_cause) {
18
+ // VIOLATION: Cannot proceed without confirmed root cause
19
+ // Return to Phase 3 or escalate
20
+ throw new Error("Iron Law violation: No confirmed root cause. Return to Phase 3.")
21
+ }
22
+
23
+ console.log(`Root cause confirmed: ${investigation_report.confirmed_root_cause.description}`)
24
+ console.log(`Evidence chain: ${investigation_report.confirmed_root_cause.evidence_chain.length} items`)
25
+ console.log(`Affected code: ${investigation_report.confirmed_root_cause.affected_code.file}:${investigation_report.confirmed_root_cause.affected_code.line_range}`)
26
+ ```
27
+
28
+ If the gate check fails, do NOT proceed. Return status **BLOCKED** with reason "Iron Law: no confirmed root cause".
29
+
30
+ ## Execution Steps
31
+
32
+ ### Step 1: Plan the Minimal Fix
33
+
34
+ Define the fix scope BEFORE writing any code:
35
+
36
+ ```json
37
+ {
38
+ "fix_plan": {
39
+ "description": "What the fix does and why",
40
+ "changes": [
41
+ {
42
+ "file": "path/to/file.ts",
43
+ "change_type": "modify|add|remove",
44
+ "description": "specific change description",
45
+ "lines_affected": "42-45"
46
+ }
47
+ ],
48
+ "total_files_changed": 1,
49
+ "total_lines_changed": "estimated"
50
+ }
51
+ }
52
+ ```
53
+
54
+ **Minimal Fix Rules** (from [specs/iron-law.md](../specs/iron-law.md)):
55
+ - Change only what is necessary to fix the confirmed root cause
56
+ - Do not refactor surrounding code
57
+ - Do not add features
58
+ - Do not change formatting or style of unrelated code
59
+ - If the fix requires changes to more than 3 files, document justification
60
+
61
+ ### Step 2: Implement the Fix
62
+
63
+ Apply the planned changes using `Edit` tool:
64
+
65
+ ```javascript
66
+ Edit({
67
+ file_path: "path/to/affected/file.ts",
68
+ old_string: "buggy code",
69
+ new_string: "fixed code"
70
+ })
71
+ ```
72
+
73
+ ### Step 3: Add Regression Test
74
+
75
+ Create or modify a test that:
76
+ 1. **Fails** without the fix (tests the exact bug condition)
77
+ 2. **Passes** with the fix
78
+
79
+ ```javascript
80
+ // Identify existing test file for the module
81
+ Glob({ pattern: "**/*.test.{ts,js,py}" })
82
+ // or
83
+ Glob({ pattern: "**/test_*.py" })
84
+
85
+ // Add regression test
86
+ // Test name should reference the bug: "should handle null return from X"
87
+ // Test should exercise the exact code path that caused the bug
88
+ ```
89
+
90
+ **Regression test requirements**:
91
+ - Test name clearly describes the bug scenario
92
+ - Test exercises the specific code path identified in root cause
93
+ - Test is deterministic (no flaky timing, external dependencies)
94
+ - Test is placed in the appropriate test file for the module
95
+
96
+ ### Step 4: Verify Fix Against Reproduction
97
+
98
+ Re-run the original reproduction case from Phase 1:
99
+
100
+ ```bash
101
+ # Run the specific failing test/command from Phase 1
102
+ # It should now pass
103
+ ```
104
+
105
+ Record the verification result:
106
+
107
+ ```json
108
+ {
109
+ "phase": 4,
110
+ "fix_applied": {
111
+ "description": "what was fixed",
112
+ "files_changed": ["path/to/file.ts"],
113
+ "lines_changed": 3,
114
+ "regression_test": {
115
+ "file": "path/to/test.ts",
116
+ "test_name": "should handle null return from X",
117
+ "status": "added|modified"
118
+ },
119
+ "reproduction_verified": true
120
+ }
121
+ }
122
+ ```
123
+
124
+ ## Output
125
+
126
+ - **Data**: `fix_applied` section added to investigation report (in-memory)
127
+ - **Artifacts**: Modified source files and test files
128
+
129
+ ## Quality Checks
130
+
131
+ - [ ] Iron Law gate passed: confirmed root cause exists
132
+ - [ ] Fix is minimal: only necessary changes made
133
+ - [ ] Regression test added that covers the specific bug
134
+ - [ ] Original reproduction case passes with the fix
135
+ - [ ] No unrelated code changes included
136
+
137
+ ## Next Phase
138
+
139
+ Proceed to [Phase 5: Verification & Report](05-verification-report.md) to run full test suite and generate report.
@@ -0,0 +1,153 @@
1
+ # Phase 5: Verification & Report
2
+
3
+ Run full test suite, check for regressions, and generate the structured debug report.
4
+
5
+ ## Objective
6
+
7
+ - Run the full test suite to verify no regressions were introduced
8
+ - Generate a structured debug report for future reference
9
+ - Output the report to `.workflow/.debug/` directory
10
+
11
+ ## Execution Steps
12
+
13
+ ### Step 1: Run Full Test Suite
14
+
15
+ ```bash
16
+ # Detect and run the project's test framework
17
+ # npm test / pytest / go test / cargo test / etc.
18
+ ```
19
+
20
+ Record results:
21
+
22
+ ```json
23
+ {
24
+ "test_results": {
25
+ "total": 0,
26
+ "passed": 0,
27
+ "failed": 0,
28
+ "skipped": 0,
29
+ "regression_test_passed": true,
30
+ "new_failures": []
31
+ }
32
+ }
33
+ ```
34
+
35
+ **If new failures are found**:
36
+ - Check if the failures are related to the fix
37
+ - If related: the fix introduced a regression — return to Phase 4 to adjust
38
+ - If unrelated: document as pre-existing failures, proceed with report
39
+
40
+ ### Step 2: Regression Check
41
+
42
+ Verify specifically:
43
+ 1. The new regression test passes
44
+ 2. All tests that passed before the fix still pass
45
+ 3. No new warnings or errors in test output
46
+
47
+ ### Step 3: Generate Structured Debug Report
48
+
49
+ Create the report following the schema in [specs/debug-report-format.md](../specs/debug-report-format.md):
50
+
51
+ ```bash
52
+ mkdir -p .workflow/.debug
53
+ ```
54
+
55
+ ```json
56
+ {
57
+ "bug_description": "concise description of the bug",
58
+ "reproduction_steps": [
59
+ "step 1",
60
+ "step 2",
61
+ "step 3: observe error"
62
+ ],
63
+ "root_cause": "confirmed root cause description with technical detail",
64
+ "evidence_chain": [
65
+ "Phase 1: error message X observed in module Y",
66
+ "Phase 2: pattern analysis found N similar occurrences",
67
+ "Phase 3: hypothesis H1 confirmed — specific condition at file:line"
68
+ ],
69
+ "fix_description": "what was changed and why",
70
+ "files_changed": [
71
+ {
72
+ "path": "src/module/file.ts",
73
+ "change_type": "modify",
74
+ "description": "added null check before property access"
75
+ }
76
+ ],
77
+ "tests_added": [
78
+ {
79
+ "file": "src/module/__tests__/file.test.ts",
80
+ "test_name": "should handle null return from X",
81
+ "type": "regression"
82
+ }
83
+ ],
84
+ "regression_check_result": {
85
+ "passed": true,
86
+ "total_tests": 0,
87
+ "new_failures": [],
88
+ "pre_existing_failures": []
89
+ },
90
+ "completion_status": "DONE|DONE_WITH_CONCERNS|BLOCKED",
91
+ "concerns": [],
92
+ "timestamp": "ISO-8601",
93
+ "investigation_duration_phases": 5
94
+ }
95
+ ```
96
+
97
+ ### Step 4: Write Report File
98
+
99
+ ```javascript
100
+ const slug = bugDescription.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
101
+ const dateStr = new Date().toISOString().substring(0, 10)
102
+ const reportPath = `.workflow/.debug/debug-report-${dateStr}-${slug}.json`
103
+
104
+ Write({ file_path: reportPath, content: JSON.stringify(report, null, 2) })
105
+ ```
106
+
107
+ ### Step 5: Output Completion Status
108
+
109
+ Follow the Completion Status Protocol from `_shared/SKILL-DESIGN-SPEC.md` section 13:
110
+
111
+ **DONE**:
112
+ ```
113
+ ## STATUS: DONE
114
+
115
+ **Summary**: Fixed {bug_description} — root cause was {root_cause_summary}
116
+
117
+ ### Details
118
+ - Phases completed: 5/5
119
+ - Root cause: {confirmed_root_cause}
120
+ - Fix: {fix_description}
121
+ - Regression test: {test_name} in {test_file}
122
+
123
+ ### Outputs
124
+ - Debug report: {reportPath}
125
+ - Files changed: {list}
126
+ - Tests added: {list}
127
+ ```
128
+
129
+ **DONE_WITH_CONCERNS**:
130
+ ```
131
+ ## STATUS: DONE_WITH_CONCERNS
132
+
133
+ **Summary**: Fixed {bug_description} with concerns
134
+
135
+ ### Details
136
+ - Phases completed: 5/5
137
+ - Concerns:
138
+ 1. {concern} — Impact: {low|medium} — Suggested fix: {action}
139
+ ```
140
+
141
+ ## Output
142
+
143
+ - **File**: `debug-report-{YYYY-MM-DD}-{slug}.json`
144
+ - **Location**: `.workflow/.debug/`
145
+ - **Format**: JSON (see [specs/debug-report-format.md](../specs/debug-report-format.md))
146
+
147
+ ## Quality Checks
148
+
149
+ - [ ] Full test suite executed
150
+ - [ ] Regression test specifically verified
151
+ - [ ] No new test failures introduced (or documented if pre-existing)
152
+ - [ ] Debug report written to `.workflow/.debug/`
153
+ - [ ] Completion status output follows protocol
@@ -0,0 +1,226 @@
1
+ # Debug Report Format
2
+
3
+ Defines the structured JSON schema for debug reports generated by the investigate skill.
4
+
5
+ ## When to Use
6
+
7
+ | Phase | Usage | Section |
8
+ |-------|-------|---------|
9
+ | Phase 5 | Generate final report | Full schema |
10
+ | Phase 3 (escalation) | Diagnostic dump includes partial report | Partial schema |
11
+
12
+ ---
13
+
14
+ ## JSON Schema
15
+
16
+ ```json
17
+ {
18
+ "$schema": "http://json-schema.org/draft-07/schema#",
19
+ "title": "Debug Report",
20
+ "type": "object",
21
+ "required": [
22
+ "bug_description",
23
+ "reproduction_steps",
24
+ "root_cause",
25
+ "evidence_chain",
26
+ "fix_description",
27
+ "files_changed",
28
+ "tests_added",
29
+ "regression_check_result",
30
+ "completion_status"
31
+ ],
32
+ "properties": {
33
+ "bug_description": {
34
+ "type": "string",
35
+ "description": "Concise description of the bug symptom",
36
+ "minLength": 10
37
+ },
38
+ "reproduction_steps": {
39
+ "type": "array",
40
+ "description": "Ordered steps to reproduce the bug",
41
+ "items": { "type": "string" },
42
+ "minItems": 1
43
+ },
44
+ "root_cause": {
45
+ "type": "string",
46
+ "description": "Confirmed root cause with technical detail",
47
+ "minLength": 20
48
+ },
49
+ "evidence_chain": {
50
+ "type": "array",
51
+ "description": "Ordered evidence from Phase 1 through Phase 3, each prefixed with phase number",
52
+ "items": { "type": "string" },
53
+ "minItems": 1
54
+ },
55
+ "fix_description": {
56
+ "type": "string",
57
+ "description": "What was changed and why",
58
+ "minLength": 10
59
+ },
60
+ "files_changed": {
61
+ "type": "array",
62
+ "items": {
63
+ "type": "object",
64
+ "required": ["path", "change_type", "description"],
65
+ "properties": {
66
+ "path": {
67
+ "type": "string",
68
+ "description": "Relative file path"
69
+ },
70
+ "change_type": {
71
+ "type": "string",
72
+ "enum": ["add", "modify", "remove"]
73
+ },
74
+ "description": {
75
+ "type": "string",
76
+ "description": "Brief description of changes to this file"
77
+ }
78
+ }
79
+ }
80
+ },
81
+ "tests_added": {
82
+ "type": "array",
83
+ "items": {
84
+ "type": "object",
85
+ "required": ["file", "test_name", "type"],
86
+ "properties": {
87
+ "file": {
88
+ "type": "string",
89
+ "description": "Test file path"
90
+ },
91
+ "test_name": {
92
+ "type": "string",
93
+ "description": "Name of the test function or describe block"
94
+ },
95
+ "type": {
96
+ "type": "string",
97
+ "enum": ["regression", "unit", "integration"],
98
+ "description": "Type of test added"
99
+ }
100
+ }
101
+ }
102
+ },
103
+ "regression_check_result": {
104
+ "type": "object",
105
+ "required": ["passed", "total_tests"],
106
+ "properties": {
107
+ "passed": {
108
+ "type": "boolean",
109
+ "description": "Whether the full test suite passed"
110
+ },
111
+ "total_tests": {
112
+ "type": "integer",
113
+ "description": "Total number of tests executed"
114
+ },
115
+ "new_failures": {
116
+ "type": "array",
117
+ "items": { "type": "string" },
118
+ "description": "Tests that failed after the fix but passed before"
119
+ },
120
+ "pre_existing_failures": {
121
+ "type": "array",
122
+ "items": { "type": "string" },
123
+ "description": "Tests that were already failing before the investigation"
124
+ }
125
+ }
126
+ },
127
+ "completion_status": {
128
+ "type": "string",
129
+ "enum": ["DONE", "DONE_WITH_CONCERNS", "BLOCKED"],
130
+ "description": "Final status per Completion Status Protocol"
131
+ },
132
+ "concerns": {
133
+ "type": "array",
134
+ "items": {
135
+ "type": "object",
136
+ "properties": {
137
+ "description": { "type": "string" },
138
+ "impact": { "type": "string", "enum": ["low", "medium"] },
139
+ "suggested_action": { "type": "string" }
140
+ }
141
+ },
142
+ "description": "Non-blocking concerns (populated when status is DONE_WITH_CONCERNS)"
143
+ },
144
+ "timestamp": {
145
+ "type": "string",
146
+ "format": "date-time",
147
+ "description": "ISO-8601 timestamp of report generation"
148
+ },
149
+ "investigation_duration_phases": {
150
+ "type": "integer",
151
+ "description": "Number of phases completed (1-5)",
152
+ "minimum": 1,
153
+ "maximum": 5
154
+ }
155
+ }
156
+ }
157
+ ```
158
+
159
+ ## Field Descriptions
160
+
161
+ | Field | Source Phase | Description |
162
+ |-------|-------------|-------------|
163
+ | `bug_description` | Phase 1 | User-reported symptom, one sentence |
164
+ | `reproduction_steps` | Phase 1 | Ordered steps to trigger the bug |
165
+ | `root_cause` | Phase 3 | Confirmed cause with file:line reference |
166
+ | `evidence_chain` | Phase 1-3 | Each item prefixed with "Phase N:" |
167
+ | `fix_description` | Phase 4 | What code was changed and why |
168
+ | `files_changed` | Phase 4 | Each file with change type and description |
169
+ | `tests_added` | Phase 4 | Regression tests covering the bug |
170
+ | `regression_check_result` | Phase 5 | Full test suite results |
171
+ | `completion_status` | Phase 5 | Final status per protocol |
172
+ | `concerns` | Phase 5 | Non-blocking issues (if any) |
173
+ | `timestamp` | Phase 5 | When report was generated |
174
+ | `investigation_duration_phases` | Phase 5 | How many phases were completed |
175
+
176
+ ## Example Report
177
+
178
+ ```json
179
+ {
180
+ "bug_description": "API returns 500 when user profile has null display_name",
181
+ "reproduction_steps": [
182
+ "Create user account without setting display_name",
183
+ "Call GET /api/users/:id/profile",
184
+ "Observe 500 Internal Server Error"
185
+ ],
186
+ "root_cause": "ProfileSerializer.format() calls displayName.trim() without null check at src/serializers/profile.ts:42",
187
+ "evidence_chain": [
188
+ "Phase 1: TypeError: Cannot read properties of null (reading 'trim') in server logs",
189
+ "Phase 2: Same pattern in 2 other serializers (address.ts:28, company.ts:35)",
190
+ "Phase 3: H1 confirmed — displayName field is nullable in DB but serializer assumes non-null"
191
+ ],
192
+ "fix_description": "Added null-safe access for displayName in ProfileSerializer.format()",
193
+ "files_changed": [
194
+ {
195
+ "path": "src/serializers/profile.ts",
196
+ "change_type": "modify",
197
+ "description": "Added optional chaining for displayName.trim() call"
198
+ }
199
+ ],
200
+ "tests_added": [
201
+ {
202
+ "file": "src/serializers/__tests__/profile.test.ts",
203
+ "test_name": "should handle null display_name without error",
204
+ "type": "regression"
205
+ }
206
+ ],
207
+ "regression_check_result": {
208
+ "passed": true,
209
+ "total_tests": 142,
210
+ "new_failures": [],
211
+ "pre_existing_failures": []
212
+ },
213
+ "completion_status": "DONE",
214
+ "concerns": [],
215
+ "timestamp": "2026-03-29T15:30:00+08:00",
216
+ "investigation_duration_phases": 5
217
+ }
218
+ ```
219
+
220
+ ## Output Location
221
+
222
+ Reports are written to: `.workflow/.debug/debug-report-{YYYY-MM-DD}-{slug}.json`
223
+
224
+ Where:
225
+ - `{YYYY-MM-DD}` is the investigation date
226
+ - `{slug}` is derived from the bug description (lowercase, hyphens, max 40 chars)