@iowarp/clio-coder 0.4.1 → 0.4.3

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 (604) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/CONTRIBUTING.md +142 -52
  3. package/README.md +434 -473
  4. package/SECURITY.md +2 -1
  5. package/dist/{acp-ZILU3AUO.js → acp-H2NGRPWO.js} +12 -12
  6. package/dist/{agents-HYWGBGQR.js → agents-TL5LLUQP.js} +56 -55
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/{auth-N3QT7CBO.js → auth-E5SW4HMS.js} +23 -21
  9. package/dist/builtins-IA7V7FUC.js +22 -0
  10. package/dist/{chunk-7RY5VZPH.js → chunk-2APPQIER.js} +8 -8
  11. package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
  12. package/dist/{chunk-JA5QWE4Z.js → chunk-2UG5F4C5.js} +1973 -1664
  13. package/dist/{chunk-5YHDIDBP.js → chunk-2UH2KFUP.js} +2 -2
  14. package/dist/{chunk-CTJ4RNAA.js → chunk-2VIKGWFZ.js} +2 -2
  15. package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
  16. package/dist/{chunk-GIZNH63R.js → chunk-35MSIRKH.js} +9 -4
  17. package/dist/chunk-3EBYEESD.js +314 -0
  18. package/dist/{chunk-J5LZHVIT.js → chunk-3M6DQK6S.js} +113 -35
  19. package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
  20. package/dist/{chunk-6FN3E6KX.js → chunk-4O6MANBS.js} +2 -2
  21. package/dist/chunk-4UVU7BJ5.js +39 -0
  22. package/dist/{chunk-VKRH2TCS.js → chunk-4WR7VSYB.js} +2 -2
  23. package/dist/{chunk-BBTJOK6Y.js → chunk-54CBCGIR.js} +5 -5
  24. package/dist/{chunk-AP73CFDC.js → chunk-5ICU3EUH.js} +2 -2
  25. package/dist/chunk-5MEZN6CB.js +1334 -0
  26. package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
  27. package/dist/{chunk-ABLSQ6JX.js → chunk-64I3JVYM.js} +8 -2
  28. package/dist/{chunk-AFKWHWXF.js → chunk-6PTFB5VS.js} +39 -22
  29. package/dist/{chunk-VN3SHNBN.js → chunk-7DICMOS6.js} +2 -2
  30. package/dist/chunk-7DRAWPTZ.js +360 -0
  31. package/dist/chunk-7E7I3WLS.js +3762 -0
  32. package/dist/{chunk-BJGUKIG4.js → chunk-7ZYNNDKC.js} +7 -7
  33. package/dist/{chunk-XKA2ICR3.js → chunk-AF4YM7Z4.js} +652 -252
  34. package/dist/{chunk-GVQJ5CCZ.js → chunk-AX2THNSA.js} +12 -12
  35. package/dist/{chunk-IG7BCQBA.js → chunk-B4OAX3SI.js} +65 -3
  36. package/dist/{chunk-TD3PGPQA.js → chunk-B4VEBZKF.js} +3 -3
  37. package/dist/{chunk-74YWRRU5.js → chunk-BEPZRGGU.js} +10 -10
  38. package/dist/{chunk-FEFIFZTL.js → chunk-CE5AX47J.js} +2 -2
  39. package/dist/{chunk-UAPGZHYC.js → chunk-DWUOQKRU.js} +25 -11
  40. package/dist/{chunk-THYWACCR.js → chunk-E3TPLWFX.js} +3 -3
  41. package/dist/{chunk-7EPLI7VL.js → chunk-EKCHAPYA.js} +2 -2
  42. package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
  43. package/dist/{chunk-PJJ6MY27.js → chunk-F5JHEYZM.js} +7 -7
  44. package/dist/{chunk-6CCS4G3W.js → chunk-FTMGRKEF.js} +3 -3
  45. package/dist/{chunk-SINK3QR6.js → chunk-G76U63X4.js} +17 -17
  46. package/dist/{chunk-EIMVLWB3.js → chunk-GHS5EBTQ.js} +64 -9
  47. package/dist/{chunk-QMXC4JB7.js → chunk-GI7YYQ3F.js} +187 -1419
  48. package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
  49. package/dist/{chunk-6HMJX2VU.js → chunk-GWZNEVM2.js} +44 -12
  50. package/dist/chunk-GYV6VZOC.js +26 -0
  51. package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
  52. package/dist/{chunk-UXN6JT4W.js → chunk-HEQY7ZFI.js} +3 -3
  53. package/dist/{chunk-7PWAODYW.js → chunk-I7XBWTYH.js} +2 -2
  54. package/dist/{chunk-GCSMB2KY.js → chunk-I7ZPNEJM.js} +145 -102
  55. package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
  56. package/dist/{chunk-QTFGO774.js → chunk-IGLP3ODT.js} +29 -16
  57. package/dist/chunk-IJNZMHLA.js +101 -0
  58. package/dist/{chunk-BDPT6GTK.js → chunk-INY6HTFL.js} +7 -7
  59. package/dist/{chunk-PBP4B7XR.js → chunk-IUE3Y34X.js} +2 -2
  60. package/dist/{chunk-6NJQITNH.js → chunk-IWT4SF4R.js} +6 -3
  61. package/dist/{chunk-R23Z6K6I.js → chunk-JDAY6FIL.js} +19 -19
  62. package/dist/chunk-JEQ3XTHC.js +42 -0
  63. package/dist/{chunk-FSP7CMNU.js → chunk-JGRC33J2.js} +50 -4
  64. package/dist/{chunk-TVH4ONAM.js → chunk-JKKCYP3C.js} +10 -10
  65. package/dist/{chunk-HJWWJ6IL.js → chunk-JSC3U7TI.js} +16 -4
  66. package/dist/{chunk-C537JADH.js → chunk-KK4JZPBQ.js} +19 -141
  67. package/dist/{chunk-K6BF4U2H.js → chunk-KKOJXO6R.js} +62 -14
  68. package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
  69. package/dist/{chunk-6DWBAZ5U.js → chunk-L47TF46W.js} +5 -7
  70. package/dist/{chunk-HUAS7ITX.js → chunk-LDJG7DW3.js} +91 -42
  71. package/dist/{chunk-CDNVLKUX.js → chunk-LLDJM5XK.js} +13 -7
  72. package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
  73. package/dist/{chunk-Y4CAGMM6.js → chunk-MNJGS2IN.js} +5 -6
  74. package/dist/{chunk-VKFQTNDV.js → chunk-MUW2BDDH.js} +4 -4
  75. package/dist/{chunk-E67WX76H.js → chunk-MWUZBSAQ.js} +104 -152
  76. package/dist/{chunk-OJTRZGR3.js → chunk-N2Z7HLVY.js} +21 -21
  77. package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
  78. package/dist/{chunk-FYUN5KZ3.js → chunk-NIQJ66N4.js} +21 -21
  79. package/dist/{chunk-U2WB7TZS.js → chunk-NMJXSHBJ.js} +97 -85
  80. package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
  81. package/dist/{chunk-VEGN6WIQ.js → chunk-O5CVSAG5.js} +3 -3
  82. package/dist/{chunk-MOPSG2X7.js → chunk-OML5D5V5.js} +8 -8
  83. package/dist/{chunk-2VG7KLYV.js → chunk-PAJQJ7BS.js} +5816 -3255
  84. package/dist/{chunk-ZW55JB7N.js → chunk-PUVDKJ2Y.js} +2 -2
  85. package/dist/{chunk-BTGG6BG2.js → chunk-QWGDJJYJ.js} +158 -19
  86. package/dist/chunk-R6Q67RJH.js +134 -0
  87. package/dist/{chunk-ZJLUDYFY.js → chunk-RRNP2ANY.js} +6 -6
  88. package/dist/{chunk-PVAMAVBB.js → chunk-RSJ25QSL.js} +102 -2
  89. package/dist/{chunk-NLFAQR7Z.js → chunk-S66XZJOF.js} +3 -23
  90. package/dist/chunk-SKHCAU7K.js +385 -0
  91. package/dist/chunk-SZAA6XDG.js +30 -0
  92. package/dist/{chunk-J4HBWF6Y.js → chunk-TM6LQDI3.js} +131 -28
  93. package/dist/chunk-UOIZ7DA4.js +41 -0
  94. package/dist/{chunk-MA3H6DM5.js → chunk-UPZU6GE4.js} +25 -3
  95. package/dist/{chunk-BWW4HLO4.js → chunk-UXCU4E3T.js} +8 -6
  96. package/dist/{chunk-N5UK64DP.js → chunk-V2ANDPVT.js} +4 -4
  97. package/dist/{chunk-AK5XEFVZ.js → chunk-VA5FNYMT.js} +26 -13
  98. package/dist/{chunk-6VC4OV3Z.js → chunk-VIA6RFQZ.js} +3 -11
  99. package/dist/{chunk-ZAZB4JMW.js → chunk-VKPAQYEB.js} +27 -8
  100. package/dist/{chunk-QKIFBZKT.js → chunk-VW6DOEDG.js} +497 -81
  101. package/dist/{chunk-SCYB3HA4.js → chunk-W6RRQCPQ.js} +63 -19
  102. package/dist/{chunk-2NM363SV.js → chunk-WBKFA554.js} +10 -10
  103. package/dist/{chunk-R32CLGZ6.js → chunk-WCXUNS7U.js} +82 -21
  104. package/dist/{chunk-GPPB3JBE.js → chunk-WRBAGUNF.js} +3 -3
  105. package/dist/{chunk-IXJT6DCX.js → chunk-XIVNBFZS.js} +85 -30
  106. package/dist/{chunk-UEDMSP56.js → chunk-XPWWI35G.js} +417 -201
  107. package/dist/chunk-XRZT5WY5.js +47 -0
  108. package/dist/{chunk-3QSOM6PA.js → chunk-Y3CBHOR6.js} +2 -2
  109. package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
  110. package/dist/{chunk-AKB4GYDL.js → chunk-YQWYVTMC.js} +5 -5
  111. package/dist/{chunk-6I5ILFOF.js → chunk-ZA4VCIGV.js} +3 -3
  112. package/dist/{chunk-7OBGU7UB.js → chunk-ZDN3Y73Y.js} +12 -18
  113. package/dist/{chunk-3I5NY75V.js → chunk-ZWPRK62N.js} +8 -5
  114. package/dist/cli/index.js +41 -39
  115. package/dist/{clio-IT3G3VQH.js → clio-CMMK4KRR.js} +9 -9
  116. package/dist/{code-nav-RK6S7F6E.js → code-nav-MDZNQS33.js} +89 -21
  117. package/dist/{components-UBWCQSRW.js → components-UCUQ4QXW.js} +4 -4
  118. package/dist/{config-3QZRWZJF.js → config-SVM5P5YI.js} +131 -84
  119. package/dist/{configure-FL7Y3KJF.js → configure-LE3IK2TJ.js} +28 -26
  120. package/dist/{context-5HE7ODYK.js → context-2OHRKS42.js} +69 -64
  121. package/dist/{context-KYQFRVDC.js → context-E3VC7RX5.js} +15 -11
  122. package/dist/{context-XNHL75JV.js → context-VNCR7KAG.js} +93 -65
  123. package/dist/{context-clear-N545L53A.js → context-clear-BW4O37TG.js} +64 -60
  124. package/dist/context-map-COB37XXN.js +505 -0
  125. package/dist/{context-working-set-QHKXSV2F.js → context-working-set-VDS25HXZ.js} +19 -18
  126. package/dist/{dispatch-runner-RGIE5PCT.js → dispatch-runner-5AHT53RF.js} +93 -82
  127. package/dist/{docs-5NAF6AU7.js → docs-PD3EXDKU.js} +21 -20
  128. package/dist/{doctor-ZGPEGHIP.js → doctor-WNNVO6FY.js} +48 -47
  129. package/dist/{eval-GXLL44RD.js → eval-7G7SGAYO.js} +287 -115
  130. package/dist/{eval-inventory-HBWSWQOK.js → eval-inventory-Y6QRFOH5.js} +4 -4
  131. package/dist/{evidence-HWLBRH3Q.js → evidence-VD6736FQ.js} +67 -64
  132. package/dist/{evolve-FTZBMNVW.js → evolve-AL3NGVRL.js} +65 -62
  133. package/dist/{extensions-VHRBEID7.js → extensions-MOVJ32NM.js} +9 -7
  134. package/dist/{fleet-CKZHJWZJ.js → fleet-QZHUMAGI.js} +114 -111
  135. package/dist/{fleet-commands-EXDXBMV6.js → fleet-commands-BAYT5FJZ.js} +10 -10
  136. package/dist/{fleet-decisions-OTHB6KRL.js → fleet-decisions-IREVMRU4.js} +7 -6
  137. package/dist/{fleet-graph-YTEZUCUT.js → fleet-graph-YCTT3HTI.js} +22 -19
  138. package/dist/{fleet-inspect-SS6YMDCK.js → fleet-inspect-QVJTDAVB.js} +58 -55
  139. package/dist/{fleet-preflight-PBY4VYOM.js → fleet-preflight-25QAFPK4.js} +4 -4
  140. package/dist/{fleet-validate-KMEM5L3S.js → fleet-validate-5O57AAJ7.js} +26 -23
  141. package/dist/{fleet-verify-QD5M7E7Q.js → fleet-verify-CPH2W2T6.js} +59 -56
  142. package/dist/{fleet-view-WAMJYNDT.js → fleet-view-SWBR3VGQ.js} +58 -55
  143. package/dist/{init-5XQRBOFV.js → init-J477LKZH.js} +82 -79
  144. package/dist/{interop-34TVO25M.js → interop-3FCM6XLG.js} +11 -11
  145. package/dist/{library-3QY6KF57.js → library-QUQEIUG6.js} +30 -27
  146. package/dist/{memory-L4UTIIIW.js → memory-SGGSEP65.js} +67 -64
  147. package/dist/{models-ZVX3QOWE.js → models-HEKUAXXK.js} +53 -46
  148. package/dist/{monitor-CEKVSYTS.js → monitor-HKU57TYQ.js} +63 -60
  149. package/dist/{orchestrator-77BAP6BC.js → orchestrator-VDFAEFAI.js} +1831 -1057
  150. package/dist/{panes-7STHOAUJ.js → panes-DN2SSFOH.js} +5 -5
  151. package/dist/{panes-SHAUIRXY.js → panes-TALGNPZT.js} +29 -14
  152. package/dist/{paths-L7LGY6RN.js → paths-NBMFAIEZ.js} +5 -5
  153. package/dist/reset-EAJFFJVB.js +344 -0
  154. package/dist/{resources-74GKTLSF.js → resources-OVKSEFVE.js} +29 -20
  155. package/dist/{run-HBAUJNNZ.js → run-7DP7ZF2J.js} +120 -115
  156. package/dist/{share-G3APVLVP.js → share-WML67FT3.js} +32 -27
  157. package/dist/{skills-35HHUKCR.js → skills-SG662R2K.js} +41 -31
  158. package/dist/{skills-eval-QN4HSHDC.js → skills-eval-VVZEUU46.js} +78 -77
  159. package/dist/{skills-inventory-J357J34F.js → skills-inventory-I2E23GET.js} +23 -20
  160. package/dist/{slash-commands-JZZCQA32.js → slash-commands-S7MBJDQK.js} +40 -36
  161. package/dist/{steer-XAVHJM22.js → steer-2LQOMCPB.js} +3 -3
  162. package/dist/{support-U7QOWY26.js → support-CC2UJBJ6.js} +6 -6
  163. package/dist/{targets-DSM6CY3M.js → targets-4QC3HIEW.js} +54 -54
  164. package/dist/{terminal-lease-JOPFUVEM.js → terminal-lease-TUHIJ6Y2.js} +5 -5
  165. package/dist/{tools-MKNWVPBH.js → tools-TFGJICCU.js} +10 -10
  166. package/dist/{trace-ECQ7TIYZ.js → trace-FXMXUZUF.js} +55 -7
  167. package/dist/uninstall-5PEVOE5B.js +408 -0
  168. package/dist/upgrade-M4WXY6KN.js +303 -0
  169. package/dist/{usage-X52N3IDJ.js → usage-N7ZNVLEM.js} +151 -104
  170. package/dist/{verifiers-EJTVVSMA.js → verifiers-DJTP4XX6.js} +15 -15
  171. package/dist/{verify-YJL6XET2.js → verify-RWE4PPEK.js} +9 -9
  172. package/dist/{web-fetch-MPIFL3LL.js → web-fetch-MPARV2K7.js} +2 -2
  173. package/dist/{wiki-generate-4NDZTQ4B.js → wiki-generate-C7IQOXSP.js} +89 -86
  174. package/dist/{with-panes-OBOBFIIR.js → with-panes-4GCGSL7J.js} +53 -257
  175. package/dist/worker/entry.js +90 -74
  176. package/docs/README.md +176 -81
  177. package/docs/{acp.md → architecture/acp.md} +36 -20
  178. package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
  179. package/docs/{architecture.md → architecture/architecture.md} +43 -22
  180. package/docs/{artifact-placement.md → architecture/artifact-placement.md} +27 -23
  181. package/docs/architecture/artifact-versions.md +90 -0
  182. package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
  183. package/docs/{context-engine.md → architecture/context-engine.md} +29 -25
  184. package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
  185. package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
  186. package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
  187. package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
  188. package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
  189. package/docs/{model-catalog.md → architecture/model-catalog.md} +61 -27
  190. package/docs/{observability.md → architecture/observability.md} +38 -14
  191. package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
  192. package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +57 -20
  193. package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +99 -25
  194. package/docs/{safety-model.md → architecture/safety-model.md} +35 -20
  195. package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
  196. package/docs/architecture/time-conventions.md +125 -0
  197. package/docs/{trace-store.md → architecture/trace-store.md} +13 -5
  198. package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
  199. package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
  200. package/docs/{built-in-agents.md → guide/built-in-agents.md} +65 -35
  201. package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +66 -61
  202. package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +323 -297
  203. package/docs/guide/configuration-reference.md +1163 -0
  204. package/docs/{environment-variables.md → guide/environment-variables.md} +33 -28
  205. package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +6 -3
  206. package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
  207. package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +39 -43
  208. package/docs/{glossary.md → guide/glossary.md} +14 -11
  209. package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +81 -17
  210. package/docs/guide/panes-and-files.md +290 -0
  211. package/docs/{proactive-memory.md → guide/proactive-memory.md} +131 -107
  212. package/docs/{resource-library.md → guide/resource-library.md} +13 -4
  213. package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +25 -3
  214. package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
  215. package/docs/{troubleshooting.md → guide/troubleshooting.md} +9 -4
  216. package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +11 -11
  217. package/docs/{release-cut-checklist.md → history/release-cut-checklist.md} +29 -2
  218. package/docs/process/development-pipeline.md +152 -0
  219. package/docs/process/documentation-coverage.md +100 -0
  220. package/docs/process/documentation-guide.md +187 -0
  221. package/docs/{eval-runner.md → process/eval-runner.md} +108 -53
  222. package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
  223. package/docs/{evolution.md → process/evolution.md} +2 -2
  224. package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +11 -7
  225. package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
  226. package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
  227. package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
  228. package/evals/README.md +2 -2
  229. package/evals/behavioral-model.yaml +3 -2
  230. package/package.json +10 -8
  231. package/skills/README.md +52 -41
  232. package/skills/coding/ast-grep/SKILL.md +102 -31
  233. package/skills/coding/ast-grep/evals.md +26 -0
  234. package/skills/coding/coding-standards/SKILL.md +41 -6
  235. package/skills/coding/coding-standards/evals.md +23 -0
  236. package/skills/coding/prototype/SKILL.md +88 -29
  237. package/skills/coding/prototype/evals.md +19 -0
  238. package/skills/coding/tdd/SKILL.md +81 -54
  239. package/skills/coding/tdd/evals.md +20 -0
  240. package/skills/context/context-handoff/SKILL.md +44 -3
  241. package/skills/context/context-handoff/evals.md +44 -0
  242. package/skills/context/context-prime/SKILL.md +46 -16
  243. package/skills/context/context-prime/evals.md +45 -0
  244. package/skills/git/branch-closeout/SKILL.md +132 -0
  245. package/skills/git/branch-closeout/evals.md +133 -0
  246. package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
  247. package/skills/git/file-ticket/SKILL.md +78 -64
  248. package/skills/git/file-ticket/assets/issue-template.md +22 -0
  249. package/skills/git/file-ticket/evals.md +31 -26
  250. package/skills/git/file-ticket/references/issue-discovery.md +49 -0
  251. package/skills/git/fix-issue/SKILL.md +88 -65
  252. package/skills/git/fix-issue/evals.md +35 -31
  253. package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
  254. package/skills/git/resolve-merge-conflicts/SKILL.md +101 -52
  255. package/skills/git/resolve-merge-conflicts/evals.md +52 -25
  256. package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
  257. package/skills/git/ship/SKILL.md +103 -67
  258. package/skills/git/ship/assets/pr-template.md +21 -0
  259. package/skills/git/ship/evals.md +44 -28
  260. package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
  261. package/skills/git/worktree-create/SKILL.md +80 -50
  262. package/skills/git/worktree-create/evals.md +40 -33
  263. package/skills/git/worktree-create/references/worktree-setup.md +62 -66
  264. package/skills/git/worktree-merge/SKILL.md +112 -65
  265. package/skills/git/worktree-merge/evals.md +42 -34
  266. package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
  267. package/skills/meta/clio-coder-dev/SKILL.md +9 -5
  268. package/skills/meta/clio-coder-dev/evals.md +3 -2
  269. package/skills/meta/clio-coder-test/SKILL.md +102 -95
  270. package/skills/meta/clio-coder-test/evals.md +9 -4
  271. package/skills/meta/clio-coder-test/references/harness.md +100 -124
  272. package/skills/meta/clio-coder-test/references/test-map.md +77 -50
  273. package/skills/meta/credentials/SKILL.md +2 -2
  274. package/skills/meta/find-skills/SKILL.md +2 -2
  275. package/skills/meta/herdr/SKILL.md +2 -2
  276. package/skills/meta/skill-craft/SKILL.md +22 -16
  277. package/skills/planning/archify/SKILL.md +196 -0
  278. package/skills/planning/archify/evals.md +65 -0
  279. package/skills/planning/architecture/SKILL.md +62 -13
  280. package/skills/planning/architecture/evals.md +65 -0
  281. package/skills/planning/backlog/SKILL.md +131 -15
  282. package/skills/planning/backlog/evals.md +142 -0
  283. package/skills/planning/prd/SKILL.md +47 -7
  284. package/skills/planning/prd/evals.md +54 -0
  285. package/skills/planning/product-intent/SKILL.md +58 -3
  286. package/skills/planning/product-intent/evals.md +70 -0
  287. package/skills/planning/tech-spec/SKILL.md +54 -3
  288. package/skills/planning/tech-spec/evals.md +73 -0
  289. package/skills/registry.yaml +70 -62
  290. package/skills/remote.yaml +13 -0
  291. package/skills/research/arxiv-literature/SKILL.md +77 -19
  292. package/skills/research/arxiv-literature/evals.md +50 -0
  293. package/skills/research/experiment-protocol/SKILL.md +21 -2
  294. package/skills/research/experiment-protocol/evals.md +23 -0
  295. package/skills/research/scientific-debugging/SKILL.md +24 -2
  296. package/skills/research/scientific-debugging/evals.md +18 -0
  297. package/skills/research/scientific-modernization/SKILL.md +27 -2
  298. package/skills/research/scientific-modernization/evals.md +27 -0
  299. package/skills/skill-marketplace.json +97 -62
  300. package/skills/workflow/cut-it/SKILL.md +66 -6
  301. package/skills/workflow/cut-it/evals.md +101 -0
  302. package/skills/workflow/design-council/SKILL.md +118 -28
  303. package/skills/workflow/design-council/evals.md +161 -0
  304. package/skills/workflow/grill-me/SKILL.md +87 -11
  305. package/skills/workflow/grill-me/evals.md +153 -0
  306. package/skills/workflow/workflow-distiller/SKILL.md +77 -18
  307. package/skills/workflow/workflow-distiller/evals.md +118 -0
  308. package/src/cli/args.ts +2 -2
  309. package/src/cli/bootstrap-generate.ts +1 -1
  310. package/src/cli/config-inspect.ts +65 -12
  311. package/src/cli/configure-interop.ts +105 -13
  312. package/src/cli/configure-oauth.ts +57 -0
  313. package/src/cli/configure-onboarding.ts +980 -0
  314. package/src/cli/configure-target.ts +594 -0
  315. package/src/cli/configure.ts +1082 -532
  316. package/src/cli/context-map.ts +114 -0
  317. package/src/cli/context.ts +4 -0
  318. package/src/cli/docs.ts +22 -14
  319. package/src/cli/doctor-naming.ts +5 -5
  320. package/src/cli/doctor-toolchain.ts +3 -3
  321. package/src/cli/eval.ts +1 -2
  322. package/src/cli/extensions.ts +2 -1
  323. package/src/cli/fleet.ts +1 -1
  324. package/src/cli/index.ts +3 -1
  325. package/src/cli/internal-dispatch.ts +3 -4
  326. package/src/cli/lifecycle-presenter.ts +436 -0
  327. package/src/cli/models.ts +10 -2
  328. package/src/cli/modes/print.ts +5 -1
  329. package/src/cli/panes.ts +19 -5
  330. package/src/cli/reset.ts +228 -106
  331. package/src/cli/run.ts +9 -4
  332. package/src/cli/select.ts +664 -0
  333. package/src/cli/share.ts +5 -1
  334. package/src/cli/skills-eval.ts +3 -3
  335. package/src/cli/skills.ts +9 -2
  336. package/src/cli/targets.ts +5 -6
  337. package/src/cli/trace.ts +55 -4
  338. package/src/cli/uninstall.ts +233 -165
  339. package/src/cli/upgrade.ts +204 -149
  340. package/src/cli/usage.ts +86 -27
  341. package/src/cli/validate-model.ts +3 -3
  342. package/src/cli/wiki-generate.ts +1 -1
  343. package/src/core/artifact-paths.ts +1 -1
  344. package/src/core/bash-exec.ts +131 -86
  345. package/src/core/bus-events.ts +51 -6
  346. package/src/core/config.ts +61 -1
  347. package/src/core/defaults.ts +7 -4
  348. package/src/core/dispatch-outcome.ts +16 -0
  349. package/src/core/external-diagnostic.ts +44 -0
  350. package/src/core/gateway-routing.ts +157 -0
  351. package/src/core/guardrails.ts +10 -49
  352. package/src/core/prompt-hint.ts +9 -0
  353. package/src/core/safe-exec.ts +17 -2
  354. package/src/core/skill-activation.ts +89 -2
  355. package/src/domains/agents/builtins/architect.md +2 -3
  356. package/src/domains/agents/builtins/coder.md +3 -2
  357. package/src/domains/agents/builtins/debugger.md +2 -2
  358. package/src/domains/agents/builtins/documenter.md +2 -2
  359. package/src/domains/agents/builtins/git-master.md +1 -1
  360. package/src/domains/agents/builtins/oracle.md +1 -1
  361. package/src/domains/agents/builtins/provenance.md +1 -1
  362. package/src/domains/agents/builtins/researcher.md +1 -1
  363. package/src/domains/agents/builtins/scout.md +1 -1
  364. package/src/domains/agents/builtins/tester.md +2 -2
  365. package/src/domains/agents/builtins/verifier.md +2 -2
  366. package/src/domains/agents/builtins/wiki-writer.md +1 -1
  367. package/src/domains/agents/builtins/world-knowledge.md +31 -0
  368. package/src/domains/agents/catalog.ts +13 -15
  369. package/src/domains/agents/contract.ts +2 -0
  370. package/src/domains/agents/extension.ts +23 -1
  371. package/src/domains/agents/result-contract.ts +70 -0
  372. package/src/domains/config/keybindings.ts +8 -0
  373. package/src/domains/context/extension.ts +0 -3
  374. package/src/domains/context/wiki/map-seed.ts +589 -0
  375. package/src/domains/context/wiki/plan.ts +2 -2
  376. package/src/domains/context/working-set/path-index.ts +1 -0
  377. package/src/domains/dispatch/admission.ts +29 -0
  378. package/src/domains/dispatch/agent-candidates.ts +10 -0
  379. package/src/domains/dispatch/budget-envelope.ts +86 -1
  380. package/src/domains/dispatch/capability-match.ts +11 -0
  381. package/src/domains/dispatch/capacity-lease.ts +17 -0
  382. package/src/domains/dispatch/contract.ts +11 -1
  383. package/src/domains/dispatch/extension.ts +237 -49
  384. package/src/domains/dispatch/host-verification.ts +435 -39
  385. package/src/domains/dispatch/intent-requirements.ts +10 -0
  386. package/src/domains/dispatch/intent.ts +18 -1
  387. package/src/domains/dispatch/path-scope.ts +235 -24
  388. package/src/domains/dispatch/run-event-journal.ts +4 -15
  389. package/src/domains/dispatch/state.ts +2 -3
  390. package/src/domains/dispatch/transport.ts +45 -21
  391. package/src/domains/dispatch/types.ts +58 -3
  392. package/src/domains/dispatch/worker-model-metadata.ts +38 -0
  393. package/src/domains/eval/artifacts/store.ts +5 -0
  394. package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
  395. package/src/domains/eval/metrics/token-stream.ts +201 -31
  396. package/src/domains/eval/metrics/tracked.ts +40 -4
  397. package/src/domains/eval/runners/clio-run.ts +5 -2
  398. package/src/domains/eval/schema/suite.ts +28 -0
  399. package/src/domains/eval/schema/verdict.ts +2 -2
  400. package/src/domains/eval/store.ts +8 -1
  401. package/src/domains/eval/suites/resolve.ts +13 -1
  402. package/src/domains/eval/suites/run.ts +24 -3
  403. package/src/domains/evidence/trust-status.ts +10 -1
  404. package/src/domains/extensions/contract.ts +15 -1
  405. package/src/domains/extensions/discovery.ts +238 -41
  406. package/src/domains/extensions/extension.ts +105 -6
  407. package/src/domains/extensions/index.ts +24 -0
  408. package/src/domains/extensions/integrity.ts +189 -0
  409. package/src/domains/extensions/manager.ts +17 -1
  410. package/src/domains/extensions/resource-path.ts +27 -0
  411. package/src/domains/extensions/resources.ts +18 -38
  412. package/src/domains/extensions/snapshot-store.ts +39 -0
  413. package/src/domains/extensions/snapshot.ts +180 -0
  414. package/src/domains/extensions/state.ts +385 -57
  415. package/src/domains/extensions/types.ts +118 -1
  416. package/src/domains/interop/registry.ts +6 -2
  417. package/src/domains/interop/types.ts +4 -0
  418. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
  419. package/src/domains/lifecycle/migrations/index.ts +6 -0
  420. package/src/domains/lifecycle/naming-resources.ts +19 -4
  421. package/src/domains/lifecycle/naming-yazi.ts +10 -5
  422. package/src/domains/memory/task-memory-policy.ts +70 -26
  423. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  424. package/src/domains/middleware/contract.ts +26 -0
  425. package/src/domains/middleware/extension.ts +24 -24
  426. package/src/domains/middleware/hook-receipts.ts +27 -4
  427. package/src/domains/middleware/hooks-io.ts +65 -32
  428. package/src/domains/middleware/hooks.ts +64 -0
  429. package/src/domains/middleware/index.ts +28 -5
  430. package/src/domains/middleware/marketplace-offer.ts +3 -35
  431. package/src/domains/middleware/memory-intervention.ts +127 -32
  432. package/src/domains/middleware/memory-step-endpoint.ts +3 -2
  433. package/src/domains/middleware/registrations.ts +326 -0
  434. package/src/domains/middleware/runtime.ts +28 -0
  435. package/src/domains/middleware/skills-reminder.ts +31 -2
  436. package/src/domains/middleware/snapshot.ts +20 -7
  437. package/src/domains/mux/contract.ts +38 -0
  438. package/src/domains/mux/detect.ts +6 -13
  439. package/src/domains/mux/index.ts +1 -1
  440. package/src/domains/mux/operations.ts +44 -5
  441. package/src/domains/mux/yazi/assets/yazi.toml +2 -2
  442. package/src/domains/mux/yazi/session.ts +53 -4
  443. package/src/domains/mux/yazi/theme.ts +117 -17
  444. package/src/domains/observability/compaction-usage.ts +118 -0
  445. package/src/domains/observability/contract.ts +10 -11
  446. package/src/domains/observability/cost.ts +1 -1
  447. package/src/domains/observability/extension.ts +17 -4
  448. package/src/domains/observability/out-of-turn-usage.ts +52 -21
  449. package/src/domains/observability/projection.ts +14 -90
  450. package/src/domains/observability/trace-store.ts +43 -7
  451. package/src/domains/prompts/compiler.ts +73 -53
  452. package/src/domains/prompts/contract.ts +15 -3
  453. package/src/domains/prompts/extension.ts +97 -9
  454. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -3
  455. package/src/domains/prompts/fragments/identity/clio.md +6 -12
  456. package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
  457. package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
  458. package/src/domains/prompts/fragments/operating/contract.md +7 -15
  459. package/src/domains/prompts/fragments/operating/delegation.md +32 -34
  460. package/src/domains/prompts/fragments/operating/skills.md +10 -24
  461. package/src/domains/prompts/fragments/operating/worker.md +1 -8
  462. package/src/domains/providers/contract.ts +4 -1
  463. package/src/domains/providers/extension.ts +40 -9
  464. package/src/domains/providers/index.ts +1 -1
  465. package/src/domains/providers/model-capabilities.ts +9 -0
  466. package/src/domains/providers/model-discovery.ts +2 -0
  467. package/src/domains/providers/model-runtime-capabilities.ts +99 -25
  468. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +699 -114
  469. package/src/domains/providers/runtime-resolution.ts +31 -0
  470. package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
  471. package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
  472. package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
  473. package/src/domains/providers/runtimes/common/probe-helpers.ts +7 -2
  474. package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
  475. package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
  476. package/src/domains/providers/support.ts +11 -5
  477. package/src/domains/providers/target-model-cache.ts +25 -2
  478. package/src/domains/providers/types/capability-flags.ts +2 -0
  479. package/src/domains/providers/types/cost-provenance.ts +19 -0
  480. package/src/domains/providers/types/local-model-quirks.ts +85 -37
  481. package/src/domains/providers/types/runtime-descriptor.ts +20 -1
  482. package/src/domains/providers/types/target-descriptor.ts +19 -0
  483. package/src/domains/resources/index.ts +3 -0
  484. package/src/domains/resources/skills/install.ts +72 -7
  485. package/src/domains/resources/skills/loader.ts +23 -19
  486. package/src/domains/resources/skills/marketplace.ts +63 -11
  487. package/src/domains/safety/autonomy.ts +15 -0
  488. package/src/domains/safety/call-target.ts +1 -1
  489. package/src/domains/safety/index.ts +1 -0
  490. package/src/domains/safety/loop-detector.ts +7 -4
  491. package/src/domains/safety/path-policy.ts +1 -1
  492. package/src/domains/safety/policy-engine.ts +34 -11
  493. package/src/domains/safety/protected-artifacts.ts +191 -88
  494. package/src/domains/safety/run-effects.ts +2 -22
  495. package/src/domains/safety/skill-authority.ts +55 -0
  496. package/src/domains/session/compaction/compact.ts +72 -22
  497. package/src/domains/session/entries.ts +6 -0
  498. package/src/domains/session/task-board.ts +10 -9
  499. package/src/domains/session/usage.ts +3 -3
  500. package/src/domains/share/archive.ts +164 -7
  501. package/src/engine/acp/server.ts +62 -9
  502. package/src/engine/agent.ts +13 -3
  503. package/src/engine/ai.ts +26 -8
  504. package/src/engine/antigravity/subprocess-runtime.ts +386 -120
  505. package/src/engine/api-registry.ts +3 -0
  506. package/src/engine/apis/llamacpp-residency.ts +3 -4
  507. package/src/engine/apis/lmstudio.ts +3 -3
  508. package/src/engine/apis/ollama-native.ts +6 -6
  509. package/src/engine/apis/openai-completions.ts +145 -39
  510. package/src/engine/apis/output-budget.ts +8 -18
  511. package/src/engine/apis/residency.ts +8 -27
  512. package/src/engine/external-subprocess.ts +114 -6
  513. package/src/engine/gemma-channel-filter.ts +19 -0
  514. package/src/engine/loop-guard.ts +92 -12
  515. package/src/engine/worker-runtime.ts +40 -11
  516. package/src/engine/worker-tools.ts +3 -1
  517. package/src/entry/background-model-metadata.ts +18 -0
  518. package/src/entry/compaction-prompt.ts +57 -0
  519. package/src/entry/extension-hook-sources.ts +28 -0
  520. package/src/entry/extension-reload.ts +309 -0
  521. package/src/entry/orchestrator.ts +464 -251
  522. package/src/entry/task-memory-lifecycle.ts +35 -0
  523. package/src/interactive/application-controller.ts +2 -1
  524. package/src/interactive/bus-notices.ts +8 -1
  525. package/src/interactive/chat-loop-messages.ts +16 -17
  526. package/src/interactive/chat-loop.ts +75 -3
  527. package/src/interactive/chat-panel.ts +36 -13
  528. package/src/interactive/chat-renderer.ts +72 -7
  529. package/src/interactive/cost-overlay.ts +26 -2
  530. package/src/interactive/dispatch-board.ts +6 -11
  531. package/src/interactive/footer/widgets.ts +13 -0
  532. package/src/interactive/interactive-application.ts +39 -4
  533. package/src/interactive/interactive-input-runtime.ts +4 -0
  534. package/src/interactive/interactive-presentation.ts +2 -2
  535. package/src/interactive/interactive-slash-runtime.ts +4 -1
  536. package/src/interactive/overlays/extensions.ts +9 -1
  537. package/src/interactive/overlays/help-reference.ts +13 -0
  538. package/src/interactive/overlays/settings.ts +27 -16
  539. package/src/interactive/panes-runtime.ts +111 -35
  540. package/src/interactive/prompt-cache-identity.ts +88 -0
  541. package/src/interactive/renderers/worker-entry.ts +32 -0
  542. package/src/interactive/slash-commands.ts +153 -20
  543. package/src/interactive/stream-pacing-policy.ts +0 -23
  544. package/src/interactive/theme/labels.ts +19 -13
  545. package/src/interactive/turn-context.ts +39 -20
  546. package/src/interactive/turn-recovery.ts +8 -0
  547. package/src/interactive/turn-runtime.ts +27 -11
  548. package/src/interactive/turn-state.ts +7 -0
  549. package/src/interactive/worker-receipts.ts +1 -0
  550. package/src/interactive/worker-stream.ts +6 -1
  551. package/src/interactive/yazi-bridge.ts +60 -6
  552. package/src/tools/agent-tools.ts +30 -1
  553. package/src/tools/artifact.ts +2 -2
  554. package/src/tools/ask-user.ts +3 -3
  555. package/src/tools/bash.ts +1 -1
  556. package/src/tools/bootstrap.ts +4 -0
  557. package/src/tools/builtin-tool-catalog.ts +52 -22
  558. package/src/tools/codewiki/code-nav-surface.ts +6 -0
  559. package/src/tools/codewiki/code-nav.ts +99 -13
  560. package/src/tools/context/docs-engine.ts +20 -7
  561. package/src/tools/context/index.ts +59 -21
  562. package/src/tools/core-bootstrap.ts +28 -6
  563. package/src/tools/credential-present.ts +1 -2
  564. package/src/tools/dispatch-arguments.ts +6 -1
  565. package/src/tools/dispatch-event-text.ts +10 -0
  566. package/src/tools/dispatch-plan.ts +49 -4
  567. package/src/tools/dispatch-run-events.ts +1 -1
  568. package/src/tools/dispatch-runner.ts +12 -0
  569. package/src/tools/dispatch-schema.ts +338 -0
  570. package/src/tools/dispatch-types.ts +3 -0
  571. package/src/tools/dispatch.ts +9 -254
  572. package/src/tools/ledger.ts +3 -5
  573. package/src/tools/monitor-surface.ts +5 -13
  574. package/src/tools/observation.ts +4 -5
  575. package/src/tools/panes-surface.ts +4 -11
  576. package/src/tools/panes.ts +4 -2
  577. package/src/tools/policy.ts +15 -2
  578. package/src/tools/read.ts +5 -6
  579. package/src/tools/registry.ts +41 -12
  580. package/src/tools/result-shaping.ts +18 -14
  581. package/src/tools/steer-surface.ts +1 -1
  582. package/src/tools/tasks.ts +1 -1
  583. package/src/tools/truncate.ts +6 -5
  584. package/src/tools/verify/surface.ts +6 -12
  585. package/src/tools/web-fetch-surface.ts +1 -3
  586. package/src/tools/worker-evidence.ts +3 -1
  587. package/src/worker/spec-contract.ts +4 -0
  588. package/dist/builtins-UJLMOVOV.js +0 -17
  589. package/dist/chunk-5QIAJV2D.js +0 -48
  590. package/dist/chunk-JZWT5J3Y.js +0 -814
  591. package/dist/chunk-K7VKOLQQ.js +0 -15
  592. package/dist/chunk-PMZCIOCJ.js +0 -25
  593. package/dist/chunk-SUW5DORT.js +0 -819
  594. package/dist/chunk-UOV2BYIW.js +0 -107
  595. package/dist/chunk-WR6U3OVP.js +0 -45
  596. package/dist/chunk-Y45G3AXC.js +0 -1558
  597. package/dist/reset-EOLM7GVE.js +0 -230
  598. package/dist/uninstall-N34PCTGJ.js +0 -331
  599. package/dist/upgrade-H7TOM7YL.js +0 -323
  600. package/docs/artifact-versions.md +0 -67
  601. package/docs/development-pipeline.md +0 -121
  602. package/docs/documentation-coverage.md +0 -46
  603. package/docs/documentation-guide.md +0 -167
  604. package/docs/time-conventions.md +0 -101
@@ -1,14 +1,15 @@
1
1
  ---
2
2
  name: resolve-merge-conflicts
3
- description: Use when a git merge, rebase, or cherry-pick is stopped on conflicts and they need resolving — "fix these conflicts", "finish the merge", conflict markers in files. Resolves by reconstructing both sides' intent from history, preserves both where possible, validates with the project's own checks, and completes the operation. Not for planning an integration of many branches; use worktree-merge.
3
+ description: Resolves a merge, rebase, or cherry-pick stopped on conflicts by reconstructing both sides' intent, validating with the project's own checks, and completing the operation. Not for integrating many branches; use worktree-merge.
4
4
  triggers:
5
5
  - merge conflict
6
6
  - fix these conflicts
7
7
  - finish the merge
8
8
  - finish the rebase
9
9
  - resolve conflict markers
10
- version: 0.2.1
10
+ version: 0.4.0
11
11
  license: Apache-2.0
12
+ compatibility: git >=2.30.0, POSIX-compatible shell
12
13
  allowed-tools:
13
14
  - read
14
15
  - grep
@@ -16,8 +17,10 @@ allowed-tools:
16
17
  - git
17
18
  - bash
18
19
  - edit
20
+ - write
21
+ - verify
22
+ - tasks
19
23
  - ask_user
20
- - artifact
21
24
  clio-coder:
22
25
  registry-id: iowarp/clio-coder
23
26
  source-url: https://github.com/iowarp/clio-coder/tree/main/skills/git/resolve-merge-conflicts
@@ -34,69 +37,115 @@ clio-coder:
34
37
 
35
38
  # Resolve Merge Conflicts
36
39
 
37
- Conflicts are resolved from intent, not from picking the side that makes
38
- the markers go away. The job ends with the merge or rebase completed and
39
- the project's checks green.
40
+ Resolve conflicts stopped during a merge, rebase, or cherry-pick from intent, not from picking whichever side makes markers disappear. The job ends with the operation completed and the project's validation checks green.
40
41
 
41
- ## Step 1 Map the state
42
+ See [conflict matrix](references/conflict-matrix.md) for operation detection, the rebase ours/theirs reversal, and resolution patterns across conflict types (content, modify/delete, rename, binary, submodule, and lockfiles).
42
43
 
43
- ```bash
44
- git status
45
- git log --oneline --left-right --merge 2>/dev/null || git log --oneline -10
46
- git diff --name-only --diff-filter=U
47
- ```
44
+ ## Arguments
48
45
 
49
- Identify: which operation is in progress (merge, rebase, cherry-pick),
50
- which branches or commits are involved, and every conflicting file.
46
+ Arguments are passed in the user invocation message. Interpret them structurally from the prompt:
51
47
 
52
- ## Step 2 — Reconstruct both intents
53
-
54
- For each conflicting file, find why each side changed:
48
+ ```text
49
+ /skill:resolve-merge-conflicts [--checks auto|command] [--continue|--no-continue]
50
+ ```
55
51
 
52
+ ### Examples
53
+ - `/skill:resolve-merge-conflicts`
54
+ - `/skill:resolve-merge-conflicts --checks "npm test"`
55
+ - `/skill:resolve-merge-conflicts --no-continue`
56
+
57
+ ### Options
58
+ - `--checks <auto|command>`: Validation checks execution mode.
59
+ - `auto` (default): Detects and runs test, typecheck, and lint commands from the repository (CI workflows, Makefile, package manifests).
60
+ - `<command>`: Custom shell command to run for verification (e.g. `npm test`, `cargo check`).
61
+ - `--continue|--no-continue`: Whether to complete the in-flight operation after resolution and validation.
62
+ - `--continue` (default): Runs the operation's continue command (`git merge --continue`, `git rebase --continue`, or `git cherry-pick --continue`).
63
+ - `--no-continue`: Leaves resolved files staged in the index and stops without executing the continue command.
64
+
65
+ ### Unknown Arguments and Safe Execution
66
+ - Unknown flags must be rejected with an error. Never interpolate untrusted user text into shell execution without proper quoting.
67
+
68
+ ## Step 1 — Map the State and Operation
69
+
70
+ > [!IMPORTANT]
71
+ > 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.
72
+
73
+ Identify the in-flight operation per [conflict matrix](references/conflict-matrix.md):
74
+ - **Merge**: `.git/MERGE_HEAD` exists. `HEAD` is ours (target branch), `MERGE_HEAD` is theirs (incoming branch).
75
+ - **Rebase**: `.git/rebase-merge` or `.git/rebase-apply` exists.
76
+ > [!WARNING]
77
+ > In `git rebase`, `--ours` and `--theirs` are **reversed**!
78
+ > - `HEAD` ("ours") is the upstream branch being rebased onto.
79
+ > - `REBASE_HEAD` ("theirs") is your branch commit being replayed.
80
+ - **Cherry-pick**: `.git/CHERRY_PICK_HEAD` exists. `HEAD` is target branch, `CHERRY_PICK_HEAD` is commit being cherry-picked.
81
+
82
+ Query all unmerged paths:
56
83
  ```bash
57
- git log --oneline <ours>..<theirs> -- <file>
58
- git log --oneline <theirs>..<ours> -- <file>
84
+ git diff --name-only --diff-filter=U
59
85
  ```
60
86
 
61
- Read the commit messages; follow PR or issue references when the message
62
- alone does not explain the change. A hunk resolved without knowing both
63
- sides' intent is a guess wearing a merge commit.
64
-
65
- ## Step 3 — Resolve each hunk
87
+ ## Step 2 Reconstruct Both Intents
88
+
89
+ For each conflicting file, determine why each side modified the code:
90
+ - Check commit logs:
91
+ ```bash
92
+ # In merge:
93
+ git log --oneline HEAD..MERGE_HEAD -- <file>
94
+ git log --oneline MERGE_HEAD..HEAD -- <file>
95
+ # In rebase:
96
+ git log -1 REBASE_HEAD -- <file>
97
+ ```
98
+ - Read commit messages and linked issue references. A resolution without understanding both intents is an ungrounded guess.
99
+
100
+ ## Step 3 — Resolve Each Conflict by Type
101
+
102
+ Handle each file according to its conflict class:
103
+ - **Content conflict markers**: Preserve both changes if compatible (e.g. non-overlapping functions or independent parameters). If incompatible, select the change aligned with the operation goal, or prompt the user via `ask_user`. Verify no markers remain:
104
+ ```bash
105
+ grep -rn "<<<<<<<\|>>>>>>>" <files>
106
+ ```
107
+ - **Add / Add**: Merge file contents if same concept, or rename if distinct concepts.
108
+ - **Modify / Delete**: Trace whether deletion was deliberate refactoring or accidental; preserve or remove accordingly.
109
+ - **Rename**: Follow renamed files and integrate changes into the canonical filename.
110
+ - **Binary files**: Check out appropriate version (`git checkout --ours` / `--theirs`) or rebuild asset from source.
111
+ - **Submodules**: Resolve submodule commit pointer via `git diff --submodule` and submodule history.
112
+ - **Lockfiles**: Do not manually resolve JSON/YAML markers in package lockfiles. Re-derive them via the package manager (`npm install --package-lock-only`, `pnpm install --lockfile-only`, `cargo check`, `uv lock`).
113
+
114
+ Stage resolved files: `git add <files>`.
66
115
 
67
- - Both intents compatible → preserve both.
68
- - Genuinely incompatible → pick the side matching the merge's stated goal
69
- and record the trade-off for the report; when the goal itself does not
70
- decide it, ask the user rather than choosing silently.
71
- - Never invent new behavior in a resolution: the merged code does only
72
- what one or both sides already did.
73
- - Do not `--abort` to escape a hard conflict; abort only if the user
74
- decides the operation itself was wrong.
116
+ ## Step 4 Validate
75
117
 
76
- Search for leftover markers before moving on:
77
- `grep -rn "<<<<<<<\|>>>>>>>" <conflicting files>` must return nothing.
118
+ Run the validation suite determined by `--checks`:
119
+ - If `auto`: execute detected typecheck, tests, and linter.
120
+ - If `<command>`: execute the specified validation command.
121
+ - If any check fails, fix regressions caused by the resolution before proceeding.
78
122
 
79
- ## Step 4Validate
123
+ ## Step 5Complete Operation or Multi-Stop Loop
80
124
 
81
- Discover the project's own checks (CI workflow, manifest scripts,
82
- Makefile) and run them: typecheck, then tests, then lint/format. Fix
83
- anything the merge broke — the resolution is not done at "markers gone",
84
- it is done at "checks green".
125
+ If `--no-continue` was specified:
126
+ - Report that all conflicts are resolved and files are staged; stop here.
85
127
 
86
- ## Step 5 Complete the operation
128
+ If `--continue` is active (default):
129
+ - Execute the operation-specific continue command:
130
+ - **Merge**: `git merge --continue` (or `git commit`)
131
+ - **Rebase**: `git rebase --continue`
132
+ - **Cherry-pick**: `git cherry-pick --continue`
133
+ - **Multi-stop rebases**: If git stops on a subsequent commit conflict, loop back to Step 1 and repeat until the rebase completes.
134
+ - **Operation Abort**: If the user decides the operation is invalid or if unresolvable contradictions occur, run the operation-specific abort command (`git merge --abort`, `git rebase --abort`, or `git cherry-pick --abort`) and verify the tree returns to clean pre-operation state.
87
135
 
88
- Stage the resolved files and commit the merge; for a rebase or
89
- cherry-pick, `git rebase --continue` / `git cherry-pick --continue` and
90
- repeat from Step 1 for each further stop until the operation reports
91
- complete.
136
+ ## Step 6 Report
92
137
 
93
- Done when the operation has fully finished, checks are green, and the
94
- report lists each conflict with which intent(s) survived and any recorded
95
- trade-offs.
138
+ Summarize:
139
+ - Completed operation type (merge, rebase, cherry-pick)
140
+ - Each conflicting file, conflict type, and how intent was resolved
141
+ - Validation checks run and real outputs
142
+ - Current branch status and clean working tree verification
96
143
 
97
- ## Red flags
144
+ ## Red Flags
98
145
 
99
- - Taking `--ours`/`--theirs` wholesale without reading either side.
100
- - A resolution that introduces logic neither side had.
101
- - Committing with conflict markers still in a file.
102
- - Declaring done without running the project's checks.
146
+ - Taking `--ours` or `--theirs` wholesale without reading both sides.
147
+ - Inverting intent during a rebase by misunderstanding reversed ours/theirs semantics.
148
+ - Hand-editing conflict markers in binary files or complex lockfiles.
149
+ - Leaving `<<<<<<<` or `>>>>>>>` markers in any committed file.
150
+ - Declaring done without running validation checks.
151
+ - Executing an abort without user instruction.
@@ -1,12 +1,9 @@
1
1
  # Evals — resolve-merge-conflicts
2
2
 
3
- Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per
4
- bullet. Status: written at port time, not yet executed (`eval-status:
5
- untested`).
3
+ Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per bullet. Status: `eval-status: smoke-checked`.
6
4
 
7
- ## S1 — compatible two-sided conflict
8
- Setup: the merge of feat-rename stopped on a conflict in util.js. Resolve
9
- it and finish the merge.
5
+ ## S1 — Compatible two-sided conflict
6
+ Setup: the merge of feat-rename stopped on a conflict in util.js. Resolve it and finish the merge.
10
7
 
11
8
  Fixture:
12
9
  ```bash
@@ -28,31 +25,61 @@ git merge feat-rename > merge-output.txt 2>&1 || true
28
25
  ```
29
26
 
30
27
  Expected:
31
- - Reads both sides' history (log/show on main and feat-rename) before
32
- touching the file.
33
- - Resolution preserves both intents: the function is named findUser and
34
- getUserName calls findUser.
35
- - The merge is committed and no conflict markers remain in util.js.
28
+ - Reads both sides' history (log/show on main and feat-rename) before editing.
29
+ - Resolution preserves both intents: the function is named `findUser` and `getUserName` calls `findUser`.
30
+ - The merge is committed and no conflict markers remain in `util.js`.
36
31
 
37
- ## S2 — incompatible conflict
32
+ ## S2 — Incompatible conflict
38
33
  Setup: both sides changed the same default to different values.
34
+
35
+ Expected:
36
+ - Identifies the incompatibility. Picks per the merge's stated goal or prompts the user; trade-off recorded in the report.
37
+
38
+ ## S3 — Mid-rebase, multiple stops
39
+ Setup: a rebase is stopped on its first conflict with more commits still to replay; resolve and finish the whole rebase.
40
+
39
41
  Expected:
40
- - Picks per the merge's stated goal, or asks when the goal doesn't decide;
41
- trade-off recorded in the report.
42
+ - Correctly treats `HEAD` as upstream target and `REBASE_HEAD` as incoming replayed commit (recognizes reversed ours/theirs).
43
+ - Continues the rebase with `git rebase --continue` across multiple stops until complete.
44
+ - Runs validation checks at completion.
45
+
46
+ ## S4 — Binary file conflict
47
+ Setup: merge conflict on a binary asset (e.g. `logo.png`).
48
+
49
+ Expected:
50
+ - Detects binary conflict (no text conflict markers present).
51
+ - Determines intended version and resolves using `git checkout --ours` or `git checkout --theirs`.
52
+ - Stages binary asset with `git add logo.png`.
53
+
54
+ ## S5 — Modify/delete conflict
55
+ Setup: one branch modified `helper.js`, the other deleted it.
42
56
 
43
- ## S3 — mid-rebase, multiple stops
44
- Setup: a rebase is stopped on its first conflict with more commits still to
45
- replay; resolve and finish the whole rebase.
46
57
  Expected:
47
- - Continues the rebase after each resolution until complete; validates at
48
- the end.
58
+ - Checks git status for `CONFLICT (modify/delete)`.
59
+ - Inspects the commit that deleted the file to determine if deletion was intentional.
60
+ - Resolves by either staging the file (`git add helper.js`) or completing the deletion (`git rm helper.js`).
61
+
62
+ ## S6 — Operation-specific abort behavior
63
+ Setup: user requests aborting an in-flight rebase or merge.
64
+
65
+ Expected:
66
+ - For merge: invokes `git merge --abort`.
67
+ - For rebase: invokes `git rebase --abort`.
68
+ - Verifies working tree returns to clean pre-operation state.
69
+
70
+ ## S7 — No-continue flag
71
+ Setup: user runs `/skill:resolve-merge-conflicts --no-continue`.
72
+
73
+ Expected:
74
+ - Resolves all conflict markers and stages resolved files with `git add`.
75
+ - Does not run `git merge --continue` or `git rebase --continue`.
76
+ - Reports files staged and ready for user inspection.
49
77
 
50
78
  ## Baseline failure modes to watch for (RED)
51
- - `checkout --theirs` on everything to make it compile.
52
- - Invented "compromise" behavior neither side had.
53
- - `--abort` at the first hard hunk.
79
+ - Running `git checkout --theirs` on everything to make markers go away.
80
+ - Inverting intent during a rebase due to ours/theirs reversal.
81
+ - Leaving conflict markers in files.
82
+ - Running generic abort when resolution is achievable.
54
83
 
55
84
  ## Smoke record (2026-08-13)
56
-
57
- One representative scenario via `clio-coder skills eval` against Nemo-3.5-Lightning
58
- (30B local, llamacpp on mini), full-auto sandbox. PASS. Both sides' history read; both intents preserved; merge committed, no markers.
85
+ One representative scenario via `clio-coder skills eval` against Nemo-3.5-Lightning (30B local, llamacpp on mini), full-auto sandbox. PASS. Both sides' history read; both intents preserved; merge committed, no markers.
@@ -0,0 +1,126 @@
1
+ # Conflict Matrix and Resolution Reference
2
+
3
+ This reference documents operation detection, ours/theirs orientations, conflict types, and operation-specific resolution workflows for `resolve-merge-conflicts`.
4
+
5
+ ## 1. Operation State Detection
6
+
7
+ Determine which git operation is currently paused on conflicts:
8
+
9
+ | Indicator | Operation | Current (`HEAD` / "ours") | Incoming ("theirs") | Abort Command | Continue Command |
10
+ |---|---|---|---|---|---|
11
+ | `.git/MERGE_HEAD` exists | **Merge** | Target branch receiving merge | Source branch being merged in | `git merge --abort` | `git merge --continue` (or `git commit`) |
12
+ | `.git/rebase-merge` or `.git/rebase-apply` exists | **Rebase** | **Upstream branch** being rebased onto | **Your topic commit** being replayed | `git rebase --abort` | `git rebase --continue` |
13
+ | `.git/CHERRY_PICK_HEAD` exists | **Cherry-pick** | Target branch receiving commit | Commit being cherry-picked | `git cherry-pick --abort` | `git cherry-pick --continue` |
14
+ | `.git/REVERT_HEAD` exists | **Revert** | Current branch | Commit being reverted | `git revert --abort` | `git revert --continue` |
15
+
16
+ ### The Rebase "Ours / Theirs" Reversal Trap
17
+
18
+ > [!WARNING]
19
+ > In `git rebase`, `--ours` and `--theirs` are **reversed** compared to `git merge`!
20
+ > - `--ours` refers to the upstream target branch you are rebasing onto.
21
+ > - `--theirs` refers to the original topic branch commit that is being replayed.
22
+ > Failing to account for this inversion causes accidental reversion of your own changes.
23
+
24
+ To inspect intent without relying on relative terms:
25
+ ```bash
26
+ # During merge:
27
+ git log --oneline HEAD...MERGE_HEAD
28
+
29
+ # During rebase:
30
+ # Check the commit currently being applied:
31
+ git log -1 REBASE_HEAD 2>/dev/null || cat .git/rebase-merge/stopped-sha
32
+ ```
33
+
34
+ ## 2. Conflict Types and Handling
35
+
36
+ ### A. Content Conflicts (Conflict Markers)
37
+ Files contain `<<<<<<<`, `=======`, `>>>>>>>` markers.
38
+ 1. Read commit history for both sides to understand why each line changed.
39
+ 2. If both changes are compatible (e.g. adjacent methods, distinct properties), preserve both.
40
+ 3. If incompatible, choose the change aligned with the operation goal or prompt user for decision.
41
+ 4. Verify markers are gone: `grep -rn "<<<<<<<\|>>>>>>>" <files>` must return zero matches.
42
+
43
+ ### B. Add / Add Conflicts
44
+ Both branches added a file at the same path with different contents.
45
+ 1. Inspect both versions:
46
+ ```bash
47
+ git show :2:path/to/file # ours
48
+ git show :3:path/to/file # theirs
49
+ ```
50
+ 2. Determine if the files represent the same concept or a naming collision.
51
+ 3. If distinct concepts, rename one file and adjust imports. If same concept, merge contents and stage with `git add path/to/file`.
52
+
53
+ ### C. Modify / Delete Conflicts
54
+ One branch modified a file while the other deleted it.
55
+ - Git status reports: `CONFLICT (modify/delete): file deleted in <side> and modified in <other>`.
56
+ - To keep the modified file:
57
+ ```bash
58
+ git add path/to/file
59
+ ```
60
+ - To delete the file:
61
+ ```bash
62
+ git rm path/to/file
63
+ ```
64
+ - Always inspect the commit that deleted the file (`git log -n 5 -- <file>`) to confirm whether the deletion was intentional refactoring or an accidental deletion.
65
+
66
+ ### D. Rename Conflicts
67
+ Git detects: `CONFLICT (rename/rename)`, `CONFLICT (rename/delete)`, or `CONFLICT (rename/modify)`.
68
+ 1. Inspect rename targets using `git status` and `git log`.
69
+ 2. Consolidate modifications into the intended canonical filename.
70
+ 3. Remove stale files with `git rm` and stage the consolidated file with `git add`.
71
+
72
+ ### E. Binary File Conflicts
73
+ Binary files (images, compiled archives, model checkpoints) cannot contain text conflict markers.
74
+ 1. Determine which binary is required:
75
+ ```bash
76
+ # Select current branch version
77
+ git checkout --ours -- path/to/binary
78
+ # Or select incoming version
79
+ git checkout --theirs -- path/to/binary
80
+ ```
81
+ 2. Or regenerate the binary from source assets if applicable.
82
+ 3. Stage with `git add path/to/binary`.
83
+
84
+ ### F. Submodule Conflicts
85
+ Submodule conflict occurs when both sides updated the submodule pointer to different commit SHAs.
86
+ 1. Inspect the two submodule pointers:
87
+ ```bash
88
+ git diff --submodule
89
+ ```
90
+ 2. Enter submodule directory and check which commit is the ancestor or latest intended state:
91
+ ```bash
92
+ cd path/to/submodule && git merge-base --is-ancestor <sha1> <sha2>
93
+ ```
94
+ 3. Check out the resolved commit in the submodule, return to parent repository, and stage with `git add path/to/submodule`.
95
+
96
+ ### G. Generated Files and Lockfiles
97
+ Never attempt manual string edits on complex lockfiles (`package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `Cargo.lock`, `uv.lock`, `poetry.lock`).
98
+ 1. Check out the base version or let package manager re-derive resolutions:
99
+ - Node (npm): `npm install --package-lock-only`
100
+ - Node (pnpm): `pnpm install --lockfile-only`
101
+ - Rust: `cargo check` (updates Cargo.lock)
102
+ - Python (uv): `uv lock`
103
+ 2. Stage the regenerated lockfile with `git add`.
104
+
105
+ ## 3. Multi-Stop Rebase Workflow
106
+
107
+ When rebasing a series of commits, conflicts may occur at multiple commits:
108
+ 1. **Loop**:
109
+ - Inspect stopped commit and conflicting files.
110
+ - Reconstruct intent and resolve each conflict.
111
+ - Run validation checks (or fast tests).
112
+ - Stage all resolved files: `git add <files>`.
113
+ - Run `git rebase --continue`.
114
+ 2. **Next State**:
115
+ - If another conflict arises, repeat the loop.
116
+ - If the commit becomes empty (because changes were already incorporated upstream), use `git rebase --skip` only after verifying changes exist upstream.
117
+ 3. **Completion**:
118
+ - Once all commits are replayed, run the full validation suite.
119
+
120
+ ## 4. Operation Abort Handling
121
+
122
+ If conflicts cannot be resolved, or if the user requests aborting:
123
+ - **Merge**: `git merge --abort`
124
+ - **Rebase**: `git rebase --abort`
125
+ - **Cherry-pick**: `git cherry-pick --abort`
126
+ - Verify working tree is clean with `git status`.
@@ -1,22 +1,23 @@
1
1
  ---
2
2
  name: ship
3
- description: Use when finished work should leave the machine — "ship this", "commit and open the PR", "get this up for review". Stages reviewed paths, writes one atomic conventional commit referencing the issue, then pushes and opens the PR. Push and PR happen only on explicit intent; a bare "commit this" stops after the commit. 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.1.2
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 #