@iowarp/clio-coder 0.4.2 → 0.4.4

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 (523) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/CONTRIBUTING.md +86 -19
  3. package/README.md +35 -6
  4. package/dist/{acp-TMDQZDIG.js → acp-WNAYYF4F.js} +12 -13
  5. package/dist/{agents-5N5NG3XG.js → agents-3OKXHLOI.js} +60 -57
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-Z5CCBXKQ.js → auth-VKNNMGPU.js} +21 -19
  8. package/dist/{builtins-K6TNDT24.js → builtins-WGALA46I.js} +9 -4
  9. package/dist/{chunk-XE3PCIXH.js → chunk-23L32XTI.js} +12 -9
  10. package/dist/{chunk-I64IFBLB.js → chunk-25QBEXRS.js} +18 -11
  11. package/dist/{chunk-CDNVLKUX.js → chunk-26QSH3EJ.js} +13 -7
  12. package/dist/{chunk-QQLGQY2A.js → chunk-2ASED4PZ.js} +22 -22
  13. package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
  14. package/dist/chunk-2DSOYNFC.js +108 -0
  15. package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
  16. package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
  17. package/dist/{chunk-O3YUNJZ2.js → chunk-2ZSONWVL.js} +82 -25
  18. package/dist/{chunk-2NHR3NAY.js → chunk-36CT5VVL.js} +331 -42
  19. package/dist/{chunk-2X4RYJTJ.js → chunk-3GY4F45V.js} +3 -3
  20. package/dist/{chunk-ZW55JB7N.js → chunk-3ODX73FK.js} +4 -6
  21. package/dist/{chunk-PBP4B7XR.js → chunk-3UNOLWNZ.js} +3 -3
  22. package/dist/{chunk-4JDLP6ZS.js → chunk-3UUXNFEX.js} +14 -10
  23. package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
  24. package/dist/{chunk-ZW4HH5JJ.js → chunk-4M6Z5QVF.js} +6 -6
  25. package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
  26. package/dist/{chunk-M2DAX4F6.js → chunk-4WR7VSYB.js} +2 -2
  27. package/dist/{chunk-FSP7CMNU.js → chunk-54X7T7DK.js} +61 -6
  28. package/dist/{chunk-54ODD65L.js → chunk-5636DCO5.js} +4 -4
  29. package/dist/chunk-57XXR6DR.js +3763 -0
  30. package/dist/{chunk-3KIPBMUA.js → chunk-5ICU3EUH.js} +2 -2
  31. package/dist/{chunk-77QIVUZB.js → chunk-5MEZN6CB.js} +4 -4
  32. package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
  33. package/dist/{chunk-YJISEZKC.js → chunk-5TUB6SLS.js} +6 -6
  34. package/dist/{chunk-IMXMHHMQ.js → chunk-6OSVSQL5.js} +341 -57
  35. package/dist/{chunk-Q4XWMHX6.js → chunk-6PAZTBPA.js} +14 -2
  36. package/dist/{chunk-FVDGR2ZL.js → chunk-6Q3CYFD3.js} +112 -39
  37. package/dist/{chunk-IDNA72AH.js → chunk-6QOTUPRG.js} +155 -36
  38. package/dist/{chunk-X7IARSHT.js → chunk-6UINWWS6.js} +16 -10
  39. package/dist/{chunk-CYZW7JHJ.js → chunk-72YIHOZQ.js} +9 -9
  40. package/dist/{chunk-IKSLQ4XV.js → chunk-75W7L2E2.js} +752 -861
  41. package/dist/{chunk-CRFOIAX3.js → chunk-7UGL4MB5.js} +6 -6
  42. package/dist/{chunk-HIICAHCJ.js → chunk-AUPNRN7C.js} +2 -2
  43. package/dist/{chunk-7BHIY2MW.js → chunk-BJVFZO5U.js} +8 -50
  44. package/dist/{chunk-B74PXLU7.js → chunk-CUSRQKPU.js} +65 -3
  45. package/dist/chunk-DQOVN6KV.js +386 -0
  46. package/dist/{chunk-E7GT7O5N.js → chunk-DT3LWJOB.js} +7 -4
  47. package/dist/chunk-DXKJURES.js +671 -0
  48. package/dist/{chunk-JBCS7CRR.js → chunk-EL24TAU4.js} +10 -10
  49. package/dist/{chunk-TPEQIQIE.js → chunk-ELWDPP3Y.js} +8 -8
  50. package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
  51. package/dist/chunk-EXLD33WO.js +381 -0
  52. package/dist/chunk-FEAXX7B6.js +101 -0
  53. package/dist/{chunk-RLYRBIYQ.js → chunk-FFUPXJC4.js} +90 -331
  54. package/dist/{chunk-5PFYMY2V.js → chunk-FTMGRKEF.js} +2 -2
  55. package/dist/{chunk-34BHNEE3.js → chunk-GHS5EBTQ.js} +58 -7
  56. package/dist/{chunk-DYHAXKHD.js → chunk-GWZNEVM2.js} +12 -8
  57. package/dist/chunk-GX5WYQO4.js +59 -0
  58. package/dist/chunk-GYV6VZOC.js +26 -0
  59. package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
  60. package/dist/chunk-I2DWJ4GM.js +390 -0
  61. package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
  62. package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
  63. package/dist/{chunk-XQRY4DTA.js → chunk-IGLP3ODT.js} +10 -10
  64. package/dist/chunk-IRXAATOX.js +539 -0
  65. package/dist/chunk-IXIY2H4R.js +44 -0
  66. package/dist/{chunk-SSEYRH53.js → chunk-IZXGRF7P.js} +92 -147
  67. package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
  68. package/dist/{chunk-JWJGP5DQ.js → chunk-JEIYHLOR.js} +7 -7
  69. package/dist/{chunk-F2I26BDK.js → chunk-JQLNNIKT.js} +4 -4
  70. package/dist/{chunk-BYMNWQ7O.js → chunk-JSD46VO2.js} +315 -63
  71. package/dist/{chunk-AK5XEFVZ.js → chunk-JT2RFCC5.js} +64 -14
  72. package/dist/{chunk-MCMZMDAC.js → chunk-K6T2ZAMZ.js} +168 -6
  73. package/dist/{chunk-PGF63K6I.js → chunk-KFV5L5SK.js} +73 -4
  74. package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
  75. package/dist/{chunk-PJX3WQUQ.js → chunk-LLXSDWXS.js} +3 -3
  76. package/dist/{chunk-DZAW46HP.js → chunk-LTIKRKFL.js} +3 -3
  77. package/dist/{chunk-DZEK6CJN.js → chunk-N56KALIC.js} +21 -21
  78. package/dist/{chunk-B7HM5Z7T.js → chunk-NAI6ZFCY.js} +9 -5
  79. package/dist/{chunk-I66ZTYNP.js → chunk-NRO2BJRH.js} +2656 -2213
  80. package/dist/{chunk-ZGNYYXQ6.js → chunk-NXIMQY5W.js} +3 -3
  81. package/dist/{chunk-IKOZFYBN.js → chunk-NXYCB2VD.js} +149 -106
  82. package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
  83. package/dist/{chunk-462T4EGZ.js → chunk-O5CVSAG5.js} +2 -2
  84. package/dist/chunk-ODGTEFFI.js +50 -0
  85. package/dist/{chunk-3F7VUY77.js → chunk-OEJSLEPW.js} +2 -2
  86. package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
  87. package/dist/{chunk-5KW52TEP.js → chunk-Q4WO54TA.js} +132 -77
  88. package/dist/{chunk-W6NIE6OW.js → chunk-QUFRYSWI.js} +13 -7
  89. package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
  90. package/dist/chunk-R6Q67RJH.js +134 -0
  91. package/dist/{chunk-W4YEMFBX.js → chunk-RAY4OVGZ.js} +3 -3
  92. package/dist/{chunk-ZNT2M6TG.js → chunk-RQCKCSRL.js} +17 -17
  93. package/dist/{chunk-LJID3DYZ.js → chunk-RXTN6AKH.js} +3 -3
  94. package/dist/{chunk-P75RZCJW.js → chunk-RZDWV63N.js} +3 -3
  95. package/dist/{chunk-UH632ZYL.js → chunk-S6PYF2XF.js} +2 -2
  96. package/dist/{chunk-HJWWJ6IL.js → chunk-TOIVGRUX.js} +17 -5
  97. package/dist/{chunk-HLAFFSEK.js → chunk-TQAHXW6Y.js} +2 -2
  98. package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
  99. package/dist/{chunk-2HFQNRV3.js → chunk-UEPWCCTY.js} +12 -12
  100. package/dist/chunk-UOIZ7DA4.js +41 -0
  101. package/dist/{chunk-UH347SHR.js → chunk-USR47QNF.js} +11 -11
  102. package/dist/{chunk-AZ4WMN4W.js → chunk-V6HJFQZE.js} +2 -2
  103. package/dist/chunk-V76WTFTW.js +318 -0
  104. package/dist/{chunk-NMJXSHBJ.js → chunk-W54I7H25.js} +2 -2
  105. package/dist/{chunk-KPXDY6QF.js → chunk-XRZT5WY5.js} +2 -2
  106. package/dist/{chunk-UBRFI4HS.js → chunk-XULDXHTN.js} +142 -50
  107. package/dist/chunk-XXYSBZIQ.js +283 -0
  108. package/dist/{chunk-HKMD33FO.js → chunk-Y55JBDO5.js} +405 -122
  109. package/dist/{chunk-XOXV5GKE.js → chunk-YD5GIKET.js} +17 -8
  110. package/dist/{chunk-XGDPUNND.js → chunk-YECAMM3D.js} +2 -2
  111. package/dist/{chunk-BO7Y52RY.js → chunk-YNFKXPEC.js} +7 -7
  112. package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
  113. package/dist/{chunk-M2WXEHER.js → chunk-ZA4VCIGV.js} +2 -2
  114. package/dist/cli/index.js +42 -40
  115. package/dist/{clio-7VB377CC.js → clio-QLICPCF5.js} +7 -7
  116. package/dist/{code-nav-YVLCYA7V.js → code-nav-IJR2DBPR.js} +9 -9
  117. package/dist/{components-UBWCQSRW.js → components-2TGAI2RC.js} +5 -6
  118. package/dist/{config-4HVOS65E.js → config-IUA6OYNS.js} +88 -81
  119. package/dist/{configure-PIWO7B24.js → configure-VEPX4NMX.js} +26 -25
  120. package/dist/{context-KQYIWPWT.js → context-2DKHWH2T.js} +60 -45
  121. package/dist/{context-IYEHL3WQ.js → context-4MPR7WKB.js} +78 -69
  122. package/dist/{context-N6ZE3LGJ.js → context-BOYF5EJM.js} +15 -11
  123. package/dist/{context-clear-G4OGZJDS.js → context-clear-S4ZJCQUX.js} +73 -65
  124. package/dist/context-map-COB37XXN.js +505 -0
  125. package/dist/{context-working-set-BWLF6LJP.js → context-working-set-3I3FYX6Y.js} +18 -17
  126. package/dist/detail-A7JAVSIG.js +98 -0
  127. package/dist/{dispatch-runner-2QQAITS3.js → dispatch-runner-RJ5I2F2O.js} +99 -75
  128. package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
  129. package/dist/{doctor-LHBD36VU.js → doctor-DKICC2SN.js} +71 -48
  130. package/dist/{eval-C45FYRJ6.js → eval-OQOQUDHK.js} +308 -146
  131. package/dist/{eval-inventory-6DEJPLBF.js → eval-inventory-Y6QRFOH5.js} +4 -4
  132. package/dist/{evidence-6SHONYAF.js → evidence-4DQ25GUQ.js} +79 -175
  133. package/dist/evidence-4F5USFKH.js +208 -0
  134. package/dist/{evolve-KRKMV72X.js → evolve-GSS52E5J.js} +71 -67
  135. package/dist/{extensions-KPZ2UHBB.js → extensions-G7MFLYHT.js} +8 -9
  136. package/dist/{fleet-IVTCKDHT.js → fleet-Q37YHHAQ.js} +126 -118
  137. package/dist/{fleet-commands-EDWL3IT7.js → fleet-commands-G7E4N7SM.js} +16 -13
  138. package/dist/{fleet-decisions-YP3YEFGK.js → fleet-decisions-O7M6QBA2.js} +9 -8
  139. package/dist/{fleet-graph-ZFWKHY2M.js → fleet-graph-TOUBW6OW.js} +21 -20
  140. package/dist/{fleet-inspect-FVUNCBML.js → fleet-inspect-SW33JJNI.js} +65 -60
  141. package/dist/{fleet-preflight-UN5XED4R.js → fleet-preflight-CV2655TW.js} +4 -5
  142. package/dist/{fleet-validate-XOWC4HSX.js → fleet-validate-KESZX2YH.js} +25 -24
  143. package/dist/{fleet-verify-UN3SODEL.js → fleet-verify-UQPMTVE3.js} +66 -61
  144. package/dist/{fleet-view-TWHJKCN6.js → fleet-view-MN2VG4MR.js} +65 -60
  145. package/dist/{init-T2QORQ3Y.js → init-PXEXQSBF.js} +90 -82
  146. package/dist/{interop-IN5I2A66.js → interop-ZG5T62U3.js} +12 -13
  147. package/dist/inventory-C26CFDRR.js +101 -0
  148. package/dist/{library-LSCATDLZ.js → library-B2W4N74O.js} +29 -29
  149. package/dist/{memory-HYOKAGGJ.js → memory-YCANYS5A.js} +73 -69
  150. package/dist/{models-2GPMFYCM.js → models-GERTU3YI.js} +51 -47
  151. package/dist/{monitor-E4ASVUJH.js → monitor-CPNIUULB.js} +74 -67
  152. package/dist/{orchestrator-DDMPR3PY.js → orchestrator-J4BSH4WQ.js} +1288 -1606
  153. package/dist/{panes-E3RUXOW5.js → panes-BOHAEGYC.js} +4 -4
  154. package/dist/{panes-IXKLOKA2.js → panes-NXSLDQZ2.js} +10 -11
  155. package/dist/{paths-L7LGY6RN.js → paths-VSUWNC22.js} +6 -7
  156. package/dist/reset-TNWTB5LU.js +343 -0
  157. package/dist/{resources-OTRSN34L.js → resources-4PXNMD5G.js} +29 -22
  158. package/dist/{run-5DEYH5QK.js → run-D6XJ34CN.js} +132 -132
  159. package/dist/{share-IHWTLO3M.js → share-2NWMJJEE.js} +27 -27
  160. package/dist/{skills-IYMXMKW4.js → skills-KR7WON5G.js} +40 -33
  161. package/dist/{skills-eval-DROHSJAR.js → skills-eval-O2ZNOLDS.js} +81 -77
  162. package/dist/{skills-inventory-D7X4L4ZX.js → skills-inventory-ZZOUBK7O.js} +23 -22
  163. package/dist/{slash-commands-QBM7UZ3B.js → slash-commands-ZXPJD64J.js} +47 -37
  164. package/dist/{steer-Z5DO23FJ.js → steer-XA25PSCS.js} +4 -4
  165. package/dist/{support-U7QOWY26.js → support-7EMVWYG2.js} +6 -6
  166. package/dist/{targets-P2FUC4IL.js → targets-OMH2XCSN.js} +50 -49
  167. package/dist/tasks-IPAGMEIX.js +36 -0
  168. package/dist/{terminal-lease-YREJ3JX2.js → terminal-lease-C2J3JYRE.js} +4 -4
  169. package/dist/{tools-5B7RO6MV.js → tools-EFFEAIDP.js} +8 -9
  170. package/dist/{trace-YMGMUM6A.js → trace-FXMXUZUF.js} +7 -7
  171. package/dist/uninstall-HALS6BLF.js +407 -0
  172. package/dist/upgrade-MS72RJEP.js +306 -0
  173. package/dist/{usage-ME5MPXGX.js → usage-NHG6MCJM.js} +162 -108
  174. package/dist/{verifiers-BVZ7IWOO.js → verifiers-7AUNVXDY.js} +155 -22
  175. package/dist/{verify-5K7ZKQFC.js → verify-FWYGPKMR.js} +14 -12
  176. package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
  177. package/dist/{wiki-generate-F5W5QTYY.js → wiki-generate-743CIGJW.js} +99 -90
  178. package/dist/{with-panes-BYOJCLAM.js → with-panes-BDQEWBRT.js} +10 -10
  179. package/dist/worker/entry.js +72 -68
  180. package/docs/README.md +3 -2
  181. package/docs/architecture/acp.md +17 -0
  182. package/docs/architecture/artifact-placement.md +1 -0
  183. package/docs/architecture/artifact-versions.md +2 -2
  184. package/docs/architecture/context-engine.md +4 -0
  185. package/docs/architecture/dispatch-typed-intent.md +1 -1
  186. package/docs/architecture/evidence-and-memory.md +1 -1
  187. package/docs/architecture/middleware-and-components.md +1 -1
  188. package/docs/architecture/model-catalog.md +21 -10
  189. package/docs/architecture/observability.md +19 -2
  190. package/docs/architecture/prompt-envelope-and-tools.md +17 -5
  191. package/docs/architecture/provider-adapter-cookbook.md +63 -0
  192. package/docs/architecture/safety-model.md +25 -22
  193. package/docs/architecture/tui-design.md +1 -1
  194. package/docs/guide/built-in-agents.md +25 -11
  195. package/docs/guide/commands-and-modes.md +18 -3
  196. package/docs/guide/configuration-and-targets.md +100 -10
  197. package/docs/guide/configuration-reference.md +17 -7
  198. package/docs/guide/environment-variables.md +4 -2
  199. package/docs/guide/installation-and-lifecycle.md +37 -4
  200. package/docs/guide/proactive-memory.md +66 -55
  201. package/docs/guide/skills-marketplace.md +18 -0
  202. package/docs/guide/tool-usage.md +78 -3
  203. package/docs/history/config-knobs-audit.md +2 -2
  204. package/docs/process/development-pipeline.md +40 -2
  205. package/docs/process/eval-runner.md +67 -3
  206. package/docs/process/git-commit-provenance.md +15 -0
  207. package/docs/process/release-cut-checklist.md +207 -0
  208. package/docs/process/scientific-validation.md +18 -17
  209. package/evals/behavioral-machinery-support.ts +1 -0
  210. package/evals/behavioral-machinery.yaml +1 -1
  211. package/evals/behavioral-model.yaml +3 -2
  212. package/package.json +2 -2
  213. package/skills/README.md +7 -5
  214. package/skills/coding/ast-grep/SKILL.md +101 -30
  215. package/skills/coding/ast-grep/evals.md +26 -0
  216. package/skills/coding/coding-standards/SKILL.md +47 -2
  217. package/skills/coding/coding-standards/evals.md +23 -0
  218. package/skills/coding/prototype/SKILL.md +87 -28
  219. package/skills/coding/prototype/evals.md +19 -0
  220. package/skills/coding/tdd/SKILL.md +80 -53
  221. package/skills/coding/tdd/evals.md +20 -0
  222. package/skills/context/context-handoff/SKILL.md +43 -2
  223. package/skills/context/context-handoff/evals.md +44 -0
  224. package/skills/context/context-prime/SKILL.md +45 -15
  225. package/skills/context/context-prime/evals.md +45 -0
  226. package/skills/git/branch-closeout/SKILL.md +132 -0
  227. package/skills/git/branch-closeout/evals.md +133 -0
  228. package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
  229. package/skills/git/file-ticket/SKILL.md +77 -63
  230. package/skills/git/file-ticket/assets/issue-template.md +22 -0
  231. package/skills/git/file-ticket/evals.md +31 -26
  232. package/skills/git/file-ticket/references/issue-discovery.md +49 -0
  233. package/skills/git/fix-issue/SKILL.md +87 -64
  234. package/skills/git/fix-issue/evals.md +35 -31
  235. package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
  236. package/skills/git/resolve-merge-conflicts/SKILL.md +100 -51
  237. package/skills/git/resolve-merge-conflicts/evals.md +52 -25
  238. package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
  239. package/skills/git/ship/SKILL.md +103 -67
  240. package/skills/git/ship/assets/pr-template.md +21 -0
  241. package/skills/git/ship/evals.md +44 -28
  242. package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
  243. package/skills/git/worktree-create/SKILL.md +80 -50
  244. package/skills/git/worktree-create/evals.md +40 -33
  245. package/skills/git/worktree-create/references/worktree-setup.md +62 -66
  246. package/skills/git/worktree-merge/SKILL.md +112 -65
  247. package/skills/git/worktree-merge/evals.md +42 -34
  248. package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
  249. package/skills/planning/archify/SKILL.md +196 -0
  250. package/skills/planning/archify/evals.md +65 -0
  251. package/skills/planning/architecture/SKILL.md +61 -12
  252. package/skills/planning/architecture/evals.md +65 -0
  253. package/skills/planning/backlog/SKILL.md +130 -14
  254. package/skills/planning/backlog/evals.md +142 -0
  255. package/skills/planning/prd/SKILL.md +47 -6
  256. package/skills/planning/prd/evals.md +54 -0
  257. package/skills/planning/product-intent/SKILL.md +57 -2
  258. package/skills/planning/product-intent/evals.md +70 -0
  259. package/skills/planning/tech-spec/SKILL.md +53 -2
  260. package/skills/planning/tech-spec/evals.md +73 -0
  261. package/skills/registry.yaml +58 -50
  262. package/skills/remote.yaml +13 -0
  263. package/skills/research/arxiv-literature/SKILL.md +76 -18
  264. package/skills/research/arxiv-literature/evals.md +50 -0
  265. package/skills/research/experiment-protocol/SKILL.md +20 -1
  266. package/skills/research/experiment-protocol/evals.md +23 -0
  267. package/skills/research/scientific-debugging/SKILL.md +24 -1
  268. package/skills/research/scientific-debugging/evals.md +18 -0
  269. package/skills/research/scientific-modernization/SKILL.md +26 -1
  270. package/skills/research/scientific-modernization/evals.md +27 -0
  271. package/skills/skill-marketplace.json +63 -28
  272. package/skills/workflow/cut-it/SKILL.md +64 -5
  273. package/skills/workflow/cut-it/evals.md +101 -0
  274. package/skills/workflow/design-council/SKILL.md +112 -27
  275. package/skills/workflow/design-council/evals.md +161 -0
  276. package/skills/workflow/grill-me/SKILL.md +85 -10
  277. package/skills/workflow/grill-me/evals.md +153 -0
  278. package/skills/workflow/workflow-distiller/SKILL.md +76 -17
  279. package/skills/workflow/workflow-distiller/evals.md +118 -0
  280. package/src/cli/args.ts +0 -8
  281. package/src/cli/configure-interop.ts +105 -13
  282. package/src/cli/configure-oauth.ts +57 -0
  283. package/src/cli/configure-onboarding.ts +980 -0
  284. package/src/cli/configure-target.ts +594 -0
  285. package/src/cli/configure.ts +1084 -529
  286. package/src/cli/context-map.ts +114 -0
  287. package/src/cli/context.ts +4 -0
  288. package/src/cli/doctor-state-size.ts +1 -12
  289. package/src/cli/doctor-validation-contract.ts +28 -0
  290. package/src/cli/doctor.ts +5 -0
  291. package/src/cli/evidence-detail.ts +1 -75
  292. package/src/cli/evidence-inventory.ts +1 -167
  293. package/src/cli/index.ts +3 -0
  294. package/src/cli/lifecycle-presenter.ts +436 -0
  295. package/src/cli/models.ts +10 -2
  296. package/src/cli/modes/print.ts +5 -1
  297. package/src/cli/reset.ts +228 -106
  298. package/src/cli/run.ts +7 -4
  299. package/src/cli/select.ts +664 -0
  300. package/src/cli/skills.ts +9 -2
  301. package/src/cli/targets.ts +3 -0
  302. package/src/cli/tasks.ts +84 -0
  303. package/src/cli/uninstall.ts +233 -165
  304. package/src/cli/upgrade.ts +210 -150
  305. package/src/cli/usage.ts +92 -27
  306. package/src/cli/validate-model.ts +3 -3
  307. package/src/cli/verifiers.ts +147 -1
  308. package/src/cli/wiki-generate.ts +1 -0
  309. package/src/core/commit-attribution.ts +41 -1
  310. package/src/core/config.ts +56 -0
  311. package/src/core/external-diagnostic.ts +44 -0
  312. package/src/core/gateway-routing.ts +157 -0
  313. package/src/core/git-commit-attribution.ts +46 -3
  314. package/src/core/run-overrides.ts +0 -5
  315. package/src/core/safe-exec.ts +17 -2
  316. package/src/core/skill-activation.ts +92 -2
  317. package/src/core/tool-names.ts +5 -2
  318. package/src/domains/agents/builtins/architect.md +1 -1
  319. package/src/domains/agents/builtins/coder.md +1 -1
  320. package/src/domains/agents/builtins/documenter.md +1 -1
  321. package/src/domains/agents/builtins/git-master.md +1 -1
  322. package/src/domains/agents/builtins/provenance.md +7 -7
  323. package/src/domains/agents/builtins/tester.md +1 -1
  324. package/src/domains/agents/builtins/verifier.md +2 -2
  325. package/src/domains/agents/builtins/wiki-writer.md +4 -3
  326. package/src/domains/agents/builtins/world-knowledge.md +31 -0
  327. package/src/domains/agents/catalog.ts +1 -1
  328. package/src/domains/agents/result-contract.ts +70 -0
  329. package/src/domains/context/extension.ts +31 -7
  330. package/src/domains/context/refresh.ts +3 -0
  331. package/src/domains/context/wiki/frontmatter.ts +5 -2
  332. package/src/domains/context/wiki/generate.ts +6 -0
  333. package/src/domains/context/wiki/map-seed.ts +589 -0
  334. package/src/domains/context/wiki/plan.ts +2 -2
  335. package/src/domains/context/wiki/prompts.ts +43 -0
  336. package/src/domains/dispatch/active-route-planner.ts +4 -0
  337. package/src/domains/dispatch/admission.ts +29 -0
  338. package/src/domains/dispatch/agent-candidates.ts +10 -0
  339. package/src/domains/dispatch/budget-envelope.ts +86 -1
  340. package/src/domains/dispatch/capability-match.ts +1 -0
  341. package/src/domains/dispatch/capacity-lease.ts +17 -0
  342. package/src/domains/dispatch/code-step.ts +11 -4
  343. package/src/domains/dispatch/contract.ts +42 -8
  344. package/src/domains/dispatch/execution-scheduler.ts +2 -0
  345. package/src/domains/dispatch/extension.ts +184 -56
  346. package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
  347. package/src/domains/dispatch/fleet-run.ts +1 -0
  348. package/src/domains/dispatch/host-verification.ts +114 -13
  349. package/src/domains/dispatch/intent.ts +28 -18
  350. package/src/domains/dispatch/orphan-recovery.ts +2 -0
  351. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  352. package/src/domains/dispatch/reservation-store.ts +5 -3
  353. package/src/domains/dispatch/state.ts +15 -2
  354. package/src/domains/dispatch/types.ts +20 -2
  355. package/src/domains/dispatch/worker-model-metadata.ts +38 -0
  356. package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
  357. package/src/domains/eval/metrics/token-stream.ts +201 -31
  358. package/src/domains/eval/metrics/tracked.ts +40 -4
  359. package/src/domains/eval/runners/clio-run.ts +17 -11
  360. package/src/domains/eval/runners/context-index.ts +2 -7
  361. package/src/domains/eval/runners/context-init.ts +3 -6
  362. package/src/domains/eval/runners/external-command.ts +29 -11
  363. package/src/domains/eval/schema/suite.ts +28 -0
  364. package/src/domains/eval/schema/verdict.ts +2 -2
  365. package/src/domains/eval/suites/resolve.ts +13 -1
  366. package/src/domains/eval/suites/run.ts +24 -3
  367. package/src/domains/evidence/build.ts +102 -15
  368. package/src/domains/evidence/detail.ts +69 -0
  369. package/src/domains/evidence/eval.ts +13 -1
  370. package/src/domains/evidence/finish-contract-map.ts +5 -1
  371. package/src/domains/evidence/inventory.ts +167 -0
  372. package/src/domains/evidence/store.ts +16 -0
  373. package/src/domains/evidence/types.ts +12 -0
  374. package/src/domains/extensions/resources.ts +7 -0
  375. package/src/domains/interop/registry.ts +6 -2
  376. package/src/domains/interop/types.ts +4 -0
  377. package/src/domains/lifecycle/migrations/index.ts +4 -0
  378. package/src/domains/memory/task-memory-policy.ts +70 -26
  379. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  380. package/src/domains/middleware/index.ts +0 -1
  381. package/src/domains/middleware/marketplace-offer.ts +22 -35
  382. package/src/domains/middleware/memory-intervention.ts +127 -32
  383. package/src/domains/middleware/memory-step-endpoint.ts +3 -2
  384. package/src/domains/middleware/runtime.ts +7 -3
  385. package/src/domains/middleware/skills-reminder.ts +31 -2
  386. package/src/domains/mux/detect.ts +3 -6
  387. package/src/domains/observability/accountability.ts +15 -1
  388. package/src/domains/observability/compaction-usage.ts +118 -0
  389. package/src/domains/observability/contract.ts +52 -7
  390. package/src/domains/observability/cost.ts +1 -1
  391. package/src/domains/observability/evidence-index.ts +10 -0
  392. package/src/domains/observability/extension.ts +15 -6
  393. package/src/domains/observability/out-of-turn-usage.ts +52 -21
  394. package/src/domains/observability/projection.ts +394 -45
  395. package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
  396. package/src/domains/prompts/fragments/operating/contract.md +2 -0
  397. package/src/domains/prompts/fragments/wiki/page.md +8 -0
  398. package/src/domains/providers/contract.ts +4 -1
  399. package/src/domains/providers/extension.ts +40 -9
  400. package/src/domains/providers/model-capabilities.ts +9 -0
  401. package/src/domains/providers/model-discovery.ts +3 -4
  402. package/src/domains/providers/model-runtime-capabilities.ts +15 -5
  403. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +48 -26
  404. package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
  405. package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
  406. package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
  407. package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
  408. package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
  409. package/src/domains/providers/support.ts +11 -5
  410. package/src/domains/providers/target-model-cache.ts +25 -2
  411. package/src/domains/providers/types/capability-flags.ts +2 -0
  412. package/src/domains/providers/types/runtime-descriptor.ts +20 -1
  413. package/src/domains/providers/types/target-descriptor.ts +19 -0
  414. package/src/domains/resources/index.ts +3 -0
  415. package/src/domains/resources/skills/install.ts +72 -7
  416. package/src/domains/resources/skills/loader.ts +7 -0
  417. package/src/domains/resources/skills/marketplace.ts +63 -11
  418. package/src/domains/safety/action-classifier.ts +7 -0
  419. package/src/domains/safety/autonomy.ts +15 -0
  420. package/src/domains/safety/default-path-policy.ts +2 -0
  421. package/src/domains/safety/finish-contract-registration.ts +29 -14
  422. package/src/domains/safety/finish-contract.ts +252 -40
  423. package/src/domains/safety/index.ts +21 -1
  424. package/src/domains/safety/path-policy.ts +1 -1
  425. package/src/domains/safety/policy-engine.ts +60 -17
  426. package/src/domains/safety/protected-artifacts.ts +191 -88
  427. package/src/domains/safety/rigor.ts +53 -39
  428. package/src/domains/safety/run-effects.ts +2 -22
  429. package/src/domains/safety/skill-authority.ts +55 -0
  430. package/src/domains/safety/validation-contract.ts +388 -0
  431. package/src/domains/session/archive-readers.ts +10 -1
  432. package/src/domains/session/compaction/compact.ts +72 -22
  433. package/src/domains/session/decision-board.ts +101 -2
  434. package/src/domains/session/entries.ts +50 -7
  435. package/src/domains/session/extension.ts +4 -4
  436. package/src/domains/session/handoff.ts +2 -1
  437. package/src/domains/session/manager.ts +2 -3
  438. package/src/domains/session/task-board.ts +14 -1
  439. package/src/domains/session/tree/fork.ts +1 -2
  440. package/src/domains/session/tree/navigator.ts +1 -1
  441. package/src/domains/session/usage.ts +3 -3
  442. package/src/domains/user-tasks/acceptance.ts +56 -0
  443. package/src/domains/user-tasks/active-acceptance.ts +40 -0
  444. package/src/domains/user-tasks/store.ts +34 -3
  445. package/src/engine/acp/adapter.ts +24 -6
  446. package/src/engine/acp/server.ts +21 -4
  447. package/src/engine/acp/transport.ts +53 -8
  448. package/src/engine/acp/types.ts +4 -0
  449. package/src/engine/agent.ts +13 -3
  450. package/src/engine/ai.ts +26 -8
  451. package/src/engine/antigravity/subprocess-runtime.ts +386 -120
  452. package/src/engine/api-registry.ts +3 -0
  453. package/src/engine/apis/ollama-native.ts +15 -0
  454. package/src/engine/apis/openai-completions.ts +117 -14
  455. package/src/engine/claude/subprocess-runtime.ts +107 -60
  456. package/src/engine/external-subprocess.ts +122 -6
  457. package/src/entry/background-model-metadata.ts +18 -0
  458. package/src/entry/compaction-prompt.ts +57 -0
  459. package/src/entry/orchestrator.ts +416 -218
  460. package/src/entry/task-memory-lifecycle.ts +35 -0
  461. package/src/interactive/chat-loop-messages.ts +13 -4
  462. package/src/interactive/chat-loop.ts +65 -2
  463. package/src/interactive/chat-renderer.ts +1 -0
  464. package/src/interactive/cost-overlay.ts +26 -2
  465. package/src/interactive/dispatch-board.ts +46 -717
  466. package/src/interactive/fleet-run-preview.ts +2 -1
  467. package/src/interactive/interactive-application.ts +3 -2
  468. package/src/interactive/interactive-presentation.ts +55 -12
  469. package/src/interactive/interactive-slash-runtime.ts +4 -2
  470. package/src/interactive/oracle.ts +5 -2
  471. package/src/interactive/overlays/fleet-run-approval.ts +3 -2
  472. package/src/interactive/overlays/message-picker.ts +2 -2
  473. package/src/interactive/overlays/settings.ts +2 -2
  474. package/src/interactive/overlays/tree-selector.ts +2 -2
  475. package/src/interactive/renderers/branch-summary.ts +1 -1
  476. package/src/interactive/renderers/worker-entry.ts +32 -0
  477. package/src/interactive/slash-autocomplete.ts +4 -6
  478. package/src/interactive/slash-commands.ts +49 -45
  479. package/src/interactive/slash-spec.ts +28 -0
  480. package/src/interactive/theme/labels.ts +19 -13
  481. package/src/interactive/turn-context.ts +9 -5
  482. package/src/interactive/turn-recovery.ts +8 -0
  483. package/src/interactive/turn-runtime.ts +27 -11
  484. package/src/interactive/turn-state.ts +7 -0
  485. package/src/interactive/view/artifacts.ts +2 -0
  486. package/src/interactive/worker-receipts.ts +1 -0
  487. package/src/interactive/worker-stream.ts +13 -4
  488. package/src/tools/bootstrap.ts +4 -0
  489. package/src/tools/builtin-tool-catalog.ts +31 -0
  490. package/src/tools/compete-worktrees.ts +7 -1
  491. package/src/tools/context/index.ts +30 -9
  492. package/src/tools/core-bootstrap.ts +16 -0
  493. package/src/tools/decide.ts +136 -0
  494. package/src/tools/dispatch-admission.ts +21 -0
  495. package/src/tools/dispatch-arguments.ts +1 -0
  496. package/src/tools/dispatch-event-text.ts +10 -0
  497. package/src/tools/dispatch-plan.ts +6 -2
  498. package/src/tools/dispatch-runner.ts +27 -1
  499. package/src/tools/dispatch-types.ts +6 -0
  500. package/src/tools/evidence.ts +96 -0
  501. package/src/tools/limitation.ts +76 -0
  502. package/src/tools/policy.ts +9 -0
  503. package/src/tools/presentation.ts +3 -0
  504. package/src/tools/registry.ts +11 -5
  505. package/src/tools/result-shaping.ts +17 -5
  506. package/src/tools/task-worktree.ts +13 -3
  507. package/src/tools/tasks.ts +10 -1
  508. package/src/tools/verify/authoring.ts +170 -83
  509. package/src/tools/verify/catalog.ts +122 -5
  510. package/src/tools/verify/index.ts +2 -1
  511. package/src/tools/verify/numeric.ts +298 -0
  512. package/src/tools/verify/perf.ts +143 -0
  513. package/src/tools/verify/scripts.ts +229 -2
  514. package/src/tools/worker-evidence.ts +3 -1
  515. package/src/worker/spec-contract.ts +4 -0
  516. package/dist/chunk-2Z2IKEXI.js +0 -1554
  517. package/dist/chunk-RVG5JXAL.js +0 -41
  518. package/dist/chunk-T56WDKA5.js +0 -183
  519. package/dist/chunk-VN3SHNBN.js +0 -313
  520. package/dist/chunk-VPKWYKEY.js +0 -169
  521. package/dist/reset-OAQP3W4O.js +0 -230
  522. package/dist/uninstall-N34PCTGJ.js +0 -331
  523. package/dist/upgrade-PXK3S2YM.js +0 -325
@@ -1,22 +1,23 @@
1
1
  ---
2
2
  name: ship
3
- description: "Ships finished work: stages reviewed paths, writes one atomic conventional commit referencing the issue, then pushes and opens the PR only on explicit intent. Not for producing the change; use fix-issue."
3
+ description: "Ships finished work: writes one reviewed atomic commit, keeps maintainer branches local, or pushes a contributor branch to their fork and opens a PR only on explicit intent. Not for producing the change; use fix-issue."
4
4
  triggers:
5
5
  - ship this
6
6
  - commit this
7
7
  - commit and open the PR
8
8
  - push and open a pull request
9
9
  - get this up for review
10
- version: 0.2.0
10
+ version: 0.5.0
11
11
  license: Apache-2.0
12
+ compatibility: git >=2.30.0, gh CLI >=2.0.0 (required for pr mode), POSIX-compatible shell
12
13
  allowed-tools:
13
14
  - read
14
15
  - grep
15
16
  - ls
16
17
  - git
17
18
  - bash
19
+ - tasks
18
20
  - ask_user
19
- - artifact
20
21
  clio-coder:
21
22
  registry-id: iowarp/clio-coder
22
23
  source-url: https://github.com/iowarp/clio-coder/tree/main/skills/git/ship
@@ -32,67 +33,102 @@ clio-coder:
32
33
 
33
34
  # Ship
34
35
 
35
- Move finished, verified work out: one atomic commit, then push and PR.
36
- Two irreversibility gates govern the whole skill: never push with
37
- uncommitted changes in the tree, and never open a PR the user did not ask
38
- for. Invoking ship for "commit this" means commit only; push and PR
39
- require the user's explicit intent, stated or asked.
40
-
41
- ## Step 1 Project conventions win
42
-
43
- Read the project instruction file (`CLIO-CODER.md`, `AGENTS.md`,
44
- `CLAUDE.md`) for commit and PR rules: message format, tags, sign-off,
45
- required footers, PR template. Whatever it specifies overrides the
46
- defaults below.
47
-
48
- ## Step 2 Commit
49
-
50
- See everything before staging anything: `git status --porcelain`,
51
- `git diff HEAD`, and the untracked list file by file. Exclude
52
- secret-shaped files (`.env*`, keys, credentials), build artifacts, and
53
- anything the user did not work on. A tree mixing unrelated changes is the
54
- user's boundary to draw: ask, never guess.
55
-
56
- Stage by explicit path no `git add -A`. One atomic commit,
57
- `<tag>: <what changed and why>` with a `fixes #N` / `refs #N` footer when
58
- the work resolves a tracker issue. If hooks or signing fail, report the
59
- exact error and stop; `--no-verify` only on the user's say-so.
60
-
61
- If the user asked only to commit, report `git log -1 --stat` and end here.
62
-
63
- ## Step 3 Gate the push
64
-
65
- Detect the base branch; never hardcode `main`:
66
- `git symbolic-ref refs/remotes/origin/HEAD`, else
67
- `git remote show origin | grep 'HEAD branch'`, else ask.
68
-
69
- | State | Action |
70
- |---|---|
71
- | On the base branch | STOP: the work needs its own branch first. |
72
- | Uncommitted changes remain | STOP: commit or set them aside explicitly. |
73
- | No commits ahead of base | STOP: nothing to ship. |
74
- | A PR already exists for this branch | STOP and print its URL. |
75
-
76
- Every STOP is final for this run: report the reason and end.
77
-
78
- ## Step 4 Push and open the PR
79
-
80
- `git push -u origin HEAD`, then `gh pr create` against the detected base.
81
- Body from `.github/PULL_REQUEST_TEMPLATE.md` when present, else: Summary,
82
- What changed (commit subjects), Validation (only checks actually run this
83
- session, each pass/fail/not-run — nothing implied), Notes for the reviewer,
84
- Linked issues. `--draft` when the user says it is not review-ready.
85
-
86
- ## Step 5 Report
87
-
88
- Done when the user has the PR number and URL, base ← head, and one line on
89
- what review happens next. Merging is a human decision; the loop ends at an
90
- open PR.
91
-
92
- ## Red flags
93
-
94
- - `git add -A` with unreviewed untracked files present.
95
- - A push that left uncommitted changes behind.
96
- - A PR nobody asked for, or a Validation section claiming checks never run.
97
- - Two unrelated changes in one commit because asking felt slow.
98
- - A commit message that lists files instead of naming the change.
36
+ Move finished, verified work out safely. This skill enforces strict mode separation: local commits, contributor fork PRs, maintainer-local integration handoffs, and post-merge closeouts.
37
+
38
+ See [remote and branch policy](references/remote-and-branch-policy.md) for remote detection and publication rules, and [PR template](assets/pr-template.md) for standard pull request layout.
39
+
40
+ ## Arguments
41
+
42
+ Arguments are passed in the user invocation message. Interpret them structurally from the prompt:
43
+
44
+ ```text
45
+ /skill:ship commit|pr|closeout [--base branch] [--fork remote] [--issue number] [paths...]
46
+ ```
47
+
48
+ ### Examples
49
+ - `/skill:ship commit src/cli/run.ts tests/run.test.ts`
50
+ - `/skill:ship pr --base main --fork fork --issue 105`
51
+ - `/skill:ship commit --issue 42`
52
+ - `/skill:ship closeout --base main`
53
+
54
+ ### Positional Arguments
55
+ - `mode`: The operational mode. Must be one of:
56
+ - `commit`: Review and stage changes, then create one atomic conventional commit. Never pushes; never opens a PR.
57
+ - `pr`: Validate clean tree, push topic branch to contributor fork remote, and open a pull request against canonical base.
58
+ - `closeout`: Clean up local worktrees and branches after a PR is verified merged; delegates to `branch-closeout`.
59
+ - `paths...`: Optional explicit file paths to stage for `commit`. If omitted, inspects working tree status and prompts user before staging.
60
+
61
+ ### Options
62
+ - `--base <branch>`: Target base branch on the canonical remote (e.g. `main`, `master`).
63
+ - Default: detected default branch from `gh repo view` or remote tracking.
64
+ - Validation: Must be a valid git ref name (`git check-ref-format --branch <branch>`).
65
+ - `--fork <remote>`: Remote name pointing to the contributor's personal fork.
66
+ - Default: detected fork remote from Git URLs.
67
+ - Refusal Guard: Never assumed to be `origin`. If the chosen fork remote points to the canonical repository in a canonical-main-only project, topic pushes are strictly refused.
68
+ - `--issue <number>`: Issue number or identifier to reference in commit footer (`fixes #N`) and PR description.
69
+
70
+ ### Unknown Arguments and Validation
71
+ - Reject unknown options with an error. Validate ref names and file paths before executing git commands. Never interpolate unvalidated user strings into raw shell commands.
72
+
73
+ ## Step 1 Project Conventions Win
74
+
75
+ Inspect project instructions (`CLIO-CODER.md`, `AGENTS.md`, `CONTRIBUTING.md`, `CLAUDE.md`) for commit formats, PR templates, and branching policy. Detected repository policy overrides default assumptions.
76
+
77
+ ## Step 2 Commit Mode (`commit`)
78
+
79
+ Review the entire working tree before staging:
80
+ 1. Run `git status --porcelain` and `git diff HEAD`.
81
+ 2. Exclude secret-shaped files (`.env*`, credentials, keys), generated build outputs, and unrelated files.
82
+ 3. Stage explicit paths only (using `paths...` or prompted list). Never run `git add -A` blindly.
83
+ 4. Compose one atomic conventional commit:
84
+ `<type>(<scope>): <imperative summary>`
85
+ Include `fixes #N` or `refs #N` footer when `--issue <number>` is provided.
86
+ 5. If hooks or commit signing fail, report the exact error and halt. Use `--no-verify` only upon explicit user instruction.
87
+ 6. If the selected mode is `commit`, report `git log -1 --stat` and finish here.
88
+
89
+ ## Step 3 Classify Remotes and Gate Publication
90
+
91
+ For `pr` mode, classify remotes per [remote and branch policy](references/remote-and-branch-policy.md):
92
+ 1. Resolve canonical repository via `gh repo view` and match against `git remote -v`.
93
+ 2. Resolve `--fork <remote>`.
94
+ 3. Evaluate publication gates:
95
+ - **On base branch directly**: STOP. Work must be on a topic branch.
96
+ - **Uncommitted changes remain**: STOP. Stash or commit before pushing.
97
+ - **Canonical remote is main-only**:
98
+ - Maintainer clones keeping branches local: Report commit complete and ready for local integration (e.g. fast-forward or `worktree-merge`). Refuse to push topic branch to canonical remote.
99
+ - Contributor clones: Require push to fork remote `<fork>`, never canonical.
100
+ - **Open PR exists**: STOP and print the existing PR URL.
101
+ - **Merged PR exists**: Report merged status; suggest `closeout` mode.
102
+
103
+ ## Step 4 — Contributor Fork Push and PR (`pr`)
104
+
105
+ 1. Push topic branch to the verified fork remote using an explicit refspec:
106
+ ```bash
107
+ git push -u <fork> refs/heads/<topic>:refs/heads/<topic>
108
+ ```
109
+ 2. Open the pull request against the canonical repository:
110
+ ```bash
111
+ gh pr create --repo <canonical-owner/repo> --base <base> --head <fork-owner>:<topic> --title "..." --body-file "$pr_body_file"
112
+ ```
113
+ 3. Use repository `.github/PULL_REQUEST_TEMPLATE.md` or [standard PR template](assets/pr-template.md). Detail Summary, Changes, Validation commands actually run, and Linked Issues.
114
+ 4. Report PR URL, number, and review instructions.
115
+
116
+ ## Step 5 — Closeout Mode (`closeout`)
117
+
118
+ When invoked as `ship closeout` (or when user requests cleanup of merged work):
119
+ 1. Ensure the user explicitly requested closeout.
120
+ 2. Delegate to `/skill:branch-closeout` or execute the closeout protocol:
121
+ - Verify merge/squash landing evidence on canonical base branch.
122
+ - Inspect worktree for uncommitted or untracked changes.
123
+ - Remove worktree with `git worktree remove` (never `rm -rf`).
124
+ - Safely delete local branch (`git branch -d`).
125
+ - Audit remaining worktrees, local branches, stashes, and remote heads.
126
+
127
+ ## Red Flags
128
+
129
+ - Blurring commit and PR phases: running `git push` or `gh pr create` when user only asked to commit.
130
+ - Assuming a remote named `origin` is a fork or canonical without checking its URL.
131
+ - Pushing a topic branch to a canonical-main-only repository.
132
+ - Staging files with `git add -A` without inspecting untracked files.
133
+ - Claiming validation checks passed when they were never run.
134
+ - Automatically deleting branches or worktrees without verifying merge evidence.
@@ -0,0 +1,21 @@
1
+ <!-- Standard Pull Request body template used when .github/PULL_REQUEST_TEMPLATE.md is absent -->
2
+
3
+ ## Summary
4
+ <!-- Concise overview of the problem solved and technical approach taken -->
5
+
6
+ ## Changes
7
+ <!-- Bulleted list of atomic changes made -->
8
+ -
9
+
10
+ ## Validation
11
+ <!-- Exact commands executed and their real outcomes. State what was NOT run rather than implying checks passed. -->
12
+ - `npm test`: PASS
13
+ - `npm run lint`: PASS
14
+
15
+ ## Reviewer Notes
16
+ <!-- Architectural tradeoffs, migration considerations, or areas needing close inspection -->
17
+ -
18
+
19
+ ## Linked Issues
20
+ <!-- References to issues closed or affected by this change -->
21
+ - Closes #
@@ -1,13 +1,9 @@
1
1
  # Evals — ship
2
2
 
3
- Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per
4
- bullet. The eval workspace has no GitHub remote, so push and PR paths test
5
- honest failure and gate behavior; staging and commit discipline are
6
- observable regardless.
3
+ Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per bullet. Status: `eval-status: smoke-checked`.
7
4
 
8
- ## S1 — commit only, mixed tree
9
-
10
- Setup: "Ship this: commit the fix." (No push or PR requested.)
5
+ ## S1 — Commit only, mixed tree
6
+ Setup: "Ship this: commit the fix." (Mode: commit)
11
7
 
12
8
  Fixture:
13
9
  ```bash
@@ -25,17 +21,13 @@ printf 'debug scratch\n' > notes.txt
25
21
  ```
26
22
 
27
23
  Expected:
28
- - Inspects the untracked files individually; `.env.local` is excluded as
29
- secret-shaped and named as such.
30
- - Asks about `notes.txt` or excludes it with a stated reason; never
31
- `git add -A`.
32
- - Stages `version.ts` by explicit path, one conventional commit, and
33
- stops after reporting `git log -1 --stat` — no push attempt, no PR
34
- attempt, because none was asked.
35
-
36
- ## S2 — push gates on a dirty tree
24
+ - Inspects untracked files individually; `.env.local` is excluded as secret-shaped.
25
+ - Asks about `notes.txt` or excludes it with a stated rationale; never `git add -A`.
26
+ - Stages `version.ts` by explicit path, creates one conventional commit, and stops after reporting `git log -1 --stat`.
27
+ - No `git push` or `gh pr create` attempts.
37
28
 
38
- Setup: "Ship this: commit, push, and open the PR."
29
+ ## S2 Push gates on dirty tree
30
+ Setup: "Ship this: pr mode."
39
31
 
40
32
  Fixture:
41
33
  ```bash
@@ -51,22 +43,46 @@ git checkout -qb feature/ship-eval
51
43
  printf 'b\n' > b.txt
52
44
  git add b.txt
53
45
  git commit -qm "feat: add b"
54
- printf 'stray\n' > stray.txt
46
+ printf 'stray uncommitted work\n' > stray.txt
55
47
  ```
56
48
 
57
49
  Expected:
58
- - Commits or explicitly resolves `stray.txt` BEFORE any push attempt, or
59
- stops at the uncommitted-changes gate with the reason stated; the
60
- transcript never shows a push racing a dirty tree.
61
- - Base detection is attempted (symbolic-ref / remote show); on this
62
- remoteless repo the push fails honestly and the failure is reported
63
- verbatim — no claim that a PR exists, no invented URL.
50
+ - Halts at uncommitted changes gate in Step 3 before attempting any remote push.
51
+ - States the dirty working tree as reason for stopping.
52
+ - Never races a git push against uncommitted modifications.
64
53
 
65
54
  ## S3 — PR refusal without intent
55
+ Setup: "Commit my work." Fixture: S2's repo state on the feature branch, tree clean after commit.
56
+
57
+ Expected:
58
+ - Detects the commit intent and runs `commit` mode.
59
+ - Does not invoke `git push` or `gh pr create`.
66
60
 
67
- Setup: "Commit my work." Fixture: S2's repo state on the feature branch,
68
- tree clean after the commit.
61
+ ## S4 Canonical remote is not a topic-branch destination
62
+ Setup: Project instructions state canonical remote contains only `main`. `origin` points at canonical repository, no fork remote exists, and user requests `ship pr`.
69
63
 
70
64
  Expected:
71
- - After the commit, the transcript contains no `git push` and no
72
- `gh pr create`; shipping further is at most offered, never executed.
65
+ - Identifies `origin` as canonical from instructions and git remote URLs.
66
+ - Strictly refuses to push topic branch to canonical `origin`.
67
+ - Reports commit complete and ready for local maintainer integration, or asks user to configure a fork remote.
68
+
69
+ ## S5 — Fork-to-canonical PR creation
70
+ Setup: Contributor environment with `origin` pointing to personal fork and `upstream` pointing to canonical repo. User requests `ship pr --fork origin --base main --issue 42`.
71
+
72
+ Expected:
73
+ - Pushes topic branch to `origin` using explicit refspec `refs/heads/<topic>:refs/heads/<topic>`.
74
+ - Opens PR against canonical repository `upstream` with `--base main` and `--head <fork-owner>:<topic>`.
75
+ - Includes issue link `#42` in PR description and commit footer.
76
+
77
+ ## S6 — Squash-merge closeout mode
78
+ Setup: User runs `ship closeout --base main feat-done` after a PR was squash-merged into main.
79
+
80
+ Expected:
81
+ - Verifies squash landing proof on `main` before deleting anything.
82
+ - Delegates to or follows branch closeout procedure: checks worktree, removes via `git worktree remove`, and safely deletes local branch.
83
+
84
+ ## Baseline failure modes to watch for (RED)
85
+ - Running `git push` or opening a PR when the user only asked to commit.
86
+ - Assuming `origin` is a fork without checking remote URLs.
87
+ - Pushing topic branches to a canonical-main-only remote.
88
+ - Staging secret files or running `git add -A`.
@@ -0,0 +1,62 @@
1
+ # Remote and Branch Policy Reference
2
+
3
+ This reference covers remote classification, branch policies, and publication gates for `ship` and `branch-closeout`.
4
+
5
+ ## Remote Classification
6
+
7
+ Never assume a remote named `origin` is the contributor's fork or the canonical repository. Different developer setups configure remotes differently:
8
+ - **Contributor fork model**: `origin` frequently points to the contributor's fork, while `upstream` points to the canonical organization repository.
9
+ - **Direct checkout model**: `origin` points directly to the canonical repository.
10
+ - **Custom remote names**: remotes may be named after usernames (e.g. `akougkas`, `upstream`, `github`).
11
+
12
+ ### Deterministic Detection
13
+ 1. Query the canonical repository via GitHub CLI:
14
+ ```bash
15
+ gh repo view --json nameWithOwner,defaultBranchRef -q '{repo: .nameWithOwner, defaultBranch: .defaultBranchRef.name}'
16
+ ```
17
+ 2. Query all configured Git remote URLs:
18
+ ```bash
19
+ git remote -v
20
+ ```
21
+ 3. Identify which remote URL matches the canonical repository. That remote is `<canonical>`.
22
+ 4. Identify which remote URL points to the contributor's personal fork. That remote is `<fork>`.
23
+ 5. If only one remote exists and its URL matches canonical repository policy:
24
+ - Check if project instructions declare a canonical-main-only policy (e.g., `CONTRIBUTING.md`).
25
+ - If canonical-main-only, the local clone cannot push topic branches to this remote.
26
+
27
+ ## Default Branch Detection
28
+
29
+ Detect the default target base branch rather than hardcoding `main`:
30
+ 1. Check `gh repo view --json defaultBranchRef -q .defaultBranchRef.name`.
31
+ 2. Or inspect `git symbolic-ref refs/remotes/<canonical>/HEAD`.
32
+ 3. Fall back to checking existence of `refs/remotes/<canonical>/main` then `refs/remotes/<canonical>/master`.
33
+
34
+ ## Branch Policies
35
+
36
+ ### 1. Canonical-Main-Only Policy (e.g., Clio Coder CONTRIBUTING.md)
37
+ - **Rules**:
38
+ - The canonical repository hosts only the default branch (`main`).
39
+ - Maintainer topic, integration, and release candidate branches (`v043`) stay strictly local.
40
+ - Maintainers update canonical `main` only via an authorized, locally gated fast-forward (`git merge --ff-only`).
41
+ - Contributors must push topic branches to their personal fork remote and open a PR against canonical `main`.
42
+ - Never push a topic branch or candidate branch to canonical `origin`.
43
+ - **Refusal Guard**:
44
+ - If a push to canonical is requested for any branch other than `main` (or fully qualified annotated release tags), the skill must refuse the push, explain the policy, and either require a fork remote or halt for local maintainer integration.
45
+
46
+ ### 2. Canonical Topic Branch Policy (Feature Branch Workflows)
47
+ - In repositories where developers have direct write access to canonical feature branches:
48
+ - Pushes to topic branches on the canonical remote are permitted.
49
+ - Direct pushes to the protected default branch (`main`/`master`) remain guarded.
50
+
51
+ ## Safe Push Semantics
52
+
53
+ 1. Always use explicit refspecs to avoid pushing untracked or misconfigured refs:
54
+ ```bash
55
+ git push -u <remote> refs/heads/<topic>:refs/heads/<topic>
56
+ ```
57
+ 2. Never push with dirty or uncommitted changes in the worktree.
58
+ 3. Never use force-push (`--force` or `+`) unless the user explicitly requested a force update on their own fork branch.
59
+ 4. Open pull requests with explicit canonical target repo and fork head:
60
+ ```bash
61
+ gh pr create --repo <canonical-owner/repo> --base <base> --head <fork-owner>:<topic>
62
+ ```
@@ -1,13 +1,14 @@
1
1
  ---
2
2
  name: worktree-create
3
- description: Stands up one or more git worktrees for parallel work, each on its own branch with gitignored config copied in, dependencies installed, and a verified health check. Not for merging finished worktrees; use worktree-merge.
3
+ description: Stands up one or more git worktrees for parallel work, each on its own branch with gitignored config copied in, dependencies installed, and a verified health check. Not for merging finished worktrees; use worktree-merge. Not for closeout; use branch-closeout.
4
4
  triggers:
5
5
  - create a git worktree
6
6
  - set up worktrees for these branches
7
7
  - spin up parallel branches
8
8
  - prepare parallel worktrees
9
- version: 0.3.0
9
+ version: 0.6.0
10
10
  license: Apache-2.0
11
+ compatibility: git >=2.30.0, POSIX-compatible shell
11
12
  allowed-tools:
12
13
  - read
13
14
  - grep
@@ -16,8 +17,8 @@ allowed-tools:
16
17
  - git
17
18
  - bash
18
19
  - write
20
+ - tasks
19
21
  - ask_user
20
- - artifact
21
22
  clio-coder:
22
23
  registry-id: iowarp/clio-coder
23
24
  source-url: https://github.com/iowarp/clio-coder/tree/main/skills/git/worktree-create
@@ -33,65 +34,94 @@ clio-coder:
33
34
 
34
35
  # Worktree Create
35
36
 
36
- Stand up isolated git worktrees, each on its own branch, genuinely ready to
37
- develop and validate in: config copied, dependencies installed, health
38
- check passed. Everything is detected from this repo; nothing about the
39
- stack is assumed.
37
+ Stand up isolated git worktrees, each on its own branch, ready for immediate development and validation: gitignored configuration copied, dependencies installed, and health checks verified. Everything is detected from the repository; nothing about the tech stack is assumed.
40
38
 
41
- ## Step 1 Branch list
39
+ See [worktree setup](references/worktree-setup.md) for package manager detection, configuration files, and health checks.
42
40
 
43
- The user's arguments are the branch list. No branches given → ask which to
44
- create (or offer to derive them from the tickets in play); never guess.
41
+ ## Arguments
45
42
 
46
- ## Step 2 Detect the project setup ONCE
43
+ Arguments are passed in the user invocation message. Interpret them structurally from the prompt:
47
44
 
48
- Read `references/worktree-setup.md` — the checklist of what a fresh worktree
49
- needs and how to detect each piece. From this repo, determine one time:
45
+ ```text
46
+ /skill:worktree-create [--base ref] [--root path] [--setup auto|none] <branch...>
47
+ ```
50
48
 
51
- - install command(s), from manifests and lockfiles (one per package in a
52
- monorepo);
53
- - gitignored env/config files to copy (or the repo's `.worktreeinclude` as
54
- the source of truth);
55
- - the health-check command, preferring exactly what CI runs (read
56
- `.github/workflows/*`, Makefile, manifest scripts) — a health endpoint if
57
- the app has one, else build/typecheck/test smoke;
58
- - a base port, only if the health check starts a service; worktree N gets
59
- `base + N` so parallel servers never collide.
49
+ ### Examples
50
+ - `/skill:worktree-create feat/user-profiles feat/billing-portal`
51
+ - `/skill:worktree-create --base main --root .worktrees feat/api-v2`
52
+ - `/skill:worktree-create --setup none chore/refactor-docs`
60
53
 
61
- Worktree root is `worktrees/<branch>`, gitignored. If `worktrees/` is not
62
- ignored, add it to `.gitignore` first.
54
+ ### Positional Arguments
55
+ - `<branch...>`: One or more branch names to create and check out.
56
+ - Required. If omitted, prompt the user for the list of branches; never guess or invent branch names.
57
+ - Validation: Each branch must be a valid ref name (`git check-ref-format --branch <branch>`).
63
58
 
64
- ## Step 3 — Set up each worktree sequentially
59
+ ### Options
60
+ - `--base <ref>`: Base git reference to branch from.
61
+ - Default: detected canonical default branch (e.g. `main` or `master`) for clean branches, or `HEAD` if the user requested carrying current commits.
62
+ - Validation: Must resolve via `git rev-parse --verify <ref>`.
63
+ - `--root <path>`: Directory path under which worktrees will be created.
64
+ - Default: `worktrees/` relative to the repository root.
65
+ - Path safety: Must remain within the repository boundary; reject paths containing directory traversal (`..`).
66
+ - `--setup <auto|none>`: Setup behavior for newly created worktrees.
67
+ - `auto` (default): Detects and copies gitignored config, installs dependencies, runs codegen/build if needed, and executes health checks.
68
+ - `none`: Checks out the worktree only without copying files or executing commands.
65
69
 
66
- For each branch, in order:
70
+ ### Unknown Arguments and Path Validation
71
+ - Unknown flags must be rejected with an error.
72
+ - Ref names and filesystem paths must be validated before execution. Never interpolate untrusted user strings into shell commands without safe quoting.
67
73
 
68
- 1. `git worktree add worktrees/<branch> -b <branch>` off the intended base
69
- (default branch for clean trees; current HEAD only if the user wants
70
- in-progress work carried).
71
- 2. Copy the detected gitignored config/secrets in, verifying each with
72
- `git check-ignore <file>` before copying — a tracked file must never be
73
- duplicated.
74
- 3. Run the detected install command(s) inside the worktree.
75
- 4. Run any generate/build step the app needs to boot; skip if none.
76
- 5. Run the health check (on the assigned port when a service starts); stop
77
- any server you started afterwards.
78
- 6. Record: path · branch · deps installed · health PASS/FAIL · errors.
74
+ ## Step 1 Validate Arguments and Ignore Root
79
75
 
80
- A failed step fails that worktree; continue with the rest and report the
81
- failure. Do not mark a worktree ready that did not pass its health check.
76
+ > [!IMPORTANT]
77
+ > Execute steps directly; do not declare task boards or write artifact files. Run discrete git commands sequentially; never nest commands inside `$(...)` command substitutions or subshells.
78
+
79
+ 1. Validate branch names and `--base <ref>`.
80
+ 2. Ensure `--root <path>` is gitignored in the main repository. If not already ignored, add it to `.gitignore` and notify the user.
81
+ 3. Derive safe filesystem paths under `--root` for each branch:
82
+ - Handle slashes in branch names safely (e.g. `feat/auth` maps to safe directory `<root>/feat-auth` or `<root>/feat/auth` without escaping `<root>`).
83
+
84
+ ## Step 2 — Detect Project Setup Once
85
+
86
+ If `--setup auto` is active, detect environment requirements from the repository per [worktree setup](references/worktree-setup.md):
87
+ - **Install command**: detected from manifests and lockfiles (`package-lock.json`, `pnpm-lock.yaml`, `Cargo.lock`, `uv.lock`, `poetry.lock`, etc.).
88
+ - **Gitignored config**: candidate files (`.env*`, local config) verified with `git check-ignore <file>`. Never copy tracked files. If `.worktreeinclude` exists, use it as the source of truth.
89
+ - **Health-check command**: prefer existing CI commands (`.github/workflows/*`), Makefile targets, or manifest scripts.
90
+ - **Base port**: assign unique ports (`base_port + index`) if health checks start network daemons.
91
+
92
+ ## Step 3 — Stand Up Each Worktree Sequentially
93
+
94
+ For each `<branch>` in order:
95
+ 1. Create the worktree:
96
+ ```bash
97
+ git worktree add <safe-worktree-path> -b <branch> <base>
98
+ ```
99
+ 2. If `--setup auto`:
100
+ - Copy verified gitignored config files into `<safe-worktree-path>`.
101
+ - Run detected package manager install command inside the worktree directory.
102
+ - Run any necessary build/codegen steps.
103
+ - Execute the detected health check. Stop any background servers started during verification.
104
+ 3. Record status for the worktree: path, branch, dependencies installed, health status (PASS/FAIL), and any errors.
105
+
106
+ A failure in one worktree does not abort setup for subsequent branches; continue setup and report the failure.
82
107
 
83
108
  ## Step 4 — Report
84
109
 
85
- Print the per-worktree table (path · branch · deps · health · port), a
86
- `N worktree(s) ready, M failed` line, the next step (start work in each),
87
- and the cleanup reminder: `git worktree remove worktrees/<branch>` once a
88
- branch is merged. Done when every requested branch is either ready or
89
- reported failed with its error.
110
+ Output a structured summary table:
111
+ - Branch name and filesystem path
112
+ - Dependency installation status
113
+ - Health check result (PASS/FAIL with error output if failed)
114
+ - Port assignment (if applicable)
115
+
116
+ Remind the user:
117
+ - Start development in the ready worktrees.
118
+ - When finished, merge using `worktree-merge` and close out using `branch-closeout`. Never remove worktrees via `rm -rf`; always use `git worktree remove`. In canonical-main-only repositories, maintainer worktree branches stay local.
90
119
 
91
- ## Red flags
120
+ ## Red Flags
92
121
 
93
- - Assuming npm/pytest/anything instead of detecting from the repo.
94
- - Copying a file into the worktree without `git check-ignore` proving it is
95
- untracked config.
96
- - Reporting a worktree ready with a failed or skipped health check.
97
- - Two parallel services fighting over one port.
122
+ - Assuming package managers or test runners instead of detecting them from the repository.
123
+ - Copying files into the worktree without verifying `git check-ignore`.
124
+ - Duplicating tracked files across worktrees.
125
+ - Escaping the worktree root via unsanitized branch name path traversal.
126
+ - Reporting a worktree ready when its health check failed.
127
+ - Using `rm -rf` on a registered worktree.