@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
@@ -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.
@@ -1,22 +1,23 @@
1
1
  ---
2
2
  name: file-ticket
3
- description: Use when something noticed mid-session must become a tracker issue "file a ticket", "open an issue for this", "log this bug", "ticket this behavior". Captures evidence from the live session, dedups against existing issues, composes a labeled issue with acceptance criteria, confirms, and creates it via gh. Filing only; never fixes. Not for batch ticket creation from a PRD; use backlog. Not for diagnosing an existing issue; use fix-issue.
3
+ description: "Turns something noticed mid-session into a tracker issue: captures evidence, dedups against existing issues, composes a labeled issue with acceptance criteria, confirms, and creates it via gh. Not for batch ticket creation from a PRD; use backlog. Not for diagnosing an existing issue; use fix-issue."
4
4
  triggers:
5
5
  - file a ticket
6
6
  - open an issue for this
7
7
  - log this bug
8
8
  - ticket this behavior
9
9
  - create a tracker issue
10
- version: 0.1.2
10
+ version: 0.3.0
11
11
  license: Apache-2.0
12
+ compatibility: git >=2.30.0, gh CLI >=2.0.0 (authenticated for issue operations), 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/file-ticket
@@ -30,83 +31,96 @@ clio-coder:
30
31
 
31
32
  # File Ticket
32
33
 
33
- Turn one observed behavior into one well-formed tracker issue, then stop.
34
- The ticket is the deliverable; the fix belongs to a later skill in the
35
- pipeline (fix-issue picks it up from here).
34
+ Turn one observed behavior into one well-formed tracker issue, then stop. The ticket is the deliverable; the fix belongs to a later skill in the pipeline (`fix-issue` picks it up from here).
36
35
 
37
- ## Step 1 Capture
36
+ See [issue discovery](references/issue-discovery.md) for template, label, and milestone discovery details, and [issue template](assets/issue-template.md) for the default body layout.
38
37
 
39
- From the session that surfaced the behavior, record before anything scrolls
40
- away:
38
+ ## Arguments
41
39
 
42
- - **Type**: bug, enhancement, documentation, or question. Uncertain ask, never
43
- guess between bug and enhancement.
44
- - **Observed vs expected**: what actually happened, in the reporter's words,
45
- and what should have happened.
46
- - **Reproduction**: the exact commands, slash commands, or session steps
47
- that showed the behavior. Only steps actually performed; a repro you did
48
- not run is written as "unverified".
49
- - **Evidence**: when the code location is already known or findable in one
50
- short grep pass, cite it as `file:line`. This is a pointer for the
51
- investigator, not a root-cause analysis; stop after at most a few minutes
52
- of looking.
40
+ Arguments are passed in the user invocation message. Interpret them structurally from the prompt:
53
41
 
54
- Complete when every bullet above is either filled or explicitly marked
55
- unknown.
42
+ ```text
43
+ /skill:file-ticket [--repo owner/repo] [--type type] [--milestone name] <observation>
44
+ ```
56
45
 
57
- ## Step 2 — Dedup
46
+ ### Examples
47
+ - `/skill:file-ticket settings overlay crashes when terminal is narrower than 40 columns`
48
+ - `/skill:file-ticket --type bug --milestone v1.2 "memory leak in worker pool"`
49
+ - `/skill:file-ticket --repo owner/custom-repo --type enhancement add dark mode support`
50
+
51
+ ### Positional Arguments
52
+ - `<observation>`: Free-text description of the observed defect, symptom, or enhancement.
53
+ - Required if not already established in recent session conversation.
54
+ - If omitted, prompt the user for the observed behavior.
55
+
56
+ ### Options
57
+ - `--repo <owner/repo>`: Target GitHub repository.
58
+ - Default: detected canonical repository (`gh repo view --json nameWithOwner -q .nameWithOwner` or Git remote tracking).
59
+ - Validation: Must match `^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$`.
60
+ - `--type <type>`: Issue category.
61
+ - Allowed: `bug`, `enhancement`, `documentation`, `question` (or repository-defined issue types).
62
+ - Default: inferred from `<observation>` or confirmed with user via `ask_user`.
63
+ - `--milestone <name>`: Open milestone to attach to the ticket.
64
+ - Default: none (or repository triage default).
65
+ - Validation: Must match an open milestone returned by the GitHub API.
66
+
67
+ ### Unknown Arguments and Safe Quoting
68
+ - Unknown options must be rejected with an error; do not pass unknown flags to `gh`.
69
+ - Never interpolate raw user strings into double-quoted shell command strings. Write the issue body to a temporary file and pass `--body-file "$tmpfile"` to prevent command substitution or backtick evaluation.
58
70
 
59
- ```bash
60
- gh issue list --search "<key terms>" --state all --limit 20
61
- ```
71
+ ## Step 1 — Capture
62
72
 
63
- Requires an authenticated gh CLI; if the command fails, report the exact
64
- failure and stop rather than filing blind. An open duplicate comment the
65
- new evidence on it instead of filing, and report that issue's URL as the
66
- outcome. A closed duplicate file the new issue and link the closed one
67
- in the body.
73
+ From the session that surfaced the behavior, record before anything scrolls away:
74
+ - **Type**: bug, enhancement, documentation, or question. Uncertain -> ask via `ask_user`; never guess between bug and enhancement.
75
+ - **Observed vs expected**: what actually happened, in the reporter's words, and what should have happened.
76
+ - **Reproduction**: the exact commands, slash commands, or session steps that showed the behavior. Only steps actually performed; a repro you did not run is written as "unverified".
77
+ - **Evidence**: when the code location is already known or findable in one short grep pass, cite it as `file:line`. Stop after at most a few minutes of searching.
68
78
 
69
- ## Step 3 Compose
79
+ Complete when every bullet above is either filled or explicitly marked unknown.
70
80
 
71
- - **Title**: conventional tag plus a specific imperative summary, matching
72
- the repo's issue templates (`fix: memory overlay cannot scroll`, `feat:`,
73
- `docs:`). Never a bare noun.
74
- - **Body sections**: Problem (observed vs expected), Reproduce, Evidence
75
- (`file:line` pointers and session excerpts), Acceptance criteria as a
76
- markdown checklist a reviewer can verify from observable behavior, and
77
- Links (duplicates, related issues, source docs).
78
- - **Labels**: one type label (`bug`, `enhancement`, `documentation`,
79
- `question`) plus every applicable `area:*` label that exists in the repo
80
- (`gh label list`). Missing area label → propose it in Step 4 rather than
81
- creating it silently.
82
- - **Milestone**: the open milestone for the next release when the work
83
- clearly belongs there; otherwise none.
81
+ ## Step 2 Resolve Repository and Dedup
84
82
 
85
- ## Step 4 Confirm
83
+ 1. Determine `--repo <owner/repo>` (provided flag or detected via `gh repo view`).
84
+ 2. Search for existing issues:
85
+ ```bash
86
+ gh issue list --repo <owner/repo> --search "<key terms>" --state all --limit 20
87
+ ```
88
+ Requires an authenticated `gh` CLI; if the command fails, report the exact failure and stop rather than filing blind.
89
+ 3. **Open duplicate found**:
90
+ - Do NOT file a new issue.
91
+ - Compose a comment with the new evidence and repro details.
92
+ - **Mandatory confirmation**: Present the target issue URL and the exact comment text to the user via `ask_user`. Execute `gh issue comment <id> --repo <owner/repo> --body-file "$tmpfile"` ONLY after the user confirms.
93
+ - Report that issue's URL as the outcome and end.
94
+ 4. **Closed duplicate found**:
95
+ - Continue to file a new issue and link the closed issue in the body's Links section.
86
96
 
87
- Show the full title, body, labels, and milestone, and get an explicit yes
88
- via `ask_user`. Issue creation is outward-facing; nothing is created before
89
- the yes. The user trimming scope here is normal — file what they confirm.
97
+ ## Step 3 Discover Taxonomy and Compose
90
98
 
91
- ## Step 5 Create and hand off
99
+ 1. Discover repository issue templates, labels, and open milestones per [issue discovery](references/issue-discovery.md).
100
+ 2. Format the ticket:
101
+ - **Title**: conventional tag plus a specific imperative summary (`fix: ...`, `feat: ...`, `docs: ...`). Never a bare noun.
102
+ - **Body**: Problem (observed vs expected), Reproduce, Evidence (`file:line` pointers and session excerpts), Acceptance criteria as a verifiable checklist, and Links. Use [the standard template](assets/issue-template.md) when no repository template matches.
103
+ - **Labels**: one type label (`bug`, `enhancement`, etc.) plus applicable discovered area/component labels (`area:*`). Propose new labels to the user rather than creating them silently.
104
+ - **Milestone**: apply `--milestone` if specified and valid; otherwise leave unassigned.
92
105
 
106
+ ## Step 4 — Confirm Every Outward Action
107
+
108
+ Show the full title, repository, labels, milestone, and complete body.
109
+ Obtain explicit approval via `ask_user`. Issue creation is an outward-facing change; nothing is created before the user explicitly confirms.
110
+
111
+ ## Step 5 — Create and Hand Off
112
+
113
+ Write the body to a file and execute:
93
114
  ```bash
94
- gh issue create --title "..." --body-file "$tmpdir/body.md" --label "..." [--milestone "..."]
115
+ gh issue create --repo <owner/repo> --title "..." --body-file "$tmpfile" --label "..." [--milestone "..."]
95
116
  ```
117
+ Run creation exactly once, verify with `gh issue view`, report the issue number and URL, and name the next pipeline step: `fix-issue`.
96
118
 
97
- Write the body to a file and pass `--body-file`; a body inlined in a
98
- double-quoted shell string loses every backtick span to command
99
- substitution. Run the create exactly once, then verify with
100
- `gh issue view` before any retry; a retry after an unread result is how
101
- duplicates happen. Report the issue number and URL, and name the next pipeline step: fix-issue,
102
- which diagnoses only what the ticket leaves unknown. Done when the URL is reported or the duplicate path
103
- ended at an existing issue.
104
-
105
- ## Red flags
119
+ ## Red Flags
106
120
 
107
121
  - Filing without the Step 2 dedup search.
122
+ - Posting a comment on an existing duplicate without explicit user confirmation.
108
123
  - Sliding into fixing the bug instead of filing it.
109
- - Acceptance criteria that restate the title.
110
- - Reproduction steps written from imagination rather than the session.
111
- - Creating labels or milestones nobody approved.
112
- - Batch-filing many tickets; that is backlog's job.
124
+ - Passing raw user text in `gh issue create --body "..."` instead of using `--body-file`.
125
+ - Creating repository labels or milestones nobody approved.
126
+ - Batch-filing multiple tickets; that is `backlog`'s job.
@@ -0,0 +1,22 @@
1
+ <!-- Standard issue template used by file-ticket when the repository does not provide a custom .github/ISSUE_TEMPLATE -->
2
+
3
+ ## Problem
4
+ <!-- What actually happened vs what was expected -->
5
+ **Observed**:
6
+ **Expected**:
7
+
8
+ ## Reproduction
9
+ <!-- Exact commands, inputs, or steps that reproduced the behavior; marked 'unverified' if not personally executed -->
10
+ 1.
11
+
12
+ ## Evidence
13
+ <!-- Code pointers (file:line), error messages, or logs observed during the session -->
14
+ - `path/to/file.ext:line`: Description of relevant code or error
15
+
16
+ ## Acceptance Criteria
17
+ <!-- Verifiable criteria that confirm the issue is resolved -->
18
+ - [ ]
19
+
20
+ ## Links & Context
21
+ <!-- Duplicate or related issue links, PR links, or documentation references -->
22
+ -