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,426 @@
1
+ ---
2
+ name: ship
3
+ description: Structured release pipeline with pre-flight checks, AI code review, version bump, changelog, and PR creation. Triggers on "ship", "release", "publish".
4
+ agents: ship-operator
5
+ phases: 5
6
+ ---
7
+
8
+ # Ship
9
+
10
+ Structured release pipeline that guides code from working branch to pull request through 5 gated phases: pre-flight checks, automated code review, version bump, changelog generation, and PR creation.
11
+
12
+ ## Architecture
13
+
14
+ ```
15
+ +--------------------------------------------------------------+
16
+ | ship Orchestrator |
17
+ | -> Single ship-operator agent driven through 5 gated phases |
18
+ +------------------------------+-------------------------------+
19
+ |
20
+ +-------------------+-------------------+
21
+ v v v
22
+ +------------+ +------------+ +------------+
23
+ | Phase 1 | --> | Phase 2 | --> | Phase 3 |
24
+ | Pre-Flight | | Code Review| | Version |
25
+ | Checks | | | | Bump |
26
+ +------------+ +------------+ +------------+
27
+ v v v
28
+ Gate: ALL Gate: No Gate: Version
29
+ 4 checks critical updated OK
30
+ pass issues
31
+ |
32
+ +-------------------+-------------------+
33
+ v v
34
+ +------------+ +------------+
35
+ | Phase 4 | ----------------------> | Phase 5 |
36
+ | Changelog | | PR Creation|
37
+ | & Commit | | |
38
+ +------------+ +------------+
39
+ v v
40
+ Gate: Push Gate: PR
41
+ succeeded created
42
+ ```
43
+
44
+ ---
45
+
46
+ ## Agent Registry
47
+
48
+ | Agent | task_name | Role File | Responsibility | Pattern | fork_context |
49
+ |-------|-----------|-----------|----------------|---------|--------------|
50
+ | ship-operator | ship-operator | ~/.codex/agents/ship-operator.md | Execute all 5 release phases sequentially, enforce gates | Deep Interaction (2.3) | false |
51
+
52
+ > **COMPACT PROTECTION**: Agent files are execution documents. When context compression occurs and agent instructions are reduced to summaries, **you MUST immediately `Read` the corresponding agent.md to reload before continuing execution**.
53
+
54
+ ---
55
+
56
+ ## Fork Context Strategy
57
+
58
+ | Agent | task_name | fork_context | fork_from | Rationale |
59
+ |-------|-----------|--------------|-----------|-----------|
60
+ | ship-operator | ship-operator | false | — | Starts fresh; all context provided in initial task message |
61
+
62
+ **Fork Decision Rules**:
63
+
64
+ | Condition | fork_context | Reason |
65
+ |-----------|--------------|--------|
66
+ | Pipeline stage with explicit input | false | Context in message, not history |
67
+ | Agent is isolated utility | false | Clean context, focused task |
68
+ | ship-operator | false | Self-contained release operator; no parent context needed |
69
+
70
+ ---
71
+
72
+ ## Subagent Registry
73
+
74
+ Utility subagents callable by ship-operator (not separate pipeline stages):
75
+
76
+ | Subagent | Agent File | Callable By | Purpose | Model |
77
+ |----------|-----------|-------------|---------|-------|
78
+ | inline-code-review | ~/.codex/agents/cli-explore-agent.md | ship-operator | AI code review of diff during Phase 2 | haiku |
79
+
80
+ > Subagents are spawned by agents within their own execution context (Pattern 2.8), not by the orchestrator.
81
+
82
+ ---
83
+
84
+ ## Phase Execution
85
+
86
+ ### Phase 1: Pre-Flight Checks
87
+
88
+ **Objective**: Validate that the repository is in a shippable state — confirm clean working tree, appropriate branch, passing tests, and successful build.
89
+
90
+ **Input**:
91
+
92
+ | Source | Description |
93
+ |--------|-------------|
94
+ | User trigger | "ship" / "release" / "publish" command |
95
+ | Repository | Current git working directory |
96
+ | Phase detail | ~/.codex/skills/ship/phases/01-preflight-checks.md |
97
+
98
+ **Execution**:
99
+
100
+ Spawn ship-operator with Phase 1 task. The operator reads the phase detail file then executes all four checks.
101
+
102
+ ```
103
+ spawn_agent({
104
+ task_name: "ship-operator",
105
+ fork_context: false,
106
+ message: `## TASK ASSIGNMENT
107
+
108
+ ### MANDATORY FIRST STEPS
109
+ 1. Read role definition: ~/.codex/agents/ship-operator.md (MUST read first)
110
+ 2. Read phase detail: ~/.codex/skills/ship/phases/01-preflight-checks.md
111
+
112
+ ---
113
+
114
+ Goal: Execute Phase 1 Pre-Flight Checks for the release pipeline.
115
+
116
+ Execute all four checks (git clean, branch validation, test suite, build verification).
117
+ Output structured preflight-report JSON plus gate status.`
118
+ })
119
+ const phase1Result = wait_agent({ targets: ["ship-operator"], timeout_ms: 300000 })
120
+ ```
121
+
122
+ **Gate Decision**:
123
+
124
+ | Condition | Action |
125
+ |-----------|--------|
126
+ | All four checks pass (overall: "pass") | Fast-advance: assign Phase 2 task to ship-operator |
127
+ | Any check fails (overall: "fail") | BLOCKED — report failure details, halt pipeline |
128
+ | Branch is main/master (warn) | Ask user to confirm direct-to-main release before proceeding |
129
+ | Timeout | assign_task "Finalize current work and output results", re-wait 120s |
130
+
131
+ **Output**:
132
+
133
+ | Artifact | Description |
134
+ |----------|-------------|
135
+ | preflight-report JSON | Pass/fail per check, blockers list |
136
+ | Gate status | pass / fail / blocked |
137
+
138
+ ---
139
+
140
+ ### Phase 2: Code Review
141
+
142
+ **Objective**: Detect merge base, generate diff, run AI-powered code review via inline subagent, assess risk, evaluate results.
143
+
144
+ **Input**:
145
+
146
+ | Source | Description |
147
+ |--------|-------------|
148
+ | Phase 1 result | Gate passed (overall: "pass") |
149
+ | Repository | Git history, diff data |
150
+ | Phase detail | ~/.codex/skills/ship/phases/02-code-review.md |
151
+
152
+ **Execution**:
153
+
154
+ Phase 2 is assigned to the already-running ship-operator via assign_task.
155
+
156
+ ```
157
+ assign_task({
158
+ target: "ship-operator",
159
+ items: [{ type: "text", text: `## PHASE 2 TASK
160
+
161
+ Read phase detail: ~/.codex/skills/ship/phases/02-code-review.md
162
+
163
+ Execute Phase 2 Code Review:
164
+ 1. Detect merge base
165
+ 2. Generate diff summary
166
+ 3. Perform risk assessment
167
+ 4. Spawn inline-code-review subagent for AI analysis
168
+ 5. Evaluate review results and report gate status` }]
169
+ })
170
+ const phase2Result = wait_agent({ targets: ["ship-operator"], timeout_ms: 600000 })
171
+ ```
172
+
173
+ **Gate Decision**:
174
+
175
+ | Condition | Action |
176
+ |-----------|--------|
177
+ | No critical issues (overall: "pass") | Fast-advance: assign Phase 3 task to ship-operator |
178
+ | Critical issues found (overall: "fail") | BLOCKED — report critical issues list, halt pipeline |
179
+ | Warnings only (overall: "warn") | Fast-advance to Phase 3, flag DONE_WITH_CONCERNS |
180
+ | Review subagent timeout/error | Ask user whether to proceed or retry; if proceed, flag warn |
181
+ | Timeout on phase2Result | assign_task "Finalize current work", re-wait 120s |
182
+
183
+ **Output**:
184
+
185
+ | Artifact | Description |
186
+ |----------|-------------|
187
+ | Review summary JSON | Risk level, risk factors, AI review recommendation, issues |
188
+ | Gate status | pass / fail / warn / blocked |
189
+
190
+ ---
191
+
192
+ ### Phase 3: Version Bump
193
+
194
+ **Objective**: Detect version file, determine bump type from commits or user input, calculate new version, update version file, verify update.
195
+
196
+ **Input**:
197
+
198
+ | Source | Description |
199
+ |--------|-------------|
200
+ | Phase 2 result | Gate passed (no critical issues) |
201
+ | Repository | package.json / pyproject.toml / VERSION |
202
+ | Phase detail | ~/.codex/skills/ship/phases/03-version-bump.md |
203
+
204
+ **Execution**:
205
+
206
+ ```
207
+ assign_task({
208
+ target: "ship-operator",
209
+ items: [{ type: "text", text: `## PHASE 3 TASK
210
+
211
+ Read phase detail: ~/.codex/skills/ship/phases/03-version-bump.md
212
+
213
+ Execute Phase 3 Version Bump:
214
+ 1. Detect version file (package.json > pyproject.toml > VERSION)
215
+ 2. Determine bump type from commit messages (patch/minor/major)
216
+ 3. For major bumps: ask user to confirm before proceeding
217
+ 4. Calculate new version
218
+ 5. Update version file
219
+ 6. Verify update
220
+ Output version change record JSON plus gate status.` }]
221
+ })
222
+ const phase3Result = wait_agent({ targets: ["ship-operator"], timeout_ms: 300000 })
223
+ ```
224
+
225
+ **Gate Decision**:
226
+
227
+ | Condition | Action |
228
+ |-----------|--------|
229
+ | Version file updated and verified (overall: "pass") | Fast-advance: assign Phase 4 task to ship-operator |
230
+ | Version file not found | NEEDS_CONTEXT — ask user which file to use; halt until answered |
231
+ | Version mismatch after update (overall: "fail") | BLOCKED — report mismatch, halt pipeline |
232
+ | User declines major bump | BLOCKED — halt, user must re-trigger with explicit bump type |
233
+ | Timeout | assign_task "Finalize current work", re-wait 120s |
234
+
235
+ **Output**:
236
+
237
+ | Artifact | Description |
238
+ |----------|-------------|
239
+ | Version change record JSON | version_file, previous_version, new_version, bump_type, bump_source |
240
+ | Gate status | pass / fail / needs_context / blocked |
241
+
242
+ ---
243
+
244
+ ### Phase 4: Changelog & Commit
245
+
246
+ **Objective**: Parse git log into grouped changelog entry, update CHANGELOG.md, create release commit, push branch to remote.
247
+
248
+ **Input**:
249
+
250
+ | Source | Description |
251
+ |--------|-------------|
252
+ | Phase 3 result | new_version, version_file, bump_type |
253
+ | Repository | Git history since last tag |
254
+ | Phase detail | ~/.codex/skills/ship/phases/04-changelog-commit.md |
255
+
256
+ **Execution**:
257
+
258
+ ```
259
+ assign_task({
260
+ target: "ship-operator",
261
+ items: [{ type: "text", text: `## PHASE 4 TASK
262
+
263
+ Read phase detail: ~/.codex/skills/ship/phases/04-changelog-commit.md
264
+
265
+ New version: <new_version>
266
+ Version file: <version_file>
267
+
268
+ Execute Phase 4 Changelog & Commit:
269
+ 1. Gather commits since last tag
270
+ 2. Group by conventional commit type
271
+ 3. Format changelog entry
272
+ 4. Update or create CHANGELOG.md
273
+ 5. Create release commit (chore: bump version to <new_version>)
274
+ 6. Push branch to remote
275
+ Output commit record JSON plus gate status.` }]
276
+ })
277
+ const phase4Result = wait_agent({ targets: ["ship-operator"], timeout_ms: 300000 })
278
+ ```
279
+
280
+ **Gate Decision**:
281
+
282
+ | Condition | Action |
283
+ |-----------|--------|
284
+ | Push succeeded (overall: "pass") | Fast-advance: assign Phase 5 task to ship-operator |
285
+ | Push rejected (non-fast-forward) | BLOCKED — report error, suggest `git pull --rebase` |
286
+ | Permission denied | BLOCKED — report error, advise check remote access |
287
+ | No remote configured | BLOCKED — report error, suggest `git remote add` |
288
+ | Timeout | assign_task "Finalize current work", re-wait 120s |
289
+
290
+ **Output**:
291
+
292
+ | Artifact | Description |
293
+ |----------|-------------|
294
+ | Commit record JSON | changelog_entry, commit_sha, commit_message, pushed_to |
295
+ | Gate status | pass / fail / blocked |
296
+
297
+ ---
298
+
299
+ ### Phase 5: PR Creation
300
+
301
+ **Objective**: Extract issue references from commits, build PR title and body, create PR via `gh pr create`, capture PR URL.
302
+
303
+ **Input**:
304
+
305
+ | Source | Description |
306
+ |--------|-------------|
307
+ | Phase 4 result | commit_sha, new_version, previous_version, bump_type |
308
+ | Phase 2 result | merge_base (for change_summary) |
309
+ | Repository | Git history, remote |
310
+ | Phase detail | ~/.codex/skills/ship/phases/05-pr-creation.md |
311
+
312
+ **Execution**:
313
+
314
+ ```
315
+ assign_task({
316
+ target: "ship-operator",
317
+ items: [{ type: "text", text: `## PHASE 5 TASK
318
+
319
+ Read phase detail: ~/.codex/skills/ship/phases/05-pr-creation.md
320
+
321
+ New version: <new_version>
322
+ Previous version: <previous_version>
323
+ Bump type: <bump_type>
324
+ Merge base: <merge_base>
325
+ Commit SHA: <commit_sha>
326
+
327
+ Execute Phase 5 PR Creation:
328
+ 1. Extract issue references from commits
329
+ 2. Determine target branch
330
+ 3. Build PR title: "release: v<new_version>"
331
+ 4. Build PR body with all sections
332
+ 5. Create PR via gh pr create
333
+ 6. Capture and report PR URL
334
+ Output PR creation record JSON plus final completion status.` }]
335
+ })
336
+ const phase5Result = wait_agent({ targets: ["ship-operator"], timeout_ms: 300000 })
337
+ ```
338
+
339
+ **Gate Decision**:
340
+
341
+ | Condition | Action |
342
+ |-----------|--------|
343
+ | PR created, URL returned (overall: "pass") | Pipeline complete — output DONE status |
344
+ | PR created with review warnings | Pipeline complete — output DONE_WITH_CONCERNS |
345
+ | gh CLI not available | BLOCKED — report error, advise `gh auth login` |
346
+ | PR creation fails | BLOCKED — report error details, halt |
347
+ | Timeout | assign_task "Finalize current work", re-wait 120s |
348
+
349
+ **Output**:
350
+
351
+ | Artifact | Description |
352
+ |----------|-------------|
353
+ | PR record JSON | pr_url, pr_title, target_branch, source_branch, linked_issues |
354
+ | Final completion status | DONE / DONE_WITH_CONCERNS / BLOCKED |
355
+
356
+ ---
357
+
358
+ ## Lifecycle Management
359
+
360
+ ### Timeout Protocol
361
+
362
+ | Phase | Default Timeout | On Timeout |
363
+ |-------|-----------------|------------|
364
+ | Phase 1: Pre-Flight | 300000 ms (5 min) | assign_task "Finalize current work", re-wait 120s |
365
+ | Phase 2: Code Review | 600000 ms (10 min) | assign_task "Finalize current work", re-wait 120s |
366
+ | Phase 3: Version Bump | 300000 ms (5 min) | assign_task "Finalize current work", re-wait 120s |
367
+ | Phase 4: Changelog & Commit | 300000 ms (5 min) | assign_task "Finalize current work", re-wait 120s |
368
+ | Phase 5: PR Creation | 300000 ms (5 min) | assign_task "Finalize current work", re-wait 120s |
369
+
370
+ ### Cleanup Protocol
371
+
372
+ After Phase 5 completes (or on any terminal BLOCKED halt), close ship-operator.
373
+
374
+ ```
375
+ close_agent({ target: "ship-operator" })
376
+ ```
377
+
378
+ ### Agent Health Check
379
+
380
+ ```
381
+ const remaining = list_agents({})
382
+ if (remaining.length > 0) {
383
+ remaining.forEach(agent => close_agent({ target: agent.id }))
384
+ }
385
+ ```
386
+
387
+ ---
388
+
389
+ ## Error Handling
390
+
391
+ | Scenario | Resolution |
392
+ |----------|------------|
393
+ | Agent timeout (first) | assign_task with "Finalize current work and output results" + re-wait 120s |
394
+ | Agent timeout (second) | Log error, close_agent({ target: "ship-operator" }), report partial results |
395
+ | Gate fail — any phase | Log BLOCKED status with phase name and failure detail, close_agent, halt |
396
+ | NEEDS_CONTEXT | Pause pipeline, surface question to user, resume with assign_task on answer |
397
+ | send_message ignored | Escalate to assign_task |
398
+ | Inline subagent timeout | ship-operator handles internally; continue with warn if review failed |
399
+ | User cancellation | close_agent({ target: "ship-operator" }), report current pipeline state |
400
+ | Fork from closed agent | Not applicable (single agent, no forking) |
401
+
402
+ ---
403
+
404
+ ## Output Format
405
+
406
+ ```
407
+ ## Summary
408
+ - One-sentence completion status (DONE / DONE_WITH_CONCERNS / BLOCKED)
409
+
410
+ ## Results
411
+ - Phase 1 Pre-Flight: pass/fail
412
+ - Phase 2 Code Review: pass/warn/fail
413
+ - Phase 3 Version Bump: <previous> -> <new> (<bump_type>)
414
+ - Phase 4 Changelog & Commit: commit <sha> pushed to <remote/branch>
415
+ - Phase 5 PR Creation: <pr_url>
416
+
417
+ ## Artifacts
418
+ - CHANGELOG.md (updated)
419
+ - <version_file> (version bumped to <new_version>)
420
+ - Release commit: <sha>
421
+ - PR: <pr_url>
422
+
423
+ ## Next Steps (Optional)
424
+ 1. Review and merge the PR
425
+ 2. Tag the release after merge
426
+ ```
@@ -0,0 +1,198 @@
1
+ # Phase 1: Pre-Flight Checks
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
+ Validate that the repository is in a shippable state before proceeding with the release pipeline.
6
+
7
+ ## Objective
8
+
9
+ - Confirm working tree is clean (no uncommitted changes)
10
+ - Validate current branch is appropriate for release
11
+ - Run test suite and confirm all tests pass
12
+ - Verify build succeeds
13
+
14
+ ## Input
15
+
16
+ | Source | Required | Description |
17
+ |--------|----------|-------------|
18
+ | Repository working directory | Yes | Git repo with working tree |
19
+ | package.json / pyproject.toml / Makefile | No | Used for test and build detection |
20
+
21
+ ## Execution Steps
22
+
23
+ ### Step 1: Git Clean Check
24
+
25
+ Run `git status --porcelain` and evaluate output.
26
+
27
+ **Decision Table**:
28
+
29
+ | Condition | Action |
30
+ |-----------|--------|
31
+ | Output is empty | PASS — working tree is clean |
32
+ | Output is non-empty | FAIL — working tree is dirty; report dirty files, suggest `git stash` or `git commit` |
33
+
34
+ ```bash
35
+ git_status=$(git status --porcelain)
36
+ if [ -n "$git_status" ]; then
37
+ echo "FAIL: Working tree is dirty"
38
+ echo "$git_status"
39
+ # Gate: BLOCKED — commit or stash changes first
40
+ else
41
+ echo "PASS: Working tree is clean"
42
+ fi
43
+ ```
44
+
45
+ **Pass condition**: `git status --porcelain` produces empty output.
46
+ **On failure**: Report dirty files and suggest `git stash` or `git commit`.
47
+
48
+ ---
49
+
50
+ ### Step 2: Branch Validation
51
+
52
+ Run `git branch --show-current` and evaluate.
53
+
54
+ **Decision Table**:
55
+
56
+ | Condition | Action |
57
+ |-----------|--------|
58
+ | Branch is not main or master | PASS — proceed |
59
+ | Branch is main or master | WARN — ask user to confirm direct-to-main/master release before proceeding |
60
+ | User confirms direct release | PASS with warning noted |
61
+ | User declines | BLOCKED — halt pipeline |
62
+
63
+ ```bash
64
+ current_branch=$(git branch --show-current)
65
+ if [ "$current_branch" = "main" ] || [ "$current_branch" = "master" ]; then
66
+ echo "WARN: Currently on $current_branch — direct push to main/master is risky"
67
+ # Ask user for confirmation before proceeding
68
+ else
69
+ echo "PASS: On branch $current_branch"
70
+ fi
71
+ ```
72
+
73
+ **Pass condition**: Not on main/master, OR user explicitly confirms direct-to-main release.
74
+ **On warning**: Ask user to confirm they intend to release from main/master directly.
75
+
76
+ ---
77
+
78
+ ### Step 3: Test Suite Execution
79
+
80
+ Detect project type and run appropriate test command.
81
+
82
+ **Decision Table**:
83
+
84
+ | Condition | Action |
85
+ |-----------|--------|
86
+ | package.json with "test" script exists | Run `npm test` |
87
+ | pytest available and tests/ or test/ directory exists | Run `pytest` |
88
+ | pyproject.toml with pytest listed exists | Run `pytest` |
89
+ | No test suite detected | WARN and continue (skip check) |
90
+ | Test command exits code 0 | PASS |
91
+ | Test command exits non-zero | FAIL — report test failures, halt pipeline |
92
+
93
+ ```bash
94
+ # Detection priority:
95
+ # 1. package.json with "test" script → npm test
96
+ # 2. pytest available and tests exist → pytest
97
+ # 3. No tests found → WARN and continue
98
+
99
+ if [ -f "package.json" ] && grep -q '"test"' package.json; then
100
+ npm test
101
+ elif command -v pytest &>/dev/null && [ -d "tests" -o -d "test" ]; then
102
+ pytest
103
+ elif [ -f "pyproject.toml" ] && grep -q 'pytest' pyproject.toml; then
104
+ pytest
105
+ else
106
+ echo "WARN: No test suite detected — skipping test check"
107
+ fi
108
+ ```
109
+
110
+ **Pass condition**: Test command exits with code 0, or no tests detected (warn).
111
+ **On failure**: Report test failures and stop the pipeline.
112
+
113
+ ---
114
+
115
+ ### Step 4: Build Verification
116
+
117
+ Detect project build step and run it.
118
+
119
+ **Decision Table**:
120
+
121
+ | Condition | Action |
122
+ |-----------|--------|
123
+ | package.json with "build" script exists | Run `npm run build` |
124
+ | pyproject.toml exists and python build module available | Run `python -m build` |
125
+ | Makefile with build target exists | Run `make build` |
126
+ | No build step detected | INFO — skip (not all projects need a build), PASS |
127
+ | Build command exits code 0 | PASS |
128
+ | Build command exits non-zero | FAIL — report build errors, halt pipeline |
129
+
130
+ ```bash
131
+ # Detection priority:
132
+ # 1. package.json with "build" script → npm run build
133
+ # 2. pyproject.toml → python -m build (if build module available)
134
+ # 3. Makefile with build target → make build
135
+ # 4. No build step → PASS (not all projects need a build)
136
+
137
+ if [ -f "package.json" ] && grep -q '"build"' package.json; then
138
+ npm run build
139
+ elif [ -f "pyproject.toml" ] && python -m build --help &>/dev/null; then
140
+ python -m build
141
+ elif [ -f "Makefile" ] && grep -q '^build:' Makefile; then
142
+ make build
143
+ else
144
+ echo "INFO: No build step detected — skipping build check"
145
+ fi
146
+ ```
147
+
148
+ **Pass condition**: Build command exits with code 0, or no build step detected.
149
+ **On failure**: Report build errors and stop the pipeline.
150
+
151
+ ---
152
+
153
+ ## Output
154
+
155
+ | Artifact | Format | Description |
156
+ |----------|--------|-------------|
157
+ | preflight-report | JSON | Pass/fail per check, current branch, blockers list |
158
+
159
+ ```json
160
+ {
161
+ "phase": "preflight",
162
+ "timestamp": "ISO-8601",
163
+ "checks": {
164
+ "git_clean": { "status": "pass|fail", "details": "" },
165
+ "branch": { "status": "pass|warn", "current": "branch-name", "details": "" },
166
+ "tests": { "status": "pass|fail|skip", "details": "" },
167
+ "build": { "status": "pass|fail|skip", "details": "" }
168
+ },
169
+ "overall": "pass|fail",
170
+ "blockers": []
171
+ }
172
+ ```
173
+
174
+ ## Success Criteria
175
+
176
+ | Criterion | Validation Method |
177
+ |-----------|-------------------|
178
+ | Git working tree is clean | `git status --porcelain` returns empty |
179
+ | Branch is non-main or user confirmed | Branch check + optional user confirmation |
180
+ | Tests pass or skipped with warning | Test command exit code 0, or skip with WARN |
181
+ | Build passes or skipped with info | Build command exit code 0, or skip with INFO |
182
+ | Overall gate is "pass" | All checks produce pass/warn/skip (no fail) |
183
+
184
+ ## Error Handling
185
+
186
+ | Scenario | Resolution |
187
+ |----------|------------|
188
+ | Dirty working tree | BLOCKED — list dirty files, suggest `git stash` or `git commit`, halt |
189
+ | Tests fail | BLOCKED — report test output, halt pipeline |
190
+ | Build fails | BLOCKED — report build output, halt pipeline |
191
+ | git command not found | BLOCKED — report environment error |
192
+ | No version file or project type detected | WARN — continue, version detection deferred to Phase 3 |
193
+
194
+ ## Next Phase
195
+
196
+ -> [Phase 2: Code Review](02-code-review.md)
197
+
198
+ If any check fails (overall: "fail"), report BLOCKED status with the preflight report. Do not proceed.