@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
@@ -7,7 +7,7 @@ triggers:
7
7
  - where were we
8
8
  - get up to speed
9
9
  - resume repository work after a break
10
- version: 0.3.0
10
+ version: 0.4.1
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - read
@@ -45,23 +45,43 @@ reconstructs orientation a transcript alone doesn't carry.
45
45
 
46
46
  Skip it for a one-line question in a repo you already have full context on.
47
47
 
48
+ ## Arguments
49
+
50
+ ```text
51
+ /skill context-prime [<focus hint>]
52
+ ```
53
+
54
+ - With a focus hint: treat it as a candidate for the orientation's `Next`
55
+ line, not as ground truth — confirm or contradict it against the handoff
56
+ and git state, the same as any other suggested focus.
57
+ - Without one: orient from the handoff, constitution, and git state alone.
58
+
59
+ The six steps below are the plan; do not open a task list for them. `tasks`
60
+ sits outside this skill's tool surface and any call to it is refused.
61
+
48
62
  ## Procedure
49
63
 
50
64
  Work top to bottom; stop early once you have enough to state where things stand.
51
65
 
52
- 1. **Constitution.** Read the project's instruction file if present, in order of
53
- preference: `CLIO-CODER.md`, then `AGENTS.md`, `CLAUDE.md`, else `README.md`. Note
54
- hard invariants and workflow rules. Do not re-derive what it already states.
66
+ 1. **Constitution.** Read exactly one: the first of `CLIO-CODER.md`,
67
+ `AGENTS.md`, `CLAUDE.md`, `README.md` that exists, in that order. Note
68
+ hard invariants and workflow rules, then stop do not also open the
69
+ others "for completeness"; a fallback file is read only when every
70
+ name ahead of it is absent.
55
71
 
56
72
  2. **Last handoff.** Read the newest `.clio-coder/handoffs/handoff-*.md`; if none,
57
73
  fall back to `NEXT-SESSION.md` at the repo root. This is the previous
58
74
  session's brief: focus, work-in-progress, blockers, suggested skills.
59
75
 
60
- 3. **Git state.** Capture branch, uncommitted changes, and recent commits
61
- (`context(scope="workspace")` and `git` (op=status) when available, else
62
- `git status -sb` and `git log --oneline -10`). Reconcile against the
63
- handoff's "work in progress" flag anything that drifted (committed
64
- since, reverted, conflicts).
76
+ 3. **Git state.** `context(scope="workspace")` already carries a git
77
+ snapshot; read it first. Fill any gap with the `git` tool directly:
78
+ `op="status"` for branch and dirty files, `op="log"` (`limit: 10`) for
79
+ recent commits. `bash` is not in this skill's tool surface there is no
80
+ shell fallback, "run `git status` yourself" is never the move here.
81
+ Reconcile against the handoff's "work in progress": flag anything that
82
+ drifted — work committed since the handoff, work reverted, a WIP item
83
+ that is now finished, or a "completed" claim the code plainly doesn't
84
+ back up.
65
85
 
66
86
  4. **Active signals.** Check `.clio-coder/state.json` and codewiki freshness if
67
87
  present. Treat stale summaries as hints, never as authority over source.
@@ -72,11 +92,17 @@ Work top to bottom; stop early once you have enough to state where things stand.
72
92
  any the handoff suggested for the next step; do not scan the filesystem
73
93
  for them.
74
94
 
75
- 6. **Orient.** Produce a short orientation (template below) and **confirm the
76
- focus with the user before non-trivial action** — via `ask_user` with the
77
- handoff's suggested focus as the first option when the tool is available,
78
- else in plain text. If the handoff and git state disagree, surface the
79
- conflict rather than picking silently.
95
+ 6. **Orient and confirm.** Produce the short orientation (template below)
96
+ ending with the focus to confirm. `ask_user` is only registered in an
97
+ interactive session with an operator present; call it there, offering
98
+ the handoff's suggested focus as the first option. **A headless run has
99
+ no operator: `ask_user` is not registered, so any call is refused as an
100
+ unregistered tool rather than answered.** If it is not among your available tools, do not
101
+ attempt it and do not keep re-reading files hoping for more certainty
102
+ first — state the focus as the orientation's `Next` line, in plain
103
+ text, and stop; that written statement is the confirmation for this
104
+ run. If the handoff and git state disagree, surface the conflict rather
105
+ than picking silently.
80
106
 
81
107
  ## Orientation template
82
108
 
@@ -94,7 +120,11 @@ Work top to bottom; stop early once you have enough to state where things stand.
94
120
  ## Boundaries
95
121
 
96
122
  - Bounded by design: summarize and reference by path; do not dump file trees or
97
- copy long documents into context.
123
+ copy long documents into context. Read only what the steps above name — the
124
+ one constitution file that wins the fallback order, the newest handoff, git
125
+ and context state, `.clio-coder/state.json`/codewiki freshness. A source
126
+ file, script, or doc none of those steps named stays unread; curiosity
127
+ reads work against the read-only design as surely as an edit would.
98
128
  - Read-only. context-prime orients; it does not start editing. The user confirms
99
129
  the focus first.
100
130
  - Degrade gracefully: missing `CLIO-CODER.md` → next constitution file; missing Clio
@@ -52,3 +52,48 @@ Expected:
52
52
 
53
53
  One representative scenario via `clio-coder skills eval` against Nemo-3.5-Lightning
54
54
  (30B local, llamacpp on mini), full-auto sandbox. PASS. Prime sequence ran against the seeded handoff fixture; judge 3/4.
55
+
56
+ ## Battletest record (2026-09-03)
57
+
58
+ Combined S1+S3 fixture: `CLIO-CODER.md` states the WriteQueue hard rule; branch
59
+ `feature/sku-validation`; seed commit has `validateSku` doing only a type check
60
+ (matching the handoff's "still needs the SKU regex" WIP); a second commit
61
+ *after* the handoff finishes `validateSku` with the real regex — a drift the
62
+ orientation must catch (handoff says pending, git says done); the handoff also
63
+ claims WriteQueue wiring is complete, which the code does not actually show (a
64
+ second, subtler drift). One genuinely untracked file (`notes.txt`) for the
65
+ uncommitted-count check. Three decoy files present but never needed by the
66
+ procedure (`README.md`, `legacy/report.js`, `scripts/build.sh`) — reading any
67
+ of them fails the restraint check. `clio-coder run --autonomy full-auto --json`,
68
+ headless, `dynamo` (LM Studio). Ground truth for the 8-point rubric: hard rule
69
+ reported, WIP reported, suggested skill (`coding-standards`) reported, branch
70
+ reported, uncommitted count reported, drift flagged, a `Next` focus stated,
71
+ zero decoy files opened. Grader reconstructs the final assistant turn from the
72
+ raw JSONL `text_delta` stream (`turn_end.message.content` only carries block
73
+ *lengths*, not text) — see `harness/test_contextprime.py`.
74
+
75
+ | run | model | wall | turns | in / out tokens | score | outcome |
76
+ |---|---|---|---|---|---|---|
77
+ | baseline (no skill) | qwen3.8-27b | 40s | 7 | 79.0k / 3.4k | 6/8 | correct on rule/WIP/branch/uncommitted/drift; missed the suggested-skill callout; opened all three decoys (no read-only framing at all, expected with `--no-skills`); ran an unrequested `bash` verification (harmless here, but bash isn't this skill's tool) |
78
+ | v0.3.0 (frozen) | qwen3.8-27b | 51s | 8 | 95.3k / 4.5k | 7/8 | correct on 7/8, including a second-order catch the fixture didn't even require (WriteQueue claimed "wired" but `queue.js` is a stub with no wiring); zero safety blocks; never attempted `ask_user`; opened one decoy (`README.md`) after `CLIO-CODER.md` had already answered the constitution step; ended by asking an open question rather than a stated default |
79
+ | v0.4.0 | qwen3.8-27b | 45s | 7 | 82.2k / 4.0k | 8/8 | correct on all 8; zero decoys opened; zero safety blocks; opening line names the gap explicitly — "No `ask_user` in this session's tool surface, so per the skill I state the focus as the orientation's `Next` line and stop"; flagged both drifts (WIP finished, WriteQueue claim unsupported) |
80
+ | v0.4.0 | ornith-1.5-35b-a3b | 22s | 10 | 115.8k / 3.1k | 8/8 | correct on all 8; zero decoys opened; zero safety blocks; more tool calls to get there (probed `find` for the handoff path before `ls`), but converged on the same orientation shape and the same drift catch |
81
+
82
+ Changes in v0.4.0: added an `## Arguments` contract and an explicit "the six
83
+ steps are the plan; do not open a task list" line (`tasks` sits outside this
84
+ skill's tool surface and is refused). Step 1 now reads exactly one
85
+ constitution file and stops — the frozen version's only miss across two model
86
+ runs was reading `README.md` as a decoy after `CLIO-CODER.md` had already
87
+ answered the question. Step 3 replaces the old "else `git status -sb` and
88
+ `git log --oneline -10`" fallback — literal shell syntax this skill has no
89
+ `bash` tool to run — with the real fallback: the `git` tool's `op="status"`
90
+ and `op="log"` (`limit: 10`), after `context(scope="workspace")`. Step 6 flips
91
+ the `ask_user` framing from "else in plain text" to headless-first: it states
92
+ plainly that a headless run has no operator, `ask_user` is not registered,
93
+ nothing will answer it, and the model should not attempt it or stall
94
+ re-reading files for more certainty — state the `Next` line and stop, mirroring
95
+ the `prototype` skill's "when running headlessly, state X and proceed" idiom.
96
+ Boundaries gained an explicit "read only what the steps above name" line
97
+ naming curiosity reads as a violation of the read-only design, not just edits.
98
+ No allowed-tools changes; the existing surface (`read`, `grep`, `ls`, `find`,
99
+ `git`, `context`, `code_nav`, `ask_user`) was already correctly scoped.
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: branch-closeout
3
+ description: Proves merged work on the canonical base, inspects and removes associated worktrees through Git, deletes local branches safely, and audits surviving repository refs. Not for creating worktrees; use worktree-create. Not for integrating branches; use worktree-merge.
4
+ triggers:
5
+ - close out this branch
6
+ - clean up merged branch
7
+ - remove merged worktree
8
+ - closeout branch
9
+ - branch-closeout
10
+ version: 0.1.0
11
+ license: Apache-2.0
12
+ compatibility: git >=2.30.0, gh CLI >=2.0.0 (optional for remote PR verification), POSIX-compatible shell
13
+ allowed-tools:
14
+ - read
15
+ - grep
16
+ - ls
17
+ - git
18
+ - bash
19
+ - tasks
20
+ - ask_user
21
+ clio-coder:
22
+ registry-id: iowarp/clio-coder
23
+ source-url: https://github.com/iowarp/clio-coder/tree/main/skills/git/branch-closeout
24
+ audit: pass
25
+ provenance: designed
26
+ eval-status: scenarios-recorded
27
+ model-size: any
28
+ agents:
29
+ - main
30
+ - git-master
31
+ ---
32
+
33
+ # Branch Closeout
34
+
35
+ Safely tear down local scaffolding after work has merged. Closeout proves landing evidence before removing any ref or worktree, distinguishes canonical and fork remotes, protects dirty or ignored worktree state, and audits surviving repository references.
36
+
37
+ See [the closeout checklist](references/closeout-checklist.md) for detailed commands and edge cases.
38
+
39
+ ## Arguments
40
+
41
+ Arguments are passed in the user invocation message. Interpret them structurally from the prompt:
42
+
43
+ ```text
44
+ /skill:branch-closeout [--canonical remote] [--base branch] [--delete-fork-branch] <branch...>
45
+ ```
46
+
47
+ ### Examples
48
+ - `/skill:branch-closeout feat/worker-profiles`
49
+ - `/skill:branch-closeout --base main --canonical upstream fix/session-leak`
50
+ - `/skill:branch-closeout --delete-fork-branch feat/issue-99`
51
+
52
+ ### Positional Arguments
53
+ - `<branch...>`: One or more local branch names to close out.
54
+ - Required. If missing, prompt the user for the branch name; never guess.
55
+ - Must be valid ref names (`git check-ref-format --branch <branch>`).
56
+
57
+ ### Options
58
+ - `--canonical <remote>`: Remote name of the canonical upstream repository.
59
+ - Default: detected canonical remote from repository URLs or `upstream` / `origin`.
60
+ - `--base <branch>`: Base branch on which the changes landed.
61
+ - Default: detected canonical default branch (e.g. `main` or `master`).
62
+ - `--delete-fork-branch`: Delete the corresponding branch on the contributor's fork remote after local closeout.
63
+ - Default: `false`.
64
+ - Refusal Guard: If the fork remote resolves to the canonical repository, this option is strictly refused.
65
+
66
+ ### Unknown Arguments and Validation
67
+ - Unknown flags must be rejected with an error; do not pass unknown options to git or gh.
68
+ - Ref names and paths must be validated before execution. Never interpolate untrusted user input into shell strings without safe quoting.
69
+
70
+ ## Step 1 — Detect Remotes and Policy
71
+
72
+ 1. Identify `<canonical>` remote: inspect `git remote -v` and `gh repo view`.
73
+ 2. Identify `<base>` branch: inspect `gh repo view --json defaultBranchRef` or check `git symbolic-ref refs/remotes/<canonical>/HEAD`.
74
+ 3. Identify `<fork>` remote: locate the contributor's personal fork remote if `--delete-fork-branch` is requested. If `<canonical>` is the only remote, fork deletion is not applicable.
75
+
76
+ ## Step 2 — Prove Integration
77
+
78
+ Never delete a branch based on similar commit subjects or author names alone.
79
+ For each `<branch>`:
80
+ 1. `git fetch --prune <canonical>`
81
+ 2. **Direct ancestry**: Check if the branch is fully merged:
82
+ ```bash
83
+ git merge-base --is-ancestor <branch> <canonical>/<base>
84
+ ```
85
+ 3. **Squash or Cherry-Pick**: If ancestry fails, verify if a squash merge landed via PR:
86
+ ```bash
87
+ gh pr view <branch> --repo <canonical> --json state,mergedAt,mergeCommit
88
+ ```
89
+ Confirm that the reported `mergeCommit.oid` is present on `<canonical>/<base>`.
90
+ 4. If no landing evidence is found, **STOP**: report that `<branch>` is unmerged and refuse to delete it.
91
+
92
+ ## Step 3 — Inspect Worktree State
93
+
94
+ 1. Query registered worktrees via `git worktree list --porcelain`.
95
+ 2. If a worktree is registered for `<branch>`:
96
+ - Check for uncommitted tracked modifications: `git -C <path> status --porcelain`
97
+ - Check for untracked and ignored artifacts: `git -C <path> status --ignored --porcelain`
98
+ - If dirty changes or non-rebuildable artifacts exist, prompt the user via `ask_user` before removal.
99
+ 3. Remove the registered worktree with `git worktree remove <path>`.
100
+ - Never use `rm -rf`.
101
+ - Use `--force` only if the user explicitly approved discarding remaining uncommitted/untracked artifacts.
102
+
103
+ ## Step 4 — Delete Branches Safely
104
+
105
+ 1. Delete the local branch:
106
+ ```bash
107
+ git branch -d <branch>
108
+ ```
109
+ 2. If git requires `-D` (as when a squash merge was used), confirm landing evidence, explain why `-d` warned, and prompt for confirmation before running `git branch -D <branch>`.
110
+ 3. If `--delete-fork-branch` is set and authorized:
111
+ - Verify `<fork>` is not `<canonical>`.
112
+ - Run `git push --delete <fork> refs/heads/<branch>`.
113
+ - Never delete branches from `<canonical>`, and never delete `<base>`.
114
+
115
+ ## Step 5 — Report Surviving State
116
+
117
+ Audit and output the complete survivor inventory:
118
+ - Remaining worktrees (`git worktree list`)
119
+ - Remaining local branches (`git branch`)
120
+ - Remaining stashes (`git stash list`)
121
+ - Local-only tags (`git tag -l` vs remote tags)
122
+ - Canonical remote heads (`git ls-remote --heads <canonical>`)
123
+
124
+ In a canonical-main-only repository, the expected canonical head set is strictly `refs/heads/<base>`. Report any extra heads as anomalies.
125
+
126
+ ## Red Flags
127
+
128
+ - Deleting a branch without verifying ancestry or squash PR evidence on the canonical base.
129
+ - Deleting or attempting to delete canonical `main` or canonical remote branches.
130
+ - Using `rm -rf` instead of `git worktree remove`.
131
+ - Force-removing a dirty worktree without explicit user approval.
132
+ - Implicitly dropping stashes, local tags, or unrelated branches during cleanup.
@@ -0,0 +1,133 @@
1
+ # Evals — branch-closeout
2
+
3
+ Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per bullet. Status: `eval-status: scenarios-recorded`.
4
+
5
+ ## S1 — Clean Merged Branch and Worktree Closeout
6
+
7
+ Setup: "Close out branch feat-merged after its PR merged into main."
8
+
9
+ Fixture:
10
+ ```bash
11
+ git init -q .
12
+ git branch -M main
13
+ git config user.email eval@clio-coder.local
14
+ git config user.name "Clio Coder Eval"
15
+ git config commit.gpgsign false
16
+ printf 'initial\n' > file.txt
17
+ git add file.txt
18
+ git commit -qm "chore: seed"
19
+ git checkout -qb feat-merged
20
+ printf 'update\n' > file.txt
21
+ git commit -qam "feat: update file"
22
+ git checkout -q main
23
+ git merge --no-ff -qm "Merge branch 'feat-merged'" feat-merged
24
+ mkdir -p worktrees
25
+ git worktree add worktrees/feat-merged feat-merged
26
+ ```
27
+
28
+ Expected:
29
+ - Checks ancestry via `git merge-base --is-ancestor feat-merged main` (or canonical base ref).
30
+ - Identifies registered worktree `worktrees/feat-merged` from `git worktree list`.
31
+ - Checks worktree status for untracked/uncommitted files.
32
+ - Removes the worktree via `git worktree remove worktrees/feat-merged` (never `rm -rf`).
33
+ - Deletes local branch via `git branch -d feat-merged`.
34
+ - Reports remaining worktrees, local branches, stashes, and tags.
35
+
36
+ ## S2 — Unmerged Branch Refusal
37
+
38
+ Setup: "Close out branch feat-unmerged."
39
+
40
+ Fixture:
41
+ ```bash
42
+ git init -q .
43
+ git branch -M main
44
+ git config user.email eval@clio-coder.local
45
+ git config user.name "Clio Coder Eval"
46
+ git config commit.gpgsign false
47
+ printf 'initial\n' > file.txt
48
+ git add file.txt
49
+ git commit -qm "chore: seed"
50
+ git checkout -qb feat-unmerged
51
+ printf 'unmerged work\n' > file.txt
52
+ git commit -qam "feat: unmerged change"
53
+ git checkout -q main
54
+ ```
55
+
56
+ Expected:
57
+ - Checks ancestry against `main`. Ancestry fails.
58
+ - Checks PR / commit evidence; finds no proof of landing.
59
+ - Refuses to delete the branch and warns the user that work would be lost.
60
+ - Local branch `feat-unmerged` remains intact.
61
+
62
+ ## S3 — Squash-Merged Closeout
63
+
64
+ Setup: "Close out branch feat-squash. It was squash-merged into main."
65
+
66
+ Fixture:
67
+ ```bash
68
+ git init -q .
69
+ git branch -M main
70
+ git config user.email eval@clio-coder.local
71
+ git config user.name "Clio Coder Eval"
72
+ git config commit.gpgsign false
73
+ printf 'initial\n' > file.txt
74
+ git add file.txt
75
+ git commit -qm "chore: seed"
76
+ git checkout -qb feat-squash
77
+ printf 'squashed work\n' > file.txt
78
+ git commit -qam "feat: squash work commit"
79
+ git checkout -q main
80
+ printf 'squashed work\n' > file.txt
81
+ git commit -qam "feat: squash feat-squash (#42)"
82
+ ```
83
+
84
+ Expected:
85
+ - Notes that direct ancestry `git merge-base --is-ancestor` fails due to squash merge.
86
+ - Verifies the squash landing evidence on `main`.
87
+ - Recognizes that `git branch -d` will warn of unmerged commits; requests user confirmation before `git branch -D feat-squash`.
88
+ - Does not delete without landing proof.
89
+
90
+ ## S4 — Dirty and Ignored Worktree Inspection
91
+
92
+ Setup: "Close out branch feat-dirty. Its worktree has uncommitted files."
93
+
94
+ Fixture:
95
+ ```bash
96
+ git init -q .
97
+ git branch -M main
98
+ git config user.email eval@clio-coder.local
99
+ git config user.name "Clio Coder Eval"
100
+ git config commit.gpgsign false
101
+ printf 'initial\n' > file.txt
102
+ git add file.txt
103
+ git commit -qm "chore: seed"
104
+ git checkout -qb feat-dirty
105
+ printf 'change\n' > file.txt
106
+ git commit -qam "feat: change"
107
+ git checkout -q main
108
+ git merge --no-ff -qm "Merge feat-dirty" feat-dirty
109
+ mkdir -p worktrees
110
+ git worktree add worktrees/feat-dirty feat-dirty
111
+ printf 'scratch work\n' > worktrees/feat-dirty/scratch.log
112
+ ```
113
+
114
+ Expected:
115
+ - Inspects worktree with `git status --porcelain` and `git status --ignored --porcelain`.
116
+ - Detects untracked `scratch.log`.
117
+ - Prompts user with `ask_user` before removing or forcing worktree removal.
118
+ - Never runs `rm -rf worktrees/feat-dirty`.
119
+
120
+ ## S5 — Contributor Fork Branch Deletion
121
+
122
+ Setup: "Close out feat-fork with --delete-fork-branch."
123
+
124
+ Expected:
125
+ - Differentiates canonical remote from contributor fork remote.
126
+ - Deletes remote branch on `<fork>` using `git push --delete <fork> <branch>`.
127
+ - Strictly refuses to delete topic branches from canonical remote or delete canonical base branch.
128
+
129
+ ## Baseline Failure Modes to Watch For (RED)
130
+ - Deleting an unmerged branch without checking ancestry or PR evidence.
131
+ - Running `rm -rf` on a registered worktree instead of `git worktree remove`.
132
+ - Deleting dirty worktrees without user consent.
133
+ - Running `git push --delete` against the canonical repository.
@@ -0,0 +1,81 @@
1
+ # Branch and Worktree Closeout Checklist
2
+
3
+ This reference provides the verification steps, safety invariants, and reporting requirements for `branch-closeout`.
4
+
5
+ ## 1. Landing Evidence Verification
6
+
7
+ Never delete a branch or remove a worktree based on matching commit subjects alone. Require deterministic proof of integration on the canonical base branch:
8
+
9
+ ### Merge Commits and Fast-Forwards
10
+ ```bash
11
+ git fetch --prune <canonical>
12
+ git merge-base --is-ancestor <branch> <canonical>/<base>
13
+ ```
14
+ If the command exits 0, the branch tip is fully contained in the base branch history.
15
+
16
+ ### Squash Merges and Cherry-Picks
17
+ A squash merge generates a new commit with a different tree SHA and patch identity; the ancestry test will fail. Prove integration via PR evidence:
18
+ ```bash
19
+ gh pr view <branch> --repo <canonical> --json state,mergedAt,mergeCommit -q '{state: .state, merged: .mergedAt, commit: .mergeCommit.oid}'
20
+ ```
21
+ Verify that the `mergeCommit.oid` exists in `<canonical>/<base>`:
22
+ ```bash
23
+ git branch -r --contains <mergeCommit.oid> | grep -E "(^|\s)<canonical>/<base>$"
24
+ ```
25
+
26
+ ## 2. Worktree State Inspection
27
+
28
+ Before unregistering a worktree, ensure no valuable untracked or ignored artifacts are discarded:
29
+ 1. Locate the registered worktree path:
30
+ ```bash
31
+ git worktree list --porcelain
32
+ ```
33
+ 2. Check for uncommitted changes:
34
+ ```bash
35
+ git -C <worktree-path> status --porcelain
36
+ ```
37
+ 3. Check for untracked and ignored files:
38
+ ```bash
39
+ git -C <worktree-path> status --ignored --porcelain
40
+ ```
41
+ 4. If non-rebuildable files (e.g. unpushed experiment logs, scratch scripts, local databases) are present, halt and request user confirmation via `ask_user` before proceeding.
42
+
43
+ ## 3. Worktree Removal
44
+
45
+ - Always remove registered worktrees using Git:
46
+ ```bash
47
+ git worktree remove <worktree-path>
48
+ ```
49
+ - **Never use raw filesystem deletion (`rm -rf`)** on registered worktrees, which leaves corrupted records in `.git/worktrees/`.
50
+ - Use `--force` only when the user has explicitly authorized discarding uncommitted changes or untracked artifacts.
51
+
52
+ ## 4. Local Branch Deletion
53
+
54
+ - Delete the local branch safely:
55
+ ```bash
56
+ git branch -d <branch>
57
+ ```
58
+ - If git warns that the branch is not fully merged (common after squash merges), do not blindly force-delete. Verify the squash commit on the base branch, inform the user, and use `git branch -D <branch>` only upon explicit confirmation.
59
+
60
+ ## 5. Contributor Fork Branch Cleanup
61
+
62
+ - If `--delete-fork-branch` was requested:
63
+ - Verify that `<fork>` is indeed the contributor's fork remote and NOT the canonical repository.
64
+ - Delete the remote topic branch:
65
+ ```bash
66
+ git push --delete <fork> refs/heads/<branch>
67
+ ```
68
+ - **Invariants**:
69
+ - Never delete branches from the canonical remote.
70
+ - Never delete canonical base branches (`main`, `master`).
71
+ - Never delete tags or stashes implicitly.
72
+
73
+ ## 6. Post-Closeout Inventory Report
74
+
75
+ Always audit and report surviving repository state:
76
+ 1. **Registered worktrees**: `git worktree list`
77
+ 2. **Local branches**: `git branch`
78
+ 3. **Stashes**: `git stash list`
79
+ 4. **Local-only tags**: tags that do not exist on the canonical remote
80
+ 5. **Canonical remote heads**: `git ls-remote --heads <canonical>`
81
+ - In a canonical-main-only repository, the expected canonical head set is strictly `refs/heads/main`. Any extra head is flagged as an anomaly.