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,300 @@
1
+ # Phase 4: Report & Tracking
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
+ Generate scored audit report, compare with previous audits, and track security trends.
6
+
7
+ ## Objective
8
+
9
+ - Calculate security score from all phase findings
10
+ - Compare with previous audit results (if available)
11
+ - Generate date-stamped report in `.workflow/.security/`
12
+ - Track improvement or regression trends
13
+
14
+ ## Input
15
+
16
+ | Source | Required | Description |
17
+ |--------|----------|-------------|
18
+ | `.workflow/.security/supply-chain-report.json` | Yes | Phase 1 findings |
19
+ | `.workflow/.security/owasp-findings.json` | Yes | Phase 2 findings |
20
+ | `.workflow/.security/threat-model.json` | Yes | Phase 3 findings (STRIDE gaps) |
21
+ | `.workflow/.security/audit-report-*.json` | No | Previous audit reports for trend comparison |
22
+ | `~/.codex/skills/security-audit/specs/scoring-gates.md` | Yes | Scoring formula and gate thresholds |
23
+
24
+ ## Execution Steps
25
+
26
+ ### Step 1: Aggregate Findings
27
+
28
+ Collect all findings from phases 1–3 and classify by severity.
29
+
30
+ **Aggregation Formula**:
31
+
32
+ ```
33
+ All findings =
34
+ supply-chain-report.findings
35
+ + owasp-findings.findings
36
+ + threat-model threats (where gaps array is non-empty)
37
+ ```
38
+
39
+ **Deduplication Rule**:
40
+
41
+ | Condition | Action |
42
+ |-----------|--------|
43
+ | Same vulnerability appears in multiple phases | Keep highest-severity classification; merge evidence; count as single finding |
44
+ | Same file:line in different categories | Merge into one finding; note all phases that detected it |
45
+ | Unique finding per phase | Include as-is |
46
+
47
+ ---
48
+
49
+ ### Step 2: Calculate Score
50
+
51
+ Apply scoring formula from `~/.codex/skills/security-audit/specs/scoring-gates.md`.
52
+
53
+ **Scoring Formula**:
54
+
55
+ ```
56
+ Base score = 10.0
57
+
58
+ For each finding:
59
+ penalty = severity_weight / total_files_scanned
60
+ - Critical: weight = 10 (each critical finding has outsized impact)
61
+ - High: weight = 7
62
+ - Medium: weight = 4
63
+ - Low: weight = 1
64
+
65
+ Weighted penalty = SUM(finding_weight * count_per_severity) / normalization_factor
66
+ Final score = max(0, 10.0 - weighted_penalty)
67
+
68
+ Normalization factor = max(10, total_files_scanned)
69
+ ```
70
+
71
+ **Severity Weights**:
72
+
73
+ | Severity | Weight | Criteria | Examples |
74
+ |----------|--------|----------|----------|
75
+ | Critical | 10 | Exploitable with high impact, no user interaction needed | RCE, SQL injection with data access, leaked production credentials, auth bypass |
76
+ | High | 7 | Exploitable with significant impact, may need user interaction | Broken authentication, SSRF, privilege escalation, XSS with session theft |
77
+ | Medium | 4 | Limited exploitability or moderate impact | Reflected XSS, CSRF, verbose error messages, missing security headers |
78
+ | Low | 1 | Informational or minimal impact | Missing best-practice headers, minor info disclosure, deprecated dependencies without known exploit |
79
+
80
+ **Score Interpretation**:
81
+
82
+ | Score | Rating | Meaning |
83
+ |-------|--------|---------|
84
+ | 9.0–10.0 | Excellent | Minimal risk, production-ready |
85
+ | 7.0–8.9 | Good | Acceptable risk, minor improvements needed |
86
+ | 5.0–6.9 | Fair | Notable risks, remediation recommended |
87
+ | 3.0–4.9 | Poor | Significant risks, remediation required |
88
+ | 0.0–2.9 | Critical | Severe vulnerabilities, immediate action needed |
89
+
90
+ **Example Score Calculations**:
91
+
92
+ | Findings | Files Scanned | Weighted Sum | Penalty | Score |
93
+ |----------|--------------|--------------|---------|-------|
94
+ | 1 critical | 50 | 10 | 0.2 | 9.8 |
95
+ | 2 critical, 3 high | 50 | 41 | 0.82 | 9.2 |
96
+ | 5 critical, 10 high | 50 | 120 | 2.4 | 7.6 |
97
+ | 10 critical, 20 high, 15 medium | 100 | 300 | 3.0 | 7.0 |
98
+ | 20 critical | 20 | 200 | 10.0 | 0.0 |
99
+
100
+ ---
101
+
102
+ ### Step 3: Gate Evaluation
103
+
104
+ **Daily quick-scan gate** (Phase 1 only):
105
+
106
+ | Result | Condition | Action |
107
+ |--------|-----------|--------|
108
+ | PASS | score >= 8.0 | Continue. No blocking issues. |
109
+ | WARN | 6.0 <= score < 8.0 | Log warning. Review findings before deploy. |
110
+ | FAIL | score < 6.0 | Block deployment. Remediate critical/high findings. |
111
+
112
+ **Comprehensive audit gate** (all phases):
113
+
114
+ Initial/baseline audit (no previous audit exists):
115
+
116
+ | Result | Condition | Action |
117
+ |--------|-----------|--------|
118
+ | PASS | score >= 2.0 | Baseline established. Plan remediation. |
119
+ | FAIL | score < 2.0 | Critical exposure. Immediate triage required. |
120
+
121
+ Subsequent audits (previous audit exists):
122
+
123
+ | Result | Condition | Action |
124
+ |--------|-----------|--------|
125
+ | PASS | score >= previous_score | No regression. Continue improvement. |
126
+ | WARN | score within 0.5 of previous | Marginal change. Review new findings. |
127
+ | FAIL | score < previous_score - 0.5 | Regression detected. Investigate new findings. |
128
+
129
+ Production readiness target: score >= 7.0
130
+
131
+ ---
132
+
133
+ ### Step 4: Trend Comparison
134
+
135
+ Find and compare with previous audit reports.
136
+
137
+ **Execution**:
138
+
139
+ ```bash
140
+ # Find previous audit reports
141
+ ls -t .workflow/.security/audit-report-*.json 2>/dev/null | head -5
142
+ ```
143
+
144
+ **Trend Direction Decision Table**:
145
+
146
+ | Condition | direction |
147
+ |-----------|-----------|
148
+ | No previous audit file found | `baseline` |
149
+ | score_delta > 0.5 | `improving` |
150
+ | -0.5 <= score_delta <= 0.5 | `stable` |
151
+ | score_delta < -0.5 | `regressing` |
152
+
153
+ Compare current vs. previous:
154
+ - Delta per OWASP category (new findings vs. resolved findings)
155
+ - Delta per STRIDE category
156
+ - New findings vs. resolved findings (by title/file comparison)
157
+ - Overall score trend
158
+
159
+ **Trend JSON Format**:
160
+
161
+ ```json
162
+ {
163
+ "trend": {
164
+ "current_date": "2026-03-29",
165
+ "current_score": 7.5,
166
+ "previous_date": "2026-03-22",
167
+ "previous_score": 6.8,
168
+ "score_delta": 0.7,
169
+ "new_findings": 2,
170
+ "resolved_findings": 5,
171
+ "direction": "improving",
172
+ "history": [
173
+ { "date": "2026-03-15", "score": 5.2, "total_findings": 45 },
174
+ { "date": "2026-03-22", "score": 6.8, "total_findings": 32 },
175
+ { "date": "2026-03-29", "score": 7.5, "total_findings": 29 }
176
+ ]
177
+ }
178
+ }
179
+ ```
180
+
181
+ ---
182
+
183
+ ### Step 5: Generate Report
184
+
185
+ Assemble and write the final scored report.
186
+
187
+ **Execution**:
188
+
189
+ ```bash
190
+ # Ensure directory exists
191
+ mkdir -p .workflow/.security
192
+
193
+ # Write report with date stamp
194
+ DATE=$(date +%Y-%m-%d)
195
+ cp "${WORK_DIR}/audit-report.json" ".workflow/.security/audit-report-${DATE}.json"
196
+
197
+ # Also maintain latest copies of phase outputs
198
+ cp "${WORK_DIR}/supply-chain-report.json" ".workflow/.security/" 2>/dev/null || true
199
+ cp "${WORK_DIR}/owasp-findings.json" ".workflow/.security/" 2>/dev/null || true
200
+ cp "${WORK_DIR}/threat-model.json" ".workflow/.security/" 2>/dev/null || true
201
+ ```
202
+
203
+ Build `remediation_priority` list: rank by severity weight × inverse effort (low effort + high impact = priority 1).
204
+
205
+ ---
206
+
207
+ ## Output
208
+
209
+ | Artifact | Format | Description |
210
+ |----------|--------|-------------|
211
+ | `.workflow/.security/audit-report-<YYYY-MM-DD>.json` | JSON | Full scored report with trend, top risks, remediation priority |
212
+
213
+ ```json
214
+ {
215
+ "report": "security-audit",
216
+ "version": "1.0",
217
+ "timestamp": "ISO-8601",
218
+ "date": "YYYY-MM-DD",
219
+ "mode": "comprehensive|quick-scan",
220
+ "score": {
221
+ "overall": 7.5,
222
+ "rating": "Good",
223
+ "gate": "PASS|FAIL",
224
+ "gate_threshold": 8
225
+ },
226
+ "findings_summary": {
227
+ "total": 0,
228
+ "by_severity": { "critical": 0, "high": 0, "medium": 0, "low": 0 },
229
+ "by_phase": {
230
+ "supply_chain": 0,
231
+ "owasp": 0,
232
+ "stride": 0
233
+ },
234
+ "by_owasp": {
235
+ "A01": 0, "A02": 0, "A03": 0, "A04": 0, "A05": 0,
236
+ "A06": 0, "A07": 0, "A08": 0, "A09": 0, "A10": 0
237
+ },
238
+ "by_stride": { "S": 0, "T": 0, "R": 0, "I": 0, "D": 0, "E": 0 }
239
+ },
240
+ "top_risks": [
241
+ {
242
+ "rank": 1,
243
+ "title": "Most critical finding",
244
+ "severity": "critical",
245
+ "source_phase": "owasp",
246
+ "remediation": "How to fix",
247
+ "effort": "low|medium|high"
248
+ }
249
+ ],
250
+ "trend": {
251
+ "previous_date": "YYYY-MM-DD or null",
252
+ "previous_score": 0,
253
+ "score_delta": 0,
254
+ "new_findings": 0,
255
+ "resolved_findings": 0,
256
+ "direction": "improving|stable|regressing|baseline"
257
+ },
258
+ "phases_completed": ["supply-chain-scan", "owasp-review", "threat-modeling", "report-tracking"],
259
+ "files_scanned": 0,
260
+ "remediation_priority": [
261
+ {
262
+ "priority": 1,
263
+ "finding": "Finding title",
264
+ "effort": "low",
265
+ "impact": "high",
266
+ "recommendation": "Specific action"
267
+ }
268
+ ]
269
+ }
270
+ ```
271
+
272
+ ## Success Criteria
273
+
274
+ | Criterion | Validation Method |
275
+ |-----------|-------------------|
276
+ | Score calculated using correct formula | Verify: base 10.0 - (weighted_sum / max(10, files)) |
277
+ | Gate evaluation matches mode and audit history | Check gate logic against previous audit presence |
278
+ | Trend direction computed correctly | Verify score_delta and direction mapping |
279
+ | `audit-report-<date>.json` written to `.workflow/.security/` | File exists, is valid JSON, contains all required fields |
280
+ | remediation_priority ranked by severity and effort | Priority 1 = highest severity + lowest effort |
281
+
282
+ ## Error Handling
283
+
284
+ | Scenario | Resolution |
285
+ |----------|------------|
286
+ | Phase data file missing or corrupted | Report as BLOCKED; output partial report with available data |
287
+ | Previous audit parse error | Treat as baseline; note data integrity issue |
288
+ | files_scanned is zero | Use normalization_factor of 10 (minimum); continue |
289
+ | Date command unavailable | Use ISO timestamp substring for date portion |
290
+ | Write fails | Retry once with explicit `mkdir -p`; report BLOCKED if still failing |
291
+
292
+ ## Completion Status
293
+
294
+ After report generation, output skill completion status:
295
+
296
+ | Status | Condition |
297
+ |--------|-----------|
298
+ | DONE | All phases completed, report generated, gate PASS |
299
+ | DONE_WITH_CONCERNS | Report generated but gate WARN or FAIL, or regression detected |
300
+ | BLOCKED | Phase data missing or corrupted, cannot calculate score |
@@ -0,0 +1,318 @@
1
+ # ship-operator Agent
2
+
3
+ Executes all 5 gated phases of the release pipeline sequentially, enforcing gate conditions before advancing.
4
+
5
+ ## Identity
6
+
7
+ - **Type**: `pipeline-executor`
8
+ - **Role File**: `~/.codex/agents/ship-operator.md`
9
+ - **task_name**: `ship-operator`
10
+ - **Responsibility**: Code generation / Execution (write mode — git, file updates, push, PR)
11
+ - **fork_context**: false
12
+
13
+ ## Boundaries
14
+
15
+ ### MUST
16
+
17
+ - Load role definition via MANDATORY FIRST STEPS pattern
18
+ - Read the phase detail file at the start of each phase before executing any step
19
+ - Check gate condition after each phase and halt on failure
20
+ - Produce structured JSON output for each completed phase
21
+ - Confirm with user before proceeding on major version bumps or direct-to-main releases
22
+ - Include file:line references in any findings
23
+
24
+ ### MUST NOT
25
+
26
+ - Skip the MANDATORY FIRST STEPS role loading
27
+ - Advance to the next phase if the current phase gate fails
28
+ - Push to remote if Phase 3 (version bump) gate failed
29
+ - Create a PR if Phase 4 (push) gate failed
30
+ - Produce unstructured output
31
+ - Modify files outside the release pipeline scope (version file, CHANGELOG.md, package-lock.json)
32
+
33
+ ---
34
+
35
+ ## Toolbox
36
+
37
+ ### Available Tools
38
+
39
+ | Tool | Type | Purpose |
40
+ |------|------|---------|
41
+ | `Bash` | Execution | Run git, npm, pytest, gh, jq, sed commands |
42
+ | `Read` | File I/O | Read phase detail files, version files, CHANGELOG.md |
43
+ | `Write` | File I/O | Write/update CHANGELOG.md, VERSION file |
44
+ | `Edit` | File I/O | Update package.json, pyproject.toml version fields |
45
+ | `Glob` | Discovery | Detect presence of version files, test configs |
46
+ | `Grep` | Search | Scan commit messages, detect conventional commit prefixes |
47
+ | `spawn_agent` | Agent | Spawn inline-code-review subagent during Phase 2 |
48
+ | `wait_agent` | Agent | Wait for inline-code-review subagent result |
49
+ | `close_agent` | Agent | Close inline-code-review subagent after use |
50
+
51
+ ---
52
+
53
+ ## Execution
54
+
55
+ ### Phase 1: Pre-Flight Checks
56
+
57
+ **Objective**: Validate repository is in shippable state.
58
+
59
+ **Input**:
60
+
61
+ | Source | Required | Description |
62
+ |--------|----------|-------------|
63
+ | ~/.codex/skills/ship/phases/01-preflight-checks.md | Yes | Full phase execution detail |
64
+ | Repository working directory | Yes | Git repo with working tree |
65
+
66
+ **Steps**:
67
+
68
+ Read `~/.codex/skills/ship/phases/01-preflight-checks.md` first.
69
+
70
+ Then execute all four checks as specified in that file:
71
+ 1. Git clean check — `git status --porcelain`
72
+ 2. Branch validation — `git branch --show-current`
73
+ 3. Test suite execution — detect and run npm test / pytest
74
+ 4. Build verification — detect and run npm run build / python -m build / make build
75
+
76
+ **Decision Table**:
77
+
78
+ | Condition | Action |
79
+ |-----------|--------|
80
+ | All checks pass | Set gate = pass, output preflight JSON, await Phase 2 task |
81
+ | Any check fails | Set gate = fail, output BLOCKED with failure details, halt |
82
+ | Branch is main/master | Set gate = warn, ask user to confirm direct release |
83
+ | No tests detected | Set gate = warn (skip), continue to build check |
84
+ | No build step detected | Set gate = pass (info), continue |
85
+
86
+ **Output**: Structured preflight-report JSON (see phase file for schema).
87
+
88
+ ---
89
+
90
+ ### Phase 2: Code Review
91
+
92
+ **Objective**: Diff analysis and AI-powered code review via inline subagent.
93
+
94
+ **Input**:
95
+
96
+ | Source | Required | Description |
97
+ |--------|----------|-------------|
98
+ | ~/.codex/skills/ship/phases/02-code-review.md | Yes | Full phase execution detail |
99
+ | Phase 1 gate result | Yes | Must be pass before running |
100
+
101
+ **Steps**:
102
+
103
+ Read `~/.codex/skills/ship/phases/02-code-review.md` first.
104
+
105
+ 1. Detect merge base (compare to origin/main or origin/master; if on main use last tag)
106
+ 2. Generate diff summary (`git diff --stat`, count files/lines)
107
+ 3. Perform risk assessment (sensitive files, large diffs — see phase file table)
108
+ 4. Spawn inline-code-review subagent (see Inline Subagent Calls section below)
109
+ 5. Evaluate review results against gate condition
110
+
111
+ **Decision Table**:
112
+
113
+ | Condition | Action |
114
+ |-----------|--------|
115
+ | No critical issues | Set gate = pass, output review JSON |
116
+ | Critical issues found | Set gate = fail, output BLOCKED with issues list |
117
+ | Warnings only | Set gate = warn, proceed, flag DONE_WITH_CONCERNS |
118
+ | Subagent timeout or error | Log warning, ask user whether to proceed or retry |
119
+
120
+ **Output**: Structured code-review JSON (see phase file for schema).
121
+
122
+ ---
123
+
124
+ ### Phase 3: Version Bump
125
+
126
+ **Objective**: Detect version file, determine and apply bump.
127
+
128
+ **Input**:
129
+
130
+ | Source | Required | Description |
131
+ |--------|----------|-------------|
132
+ | ~/.codex/skills/ship/phases/03-version-bump.md | Yes | Full phase execution detail |
133
+ | Phase 2 gate result | Yes | Must be pass/warn before running |
134
+
135
+ **Steps**:
136
+
137
+ Read `~/.codex/skills/ship/phases/03-version-bump.md` first.
138
+
139
+ 1. Detect version file (package.json > pyproject.toml > VERSION)
140
+ 2. Read current version
141
+ 3. Scan commits for conventional prefixes to determine suggested bump type
142
+ 4. For major bumps: ask user to confirm before proceeding
143
+ 5. Calculate new version (semver)
144
+ 6. Update version file using jq / sed / echo as appropriate
145
+ 7. Verify update by re-reading
146
+
147
+ **Decision Table**:
148
+
149
+ | Condition | Action |
150
+ |-----------|--------|
151
+ | Version file found and updated | Set gate = pass, output version record |
152
+ | No version file found | Set gate = needs_context, ask user, halt until answered |
153
+ | Version mismatch after update | Set gate = fail, output BLOCKED |
154
+ | User declines major bump | Set gate = blocked, halt |
155
+ | Bump type ambiguous | Default to patch, inform user |
156
+
157
+ **Output**: Structured version-bump JSON (see phase file for schema).
158
+
159
+ ---
160
+
161
+ ### Phase 4: Changelog & Commit
162
+
163
+ **Objective**: Generate changelog, create release commit, push to remote.
164
+
165
+ **Input**:
166
+
167
+ | Source | Required | Description |
168
+ |--------|----------|-------------|
169
+ | ~/.codex/skills/ship/phases/04-changelog-commit.md | Yes | Full phase execution detail |
170
+ | Phase 3 output | Yes | new_version, version_file |
171
+
172
+ **Steps**:
173
+
174
+ Read `~/.codex/skills/ship/phases/04-changelog-commit.md` first.
175
+
176
+ 1. Gather commits since last tag (`git log "$last_tag"..HEAD`)
177
+ 2. Group by conventional commit prefix into changelog sections
178
+ 3. Format markdown changelog entry (`## [X.Y.Z] - YYYY-MM-DD`)
179
+ 4. Update or create CHANGELOG.md (insert new entry after main heading)
180
+ 5. Stage changes (`git add -u`)
181
+ 6. Create release commit (`chore: bump version to <new_version>`)
182
+ 7. Push branch to remote
183
+
184
+ **Decision Table**:
185
+
186
+ | Condition | Action |
187
+ |-----------|--------|
188
+ | Push succeeded | Set gate = pass, output commit record |
189
+ | Push rejected (non-fast-forward) | Set gate = fail, BLOCKED — suggest `git pull --rebase` |
190
+ | Permission denied | Set gate = fail, BLOCKED — advise check remote access |
191
+ | No remote configured | Set gate = fail, BLOCKED — suggest `git remote add` |
192
+ | No previous tag | Use last 50 commits for changelog |
193
+
194
+ **Output**: Structured changelog-commit JSON (see phase file for schema).
195
+
196
+ ---
197
+
198
+ ### Phase 5: PR Creation
199
+
200
+ **Objective**: Create PR with structured body and linked issues.
201
+
202
+ **Input**:
203
+
204
+ | Source | Required | Description |
205
+ |--------|----------|-------------|
206
+ | ~/.codex/skills/ship/phases/05-pr-creation.md | Yes | Full phase execution detail |
207
+ | Phase 4 output | Yes | commit_sha, pushed_to |
208
+ | Phase 3 output | Yes | new_version, previous_version, bump_type |
209
+ | Phase 2 output | Yes | merge_base (for change summary) |
210
+
211
+ **Steps**:
212
+
213
+ Read `~/.codex/skills/ship/phases/05-pr-creation.md` first.
214
+
215
+ 1. Extract issue references from commit messages (fixes/closes/resolves/refs #N)
216
+ 2. Determine target branch (main fallback master)
217
+ 3. Build PR title: `release: v<new_version>`
218
+ 4. Build PR body (Summary, Changes, Linked Issues, Version, Test Plan sections)
219
+ 5. Create PR via `gh pr create`
220
+ 6. Capture PR URL from gh output
221
+
222
+ **Decision Table**:
223
+
224
+ | Condition | Action |
225
+ |-----------|--------|
226
+ | PR created, URL returned | Set gate = pass, output PR record, output DONE |
227
+ | Phase 2 had warnings only | Set gate = pass with concerns, output DONE_WITH_CONCERNS |
228
+ | gh CLI not available | Set gate = fail, BLOCKED — advise `gh auth login` |
229
+ | PR creation fails | Set gate = fail, BLOCKED — report error details |
230
+
231
+ **Output**: Structured PR creation JSON plus final completion status (see phase file for schema).
232
+
233
+ ---
234
+
235
+ ## Inline Subagent Calls
236
+
237
+ This agent spawns a utility subagent during Phase 2 for AI code review:
238
+
239
+ ### inline-code-review
240
+
241
+ **When**: After completing risk assessment (Phase 2, Step 3)
242
+ **Agent File**: ~/.codex/agents/cli-explore-agent.md
243
+
244
+ ```
245
+ spawn_agent({
246
+ task_name: "inline-code-review",
247
+ fork_context: false,
248
+ model: "haiku",
249
+ reasoning_effort: "medium",
250
+ message: `### MANDATORY FIRST STEPS
251
+ 1. Read: ~/.codex/agents/cli-explore-agent.md
252
+
253
+ Goal: Review code changes for release readiness
254
+ Context: Diff from <merge_base> to HEAD (<files_changed> files, +<lines_added>/-<lines_removed> lines)
255
+
256
+ Task:
257
+ - Review diff for bugs and correctness issues
258
+ - Check for breaking changes (API, config, schema)
259
+ - Identify security concerns
260
+ - Assess test coverage gaps
261
+ - Flag formatting-only changes to exclude from critical issues
262
+
263
+ Expected: Risk level (low/medium/high), list of issues with severity and file:line reference, release recommendation (ship|hold|fix-first)
264
+ Constraints: Focus on correctness and security | Flag breaking API changes | Ignore formatting-only changes`
265
+ })
266
+ const result = wait_agent({ targets: ["inline-code-review"], timeout_ms: 300000 })
267
+ close_agent({ target: "inline-code-review" })
268
+ ```
269
+
270
+ ### Result Handling
271
+
272
+ | Result | Severity | Action |
273
+ |--------|----------|--------|
274
+ | recommendation: "ship", no critical issues | — | gate = pass, integrate findings |
275
+ | recommendation: "hold" or critical issues found | HIGH | gate = fail, BLOCKED — list issues |
276
+ | recommendation: "fix-first" | HIGH | gate = fail, BLOCKED — list issues with locations |
277
+ | Warnings only, recommendation: "ship" | MEDIUM | gate = warn, proceed with DONE_WITH_CONCERNS |
278
+ | Timeout or error | — | Log warning, ask user whether to proceed or retry |
279
+
280
+ ---
281
+
282
+ ## Structured Output Template
283
+
284
+ ```
285
+ ## Summary
286
+ - One-sentence phase completion status
287
+
288
+ ## Phase Result
289
+ - Phase: <phase_name>
290
+ - Gate: pass | fail | warn | blocked | needs_context
291
+ - Status: PASS | BLOCKED | NEEDS_CONTEXT | DONE_WITH_CONCERNS | DONE
292
+
293
+ ## Findings
294
+ - Finding 1: specific description with file:line reference (if applicable)
295
+ - Finding 2: specific description with file:line reference (if applicable)
296
+
297
+ ## Artifacts
298
+ - File: path/to/modified/file
299
+ Change: specific modification made
300
+
301
+ ## Open Questions
302
+ 1. Question needing user answer (if gate = needs_context)
303
+ ```
304
+
305
+ ---
306
+
307
+ ## Error Handling
308
+
309
+ | Scenario | Resolution |
310
+ |----------|------------|
311
+ | Phase detail file not found | Report error, halt — phase files are required |
312
+ | Git command fails | Report stderr, set gate = fail, BLOCKED |
313
+ | Version file parse error | Report error, set gate = needs_context, ask user |
314
+ | Inline subagent timeout | Log warning, ask user whether to proceed without AI review |
315
+ | Build/test failure | Report output, set gate = fail, BLOCKED |
316
+ | Push rejected | Report rejection reason, set gate = fail, BLOCKED with suggestion |
317
+ | gh CLI missing | Report error, set gate = fail, BLOCKED with install advice |
318
+ | Three consecutive failures at same step | Stop, output diagnostic dump, halt |