claude-code-workflow 7.2.27 → 7.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/.ccw/specs/architecture-constraints.md +5 -0
  2. package/.claude/skills/_shared/SKILL-DESIGN-SPEC.md +140 -0
  3. package/.claude/skills/investigate/SKILL.md +110 -0
  4. package/.claude/skills/investigate/phases/01-root-cause-investigation.md +132 -0
  5. package/.claude/skills/investigate/phases/02-pattern-analysis.md +126 -0
  6. package/.claude/skills/investigate/phases/03-hypothesis-testing.md +177 -0
  7. package/.claude/skills/investigate/phases/04-implementation.md +139 -0
  8. package/.claude/skills/investigate/phases/05-verification-report.md +153 -0
  9. package/.claude/skills/investigate/specs/debug-report-format.md +226 -0
  10. package/.claude/skills/investigate/specs/iron-law.md +101 -0
  11. package/.claude/skills/security-audit/SKILL.md +125 -0
  12. package/.claude/skills/security-audit/phases/01-supply-chain-scan.md +139 -0
  13. package/.claude/skills/security-audit/phases/02-owasp-review.md +156 -0
  14. package/.claude/skills/security-audit/phases/03-threat-modeling.md +180 -0
  15. package/.claude/skills/security-audit/phases/04-report-tracking.md +177 -0
  16. package/.claude/skills/security-audit/specs/owasp-checklist.md +442 -0
  17. package/.claude/skills/security-audit/specs/scoring-gates.md +141 -0
  18. package/.claude/skills/ship/SKILL.md +105 -0
  19. package/.claude/skills/ship/phases/01-preflight-checks.md +121 -0
  20. package/.claude/skills/ship/phases/02-code-review.md +137 -0
  21. package/.claude/skills/ship/phases/03-version-bump.md +171 -0
  22. package/.claude/skills/ship/phases/04-changelog-commit.md +167 -0
  23. package/.claude/skills/ship/phases/05-pr-creation.md +163 -0
  24. package/.claude/skills/skill-generator/templates/sequential-phase.md +10 -0
  25. package/.claude/skills/skill-generator/templates/skill-md.md +4 -0
  26. package/.claude/skills/team-interactive-craft/SKILL.md +127 -0
  27. package/.claude/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
  28. package/.claude/skills/team-interactive-craft/roles/builder/role.md +216 -0
  29. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
  30. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +192 -0
  31. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +183 -0
  32. package/.claude/skills/team-interactive-craft/roles/coordinator/role.md +166 -0
  33. package/.claude/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
  34. package/.claude/skills/team-interactive-craft/roles/researcher/role.md +131 -0
  35. package/.claude/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
  36. package/.claude/skills/team-interactive-craft/specs/pipelines.md +85 -0
  37. package/.claude/skills/team-interactive-craft/specs/team-config.json +105 -0
  38. package/.claude/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
  39. package/.claude/skills/team-motion-design/SKILL.md +129 -0
  40. package/.claude/skills/team-motion-design/roles/animator/role.md +194 -0
  41. package/.claude/skills/team-motion-design/roles/choreographer/role.md +164 -0
  42. package/.claude/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
  43. package/.claude/skills/team-motion-design/roles/coordinator/commands/dispatch.md +203 -0
  44. package/.claude/skills/team-motion-design/roles/coordinator/commands/monitor.md +184 -0
  45. package/.claude/skills/team-motion-design/roles/coordinator/role.md +167 -0
  46. package/.claude/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
  47. package/.claude/skills/team-motion-design/roles/motion-tester/role.md +175 -0
  48. package/.claude/skills/team-motion-design/specs/gpu-constraints.md +114 -0
  49. package/.claude/skills/team-motion-design/specs/motion-tokens.md +128 -0
  50. package/.claude/skills/team-motion-design/specs/pipelines.md +74 -0
  51. package/.claude/skills/team-motion-design/specs/reduced-motion.md +129 -0
  52. package/.claude/skills/team-motion-design/specs/team-config.json +99 -0
  53. package/.claude/skills/team-ui-polish/SKILL.md +127 -0
  54. package/.claude/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
  55. package/.claude/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +194 -0
  56. package/.claude/skills/team-ui-polish/roles/coordinator/commands/monitor.md +180 -0
  57. package/.claude/skills/team-ui-polish/roles/coordinator/role.md +170 -0
  58. package/.claude/skills/team-ui-polish/roles/diagnostician/role.md +160 -0
  59. package/.claude/skills/team-ui-polish/roles/optimizer/role.md +225 -0
  60. package/.claude/skills/team-ui-polish/roles/scanner/role.md +356 -0
  61. package/.claude/skills/team-ui-polish/roles/verifier/role.md +142 -0
  62. package/.claude/skills/team-ui-polish/specs/anti-patterns.md +141 -0
  63. package/.claude/skills/team-ui-polish/specs/design-standards.md +356 -0
  64. package/.claude/skills/team-ui-polish/specs/fix-strategies.md +235 -0
  65. package/.claude/skills/team-ui-polish/specs/pipelines.md +81 -0
  66. package/.claude/skills/team-ui-polish/specs/scoring-guide.md +162 -0
  67. package/.claude/skills/team-ui-polish/specs/team-config.json +73 -0
  68. package/.claude/skills/team-uidesign/SKILL.md +6 -1
  69. package/.claude/skills/team-uidesign/roles/designer/role.md +28 -4
  70. package/.claude/skills/team-uidesign/roles/implementer/role.md +25 -3
  71. package/.claude/skills/team-uidesign/roles/researcher/role.md +21 -2
  72. package/.claude/skills/team-uidesign/roles/reviewer/role.md +19 -17
  73. package/.claude/skills/team-uidesign/specs/anti-patterns.md +211 -0
  74. package/.claude/skills/team-uidesign/specs/design-standards.md +329 -0
  75. package/.claude/skills/team-uidesign/specs/scoring-guide.md +114 -0
  76. package/.claude/skills/team-uidesign/specs/team-config.json +1 -1
  77. package/.claude/skills/team-uidesign/specs/ux-writing.md +86 -0
  78. package/.claude/skills/team-ux-improve/SKILL.md +3 -0
  79. package/.claude/skills/team-ux-improve/roles/designer/role.md +30 -0
  80. package/.claude/skills/team-ux-improve/roles/diagnoser/role.md +16 -1
  81. package/.claude/skills/team-ux-improve/roles/scanner/role.md +43 -1
  82. package/.claude/skills/team-ux-improve/specs/anti-patterns.md +103 -0
  83. package/.claude/skills/team-ux-improve/specs/design-standards.md +54 -0
  84. package/.claude/skills/team-ux-improve/specs/heuristics.md +88 -0
  85. package/.claude/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +40 -8
  86. package/.claude/skills/team-ux-improve/wisdom/patterns/state-management.md +32 -12
  87. package/.claude/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +35 -11
  88. package/.claude/skills/team-ux-improve/wisdom/principles/general-ux.md +36 -9
  89. package/.claude/skills/team-visual-a11y/SKILL.md +143 -0
  90. package/.claude/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
  91. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
  92. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +250 -0
  93. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +204 -0
  94. package/.claude/skills/team-visual-a11y/roles/coordinator/role.md +169 -0
  95. package/.claude/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
  96. package/.claude/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
  97. package/.claude/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
  98. package/.claude/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
  99. package/.claude/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
  100. package/.claude/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
  101. package/.claude/skills/team-visual-a11y/specs/pipelines.md +98 -0
  102. package/.claude/skills/team-visual-a11y/specs/team-config.json +109 -0
  103. package/.claude/skills/team-visual-a11y/specs/typography-scale.md +165 -0
  104. package/.claude/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
  105. package/.codex/skills/investigate/agents/investigator.md +392 -0
  106. package/.codex/skills/investigate/orchestrator.md +362 -0
  107. package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
  108. package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
  109. package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
  110. package/.codex/skills/investigate/phases/04-implementation.md +195 -0
  111. package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
  112. package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
  113. package/.codex/skills/security-audit/orchestrator.md +384 -0
  114. package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
  115. package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
  116. package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
  117. package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
  118. package/.codex/skills/ship/agents/ship-operator.md +318 -0
  119. package/.codex/skills/ship/orchestrator.md +426 -0
  120. package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
  121. package/.codex/skills/ship/phases/02-code-review.md +228 -0
  122. package/.codex/skills/ship/phases/03-version-bump.md +259 -0
  123. package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
  124. package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
  125. package/.codex/skills/team-interactive-craft/SKILL.md +220 -0
  126. package/.codex/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
  127. package/.codex/skills/team-interactive-craft/roles/builder/role.md +216 -0
  128. package/.codex/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
  129. package/.codex/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +162 -0
  130. package/.codex/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +233 -0
  131. package/.codex/skills/team-interactive-craft/roles/coordinator/role.md +209 -0
  132. package/.codex/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
  133. package/.codex/skills/team-interactive-craft/roles/researcher/role.md +131 -0
  134. package/.codex/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
  135. package/.codex/skills/team-interactive-craft/specs/pipelines.md +85 -0
  136. package/.codex/skills/team-interactive-craft/specs/team-config.json +105 -0
  137. package/.codex/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
  138. package/.codex/skills/team-motion-design/SKILL.md +222 -0
  139. package/.codex/skills/team-motion-design/roles/animator/role.md +194 -0
  140. package/.codex/skills/team-motion-design/roles/choreographer/role.md +164 -0
  141. package/.codex/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
  142. package/.codex/skills/team-motion-design/roles/coordinator/commands/dispatch.md +168 -0
  143. package/.codex/skills/team-motion-design/roles/coordinator/commands/monitor.md +242 -0
  144. package/.codex/skills/team-motion-design/roles/coordinator/role.md +210 -0
  145. package/.codex/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
  146. package/.codex/skills/team-motion-design/roles/motion-tester/role.md +175 -0
  147. package/.codex/skills/team-motion-design/specs/gpu-constraints.md +114 -0
  148. package/.codex/skills/team-motion-design/specs/motion-tokens.md +128 -0
  149. package/.codex/skills/team-motion-design/specs/pipelines.md +74 -0
  150. package/.codex/skills/team-motion-design/specs/reduced-motion.md +129 -0
  151. package/.codex/skills/team-motion-design/specs/team-config.json +99 -0
  152. package/.codex/skills/team-ui-polish/SKILL.md +218 -0
  153. package/.codex/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
  154. package/.codex/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +167 -0
  155. package/.codex/skills/team-ui-polish/roles/coordinator/commands/monitor.md +230 -0
  156. package/.codex/skills/team-ui-polish/roles/coordinator/role.md +213 -0
  157. package/.codex/skills/team-ui-polish/roles/diagnostician/role.md +164 -0
  158. package/.codex/skills/team-ui-polish/roles/optimizer/role.md +229 -0
  159. package/.codex/skills/team-ui-polish/roles/scanner/role.md +360 -0
  160. package/.codex/skills/team-ui-polish/roles/verifier/role.md +142 -0
  161. package/.codex/skills/team-ui-polish/specs/anti-patterns.md +141 -0
  162. package/.codex/skills/team-ui-polish/specs/design-standards.md +356 -0
  163. package/.codex/skills/team-ui-polish/specs/fix-strategies.md +235 -0
  164. package/.codex/skills/team-ui-polish/specs/pipelines.md +81 -0
  165. package/.codex/skills/team-ui-polish/specs/scoring-guide.md +162 -0
  166. package/.codex/skills/team-ui-polish/specs/team-config.json +73 -0
  167. package/.codex/skills/team-visual-a11y/SKILL.md +319 -0
  168. package/.codex/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
  169. package/.codex/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
  170. package/.codex/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +188 -0
  171. package/.codex/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +281 -0
  172. package/.codex/skills/team-visual-a11y/roles/coordinator/role.md +213 -0
  173. package/.codex/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
  174. package/.codex/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
  175. package/.codex/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
  176. package/.codex/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
  177. package/.codex/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
  178. package/.codex/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
  179. package/.codex/skills/team-visual-a11y/specs/pipelines.md +98 -0
  180. package/.codex/skills/team-visual-a11y/specs/team-config.json +109 -0
  181. package/.codex/skills/team-visual-a11y/specs/typography-scale.md +165 -0
  182. package/.codex/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
  183. package/README.md +8 -0
  184. package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
  185. package/ccw/dist/core/hooks/hook-templates.js +114 -1
  186. package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
  187. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  188. package/ccw/dist/core/routes/cli-routes.js +34 -0
  189. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  190. package/ccw/dist/core/routes/system-routes.js +2 -2
  191. package/ccw/dist/core/routes/system-routes.js.map +1 -1
  192. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-BjP1ydDR.js} +2 -2
  193. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-BjP1ydDR.js.map} +1 -1
  194. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-CAX3xqMf.js} +2 -2
  195. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-CAX3xqMf.js.map} +1 -1
  196. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-CtWlmztq.js} +2 -2
  197. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-CtWlmztq.js.map} +1 -1
  198. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-hR4a-eLX.js} +2 -2
  199. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-hR4a-eLX.js.map} +1 -1
  200. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-DzNPkFN9.js} +2 -2
  201. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-DzNPkFN9.js.map} +1 -1
  202. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BPEGN4TT.js} +2 -2
  203. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BPEGN4TT.js.map} +1 -1
  204. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cf0r2RHY.js} +2 -2
  205. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cf0r2RHY.js.map} +1 -1
  206. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DEm1rJ4h.js} +2 -2
  207. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DEm1rJ4h.js.map} +1 -1
  208. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-BpeWw8HO.js} +2 -2
  209. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-BpeWw8HO.js.map} +1 -1
  210. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-BEsmh2vF.js} +2 -2
  211. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-BEsmh2vF.js.map} +1 -1
  212. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-B30SFdtU.js} +2 -2
  213. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-B30SFdtU.js.map} +1 -1
  214. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-BVvMpg1O.js} +2 -2
  215. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-BVvMpg1O.js.map} +1 -1
  216. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-CL73dHbh.js} +2 -2
  217. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-CL73dHbh.js.map} +1 -1
  218. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-BL-28lMZ.js} +2 -2
  219. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-BL-28lMZ.js.map} +1 -1
  220. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BzZDciHZ.js} +2 -2
  221. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BzZDciHZ.js.map} +1 -1
  222. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-CDp6-d8P.js} +2 -2
  223. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-CDp6-d8P.js.map} +1 -1
  224. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-fZY_7O9n.js} +2 -2
  225. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-fZY_7O9n.js.map} +1 -1
  226. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-4LJeC9bq.js} +2 -2
  227. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-4LJeC9bq.js.map} +1 -1
  228. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-Bpigrbhw.js} +2 -2
  229. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-Bpigrbhw.js.map} +1 -1
  230. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-BP0zJc1R.js} +2 -2
  231. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-BP0zJc1R.js.map} +1 -1
  232. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-CSt2oVKQ.js} +2 -2
  233. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-CSt2oVKQ.js.map} +1 -1
  234. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-B-xaMA0w.js} +2 -2
  235. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-B-xaMA0w.js.map} +1 -1
  236. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-CJqo_7DY.js} +2 -2
  237. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-CJqo_7DY.js.map} +1 -1
  238. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-ibZeQA-Y.js} +2 -2
  239. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-ibZeQA-Y.js.map} +1 -1
  240. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-DgJ4ctPQ.js} +2 -2
  241. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-DgJ4ctPQ.js.map} +1 -1
  242. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-Cit0Yq0D.js} +2 -2
  243. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-Cit0Yq0D.js.map} +1 -1
  244. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-Ce1HDIK0.js} +2 -2
  245. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-Ce1HDIK0.js.map} +1 -1
  246. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-J1KikNrk.js} +2 -2
  247. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-J1KikNrk.js.map} +1 -1
  248. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CdBjTmth.js} +2 -2
  249. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CdBjTmth.js.map} +1 -1
  250. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-B9ZK7LvX.js} +2 -2
  251. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-B9ZK7LvX.js.map} +1 -1
  252. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-CW_nS5UR.js} +2 -2
  253. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-CW_nS5UR.js.map} +1 -1
  254. package/ccw/frontend/dist/assets/{SettingsPage-BPDbXPSM.js → SettingsPage-B2PYzSoO.js} +35 -35
  255. package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +1 -0
  256. package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js → SkillsManagerPage-CTnWrrwp.js} +2 -2
  257. package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js.map → SkillsManagerPage-CTnWrrwp.js.map} +1 -1
  258. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DJpi9XQL.js} +2 -2
  259. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DJpi9XQL.js.map} +1 -1
  260. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-Ac6Ov7uy.js} +2 -2
  261. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-Ac6Ov7uy.js.map} +1 -1
  262. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-DZAAspqR.js} +2 -2
  263. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-DZAAspqR.js.map} +1 -1
  264. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-BJkwfhIZ.js} +2 -2
  265. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-BJkwfhIZ.js.map} +1 -1
  266. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-BJgjxBgb.js} +2 -2
  267. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-BJgjxBgb.js.map} +1 -1
  268. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-D1WekoOy.js} +2 -2
  269. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-D1WekoOy.js.map} +1 -1
  270. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-DxemgIhF.js} +2 -2
  271. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-DxemgIhF.js.map} +1 -1
  272. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-CjS83f1V.js} +2 -2
  273. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-CjS83f1V.js.map} +1 -1
  274. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-B5PUcn8I.js} +2 -2
  275. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-B5PUcn8I.js.map} +1 -1
  276. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-DCc9aPbb.js} +2 -2
  277. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-DCc9aPbb.js.map} +1 -1
  278. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-DOwFtzak.js} +2 -2
  279. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-DOwFtzak.js.map} +1 -1
  280. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-96qH3aFh.js} +2 -2
  281. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-96qH3aFh.js.map} +1 -1
  282. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CCxSuil1.js} +2 -2
  283. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CCxSuil1.js.map} +1 -1
  284. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-CZNSJFdq.js} +2 -2
  285. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-CZNSJFdq.js.map} +1 -1
  286. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-h8xtvw2_.js} +2 -2
  287. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-h8xtvw2_.js.map} +1 -1
  288. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-D3NY0bm6.js} +2 -2
  289. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-D3NY0bm6.js.map} +1 -1
  290. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-Cy2vkc8p.js} +2 -2
  291. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-Cy2vkc8p.js.map} +1 -1
  292. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-Bzq3U1Mx.js} +2 -2
  293. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-Bzq3U1Mx.js.map} +1 -1
  294. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-DwuwPDPi.js} +2 -2
  295. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-DwuwPDPi.js.map} +1 -1
  296. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-q9g-bknU.js} +2 -2
  297. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-q9g-bknU.js.map} +1 -1
  298. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-CL6vb42J.js} +2 -2
  299. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-CL6vb42J.js.map} +1 -1
  300. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-BkrcQBly.js} +2 -2
  301. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-BkrcQBly.js.map} +1 -1
  302. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-BQbwyNeV.js} +2 -2
  303. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-BQbwyNeV.js.map} +1 -1
  304. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-x5_7DrN7.js} +2 -2
  305. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-x5_7DrN7.js.map} +1 -1
  306. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-DTyWXwzf.js} +2 -2
  307. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-DTyWXwzf.js.map} +1 -1
  308. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-80O0kJO7.js} +2 -2
  309. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-80O0kJO7.js.map} +1 -1
  310. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-DDlN2Bwa.js} +2 -2
  311. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-DDlN2Bwa.js.map} +1 -1
  312. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-B9A3Hnrk.js} +2 -2
  313. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-B9A3Hnrk.js.map} +1 -1
  314. package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-Bs80iCX0.js} +2 -2
  315. package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-Bs80iCX0.js.map} +1 -1
  316. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index-mbeo62f8.js} +2 -2
  317. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index-mbeo62f8.js.map} +1 -1
  318. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-rLgoBCfV.js} +3 -3
  319. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-rLgoBCfV.js.map} +1 -1
  320. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-C1niOWJx.js} +2 -2
  321. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-C1niOWJx.js.map} +1 -1
  322. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-BTmI7SUg.js} +2 -2
  323. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-BTmI7SUg.js.map} +1 -1
  324. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CB9HKeuZ.js} +2 -2
  325. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CB9HKeuZ.js.map} +1 -1
  326. package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-koEYiemK.js} +2 -2
  327. package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-koEYiemK.js.map} +1 -1
  328. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-v2_GaLdC.js} +2 -2
  329. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-v2_GaLdC.js.map} +1 -1
  330. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BQNfAqG_.js} +2 -2
  331. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BQNfAqG_.js.map} +1 -1
  332. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-Dzq5LGg9.js} +2 -2
  333. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-Dzq5LGg9.js.map} +1 -1
  334. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CtkoJXcz.js} +2 -2
  335. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CtkoJXcz.js.map} +1 -1
  336. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-CH3smL37.js} +2 -2
  337. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-CH3smL37.js.map} +1 -1
  338. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CZ0aL_yF.js} +2 -2
  339. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CZ0aL_yF.js.map} +1 -1
  340. package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-F2A_J4l6.js} +2 -2
  341. package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-F2A_J4l6.js.map} +1 -1
  342. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-Byxot0YU.js} +2 -2
  343. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-Byxot0YU.js.map} +1 -1
  344. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-JjqhUkpw.js} +2 -2
  345. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-JjqhUkpw.js.map} +1 -1
  346. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2--SuN9rAt.js} +2 -2
  347. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2--SuN9rAt.js.map} +1 -1
  348. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-BbngGB2h.js} +2 -2
  349. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-BbngGB2h.js.map} +1 -1
  350. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-CgrHgZSl.js} +2 -2
  351. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-CgrHgZSl.js.map} +1 -1
  352. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-BU3TQr7Z.js} +2 -2
  353. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-BU3TQr7Z.js.map} +1 -1
  354. package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CKs7nnn3.js} +2 -2
  355. package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CKs7nnn3.js.map} +1 -1
  356. package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-DW5tsDW6.js} +2 -2
  357. package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-DW5tsDW6.js.map} +1 -1
  358. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-BHm7w3ON.js} +2 -2
  359. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-BHm7w3ON.js.map} +1 -1
  360. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-DYR7PWwt.js} +2 -2
  361. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-DYR7PWwt.js.map} +1 -1
  362. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-D0TVgQD_.js} +2 -2
  363. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-D0TVgQD_.js.map} +1 -1
  364. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-DfY8mAP8.js} +2 -2
  365. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-DfY8mAP8.js.map} +1 -1
  366. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-CGusDp0F.js} +2 -2
  367. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-CGusDp0F.js.map} +1 -1
  368. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-CIwh0fF1.js} +2 -2
  369. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-CIwh0fF1.js.map} +1 -1
  370. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-FMyFv39K.js} +2 -2
  371. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-FMyFv39K.js.map} +1 -1
  372. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-B2qhsoTb.js} +2 -2
  373. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-B2qhsoTb.js.map} +1 -1
  374. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-cxKXMBm3.js} +3 -3
  375. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-cxKXMBm3.js.map} +1 -1
  376. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-B-xUT_z-.js} +2 -2
  377. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-B-xUT_z-.js.map} +1 -1
  378. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-DZV_3lPr.js} +2 -2
  379. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-DZV_3lPr.js.map} +1 -1
  380. package/ccw/frontend/dist/index.html +1 -1
  381. package/package.json +105 -105
  382. package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
@@ -0,0 +1,240 @@
1
+ # Phase 5: Verification & Report
2
+
3
+ > **COMPACT PROTECTION**: This is a core execution phase. If context compression has occurred and this file is only a summary, **MUST `Read` this file again before executing any Step**. Do not execute from memory.
4
+
5
+ Run full test suite, check for regressions, and generate the structured debug report.
6
+
7
+ ## Objective
8
+
9
+ - Run the full test suite to verify no regressions were introduced
10
+ - Generate a structured debug report for future reference
11
+ - Output the report to `.workflow/.debug/` directory
12
+
13
+ ## Input
14
+
15
+ | Source | Required | Description |
16
+ |--------|----------|-------------|
17
+ | investigation-report (phases 1-4) | Yes | All phases populated: evidence, root cause, fix_applied |
18
+ | assign_task message | Yes | Phase 5 instruction |
19
+
20
+ ## Execution Steps
21
+
22
+ ### Step 1: Detect and Run Full Test Suite
23
+
24
+ Detect the project's test framework by checking for project files, then run the full suite:
25
+
26
+ | Detection file | Test command |
27
+ |---------------|-------------|
28
+ | `package.json` with `test` script | `npm test` |
29
+ | `pytest.ini` or `pyproject.toml` | `pytest` |
30
+ | `go.mod` | `go test ./...` |
31
+ | `Cargo.toml` | `cargo test` |
32
+ | `Makefile` with `test` target | `make test` |
33
+ | None detected | Try `npm test`, `pytest`, `go test ./...` sequentially |
34
+
35
+ ```
36
+ Bash: mkdir -p .workflow/.debug
37
+ Bash: <detected test command>
38
+ ```
39
+
40
+ Record test results:
41
+
42
+ ```
43
+ test_results = {
44
+ total: <count>,
45
+ passed: <count>,
46
+ failed: <count>,
47
+ skipped: <count>,
48
+ regression_test_passed: true|false,
49
+ new_failures: []
50
+ }
51
+ ```
52
+
53
+ ---
54
+
55
+ ### Step 2: Regression Check
56
+
57
+ Verify specifically:
58
+
59
+ 1. The new regression test passes (check by test name from fix_applied.regression_test.test_name).
60
+ 2. All tests that were passing before the fix still pass.
61
+ 3. No new warnings or errors appeared in test output.
62
+
63
+ **Decision table for new failures**:
64
+
65
+ | New failure | Assessment | Action |
66
+ |-------------|-----------|--------|
67
+ | Related to fix (same module, same code path) | Fix introduced regression | Return to Phase 4 to adjust fix |
68
+ | Unrelated to fix (different module, pre-existing) | Pre-existing failure | Document in pre_existing_failures, proceed |
69
+ | Regression test itself fails | Fix is not working correctly | Return to Phase 4 |
70
+
71
+ Classify failures:
72
+
73
+ ```
74
+ regression_check_result = {
75
+ passed: true|false,
76
+ total_tests: <count>,
77
+ new_failures: ["<test names that newly fail>"],
78
+ pre_existing_failures: ["<tests that were already failing>"]
79
+ }
80
+ ```
81
+
82
+ ---
83
+
84
+ ### Step 3: Generate Structured Debug Report
85
+
86
+ Compile all investigation data into the final debug report JSON following the schema from `~/.codex/skills/investigate/specs/debug-report-format.md`:
87
+
88
+ ```
89
+ debug_report = {
90
+ "bug_description": "<concise one-sentence description of the bug>",
91
+ "reproduction_steps": [
92
+ "<step 1>",
93
+ "<step 2>",
94
+ "<step 3: observe error>"
95
+ ],
96
+ "root_cause": "<confirmed root cause description with technical detail and file:line reference>",
97
+ "evidence_chain": [
98
+ "Phase 1: <error message X observed in module Y>",
99
+ "Phase 2: <pattern analysis found N similar occurrences>",
100
+ "Phase 3: hypothesis H<N> confirmed — <specific condition at file:line>"
101
+ ],
102
+ "fix_description": "<what was changed and why>",
103
+ "files_changed": [
104
+ {
105
+ "path": "<src/module/file.ts>",
106
+ "change_type": "add|modify|remove",
107
+ "description": "<brief description of changes to this file>"
108
+ }
109
+ ],
110
+ "tests_added": [
111
+ {
112
+ "file": "<src/module/__tests__/file.test.ts>",
113
+ "test_name": "<should handle null return from X>",
114
+ "type": "regression|unit|integration"
115
+ }
116
+ ],
117
+ "regression_check_result": {
118
+ "passed": true|false,
119
+ "total_tests": <count>,
120
+ "new_failures": [],
121
+ "pre_existing_failures": []
122
+ },
123
+ "completion_status": "DONE|DONE_WITH_CONCERNS|BLOCKED",
124
+ "concerns": [],
125
+ "timestamp": "<ISO-8601 timestamp>",
126
+ "investigation_duration_phases": 5
127
+ }
128
+ ```
129
+
130
+ **Field sources**:
131
+
132
+ | Field | Source Phase | Description |
133
+ |-------|-------------|-------------|
134
+ | `bug_description` | Phase 1 | User-reported symptom, one sentence |
135
+ | `reproduction_steps` | Phase 1 | Ordered steps to trigger the bug |
136
+ | `root_cause` | Phase 3 | Confirmed cause with file:line reference |
137
+ | `evidence_chain` | Phase 1-3 | Each item prefixed with "Phase N:" |
138
+ | `fix_description` | Phase 4 | What code was changed and why |
139
+ | `files_changed` | Phase 4 | Each file with change type and description |
140
+ | `tests_added` | Phase 4 | Regression tests covering the bug |
141
+ | `regression_check_result` | Phase 5 | Full test suite results |
142
+ | `completion_status` | Phase 5 | Final status per protocol |
143
+ | `concerns` | Phase 5 | Non-blocking issues (if any) |
144
+ | `timestamp` | Phase 5 | When report was generated |
145
+ | `investigation_duration_phases` | Phase 5 | Always 5 for complete investigation |
146
+
147
+ ---
148
+
149
+ ### Step 4: Write Report File
150
+
151
+ Compute the filename:
152
+ - `<slug>` = bug_description lowercased, non-alphanumeric characters replaced with `-`, truncated to 40 chars
153
+ - `<date>` = current date as YYYY-MM-DD
154
+
155
+ ```
156
+ Bash: mkdir -p .workflow/.debug
157
+ Write: .workflow/.debug/debug-report-<date>-<slug>.json
158
+ Content: <debug_report JSON with 2-space indent>
159
+ ```
160
+
161
+ ---
162
+
163
+ ### Step 5: Output Completion Status
164
+
165
+ Determine status and output completion block:
166
+
167
+ **Status determination**:
168
+
169
+ | Condition | Status |
170
+ |-----------|--------|
171
+ | Regression test passes, no new failures, all quality checks met | DONE |
172
+ | Fix applied but partial test coverage, minor warnings, or non-critical concerns | DONE_WITH_CONCERNS |
173
+ | New test failures introduced by fix (unresolvable), or critical concern | BLOCKED |
174
+
175
+ **DONE output**:
176
+
177
+ ```
178
+ ## STATUS: DONE
179
+
180
+ **Summary**: Fixed <bug_description> — root cause was <root_cause_summary>
181
+
182
+ ### Details
183
+ - Phases completed: 5/5
184
+ - Root cause: <confirmed_root_cause.description>
185
+ - Fix: <fix_description>
186
+ - Regression test: <test_name> in <test_file>
187
+
188
+ ### Outputs
189
+ - Debug report: .workflow/.debug/debug-report-<date>-<slug>.json
190
+ - Files changed: <list>
191
+ - Tests added: <list>
192
+ ```
193
+
194
+ **DONE_WITH_CONCERNS output**:
195
+
196
+ ```
197
+ ## STATUS: DONE_WITH_CONCERNS
198
+
199
+ **Summary**: Fixed <bug_description> with concerns
200
+
201
+ ### Details
202
+ - Phases completed: 5/5
203
+ - Concerns:
204
+ 1. <concern> — Impact: low|medium — Suggested fix: <action>
205
+
206
+ ### Outputs
207
+ - Debug report: .workflow/.debug/debug-report-<date>-<slug>.json
208
+ - Files changed: <list>
209
+ - Tests added: <list>
210
+ ```
211
+
212
+ ---
213
+
214
+ ## Output
215
+
216
+ | Artifact | Format | Description |
217
+ |----------|--------|-------------|
218
+ | `.workflow/.debug/debug-report-<date>-<slug>.json` | JSON file | Full structured investigation report |
219
+ | Completion status block | Structured text output | Final status per Completion Status Protocol |
220
+
221
+ ## Success Criteria
222
+
223
+ | Criterion | Validation Method |
224
+ |-----------|-------------------|
225
+ | Full test suite executed | Test command ran and produced output |
226
+ | Regression test passes | test_results.regression_test_passed: true |
227
+ | No new failures introduced | regression_check_result.new_failures is empty (or documented as pre-existing) |
228
+ | Debug report written | File exists at `.workflow/.debug/debug-report-<date>-<slug>.json` |
229
+ | Completion status output | Status block follows protocol format |
230
+
231
+ ## Error Handling
232
+
233
+ | Scenario | Resolution |
234
+ |----------|------------|
235
+ | Test framework not detected | Try common commands in order; document uncertainty in concerns |
236
+ | New failures related to fix | Return to Phase 4 to adjust; do not write report until resolved |
237
+ | New failures unrelated | Document as pre_existing_failures, set DONE_WITH_CONCERNS if impactful |
238
+ | Report directory not writable | Try alternate path `.workflow/debug/`; document in output |
239
+ | Test suite takes >5 minutes | Run regression test only; note full suite skipped in concerns |
240
+ | Regression test was not added in Phase 4 | Document as DONE_WITH_CONCERNS concern |
@@ -0,0 +1,341 @@
1
+ # Security Auditor Agent
2
+
3
+ Executes all 4 phases of the security audit: supply chain scan, OWASP Top 10 review, STRIDE threat modeling, and scored report generation. Driven by orchestrator via assign_task through each phase.
4
+
5
+ ## Identity
6
+
7
+ - **Type**: `analysis`
8
+ - **Role File**: `~/.codex/agents/security-auditor.md`
9
+ - **task_name**: `security-auditor`
10
+ - **Responsibility**: Read-only analysis (Phases 1–3) + Write (Phase 4 report output)
11
+ - **fork_context**: false
12
+ - **Reasoning Effort**: high
13
+
14
+ ## Boundaries
15
+
16
+ ### MUST
17
+
18
+ - Load role definition via MANDATORY FIRST STEPS pattern
19
+ - Produce structured JSON output for every phase
20
+ - Include file:line references in all code-level findings
21
+ - Enforce scoring gates: quick-scan >= 8/10; comprehensive initial >= 2/10
22
+ - Deduplicate findings that appear in multiple phases (keep highest severity, merge evidence)
23
+ - Write phase output files to `.workflow/.security/` before reporting completion
24
+
25
+ ### MUST NOT
26
+
27
+ - Skip phases in comprehensive mode — all 4 phases must complete in sequence
28
+ - Proceed to next phase before writing current phase output file
29
+ - Include sensitive discovered values (actual secrets, credentials) in JSON evidence fields — redact with `[REDACTED]`
30
+ - Apply suppression (`@ts-ignore`, empty catch) — report findings as-is
31
+
32
+ ---
33
+
34
+ ## Toolbox
35
+
36
+ ### Available Tools
37
+
38
+ | Tool | Type | Purpose |
39
+ |------|------|---------|
40
+ | `Bash` | execution | Run dependency audits, grep patterns, file discovery, directory setup |
41
+ | `Read` | read | Load phase files, specs, previous audit reports |
42
+ | `Write` | write | Output JSON phase results to `.workflow/.security/` |
43
+ | `Glob` | read | Discover source files by pattern for scoping |
44
+ | `Grep` | read | Pattern-based security scanning across source files |
45
+ | `spawn_agent` | agent | Spawn inline subagent for OWASP CLI analysis (Phase 2) |
46
+ | `wait_agent` | agent | Await inline subagent result |
47
+ | `close_agent` | agent | Close inline subagent after result received |
48
+
49
+ ### Tool Usage Patterns
50
+
51
+ **Setup Pattern**: Ensure work directory exists before any phase output.
52
+ ```
53
+ Bash("mkdir -p .workflow/.security")
54
+ ```
55
+
56
+ **Read Pattern**: Load phase spec before executing.
57
+ ```
58
+ Read("~/.codex/skills/security-audit/phases/01-supply-chain-scan.md")
59
+ Read("~/.codex/skills/security-audit/specs/scoring-gates.md")
60
+ ```
61
+
62
+ **Write Pattern**: Output structured JSON after each phase.
63
+ ```
64
+ Write(".workflow/.security/supply-chain-report.json", <json_content>)
65
+ ```
66
+
67
+ ---
68
+
69
+ ## Execution
70
+
71
+ ### Phase 1: Supply Chain Scan
72
+
73
+ **Objective**: Detect vulnerable dependencies, hardcoded secrets, CI/CD injection risks, and LLM prompt injection vectors.
74
+
75
+ **Input**:
76
+
77
+ | Source | Required | Description |
78
+ |--------|----------|-------------|
79
+ | Phase spec | Yes | `~/.codex/skills/security-audit/phases/01-supply-chain-scan.md` |
80
+ | Project root | Yes | Working directory with source files |
81
+
82
+ **Steps**:
83
+
84
+ 1. Read `~/.codex/skills/security-audit/phases/01-supply-chain-scan.md` for full execution instructions.
85
+ 2. Run Step 1 — Dependency Audit: detect package manager and run npm audit / pip-audit / govulncheck.
86
+ 3. Run Step 2 — Secrets Detection: regex scan for API keys, AWS patterns, private keys, connection strings, JWT tokens.
87
+ 4. Run Step 3 — CI/CD Config Review: scan `.github/workflows/` for expression injection and pull_request_target risks.
88
+ 5. Run Step 4 — LLM/AI Prompt Injection Check: scan for user input concatenated into LLM prompts.
89
+ 6. Classify each finding with category, severity, file, line, evidence (redact actual secret values), remediation.
90
+ 7. Write output file.
91
+
92
+ **Decision Table — Dependency Audit**:
93
+
94
+ | Condition | Action |
95
+ |-----------|--------|
96
+ | npm / yarn lock file found | Run `npm audit --json` |
97
+ | requirements.txt / pyproject.toml found | Run `pip-audit --format json`; fallback to `safety check --json` |
98
+ | go.sum found | Run `govulncheck ./...` |
99
+ | No lock files found | Log INFO finding: "No lock files detected"; continue |
100
+ | Audit tool not installed | Log INFO finding: "<tool> not installed"; continue |
101
+
102
+ **Decision Table — Secrets Detection**:
103
+
104
+ | Pattern Match | Severity | Category |
105
+ |---------------|----------|----------|
106
+ | API key / secret / token with 16+ char value | Critical | secret |
107
+ | AWS AKIA key pattern | Critical | secret |
108
+ | `-----BEGIN PRIVATE KEY-----` | Critical | secret |
109
+ | DB connection string with password | Critical | secret |
110
+ | Hardcoded JWT token | High | secret |
111
+
112
+ **Output**: `.workflow/.security/supply-chain-report.json` — schema per phase spec.
113
+
114
+ ---
115
+
116
+ ### Phase 2: OWASP Review
117
+
118
+ **Objective**: Systematic code-level review against all 10 OWASP Top 10 2021 categories.
119
+
120
+ **Input**:
121
+
122
+ | Source | Required | Description |
123
+ |--------|----------|-------------|
124
+ | Phase spec | Yes | `~/.codex/skills/security-audit/phases/02-owasp-review.md` |
125
+ | OWASP checklist | Yes | `~/.codex/skills/security-audit/specs/owasp-checklist.md` |
126
+ | Supply chain report | Yes | `.workflow/.security/supply-chain-report.json` |
127
+
128
+ **Steps**:
129
+
130
+ 1. Read `~/.codex/skills/security-audit/phases/02-owasp-review.md` for full execution instructions.
131
+ 2. Read `~/.codex/skills/security-audit/specs/owasp-checklist.md` for detection patterns.
132
+ 3. Run Step 1 — Identify target scope: discover source files excluding node_modules, dist, build, vendor, __pycache__.
133
+ 4. Run Step 2 — Spawn inline OWASP analysis subagent (see Inline Subagent section below).
134
+ 5. Run Step 3 — Manual pattern scanning: run targeted grep patterns per OWASP category (A01, A03, A05, A07).
135
+ 6. Run Step 4 — Consolidate: merge CLI analysis results with manual scan results; deduplicate.
136
+ 7. Set coverage field for each category: `checked` or `not_applicable`.
137
+ 8. Write output file.
138
+
139
+ **Decision Table — Scope**:
140
+
141
+ | Condition | Action |
142
+ |-----------|--------|
143
+ | Source files found | Proceed with full scan |
144
+ | No source files detected | Report as BLOCKED with scope note |
145
+ | Files > 500 | Prioritize: routes/, auth/, api/, handlers/ first |
146
+
147
+ **Output**: `.workflow/.security/owasp-findings.json` — schema per phase spec.
148
+
149
+ ---
150
+
151
+ ## Inline Subagent: OWASP CLI Analysis (Phase 2, Step 2)
152
+
153
+ **When**: After identifying target scope in Phase 2, Step 2.
154
+
155
+ **Agent File**: `~/.codex/agents/cli-explore-agent.md`
156
+
157
+ ```
158
+ spawn_agent({
159
+ task_name: "inline-owasp-analysis",
160
+ fork_context: false,
161
+ model: "haiku",
162
+ reasoning_effort: "medium",
163
+ message: `### MANDATORY FIRST STEPS
164
+ 1. Read: ~/.codex/agents/cli-explore-agent.md
165
+
166
+ Goal: OWASP Top 10 2021 security analysis of this codebase.
167
+ Systematically check each OWASP category:
168
+ A01 Broken Access Control | A02 Cryptographic Failures | A03 Injection |
169
+ A04 Insecure Design | A05 Security Misconfiguration | A06 Vulnerable Components |
170
+ A07 Identification/Auth Failures | A08 Software/Data Integrity Failures |
171
+ A09 Security Logging/Monitoring Failures | A10 SSRF
172
+
173
+ Scope: @src/**/* @**/*.config.* @**/*.env.example
174
+
175
+ Expected: JSON findings per OWASP category with severity, file:line, evidence, remediation.
176
+
177
+ Constraints: Code-level analysis only | Every finding must have file:line reference | Focus on real vulnerabilities not theoretical risks`
178
+ })
179
+ const result = wait_agent({ targets: ["inline-owasp-analysis"], timeout_ms: 300000 })
180
+ close_agent({ target: "inline-owasp-analysis" })
181
+ ```
182
+
183
+ **Result Handling**:
184
+
185
+ | Result | Action |
186
+ |--------|--------|
187
+ | Success | Integrate findings into owasp-findings.json consolidation step |
188
+ | Timeout / Error | Continue with manual pattern scan results only; log warning |
189
+
190
+ ---
191
+
192
+ ### Phase 3: Threat Modeling
193
+
194
+ **Objective**: Apply STRIDE framework to architecture components; identify trust boundaries and attack surface.
195
+
196
+ **Input**:
197
+
198
+ | Source | Required | Description |
199
+ |--------|----------|-------------|
200
+ | Phase spec | Yes | `~/.codex/skills/security-audit/phases/03-threat-modeling.md` |
201
+ | Supply chain report | Yes | `.workflow/.security/supply-chain-report.json` |
202
+ | OWASP findings | Yes | `.workflow/.security/owasp-findings.json` |
203
+
204
+ **Steps**:
205
+
206
+ 1. Read `~/.codex/skills/security-audit/phases/03-threat-modeling.md` for full execution instructions.
207
+ 2. Run Step 1 — Architecture Component Discovery: scan for entry points, data stores, external services, auth modules.
208
+ 3. Run Step 2 — Trust Boundary Identification: map all 5 boundary types (external, service, data, internal, process).
209
+ 4. Run Step 3 — STRIDE per Component: evaluate all 6 categories (S, T, R, I, D, E) for each discovered component.
210
+ 5. Run Step 4 — Attack Surface Assessment: quantify public endpoints, external integrations, input points, privileged operations, sensitive data stores.
211
+ 6. Cross-reference Phase 1 and Phase 2 findings when populating `gaps` arrays.
212
+ 7. Write output file.
213
+
214
+ **STRIDE Evaluation Decision Table**:
215
+
216
+ | Component Type | Priority STRIDE Categories |
217
+ |----------------|---------------------------|
218
+ | api_endpoint | S (spoofing), T (tampering), D (denial-of-service), E (elevation) |
219
+ | auth_module | S (spoofing), R (repudiation), E (elevation) |
220
+ | data_store | T (tampering), I (information disclosure), R (repudiation) |
221
+ | external_service | T (tampering), I (information disclosure), D (denial-of-service) |
222
+ | worker | T (tampering), D (denial-of-service) |
223
+
224
+ **Output**: `.workflow/.security/threat-model.json` — schema per phase spec.
225
+
226
+ ---
227
+
228
+ ### Phase 4: Report & Tracking
229
+
230
+ **Objective**: Aggregate all findings, calculate score, compare trends, write dated report.
231
+
232
+ **Input**:
233
+
234
+ | Source | Required | Description |
235
+ |--------|----------|-------------|
236
+ | Phase spec | Yes | `~/.codex/skills/security-audit/phases/04-report-tracking.md` |
237
+ | Scoring gates | Yes | `~/.codex/skills/security-audit/specs/scoring-gates.md` |
238
+ | Supply chain report | Yes | `.workflow/.security/supply-chain-report.json` |
239
+ | OWASP findings | Yes | `.workflow/.security/owasp-findings.json` |
240
+ | Threat model | Yes | `.workflow/.security/threat-model.json` |
241
+ | Previous audits | No | `.workflow/.security/audit-report-*.json` (for trend) |
242
+
243
+ **Steps**:
244
+
245
+ 1. Read `~/.codex/skills/security-audit/phases/04-report-tracking.md` for full execution instructions.
246
+ 2. Aggregate all findings from phases 1–3 (supply-chain + owasp + STRIDE gaps).
247
+ 3. Deduplicate: same vulnerability across phases → keep highest severity, merge evidence, count once.
248
+ 4. Count files scanned (from phase outputs).
249
+ 5. Calculate score per formula: `base_score(10.0) - (weighted_sum / max(10, files_scanned))`.
250
+ 6. Find previous audit: `ls -t .workflow/.security/audit-report-*.json 2>/dev/null | head -1`.
251
+ 7. Compute trend direction and score_delta.
252
+ 8. Evaluate gate (initial vs. subsequent logic).
253
+ 9. Build remediation_priority list: rank by severity × effort (low effort + high impact = priority 1).
254
+ 10. Write dated report.
255
+ 11. Copy phase outputs to `.workflow/.security/` as latest copies.
256
+
257
+ **Score Calculation**:
258
+
259
+ | Severity | Weight |
260
+ |----------|--------|
261
+ | critical | 10 |
262
+ | high | 7 |
263
+ | medium | 4 |
264
+ | low | 1 |
265
+
266
+ Formula: `final_score = max(0, round(10.0 - (weighted_sum / max(10, files_scanned)), 1))`
267
+
268
+ **Score Interpretation Table**:
269
+
270
+ | Score Range | Rating | Meaning |
271
+ |-------------|--------|---------|
272
+ | 9.0 – 10.0 | Excellent | Minimal risk, production-ready |
273
+ | 7.0 – 8.9 | Good | Acceptable risk, minor improvements needed |
274
+ | 5.0 – 6.9 | Fair | Notable risks, remediation recommended |
275
+ | 3.0 – 4.9 | Poor | Significant risks, remediation required |
276
+ | 0.0 – 2.9 | Critical | Severe vulnerabilities, immediate action needed |
277
+
278
+ **Gate Evaluation**:
279
+
280
+ | Condition | Gate Result | Status |
281
+ |-----------|------------|--------|
282
+ | No previous audit AND score >= 2.0 | PASS | Baseline established |
283
+ | No previous audit AND score < 2.0 | FAIL | DONE_WITH_CONCERNS |
284
+ | Previous audit AND score >= previous_score | PASS | No regression |
285
+ | Previous audit AND score within 0.5 of previous | WARN | DONE_WITH_CONCERNS |
286
+ | Previous audit AND score < previous_score - 0.5 | FAIL | DONE_WITH_CONCERNS |
287
+
288
+ **Trend Direction**:
289
+
290
+ | Condition | direction field |
291
+ |-----------|----------------|
292
+ | No previous audit | `baseline` |
293
+ | score_delta > 0.5 | `improving` |
294
+ | -0.5 <= score_delta <= 0.5 | `stable` |
295
+ | score_delta < -0.5 | `regressing` |
296
+
297
+ **Output**: `.workflow/.security/audit-report-<YYYY-MM-DD>.json` — full schema per phase spec.
298
+
299
+ ---
300
+
301
+ ## Structured Output Template
302
+
303
+ ```
304
+ ## Summary
305
+ - One-sentence completion status with phase completed and finding count
306
+
307
+ ## Score (Phase 4 / quick-scan)
308
+ - Score: <N>/10 (<Rating>)
309
+ - Gate: PASS|FAIL|WARN
310
+ - Trend: <improving|stable|regressing|baseline> (delta: <+/-N.N>)
311
+
312
+ ## Findings
313
+ - Critical: <N> High: <N> Medium: <N> Low: <N>
314
+
315
+ ## Phase Outputs Written
316
+ - .workflow/.security/supply-chain-report.json
317
+ - .workflow/.security/owasp-findings.json (if Phase 2 completed)
318
+ - .workflow/.security/threat-model.json (if Phase 3 completed)
319
+ - .workflow/.security/audit-report-<date>.json (if Phase 4 completed)
320
+
321
+ ## Top Risks
322
+ 1. [severity] <title> — <file>:<line> — <remediation summary>
323
+ 2. [severity] <title> — <file>:<line> — <remediation summary>
324
+
325
+ ## Open Questions
326
+ 1. <Any scope ambiguity or blocked items>
327
+ ```
328
+
329
+ ---
330
+
331
+ ## Error Handling
332
+
333
+ | Scenario | Resolution |
334
+ |----------|------------|
335
+ | Phase spec file not found | Read from fallback path; report in Open Questions if unavailable |
336
+ | Dependency audit tool missing | Log as INFO finding (category: dependency), continue with other steps |
337
+ | No source files found | Report as BLOCKED with path; request scope clarification |
338
+ | Inline subagent timeout (Phase 2) | Continue with manual grep results only; note in findings summary |
339
+ | Phase output file write failure | Retry once; if still failing report as BLOCKED |
340
+ | Previous audit parse error | Treat as baseline (no prior data); note in trend section |
341
+ | Timeout approaching mid-phase | Output partial results with "PARTIAL" status, write what is available |