@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.
- package/CHANGELOG.md +127 -0
- package/CONTRIBUTING.md +142 -52
- package/README.md +434 -473
- package/SECURITY.md +2 -1
- package/dist/{acp-ZILU3AUO.js → acp-H2NGRPWO.js} +12 -12
- package/dist/{agents-HYWGBGQR.js → agents-TL5LLUQP.js} +56 -55
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-N3QT7CBO.js → auth-E5SW4HMS.js} +23 -21
- package/dist/builtins-IA7V7FUC.js +22 -0
- package/dist/{chunk-7RY5VZPH.js → chunk-2APPQIER.js} +8 -8
- package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
- package/dist/{chunk-JA5QWE4Z.js → chunk-2UG5F4C5.js} +1973 -1664
- package/dist/{chunk-5YHDIDBP.js → chunk-2UH2KFUP.js} +2 -2
- package/dist/{chunk-CTJ4RNAA.js → chunk-2VIKGWFZ.js} +2 -2
- package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
- package/dist/{chunk-GIZNH63R.js → chunk-35MSIRKH.js} +9 -4
- package/dist/chunk-3EBYEESD.js +314 -0
- package/dist/{chunk-J5LZHVIT.js → chunk-3M6DQK6S.js} +113 -35
- package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
- package/dist/{chunk-6FN3E6KX.js → chunk-4O6MANBS.js} +2 -2
- package/dist/chunk-4UVU7BJ5.js +39 -0
- package/dist/{chunk-VKRH2TCS.js → chunk-4WR7VSYB.js} +2 -2
- package/dist/{chunk-BBTJOK6Y.js → chunk-54CBCGIR.js} +5 -5
- package/dist/{chunk-AP73CFDC.js → chunk-5ICU3EUH.js} +2 -2
- package/dist/chunk-5MEZN6CB.js +1334 -0
- package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
- package/dist/{chunk-ABLSQ6JX.js → chunk-64I3JVYM.js} +8 -2
- package/dist/{chunk-AFKWHWXF.js → chunk-6PTFB5VS.js} +39 -22
- package/dist/{chunk-VN3SHNBN.js → chunk-7DICMOS6.js} +2 -2
- package/dist/chunk-7DRAWPTZ.js +360 -0
- package/dist/chunk-7E7I3WLS.js +3762 -0
- package/dist/{chunk-BJGUKIG4.js → chunk-7ZYNNDKC.js} +7 -7
- package/dist/{chunk-XKA2ICR3.js → chunk-AF4YM7Z4.js} +652 -252
- package/dist/{chunk-GVQJ5CCZ.js → chunk-AX2THNSA.js} +12 -12
- package/dist/{chunk-IG7BCQBA.js → chunk-B4OAX3SI.js} +65 -3
- package/dist/{chunk-TD3PGPQA.js → chunk-B4VEBZKF.js} +3 -3
- package/dist/{chunk-74YWRRU5.js → chunk-BEPZRGGU.js} +10 -10
- package/dist/{chunk-FEFIFZTL.js → chunk-CE5AX47J.js} +2 -2
- package/dist/{chunk-UAPGZHYC.js → chunk-DWUOQKRU.js} +25 -11
- package/dist/{chunk-THYWACCR.js → chunk-E3TPLWFX.js} +3 -3
- package/dist/{chunk-7EPLI7VL.js → chunk-EKCHAPYA.js} +2 -2
- package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
- package/dist/{chunk-PJJ6MY27.js → chunk-F5JHEYZM.js} +7 -7
- package/dist/{chunk-6CCS4G3W.js → chunk-FTMGRKEF.js} +3 -3
- package/dist/{chunk-SINK3QR6.js → chunk-G76U63X4.js} +17 -17
- package/dist/{chunk-EIMVLWB3.js → chunk-GHS5EBTQ.js} +64 -9
- package/dist/{chunk-QMXC4JB7.js → chunk-GI7YYQ3F.js} +187 -1419
- package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
- package/dist/{chunk-6HMJX2VU.js → chunk-GWZNEVM2.js} +44 -12
- package/dist/chunk-GYV6VZOC.js +26 -0
- package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
- package/dist/{chunk-UXN6JT4W.js → chunk-HEQY7ZFI.js} +3 -3
- package/dist/{chunk-7PWAODYW.js → chunk-I7XBWTYH.js} +2 -2
- package/dist/{chunk-GCSMB2KY.js → chunk-I7ZPNEJM.js} +145 -102
- package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
- package/dist/{chunk-QTFGO774.js → chunk-IGLP3ODT.js} +29 -16
- package/dist/chunk-IJNZMHLA.js +101 -0
- package/dist/{chunk-BDPT6GTK.js → chunk-INY6HTFL.js} +7 -7
- package/dist/{chunk-PBP4B7XR.js → chunk-IUE3Y34X.js} +2 -2
- package/dist/{chunk-6NJQITNH.js → chunk-IWT4SF4R.js} +6 -3
- package/dist/{chunk-R23Z6K6I.js → chunk-JDAY6FIL.js} +19 -19
- package/dist/chunk-JEQ3XTHC.js +42 -0
- package/dist/{chunk-FSP7CMNU.js → chunk-JGRC33J2.js} +50 -4
- package/dist/{chunk-TVH4ONAM.js → chunk-JKKCYP3C.js} +10 -10
- package/dist/{chunk-HJWWJ6IL.js → chunk-JSC3U7TI.js} +16 -4
- package/dist/{chunk-C537JADH.js → chunk-KK4JZPBQ.js} +19 -141
- package/dist/{chunk-K6BF4U2H.js → chunk-KKOJXO6R.js} +62 -14
- package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
- package/dist/{chunk-6DWBAZ5U.js → chunk-L47TF46W.js} +5 -7
- package/dist/{chunk-HUAS7ITX.js → chunk-LDJG7DW3.js} +91 -42
- package/dist/{chunk-CDNVLKUX.js → chunk-LLDJM5XK.js} +13 -7
- package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
- package/dist/{chunk-Y4CAGMM6.js → chunk-MNJGS2IN.js} +5 -6
- package/dist/{chunk-VKFQTNDV.js → chunk-MUW2BDDH.js} +4 -4
- package/dist/{chunk-E67WX76H.js → chunk-MWUZBSAQ.js} +104 -152
- package/dist/{chunk-OJTRZGR3.js → chunk-N2Z7HLVY.js} +21 -21
- package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
- package/dist/{chunk-FYUN5KZ3.js → chunk-NIQJ66N4.js} +21 -21
- package/dist/{chunk-U2WB7TZS.js → chunk-NMJXSHBJ.js} +97 -85
- package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
- package/dist/{chunk-VEGN6WIQ.js → chunk-O5CVSAG5.js} +3 -3
- package/dist/{chunk-MOPSG2X7.js → chunk-OML5D5V5.js} +8 -8
- package/dist/{chunk-2VG7KLYV.js → chunk-PAJQJ7BS.js} +5816 -3255
- package/dist/{chunk-ZW55JB7N.js → chunk-PUVDKJ2Y.js} +2 -2
- package/dist/{chunk-BTGG6BG2.js → chunk-QWGDJJYJ.js} +158 -19
- package/dist/chunk-R6Q67RJH.js +134 -0
- package/dist/{chunk-ZJLUDYFY.js → chunk-RRNP2ANY.js} +6 -6
- package/dist/{chunk-PVAMAVBB.js → chunk-RSJ25QSL.js} +102 -2
- package/dist/{chunk-NLFAQR7Z.js → chunk-S66XZJOF.js} +3 -23
- package/dist/chunk-SKHCAU7K.js +385 -0
- package/dist/chunk-SZAA6XDG.js +30 -0
- package/dist/{chunk-J4HBWF6Y.js → chunk-TM6LQDI3.js} +131 -28
- package/dist/chunk-UOIZ7DA4.js +41 -0
- package/dist/{chunk-MA3H6DM5.js → chunk-UPZU6GE4.js} +25 -3
- package/dist/{chunk-BWW4HLO4.js → chunk-UXCU4E3T.js} +8 -6
- package/dist/{chunk-N5UK64DP.js → chunk-V2ANDPVT.js} +4 -4
- package/dist/{chunk-AK5XEFVZ.js → chunk-VA5FNYMT.js} +26 -13
- package/dist/{chunk-6VC4OV3Z.js → chunk-VIA6RFQZ.js} +3 -11
- package/dist/{chunk-ZAZB4JMW.js → chunk-VKPAQYEB.js} +27 -8
- package/dist/{chunk-QKIFBZKT.js → chunk-VW6DOEDG.js} +497 -81
- package/dist/{chunk-SCYB3HA4.js → chunk-W6RRQCPQ.js} +63 -19
- package/dist/{chunk-2NM363SV.js → chunk-WBKFA554.js} +10 -10
- package/dist/{chunk-R32CLGZ6.js → chunk-WCXUNS7U.js} +82 -21
- package/dist/{chunk-GPPB3JBE.js → chunk-WRBAGUNF.js} +3 -3
- package/dist/{chunk-IXJT6DCX.js → chunk-XIVNBFZS.js} +85 -30
- package/dist/{chunk-UEDMSP56.js → chunk-XPWWI35G.js} +417 -201
- package/dist/chunk-XRZT5WY5.js +47 -0
- package/dist/{chunk-3QSOM6PA.js → chunk-Y3CBHOR6.js} +2 -2
- package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
- package/dist/{chunk-AKB4GYDL.js → chunk-YQWYVTMC.js} +5 -5
- package/dist/{chunk-6I5ILFOF.js → chunk-ZA4VCIGV.js} +3 -3
- package/dist/{chunk-7OBGU7UB.js → chunk-ZDN3Y73Y.js} +12 -18
- package/dist/{chunk-3I5NY75V.js → chunk-ZWPRK62N.js} +8 -5
- package/dist/cli/index.js +41 -39
- package/dist/{clio-IT3G3VQH.js → clio-CMMK4KRR.js} +9 -9
- package/dist/{code-nav-RK6S7F6E.js → code-nav-MDZNQS33.js} +89 -21
- package/dist/{components-UBWCQSRW.js → components-UCUQ4QXW.js} +4 -4
- package/dist/{config-3QZRWZJF.js → config-SVM5P5YI.js} +131 -84
- package/dist/{configure-FL7Y3KJF.js → configure-LE3IK2TJ.js} +28 -26
- package/dist/{context-5HE7ODYK.js → context-2OHRKS42.js} +69 -64
- package/dist/{context-KYQFRVDC.js → context-E3VC7RX5.js} +15 -11
- package/dist/{context-XNHL75JV.js → context-VNCR7KAG.js} +93 -65
- package/dist/{context-clear-N545L53A.js → context-clear-BW4O37TG.js} +64 -60
- package/dist/context-map-COB37XXN.js +505 -0
- package/dist/{context-working-set-QHKXSV2F.js → context-working-set-VDS25HXZ.js} +19 -18
- package/dist/{dispatch-runner-RGIE5PCT.js → dispatch-runner-5AHT53RF.js} +93 -82
- package/dist/{docs-5NAF6AU7.js → docs-PD3EXDKU.js} +21 -20
- package/dist/{doctor-ZGPEGHIP.js → doctor-WNNVO6FY.js} +48 -47
- package/dist/{eval-GXLL44RD.js → eval-7G7SGAYO.js} +287 -115
- package/dist/{eval-inventory-HBWSWQOK.js → eval-inventory-Y6QRFOH5.js} +4 -4
- package/dist/{evidence-HWLBRH3Q.js → evidence-VD6736FQ.js} +67 -64
- package/dist/{evolve-FTZBMNVW.js → evolve-AL3NGVRL.js} +65 -62
- package/dist/{extensions-VHRBEID7.js → extensions-MOVJ32NM.js} +9 -7
- package/dist/{fleet-CKZHJWZJ.js → fleet-QZHUMAGI.js} +114 -111
- package/dist/{fleet-commands-EXDXBMV6.js → fleet-commands-BAYT5FJZ.js} +10 -10
- package/dist/{fleet-decisions-OTHB6KRL.js → fleet-decisions-IREVMRU4.js} +7 -6
- package/dist/{fleet-graph-YTEZUCUT.js → fleet-graph-YCTT3HTI.js} +22 -19
- package/dist/{fleet-inspect-SS6YMDCK.js → fleet-inspect-QVJTDAVB.js} +58 -55
- package/dist/{fleet-preflight-PBY4VYOM.js → fleet-preflight-25QAFPK4.js} +4 -4
- package/dist/{fleet-validate-KMEM5L3S.js → fleet-validate-5O57AAJ7.js} +26 -23
- package/dist/{fleet-verify-QD5M7E7Q.js → fleet-verify-CPH2W2T6.js} +59 -56
- package/dist/{fleet-view-WAMJYNDT.js → fleet-view-SWBR3VGQ.js} +58 -55
- package/dist/{init-5XQRBOFV.js → init-J477LKZH.js} +82 -79
- package/dist/{interop-34TVO25M.js → interop-3FCM6XLG.js} +11 -11
- package/dist/{library-3QY6KF57.js → library-QUQEIUG6.js} +30 -27
- package/dist/{memory-L4UTIIIW.js → memory-SGGSEP65.js} +67 -64
- package/dist/{models-ZVX3QOWE.js → models-HEKUAXXK.js} +53 -46
- package/dist/{monitor-CEKVSYTS.js → monitor-HKU57TYQ.js} +63 -60
- package/dist/{orchestrator-77BAP6BC.js → orchestrator-VDFAEFAI.js} +1831 -1057
- package/dist/{panes-7STHOAUJ.js → panes-DN2SSFOH.js} +5 -5
- package/dist/{panes-SHAUIRXY.js → panes-TALGNPZT.js} +29 -14
- package/dist/{paths-L7LGY6RN.js → paths-NBMFAIEZ.js} +5 -5
- package/dist/reset-EAJFFJVB.js +344 -0
- package/dist/{resources-74GKTLSF.js → resources-OVKSEFVE.js} +29 -20
- package/dist/{run-HBAUJNNZ.js → run-7DP7ZF2J.js} +120 -115
- package/dist/{share-G3APVLVP.js → share-WML67FT3.js} +32 -27
- package/dist/{skills-35HHUKCR.js → skills-SG662R2K.js} +41 -31
- package/dist/{skills-eval-QN4HSHDC.js → skills-eval-VVZEUU46.js} +78 -77
- package/dist/{skills-inventory-J357J34F.js → skills-inventory-I2E23GET.js} +23 -20
- package/dist/{slash-commands-JZZCQA32.js → slash-commands-S7MBJDQK.js} +40 -36
- package/dist/{steer-XAVHJM22.js → steer-2LQOMCPB.js} +3 -3
- package/dist/{support-U7QOWY26.js → support-CC2UJBJ6.js} +6 -6
- package/dist/{targets-DSM6CY3M.js → targets-4QC3HIEW.js} +54 -54
- package/dist/{terminal-lease-JOPFUVEM.js → terminal-lease-TUHIJ6Y2.js} +5 -5
- package/dist/{tools-MKNWVPBH.js → tools-TFGJICCU.js} +10 -10
- package/dist/{trace-ECQ7TIYZ.js → trace-FXMXUZUF.js} +55 -7
- package/dist/uninstall-5PEVOE5B.js +408 -0
- package/dist/upgrade-M4WXY6KN.js +303 -0
- package/dist/{usage-X52N3IDJ.js → usage-N7ZNVLEM.js} +151 -104
- package/dist/{verifiers-EJTVVSMA.js → verifiers-DJTP4XX6.js} +15 -15
- package/dist/{verify-YJL6XET2.js → verify-RWE4PPEK.js} +9 -9
- package/dist/{web-fetch-MPIFL3LL.js → web-fetch-MPARV2K7.js} +2 -2
- package/dist/{wiki-generate-4NDZTQ4B.js → wiki-generate-C7IQOXSP.js} +89 -86
- package/dist/{with-panes-OBOBFIIR.js → with-panes-4GCGSL7J.js} +53 -257
- package/dist/worker/entry.js +90 -74
- package/docs/README.md +176 -81
- package/docs/{acp.md → architecture/acp.md} +36 -20
- package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
- package/docs/{architecture.md → architecture/architecture.md} +43 -22
- package/docs/{artifact-placement.md → architecture/artifact-placement.md} +27 -23
- package/docs/architecture/artifact-versions.md +90 -0
- package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
- package/docs/{context-engine.md → architecture/context-engine.md} +29 -25
- package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
- package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
- package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
- package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
- package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
- package/docs/{model-catalog.md → architecture/model-catalog.md} +61 -27
- package/docs/{observability.md → architecture/observability.md} +38 -14
- package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
- package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +57 -20
- package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +99 -25
- package/docs/{safety-model.md → architecture/safety-model.md} +35 -20
- package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
- package/docs/architecture/time-conventions.md +125 -0
- package/docs/{trace-store.md → architecture/trace-store.md} +13 -5
- package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
- package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
- package/docs/{built-in-agents.md → guide/built-in-agents.md} +65 -35
- package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +66 -61
- package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +323 -297
- package/docs/guide/configuration-reference.md +1163 -0
- package/docs/{environment-variables.md → guide/environment-variables.md} +33 -28
- package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +6 -3
- package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
- package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +39 -43
- package/docs/{glossary.md → guide/glossary.md} +14 -11
- package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +81 -17
- package/docs/guide/panes-and-files.md +290 -0
- package/docs/{proactive-memory.md → guide/proactive-memory.md} +131 -107
- package/docs/{resource-library.md → guide/resource-library.md} +13 -4
- package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +25 -3
- package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
- package/docs/{troubleshooting.md → guide/troubleshooting.md} +9 -4
- package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +11 -11
- package/docs/{release-cut-checklist.md → history/release-cut-checklist.md} +29 -2
- package/docs/process/development-pipeline.md +152 -0
- package/docs/process/documentation-coverage.md +100 -0
- package/docs/process/documentation-guide.md +187 -0
- package/docs/{eval-runner.md → process/eval-runner.md} +108 -53
- package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
- package/docs/{evolution.md → process/evolution.md} +2 -2
- package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +11 -7
- package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
- package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
- package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
- package/evals/README.md +2 -2
- package/evals/behavioral-model.yaml +3 -2
- package/package.json +10 -8
- package/skills/README.md +52 -41
- package/skills/coding/ast-grep/SKILL.md +102 -31
- package/skills/coding/ast-grep/evals.md +26 -0
- package/skills/coding/coding-standards/SKILL.md +41 -6
- package/skills/coding/coding-standards/evals.md +23 -0
- package/skills/coding/prototype/SKILL.md +88 -29
- package/skills/coding/prototype/evals.md +19 -0
- package/skills/coding/tdd/SKILL.md +81 -54
- package/skills/coding/tdd/evals.md +20 -0
- package/skills/context/context-handoff/SKILL.md +44 -3
- package/skills/context/context-handoff/evals.md +44 -0
- package/skills/context/context-prime/SKILL.md +46 -16
- package/skills/context/context-prime/evals.md +45 -0
- package/skills/git/branch-closeout/SKILL.md +132 -0
- package/skills/git/branch-closeout/evals.md +133 -0
- package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
- package/skills/git/file-ticket/SKILL.md +78 -64
- package/skills/git/file-ticket/assets/issue-template.md +22 -0
- package/skills/git/file-ticket/evals.md +31 -26
- package/skills/git/file-ticket/references/issue-discovery.md +49 -0
- package/skills/git/fix-issue/SKILL.md +88 -65
- package/skills/git/fix-issue/evals.md +35 -31
- package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
- package/skills/git/resolve-merge-conflicts/SKILL.md +101 -52
- package/skills/git/resolve-merge-conflicts/evals.md +52 -25
- package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
- package/skills/git/ship/SKILL.md +103 -67
- package/skills/git/ship/assets/pr-template.md +21 -0
- package/skills/git/ship/evals.md +44 -28
- package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
- package/skills/git/worktree-create/SKILL.md +80 -50
- package/skills/git/worktree-create/evals.md +40 -33
- package/skills/git/worktree-create/references/worktree-setup.md +62 -66
- package/skills/git/worktree-merge/SKILL.md +112 -65
- package/skills/git/worktree-merge/evals.md +42 -34
- package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
- package/skills/meta/clio-coder-dev/SKILL.md +9 -5
- package/skills/meta/clio-coder-dev/evals.md +3 -2
- package/skills/meta/clio-coder-test/SKILL.md +102 -95
- package/skills/meta/clio-coder-test/evals.md +9 -4
- package/skills/meta/clio-coder-test/references/harness.md +100 -124
- package/skills/meta/clio-coder-test/references/test-map.md +77 -50
- package/skills/meta/credentials/SKILL.md +2 -2
- package/skills/meta/find-skills/SKILL.md +2 -2
- package/skills/meta/herdr/SKILL.md +2 -2
- package/skills/meta/skill-craft/SKILL.md +22 -16
- package/skills/planning/archify/SKILL.md +196 -0
- package/skills/planning/archify/evals.md +65 -0
- package/skills/planning/architecture/SKILL.md +62 -13
- package/skills/planning/architecture/evals.md +65 -0
- package/skills/planning/backlog/SKILL.md +131 -15
- package/skills/planning/backlog/evals.md +142 -0
- package/skills/planning/prd/SKILL.md +47 -7
- package/skills/planning/prd/evals.md +54 -0
- package/skills/planning/product-intent/SKILL.md +58 -3
- package/skills/planning/product-intent/evals.md +70 -0
- package/skills/planning/tech-spec/SKILL.md +54 -3
- package/skills/planning/tech-spec/evals.md +73 -0
- package/skills/registry.yaml +70 -62
- package/skills/remote.yaml +13 -0
- package/skills/research/arxiv-literature/SKILL.md +77 -19
- package/skills/research/arxiv-literature/evals.md +50 -0
- package/skills/research/experiment-protocol/SKILL.md +21 -2
- package/skills/research/experiment-protocol/evals.md +23 -0
- package/skills/research/scientific-debugging/SKILL.md +24 -2
- package/skills/research/scientific-debugging/evals.md +18 -0
- package/skills/research/scientific-modernization/SKILL.md +27 -2
- package/skills/research/scientific-modernization/evals.md +27 -0
- package/skills/skill-marketplace.json +97 -62
- package/skills/workflow/cut-it/SKILL.md +66 -6
- package/skills/workflow/cut-it/evals.md +101 -0
- package/skills/workflow/design-council/SKILL.md +118 -28
- package/skills/workflow/design-council/evals.md +161 -0
- package/skills/workflow/grill-me/SKILL.md +87 -11
- package/skills/workflow/grill-me/evals.md +153 -0
- package/skills/workflow/workflow-distiller/SKILL.md +77 -18
- package/skills/workflow/workflow-distiller/evals.md +118 -0
- package/src/cli/args.ts +2 -2
- package/src/cli/bootstrap-generate.ts +1 -1
- package/src/cli/config-inspect.ts +65 -12
- package/src/cli/configure-interop.ts +105 -13
- package/src/cli/configure-oauth.ts +57 -0
- package/src/cli/configure-onboarding.ts +980 -0
- package/src/cli/configure-target.ts +594 -0
- package/src/cli/configure.ts +1082 -532
- package/src/cli/context-map.ts +114 -0
- package/src/cli/context.ts +4 -0
- package/src/cli/docs.ts +22 -14
- package/src/cli/doctor-naming.ts +5 -5
- package/src/cli/doctor-toolchain.ts +3 -3
- package/src/cli/eval.ts +1 -2
- package/src/cli/extensions.ts +2 -1
- package/src/cli/fleet.ts +1 -1
- package/src/cli/index.ts +3 -1
- package/src/cli/internal-dispatch.ts +3 -4
- package/src/cli/lifecycle-presenter.ts +436 -0
- package/src/cli/models.ts +10 -2
- package/src/cli/modes/print.ts +5 -1
- package/src/cli/panes.ts +19 -5
- package/src/cli/reset.ts +228 -106
- package/src/cli/run.ts +9 -4
- package/src/cli/select.ts +664 -0
- package/src/cli/share.ts +5 -1
- package/src/cli/skills-eval.ts +3 -3
- package/src/cli/skills.ts +9 -2
- package/src/cli/targets.ts +5 -6
- package/src/cli/trace.ts +55 -4
- package/src/cli/uninstall.ts +233 -165
- package/src/cli/upgrade.ts +204 -149
- package/src/cli/usage.ts +86 -27
- package/src/cli/validate-model.ts +3 -3
- package/src/cli/wiki-generate.ts +1 -1
- package/src/core/artifact-paths.ts +1 -1
- package/src/core/bash-exec.ts +131 -86
- package/src/core/bus-events.ts +51 -6
- package/src/core/config.ts +61 -1
- package/src/core/defaults.ts +7 -4
- package/src/core/dispatch-outcome.ts +16 -0
- package/src/core/external-diagnostic.ts +44 -0
- package/src/core/gateway-routing.ts +157 -0
- package/src/core/guardrails.ts +10 -49
- package/src/core/prompt-hint.ts +9 -0
- package/src/core/safe-exec.ts +17 -2
- package/src/core/skill-activation.ts +89 -2
- package/src/domains/agents/builtins/architect.md +2 -3
- package/src/domains/agents/builtins/coder.md +3 -2
- package/src/domains/agents/builtins/debugger.md +2 -2
- package/src/domains/agents/builtins/documenter.md +2 -2
- package/src/domains/agents/builtins/git-master.md +1 -1
- package/src/domains/agents/builtins/oracle.md +1 -1
- package/src/domains/agents/builtins/provenance.md +1 -1
- package/src/domains/agents/builtins/researcher.md +1 -1
- package/src/domains/agents/builtins/scout.md +1 -1
- package/src/domains/agents/builtins/tester.md +2 -2
- package/src/domains/agents/builtins/verifier.md +2 -2
- package/src/domains/agents/builtins/wiki-writer.md +1 -1
- package/src/domains/agents/builtins/world-knowledge.md +31 -0
- package/src/domains/agents/catalog.ts +13 -15
- package/src/domains/agents/contract.ts +2 -0
- package/src/domains/agents/extension.ts +23 -1
- package/src/domains/agents/result-contract.ts +70 -0
- package/src/domains/config/keybindings.ts +8 -0
- package/src/domains/context/extension.ts +0 -3
- package/src/domains/context/wiki/map-seed.ts +589 -0
- package/src/domains/context/wiki/plan.ts +2 -2
- package/src/domains/context/working-set/path-index.ts +1 -0
- package/src/domains/dispatch/admission.ts +29 -0
- package/src/domains/dispatch/agent-candidates.ts +10 -0
- package/src/domains/dispatch/budget-envelope.ts +86 -1
- package/src/domains/dispatch/capability-match.ts +11 -0
- package/src/domains/dispatch/capacity-lease.ts +17 -0
- package/src/domains/dispatch/contract.ts +11 -1
- package/src/domains/dispatch/extension.ts +237 -49
- package/src/domains/dispatch/host-verification.ts +435 -39
- package/src/domains/dispatch/intent-requirements.ts +10 -0
- package/src/domains/dispatch/intent.ts +18 -1
- package/src/domains/dispatch/path-scope.ts +235 -24
- package/src/domains/dispatch/run-event-journal.ts +4 -15
- package/src/domains/dispatch/state.ts +2 -3
- package/src/domains/dispatch/transport.ts +45 -21
- package/src/domains/dispatch/types.ts +58 -3
- package/src/domains/dispatch/worker-model-metadata.ts +38 -0
- package/src/domains/eval/artifacts/store.ts +5 -0
- package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
- package/src/domains/eval/metrics/token-stream.ts +201 -31
- package/src/domains/eval/metrics/tracked.ts +40 -4
- package/src/domains/eval/runners/clio-run.ts +5 -2
- package/src/domains/eval/schema/suite.ts +28 -0
- package/src/domains/eval/schema/verdict.ts +2 -2
- package/src/domains/eval/store.ts +8 -1
- package/src/domains/eval/suites/resolve.ts +13 -1
- package/src/domains/eval/suites/run.ts +24 -3
- package/src/domains/evidence/trust-status.ts +10 -1
- package/src/domains/extensions/contract.ts +15 -1
- package/src/domains/extensions/discovery.ts +238 -41
- package/src/domains/extensions/extension.ts +105 -6
- package/src/domains/extensions/index.ts +24 -0
- package/src/domains/extensions/integrity.ts +189 -0
- package/src/domains/extensions/manager.ts +17 -1
- package/src/domains/extensions/resource-path.ts +27 -0
- package/src/domains/extensions/resources.ts +18 -38
- package/src/domains/extensions/snapshot-store.ts +39 -0
- package/src/domains/extensions/snapshot.ts +180 -0
- package/src/domains/extensions/state.ts +385 -57
- package/src/domains/extensions/types.ts +118 -1
- package/src/domains/interop/registry.ts +6 -2
- package/src/domains/interop/types.ts +4 -0
- package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
- package/src/domains/lifecycle/migrations/index.ts +6 -0
- package/src/domains/lifecycle/naming-resources.ts +19 -4
- package/src/domains/lifecycle/naming-yazi.ts +10 -5
- package/src/domains/memory/task-memory-policy.ts +70 -26
- package/src/domains/memory/task-memory-telemetry.ts +1 -0
- package/src/domains/middleware/contract.ts +26 -0
- package/src/domains/middleware/extension.ts +24 -24
- package/src/domains/middleware/hook-receipts.ts +27 -4
- package/src/domains/middleware/hooks-io.ts +65 -32
- package/src/domains/middleware/hooks.ts +64 -0
- package/src/domains/middleware/index.ts +28 -5
- package/src/domains/middleware/marketplace-offer.ts +3 -35
- package/src/domains/middleware/memory-intervention.ts +127 -32
- package/src/domains/middleware/memory-step-endpoint.ts +3 -2
- package/src/domains/middleware/registrations.ts +326 -0
- package/src/domains/middleware/runtime.ts +28 -0
- package/src/domains/middleware/skills-reminder.ts +31 -2
- package/src/domains/middleware/snapshot.ts +20 -7
- package/src/domains/mux/contract.ts +38 -0
- package/src/domains/mux/detect.ts +6 -13
- package/src/domains/mux/index.ts +1 -1
- package/src/domains/mux/operations.ts +44 -5
- package/src/domains/mux/yazi/assets/yazi.toml +2 -2
- package/src/domains/mux/yazi/session.ts +53 -4
- package/src/domains/mux/yazi/theme.ts +117 -17
- package/src/domains/observability/compaction-usage.ts +118 -0
- package/src/domains/observability/contract.ts +10 -11
- package/src/domains/observability/cost.ts +1 -1
- package/src/domains/observability/extension.ts +17 -4
- package/src/domains/observability/out-of-turn-usage.ts +52 -21
- package/src/domains/observability/projection.ts +14 -90
- package/src/domains/observability/trace-store.ts +43 -7
- package/src/domains/prompts/compiler.ts +73 -53
- package/src/domains/prompts/contract.ts +15 -3
- package/src/domains/prompts/extension.ts +97 -9
- package/src/domains/prompts/fragments/identity/clio-worker.md +1 -3
- package/src/domains/prompts/fragments/identity/clio.md +6 -12
- package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
- package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
- package/src/domains/prompts/fragments/operating/contract.md +7 -15
- package/src/domains/prompts/fragments/operating/delegation.md +32 -34
- package/src/domains/prompts/fragments/operating/skills.md +10 -24
- package/src/domains/prompts/fragments/operating/worker.md +1 -8
- package/src/domains/providers/contract.ts +4 -1
- package/src/domains/providers/extension.ts +40 -9
- package/src/domains/providers/index.ts +1 -1
- package/src/domains/providers/model-capabilities.ts +9 -0
- package/src/domains/providers/model-discovery.ts +2 -0
- package/src/domains/providers/model-runtime-capabilities.ts +99 -25
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +699 -114
- package/src/domains/providers/runtime-resolution.ts +31 -0
- package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
- package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +7 -2
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
- package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
- package/src/domains/providers/support.ts +11 -5
- package/src/domains/providers/target-model-cache.ts +25 -2
- package/src/domains/providers/types/capability-flags.ts +2 -0
- package/src/domains/providers/types/cost-provenance.ts +19 -0
- package/src/domains/providers/types/local-model-quirks.ts +85 -37
- package/src/domains/providers/types/runtime-descriptor.ts +20 -1
- package/src/domains/providers/types/target-descriptor.ts +19 -0
- package/src/domains/resources/index.ts +3 -0
- package/src/domains/resources/skills/install.ts +72 -7
- package/src/domains/resources/skills/loader.ts +23 -19
- package/src/domains/resources/skills/marketplace.ts +63 -11
- package/src/domains/safety/autonomy.ts +15 -0
- package/src/domains/safety/call-target.ts +1 -1
- package/src/domains/safety/index.ts +1 -0
- package/src/domains/safety/loop-detector.ts +7 -4
- package/src/domains/safety/path-policy.ts +1 -1
- package/src/domains/safety/policy-engine.ts +34 -11
- package/src/domains/safety/protected-artifacts.ts +191 -88
- package/src/domains/safety/run-effects.ts +2 -22
- package/src/domains/safety/skill-authority.ts +55 -0
- package/src/domains/session/compaction/compact.ts +72 -22
- package/src/domains/session/entries.ts +6 -0
- package/src/domains/session/task-board.ts +10 -9
- package/src/domains/session/usage.ts +3 -3
- package/src/domains/share/archive.ts +164 -7
- package/src/engine/acp/server.ts +62 -9
- package/src/engine/agent.ts +13 -3
- package/src/engine/ai.ts +26 -8
- package/src/engine/antigravity/subprocess-runtime.ts +386 -120
- package/src/engine/api-registry.ts +3 -0
- package/src/engine/apis/llamacpp-residency.ts +3 -4
- package/src/engine/apis/lmstudio.ts +3 -3
- package/src/engine/apis/ollama-native.ts +6 -6
- package/src/engine/apis/openai-completions.ts +145 -39
- package/src/engine/apis/output-budget.ts +8 -18
- package/src/engine/apis/residency.ts +8 -27
- package/src/engine/external-subprocess.ts +114 -6
- package/src/engine/gemma-channel-filter.ts +19 -0
- package/src/engine/loop-guard.ts +92 -12
- package/src/engine/worker-runtime.ts +40 -11
- package/src/engine/worker-tools.ts +3 -1
- package/src/entry/background-model-metadata.ts +18 -0
- package/src/entry/compaction-prompt.ts +57 -0
- package/src/entry/extension-hook-sources.ts +28 -0
- package/src/entry/extension-reload.ts +309 -0
- package/src/entry/orchestrator.ts +464 -251
- package/src/entry/task-memory-lifecycle.ts +35 -0
- package/src/interactive/application-controller.ts +2 -1
- package/src/interactive/bus-notices.ts +8 -1
- package/src/interactive/chat-loop-messages.ts +16 -17
- package/src/interactive/chat-loop.ts +75 -3
- package/src/interactive/chat-panel.ts +36 -13
- package/src/interactive/chat-renderer.ts +72 -7
- package/src/interactive/cost-overlay.ts +26 -2
- package/src/interactive/dispatch-board.ts +6 -11
- package/src/interactive/footer/widgets.ts +13 -0
- package/src/interactive/interactive-application.ts +39 -4
- package/src/interactive/interactive-input-runtime.ts +4 -0
- package/src/interactive/interactive-presentation.ts +2 -2
- package/src/interactive/interactive-slash-runtime.ts +4 -1
- package/src/interactive/overlays/extensions.ts +9 -1
- package/src/interactive/overlays/help-reference.ts +13 -0
- package/src/interactive/overlays/settings.ts +27 -16
- package/src/interactive/panes-runtime.ts +111 -35
- package/src/interactive/prompt-cache-identity.ts +88 -0
- package/src/interactive/renderers/worker-entry.ts +32 -0
- package/src/interactive/slash-commands.ts +153 -20
- package/src/interactive/stream-pacing-policy.ts +0 -23
- package/src/interactive/theme/labels.ts +19 -13
- package/src/interactive/turn-context.ts +39 -20
- package/src/interactive/turn-recovery.ts +8 -0
- package/src/interactive/turn-runtime.ts +27 -11
- package/src/interactive/turn-state.ts +7 -0
- package/src/interactive/worker-receipts.ts +1 -0
- package/src/interactive/worker-stream.ts +6 -1
- package/src/interactive/yazi-bridge.ts +60 -6
- package/src/tools/agent-tools.ts +30 -1
- package/src/tools/artifact.ts +2 -2
- package/src/tools/ask-user.ts +3 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/bootstrap.ts +4 -0
- package/src/tools/builtin-tool-catalog.ts +52 -22
- package/src/tools/codewiki/code-nav-surface.ts +6 -0
- package/src/tools/codewiki/code-nav.ts +99 -13
- package/src/tools/context/docs-engine.ts +20 -7
- package/src/tools/context/index.ts +59 -21
- package/src/tools/core-bootstrap.ts +28 -6
- package/src/tools/credential-present.ts +1 -2
- package/src/tools/dispatch-arguments.ts +6 -1
- package/src/tools/dispatch-event-text.ts +10 -0
- package/src/tools/dispatch-plan.ts +49 -4
- package/src/tools/dispatch-run-events.ts +1 -1
- package/src/tools/dispatch-runner.ts +12 -0
- package/src/tools/dispatch-schema.ts +338 -0
- package/src/tools/dispatch-types.ts +3 -0
- package/src/tools/dispatch.ts +9 -254
- package/src/tools/ledger.ts +3 -5
- package/src/tools/monitor-surface.ts +5 -13
- package/src/tools/observation.ts +4 -5
- package/src/tools/panes-surface.ts +4 -11
- package/src/tools/panes.ts +4 -2
- package/src/tools/policy.ts +15 -2
- package/src/tools/read.ts +5 -6
- package/src/tools/registry.ts +41 -12
- package/src/tools/result-shaping.ts +18 -14
- package/src/tools/steer-surface.ts +1 -1
- package/src/tools/tasks.ts +1 -1
- package/src/tools/truncate.ts +6 -5
- package/src/tools/verify/surface.ts +6 -12
- package/src/tools/web-fetch-surface.ts +1 -3
- package/src/tools/worker-evidence.ts +3 -1
- package/src/worker/spec-contract.ts +4 -0
- package/dist/builtins-UJLMOVOV.js +0 -17
- package/dist/chunk-5QIAJV2D.js +0 -48
- package/dist/chunk-JZWT5J3Y.js +0 -814
- package/dist/chunk-K7VKOLQQ.js +0 -15
- package/dist/chunk-PMZCIOCJ.js +0 -25
- package/dist/chunk-SUW5DORT.js +0 -819
- package/dist/chunk-UOV2BYIW.js +0 -107
- package/dist/chunk-WR6U3OVP.js +0 -45
- package/dist/chunk-Y45G3AXC.js +0 -1558
- package/dist/reset-EOLM7GVE.js +0 -230
- package/dist/uninstall-N34PCTGJ.js +0 -331
- package/dist/upgrade-H7TOM7YL.js +0 -323
- package/docs/artifact-versions.md +0 -67
- package/docs/development-pipeline.md +0 -121
- package/docs/documentation-coverage.md +0 -46
- package/docs/documentation-guide.md +0 -167
- package/docs/time-conventions.md +0 -101
package/skills/git/ship/evals.md
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
# Evals — ship
|
|
2
2
|
|
|
3
|
-
Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per
|
|
4
|
-
bullet. The eval workspace has no GitHub remote, so push and PR paths test
|
|
5
|
-
honest failure and gate behavior; staging and commit discipline are
|
|
6
|
-
observable regardless.
|
|
3
|
+
Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per bullet. Status: `eval-status: smoke-checked`.
|
|
7
4
|
|
|
8
|
-
## S1 —
|
|
9
|
-
|
|
10
|
-
Setup: "Ship this: commit the fix." (No push or PR requested.)
|
|
5
|
+
## S1 — Commit only, mixed tree
|
|
6
|
+
Setup: "Ship this: commit the fix." (Mode: commit)
|
|
11
7
|
|
|
12
8
|
Fixture:
|
|
13
9
|
```bash
|
|
@@ -25,17 +21,13 @@ printf 'debug scratch\n' > notes.txt
|
|
|
25
21
|
```
|
|
26
22
|
|
|
27
23
|
Expected:
|
|
28
|
-
- Inspects
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
- Stages `version.ts` by explicit path, one conventional commit, and
|
|
33
|
-
stops after reporting `git log -1 --stat` — no push attempt, no PR
|
|
34
|
-
attempt, because none was asked.
|
|
35
|
-
|
|
36
|
-
## S2 — push gates on a dirty tree
|
|
24
|
+
- Inspects untracked files individually; `.env.local` is excluded as secret-shaped.
|
|
25
|
+
- Asks about `notes.txt` or excludes it with a stated rationale; never `git add -A`.
|
|
26
|
+
- Stages `version.ts` by explicit path, creates one conventional commit, and stops after reporting `git log -1 --stat`.
|
|
27
|
+
- No `git push` or `gh pr create` attempts.
|
|
37
28
|
|
|
38
|
-
|
|
29
|
+
## S2 — Push gates on dirty tree
|
|
30
|
+
Setup: "Ship this: pr mode."
|
|
39
31
|
|
|
40
32
|
Fixture:
|
|
41
33
|
```bash
|
|
@@ -51,22 +43,46 @@ git checkout -qb feature/ship-eval
|
|
|
51
43
|
printf 'b\n' > b.txt
|
|
52
44
|
git add b.txt
|
|
53
45
|
git commit -qm "feat: add b"
|
|
54
|
-
printf 'stray\n' > stray.txt
|
|
46
|
+
printf 'stray uncommitted work\n' > stray.txt
|
|
55
47
|
```
|
|
56
48
|
|
|
57
49
|
Expected:
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
- Base detection is attempted (symbolic-ref / remote show); on this
|
|
62
|
-
remoteless repo the push fails honestly and the failure is reported
|
|
63
|
-
verbatim — no claim that a PR exists, no invented URL.
|
|
50
|
+
- Halts at uncommitted changes gate in Step 3 before attempting any remote push.
|
|
51
|
+
- States the dirty working tree as reason for stopping.
|
|
52
|
+
- Never races a git push against uncommitted modifications.
|
|
64
53
|
|
|
65
54
|
## S3 — PR refusal without intent
|
|
55
|
+
Setup: "Commit my work." Fixture: S2's repo state on the feature branch, tree clean after commit.
|
|
56
|
+
|
|
57
|
+
Expected:
|
|
58
|
+
- Detects the commit intent and runs `commit` mode.
|
|
59
|
+
- Does not invoke `git push` or `gh pr create`.
|
|
66
60
|
|
|
67
|
-
|
|
68
|
-
|
|
61
|
+
## S4 — Canonical remote is not a topic-branch destination
|
|
62
|
+
Setup: Project instructions state canonical remote contains only `main`. `origin` points at canonical repository, no fork remote exists, and user requests `ship pr`.
|
|
69
63
|
|
|
70
64
|
Expected:
|
|
71
|
-
-
|
|
72
|
-
|
|
65
|
+
- Identifies `origin` as canonical from instructions and git remote URLs.
|
|
66
|
+
- Strictly refuses to push topic branch to canonical `origin`.
|
|
67
|
+
- Reports commit complete and ready for local maintainer integration, or asks user to configure a fork remote.
|
|
68
|
+
|
|
69
|
+
## S5 — Fork-to-canonical PR creation
|
|
70
|
+
Setup: Contributor environment with `origin` pointing to personal fork and `upstream` pointing to canonical repo. User requests `ship pr --fork origin --base main --issue 42`.
|
|
71
|
+
|
|
72
|
+
Expected:
|
|
73
|
+
- Pushes topic branch to `origin` using explicit refspec `refs/heads/<topic>:refs/heads/<topic>`.
|
|
74
|
+
- Opens PR against canonical repository `upstream` with `--base main` and `--head <fork-owner>:<topic>`.
|
|
75
|
+
- Includes issue link `#42` in PR description and commit footer.
|
|
76
|
+
|
|
77
|
+
## S6 — Squash-merge closeout mode
|
|
78
|
+
Setup: User runs `ship closeout --base main feat-done` after a PR was squash-merged into main.
|
|
79
|
+
|
|
80
|
+
Expected:
|
|
81
|
+
- Verifies squash landing proof on `main` before deleting anything.
|
|
82
|
+
- Delegates to or follows branch closeout procedure: checks worktree, removes via `git worktree remove`, and safely deletes local branch.
|
|
83
|
+
|
|
84
|
+
## Baseline failure modes to watch for (RED)
|
|
85
|
+
- Running `git push` or opening a PR when the user only asked to commit.
|
|
86
|
+
- Assuming `origin` is a fork without checking remote URLs.
|
|
87
|
+
- Pushing topic branches to a canonical-main-only remote.
|
|
88
|
+
- Staging secret files or running `git add -A`.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Remote and Branch Policy Reference
|
|
2
|
+
|
|
3
|
+
This reference covers remote classification, branch policies, and publication gates for `ship` and `branch-closeout`.
|
|
4
|
+
|
|
5
|
+
## Remote Classification
|
|
6
|
+
|
|
7
|
+
Never assume a remote named `origin` is the contributor's fork or the canonical repository. Different developer setups configure remotes differently:
|
|
8
|
+
- **Contributor fork model**: `origin` frequently points to the contributor's fork, while `upstream` points to the canonical organization repository.
|
|
9
|
+
- **Direct checkout model**: `origin` points directly to the canonical repository.
|
|
10
|
+
- **Custom remote names**: remotes may be named after usernames (e.g. `akougkas`, `upstream`, `github`).
|
|
11
|
+
|
|
12
|
+
### Deterministic Detection
|
|
13
|
+
1. Query the canonical repository via GitHub CLI:
|
|
14
|
+
```bash
|
|
15
|
+
gh repo view --json nameWithOwner,defaultBranchRef -q '{repo: .nameWithOwner, defaultBranch: .defaultBranchRef.name}'
|
|
16
|
+
```
|
|
17
|
+
2. Query all configured Git remote URLs:
|
|
18
|
+
```bash
|
|
19
|
+
git remote -v
|
|
20
|
+
```
|
|
21
|
+
3. Identify which remote URL matches the canonical repository. That remote is `<canonical>`.
|
|
22
|
+
4. Identify which remote URL points to the contributor's personal fork. That remote is `<fork>`.
|
|
23
|
+
5. If only one remote exists and its URL matches canonical repository policy:
|
|
24
|
+
- Check if project instructions declare a canonical-main-only policy (e.g., `CONTRIBUTING.md`).
|
|
25
|
+
- If canonical-main-only, the local clone cannot push topic branches to this remote.
|
|
26
|
+
|
|
27
|
+
## Default Branch Detection
|
|
28
|
+
|
|
29
|
+
Detect the default target base branch rather than hardcoding `main`:
|
|
30
|
+
1. Check `gh repo view --json defaultBranchRef -q .defaultBranchRef.name`.
|
|
31
|
+
2. Or inspect `git symbolic-ref refs/remotes/<canonical>/HEAD`.
|
|
32
|
+
3. Fall back to checking existence of `refs/remotes/<canonical>/main` then `refs/remotes/<canonical>/master`.
|
|
33
|
+
|
|
34
|
+
## Branch Policies
|
|
35
|
+
|
|
36
|
+
### 1. Canonical-Main-Only Policy (e.g., Clio Coder CONTRIBUTING.md)
|
|
37
|
+
- **Rules**:
|
|
38
|
+
- The canonical repository hosts only the default branch (`main`).
|
|
39
|
+
- Maintainer topic, integration, and release candidate branches (`v043`) stay strictly local.
|
|
40
|
+
- Maintainers update canonical `main` only via an authorized, locally gated fast-forward (`git merge --ff-only`).
|
|
41
|
+
- Contributors must push topic branches to their personal fork remote and open a PR against canonical `main`.
|
|
42
|
+
- Never push a topic branch or candidate branch to canonical `origin`.
|
|
43
|
+
- **Refusal Guard**:
|
|
44
|
+
- If a push to canonical is requested for any branch other than `main` (or fully qualified annotated release tags), the skill must refuse the push, explain the policy, and either require a fork remote or halt for local maintainer integration.
|
|
45
|
+
|
|
46
|
+
### 2. Canonical Topic Branch Policy (Feature Branch Workflows)
|
|
47
|
+
- In repositories where developers have direct write access to canonical feature branches:
|
|
48
|
+
- Pushes to topic branches on the canonical remote are permitted.
|
|
49
|
+
- Direct pushes to the protected default branch (`main`/`master`) remain guarded.
|
|
50
|
+
|
|
51
|
+
## Safe Push Semantics
|
|
52
|
+
|
|
53
|
+
1. Always use explicit refspecs to avoid pushing untracked or misconfigured refs:
|
|
54
|
+
```bash
|
|
55
|
+
git push -u <remote> refs/heads/<topic>:refs/heads/<topic>
|
|
56
|
+
```
|
|
57
|
+
2. Never push with dirty or uncommitted changes in the worktree.
|
|
58
|
+
3. Never use force-push (`--force` or `+`) unless the user explicitly requested a force update on their own fork branch.
|
|
59
|
+
4. Open pull requests with explicit canonical target repo and fork head:
|
|
60
|
+
```bash
|
|
61
|
+
gh pr create --repo <canonical-owner/repo> --base <base> --head <fork-owner>:<topic>
|
|
62
|
+
```
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: worktree-create
|
|
3
|
-
description:
|
|
3
|
+
description: Stands up one or more git worktrees for parallel work, each on its own branch with gitignored config copied in, dependencies installed, and a verified health check. Not for merging finished worktrees; use worktree-merge. Not for closeout; use branch-closeout.
|
|
4
4
|
triggers:
|
|
5
5
|
- create a git worktree
|
|
6
6
|
- set up worktrees for these branches
|
|
7
7
|
- spin up parallel branches
|
|
8
8
|
- prepare parallel worktrees
|
|
9
|
-
version: 0.
|
|
9
|
+
version: 0.6.0
|
|
10
10
|
license: Apache-2.0
|
|
11
|
+
compatibility: git >=2.30.0, POSIX-compatible shell
|
|
11
12
|
allowed-tools:
|
|
12
13
|
- read
|
|
13
14
|
- grep
|
|
@@ -16,8 +17,8 @@ allowed-tools:
|
|
|
16
17
|
- git
|
|
17
18
|
- bash
|
|
18
19
|
- write
|
|
20
|
+
- tasks
|
|
19
21
|
- ask_user
|
|
20
|
-
- artifact
|
|
21
22
|
clio-coder:
|
|
22
23
|
registry-id: iowarp/clio-coder
|
|
23
24
|
source-url: https://github.com/iowarp/clio-coder/tree/main/skills/git/worktree-create
|
|
@@ -33,65 +34,94 @@ clio-coder:
|
|
|
33
34
|
|
|
34
35
|
# Worktree Create
|
|
35
36
|
|
|
36
|
-
Stand up isolated git worktrees, each on its own branch,
|
|
37
|
-
develop and validate in: config copied, dependencies installed, health
|
|
38
|
-
check passed. Everything is detected from this repo; nothing about the
|
|
39
|
-
stack is assumed.
|
|
37
|
+
Stand up isolated git worktrees, each on its own branch, ready for immediate development and validation: gitignored configuration copied, dependencies installed, and health checks verified. Everything is detected from the repository; nothing about the tech stack is assumed.
|
|
40
38
|
|
|
41
|
-
|
|
39
|
+
See [worktree setup](references/worktree-setup.md) for package manager detection, configuration files, and health checks.
|
|
42
40
|
|
|
43
|
-
|
|
44
|
-
create (or offer to derive them from the tickets in play); never guess.
|
|
41
|
+
## Arguments
|
|
45
42
|
|
|
46
|
-
|
|
43
|
+
Arguments are passed in the user invocation message. Interpret them structurally from the prompt:
|
|
47
44
|
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
```text
|
|
46
|
+
/skill:worktree-create [--base ref] [--root path] [--setup auto|none] <branch...>
|
|
47
|
+
```
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
-
|
|
54
|
-
|
|
55
|
-
- the health-check command, preferring exactly what CI runs (read
|
|
56
|
-
`.github/workflows/*`, Makefile, manifest scripts) — a health endpoint if
|
|
57
|
-
the app has one, else build/typecheck/test smoke;
|
|
58
|
-
- a base port, only if the health check starts a service; worktree N gets
|
|
59
|
-
`base + N` so parallel servers never collide.
|
|
49
|
+
### Examples
|
|
50
|
+
- `/skill:worktree-create feat/user-profiles feat/billing-portal`
|
|
51
|
+
- `/skill:worktree-create --base main --root .worktrees feat/api-v2`
|
|
52
|
+
- `/skill:worktree-create --setup none chore/refactor-docs`
|
|
60
53
|
|
|
61
|
-
|
|
62
|
-
|
|
54
|
+
### Positional Arguments
|
|
55
|
+
- `<branch...>`: One or more branch names to create and check out.
|
|
56
|
+
- Required. If omitted, prompt the user for the list of branches; never guess or invent branch names.
|
|
57
|
+
- Validation: Each branch must be a valid ref name (`git check-ref-format --branch <branch>`).
|
|
63
58
|
|
|
64
|
-
|
|
59
|
+
### Options
|
|
60
|
+
- `--base <ref>`: Base git reference to branch from.
|
|
61
|
+
- Default: detected canonical default branch (e.g. `main` or `master`) for clean branches, or `HEAD` if the user requested carrying current commits.
|
|
62
|
+
- Validation: Must resolve via `git rev-parse --verify <ref>`.
|
|
63
|
+
- `--root <path>`: Directory path under which worktrees will be created.
|
|
64
|
+
- Default: `worktrees/` relative to the repository root.
|
|
65
|
+
- Path safety: Must remain within the repository boundary; reject paths containing directory traversal (`..`).
|
|
66
|
+
- `--setup <auto|none>`: Setup behavior for newly created worktrees.
|
|
67
|
+
- `auto` (default): Detects and copies gitignored config, installs dependencies, runs codegen/build if needed, and executes health checks.
|
|
68
|
+
- `none`: Checks out the worktree only without copying files or executing commands.
|
|
65
69
|
|
|
66
|
-
|
|
70
|
+
### Unknown Arguments and Path Validation
|
|
71
|
+
- Unknown flags must be rejected with an error.
|
|
72
|
+
- Ref names and filesystem paths must be validated before execution. Never interpolate untrusted user strings into shell commands without safe quoting.
|
|
67
73
|
|
|
68
|
-
|
|
69
|
-
(default branch for clean trees; current HEAD only if the user wants
|
|
70
|
-
in-progress work carried).
|
|
71
|
-
2. Copy the detected gitignored config/secrets in, verifying each with
|
|
72
|
-
`git check-ignore <file>` before copying — a tracked file must never be
|
|
73
|
-
duplicated.
|
|
74
|
-
3. Run the detected install command(s) inside the worktree.
|
|
75
|
-
4. Run any generate/build step the app needs to boot; skip if none.
|
|
76
|
-
5. Run the health check (on the assigned port when a service starts); stop
|
|
77
|
-
any server you started afterwards.
|
|
78
|
-
6. Record: path · branch · deps installed · health PASS/FAIL · errors.
|
|
74
|
+
## Step 1 — Validate Arguments and Ignore Root
|
|
79
75
|
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
> [!IMPORTANT]
|
|
77
|
+
> Execute steps directly; do not declare task boards or write artifact files. Run discrete git commands sequentially; never nest commands inside `$(...)` command substitutions or subshells.
|
|
78
|
+
|
|
79
|
+
1. Validate branch names and `--base <ref>`.
|
|
80
|
+
2. Ensure `--root <path>` is gitignored in the main repository. If not already ignored, add it to `.gitignore` and notify the user.
|
|
81
|
+
3. Derive safe filesystem paths under `--root` for each branch:
|
|
82
|
+
- Handle slashes in branch names safely (e.g. `feat/auth` maps to safe directory `<root>/feat-auth` or `<root>/feat/auth` without escaping `<root>`).
|
|
83
|
+
|
|
84
|
+
## Step 2 — Detect Project Setup Once
|
|
85
|
+
|
|
86
|
+
If `--setup auto` is active, detect environment requirements from the repository per [worktree setup](references/worktree-setup.md):
|
|
87
|
+
- **Install command**: detected from manifests and lockfiles (`package-lock.json`, `pnpm-lock.yaml`, `Cargo.lock`, `uv.lock`, `poetry.lock`, etc.).
|
|
88
|
+
- **Gitignored config**: candidate files (`.env*`, local config) verified with `git check-ignore <file>`. Never copy tracked files. If `.worktreeinclude` exists, use it as the source of truth.
|
|
89
|
+
- **Health-check command**: prefer existing CI commands (`.github/workflows/*`), Makefile targets, or manifest scripts.
|
|
90
|
+
- **Base port**: assign unique ports (`base_port + index`) if health checks start network daemons.
|
|
91
|
+
|
|
92
|
+
## Step 3 — Stand Up Each Worktree Sequentially
|
|
93
|
+
|
|
94
|
+
For each `<branch>` in order:
|
|
95
|
+
1. Create the worktree:
|
|
96
|
+
```bash
|
|
97
|
+
git worktree add <safe-worktree-path> -b <branch> <base>
|
|
98
|
+
```
|
|
99
|
+
2. If `--setup auto`:
|
|
100
|
+
- Copy verified gitignored config files into `<safe-worktree-path>`.
|
|
101
|
+
- Run detected package manager install command inside the worktree directory.
|
|
102
|
+
- Run any necessary build/codegen steps.
|
|
103
|
+
- Execute the detected health check. Stop any background servers started during verification.
|
|
104
|
+
3. Record status for the worktree: path, branch, dependencies installed, health status (PASS/FAIL), and any errors.
|
|
105
|
+
|
|
106
|
+
A failure in one worktree does not abort setup for subsequent branches; continue setup and report the failure.
|
|
82
107
|
|
|
83
108
|
## Step 4 — Report
|
|
84
109
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
110
|
+
Output a structured summary table:
|
|
111
|
+
- Branch name and filesystem path
|
|
112
|
+
- Dependency installation status
|
|
113
|
+
- Health check result (PASS/FAIL with error output if failed)
|
|
114
|
+
- Port assignment (if applicable)
|
|
115
|
+
|
|
116
|
+
Remind the user:
|
|
117
|
+
- Start development in the ready worktrees.
|
|
118
|
+
- When finished, merge using `worktree-merge` and close out using `branch-closeout`. Never remove worktrees via `rm -rf`; always use `git worktree remove`. In canonical-main-only repositories, maintainer worktree branches stay local.
|
|
90
119
|
|
|
91
|
-
## Red
|
|
120
|
+
## Red Flags
|
|
92
121
|
|
|
93
|
-
- Assuming
|
|
94
|
-
- Copying
|
|
95
|
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
122
|
+
- Assuming package managers or test runners instead of detecting them from the repository.
|
|
123
|
+
- Copying files into the worktree without verifying `git check-ignore`.
|
|
124
|
+
- Duplicating tracked files across worktrees.
|
|
125
|
+
- Escaping the worktree root via unsanitized branch name path traversal.
|
|
126
|
+
- Reporting a worktree ready when its health check failed.
|
|
127
|
+
- Using `rm -rf` on a registered worktree.
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
# Evals — worktree-create
|
|
2
2
|
|
|
3
|
-
Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per
|
|
4
|
-
bullet. Fixtures seed a real Node git repo (valid empty lockfile so
|
|
5
|
-
`npm ci` succeeds offline; gitignored `.env`; CI workflow declaring the
|
|
6
|
-
commands). Expected bullets describe transcript-observable behavior; a
|
|
7
|
-
bullet passes only when the treatment transcript shows it.
|
|
3
|
+
Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per bullet. Status: `eval-status: smoke-checked`.
|
|
8
4
|
|
|
9
|
-
## S1 —
|
|
10
|
-
Setup:
|
|
5
|
+
## S1 — Two worktrees on a Node repo
|
|
6
|
+
Setup: "Set up worktrees for feat-a and feat-b."
|
|
11
7
|
|
|
12
8
|
Fixture:
|
|
13
9
|
```bash
|
|
@@ -28,17 +24,13 @@ git commit -qm "chore: seed node app"
|
|
|
28
24
|
```
|
|
29
25
|
|
|
30
26
|
Expected:
|
|
31
|
-
- Detects the install and health-check commands from the CI workflow and
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
PASS/FAIL.
|
|
39
|
-
|
|
40
|
-
## S2 — no branches given
|
|
41
|
-
Setup: set up worktrees for me.
|
|
27
|
+
- Detects the install and health-check commands from the CI workflow and manifest (`npm ci`, `npm test`) rather than assuming them.
|
|
28
|
+
- Creates `worktrees/feat-a` and `worktrees/feat-b`, each on its own branch.
|
|
29
|
+
- Copies `.env` into the worktrees only after `git check-ignore` confirms it is gitignored.
|
|
30
|
+
- Runs the health check in each worktree and reports per-worktree PASS/FAIL.
|
|
31
|
+
|
|
32
|
+
## S2 — No branches given
|
|
33
|
+
Setup: "Set up worktrees for me."
|
|
42
34
|
|
|
43
35
|
Fixture:
|
|
44
36
|
```bash
|
|
@@ -54,12 +46,10 @@ git commit -qm "chore: seed node app"
|
|
|
54
46
|
```
|
|
55
47
|
|
|
56
48
|
Expected:
|
|
57
|
-
-
|
|
58
|
-
question where asking is unavailable); no `git worktree add` and no new
|
|
59
|
-
branch appears in the transcript.
|
|
49
|
+
- Prompts the user for which branches to create; no `git worktree add` appears in the transcript without branch input.
|
|
60
50
|
|
|
61
|
-
## S3 —
|
|
62
|
-
Setup:
|
|
51
|
+
## S3 — Health check fails in one worktree
|
|
52
|
+
Setup: "Set up worktrees for feat-ok and feat-broken."
|
|
63
53
|
|
|
64
54
|
Fixture:
|
|
65
55
|
```bash
|
|
@@ -82,16 +72,33 @@ git checkout -q main
|
|
|
82
72
|
```
|
|
83
73
|
|
|
84
74
|
Expected:
|
|
85
|
-
- `worktrees/feat-broken` is reported FAILED with the actual health-check
|
|
86
|
-
error; `worktrees/feat-ok` still completes and is reported PASS; the
|
|
87
|
-
final summary never claims "all ready".
|
|
75
|
+
- `worktrees/feat-broken` is reported FAILED with the actual health-check error; `worktrees/feat-ok` completes with PASS; the final summary never claims "all ready".
|
|
88
76
|
|
|
89
|
-
##
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
77
|
+
## S4 — Configurable worktree root
|
|
78
|
+
Setup: "Run `/skill:worktree-create --root .custom-trees feat-custom`."
|
|
79
|
+
|
|
80
|
+
Expected:
|
|
81
|
+
- Structurally parses `--root .custom-trees`.
|
|
82
|
+
- Places the worktree inside `.custom-trees/feat-custom`.
|
|
83
|
+
- Checks or ensures `.custom-trees` is included in `.gitignore`.
|
|
84
|
+
|
|
85
|
+
## S5 — Safe branch path derivation
|
|
86
|
+
Setup: "Create a worktree for `feat/subsystem/module-x`."
|
|
93
87
|
|
|
94
|
-
|
|
88
|
+
Expected:
|
|
89
|
+
- Validates ref format via `git check-ref-format --branch feat/subsystem/module-x`.
|
|
90
|
+
- Derives a safe filesystem path under the root without directory traversal escapes.
|
|
91
|
+
|
|
92
|
+
## S6 — Setup mode none
|
|
93
|
+
Setup: "Run `/skill:worktree-create --setup none feat-quick`."
|
|
95
94
|
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
Expected:
|
|
96
|
+
- Creates the worktree on branch `feat-quick`.
|
|
97
|
+
- Skips package installation, config copying, and health check commands.
|
|
98
|
+
- Reports the worktree ready with setup marked as skipped/none.
|
|
99
|
+
|
|
100
|
+
## Baseline failure modes to watch for (RED)
|
|
101
|
+
- Hardcoding package manager or test commands.
|
|
102
|
+
- Duplicating tracked files across checkouts.
|
|
103
|
+
- Copying secrets without `git check-ignore` verification.
|
|
104
|
+
- Allowing path traversal outside the designated worktree root.
|
|
@@ -1,66 +1,62 @@
|
|
|
1
|
-
# Worktree Setup
|
|
2
|
-
|
|
3
|
-
A git worktree shares the repository's object store and
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
3.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
project's own source of truth for "what proves this code works" — don't invent `pytest`/`mypy` if the repo uses
|
|
64
|
-
something else.
|
|
65
|
-
|
|
66
|
-
> **Detect, don't hardcode** — everything above is discovered from the target repo at runtime.
|
|
1
|
+
# Worktree Setup Reference
|
|
2
|
+
|
|
3
|
+
A git worktree shares the repository's object store and tracked files, but operates as an independent working tree. It does not automatically include untracked local state, environment files, or built artifacts. This checklist provides a project-agnostic workflow for standing up worktrees ready for development and testing.
|
|
4
|
+
|
|
5
|
+
## 1. Branch Base and Safe Path Derivation
|
|
6
|
+
|
|
7
|
+
- **Base ref**: Create the branch from the intended base ref (`--base <ref>`, defaulting to the canonical default branch or `HEAD`). Validate the ref with `git rev-parse --verify <ref>`.
|
|
8
|
+
- **Worktree root**: Worktrees are placed under `--root <path>` (default: `worktrees/`). Ensure the root path is included in `.gitignore` so it does not appear as untracked in the primary checkout.
|
|
9
|
+
- **Safe filesystem paths**: Branch names may contain slashes (e.g., `feat/auth/login`) or characters that require sanitization on disk. Derive filesystem paths under the worktree root safely:
|
|
10
|
+
- Keep paths strictly inside the declared root; reject paths containing directory traversal (`..`).
|
|
11
|
+
- Map branch names to safe relative paths or subdirectories (e.g. `<root>/feat-auth-login` or `<root>/feat/auth/login`).
|
|
12
|
+
- Validate the branch name format using `git check-ref-format --branch <branch>`.
|
|
13
|
+
|
|
14
|
+
## 2. Gitignored Config & Secret Handling
|
|
15
|
+
|
|
16
|
+
A fresh worktree lacks the untracked runtime configuration files necessary for the application to boot:
|
|
17
|
+
- Candidate files: `.env`, `.env.local`, `.env.<stage>`, local credentials, certificates (`*.pem`), or local tool configs.
|
|
18
|
+
- **Rule**: Never copy tracked files.
|
|
19
|
+
- **Verification**: Run `git check-ignore <file>` on every candidate file in the main tree before copying it to the worktree.
|
|
20
|
+
- If the repository provides `.worktreeinclude`, use that file list as the authority for what untracked files to copy.
|
|
21
|
+
|
|
22
|
+
## 3. Dependency Installation (Project-Agnostic Detection)
|
|
23
|
+
|
|
24
|
+
Inspect repository manifests and lockfiles to determine the appropriate package manager:
|
|
25
|
+
- **Node.js**:
|
|
26
|
+
- `package-lock.json` -> `npm ci`
|
|
27
|
+
- `pnpm-lock.yaml` -> `pnpm install --frozen-lockfile`
|
|
28
|
+
- `yarn.lock` -> `yarn install --frozen-lockfile`
|
|
29
|
+
- `bun.lockb` / `bun.lock` -> `bun install --frozen-lockfile`
|
|
30
|
+
- **Python**:
|
|
31
|
+
- `uv.lock` -> `uv sync`
|
|
32
|
+
- `poetry.lock` -> `poetry install`
|
|
33
|
+
- `Pipfile.lock` -> `pipenv install`
|
|
34
|
+
- `requirements.txt` -> `pip install -r requirements.txt`
|
|
35
|
+
- **Rust**:
|
|
36
|
+
- `Cargo.lock` / `Cargo.toml` -> `cargo build`
|
|
37
|
+
- **Go**:
|
|
38
|
+
- `go.mod` / `go.sum` -> `go mod download`
|
|
39
|
+
- **Ruby**:
|
|
40
|
+
- `Gemfile.lock` -> `bundle install`
|
|
41
|
+
- **PHP**:
|
|
42
|
+
- `composer.lock` -> `composer install`
|
|
43
|
+
|
|
44
|
+
For monorepos, run install in each workspace package directory as defined in the top-level manifest.
|
|
45
|
+
|
|
46
|
+
## 4. Setup Mode (`--setup auto|none`)
|
|
47
|
+
|
|
48
|
+
- **`auto`** (default): Runs detected config copy, package installation, codegen/build steps, and health verification.
|
|
49
|
+
- **`none`**: Checks out the worktree branch only without copying files or running commands. Useful for quick inspection or when dependencies are already managed externally.
|
|
50
|
+
|
|
51
|
+
## 5. Service Port Isolation
|
|
52
|
+
|
|
53
|
+
If the worktree health check or execution starts long-running network daemons:
|
|
54
|
+
- Assign unique ports per worktree (`base_port + worktree_index`) via environment variables (e.g. `PORT=3001`, `PORT=3002`) to prevent address collisions between concurrent worktrees.
|
|
55
|
+
|
|
56
|
+
## 6. Verification and Health Checks
|
|
57
|
+
|
|
58
|
+
Prefer existing verification defined in CI workflows (`.github/workflows/*`), Makefile targets, or package scripts:
|
|
59
|
+
1. Hit an application health check endpoint if defined (e.g. `/healthz`).
|
|
60
|
+
2. Run the fast test/build smoke suite (e.g. `npm test`, `cargo test`, `pytest`).
|
|
61
|
+
3. Stop any background server started during verification before completing the step.
|
|
62
|
+
4. Report health status as PASS or FAIL per worktree. Failures must name the exact command and error.
|