@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/README.md
CHANGED
|
@@ -12,7 +12,7 @@ Clio's engine discovers *runtime* skills from these roots (see
|
|
|
12
12
|
- extension roots
|
|
13
13
|
- `~/.agents`, `~/.claude`, `~/.codex`, `~/.config/opencode`, `~/.copilot` → their `skills/` subdir
|
|
14
14
|
- `<clio-config>/skills` (per-user)
|
|
15
|
-
- project `.agents` / `.claude` / `.codex` / `.opencode` / `.github` → their `skills/` subdir (model-visible only
|
|
15
|
+
- project `.agents` / `.claude` / `.codex` / `.opencode` / `.github` → their `skills/` subdir (model-visible only when `integrations.projectResources.trustProjectImports` is true; untrusted by default)
|
|
16
16
|
- `.clio-coder/skills` (per-project)
|
|
17
17
|
|
|
18
18
|
This repo's `skills/` directory is **not** one of those roots, so nothing here
|
|
@@ -22,10 +22,10 @@ auto-loads. That gap is deliberate.
|
|
|
22
22
|
|---|---|---|
|
|
23
23
|
| Location | a discovery root above | `skills/<category>/<name>/` in this repo |
|
|
24
24
|
| Author | any user or harness | Clio authors, reviewed |
|
|
25
|
-
| Provenance | none required | `clio:` block with `registry-id` + `source-url` + `audit: pass` |
|
|
25
|
+
| Provenance | none required | `clio-coder:` block with `registry-id` + `source-url` + `audit: pass` |
|
|
26
26
|
| Auto-loaded | yes | no, as it must be installed |
|
|
27
27
|
|
|
28
|
-
"Approved" is visible in the frontmatter: a maintainer set `clio.audit: pass`
|
|
28
|
+
"Approved" is visible in the frontmatter: a maintainer set `clio-coder.audit: pass`
|
|
29
29
|
and a `version`. A skill a user wrote themselves carries none of those fields.
|
|
30
30
|
|
|
31
31
|
## Catalog
|
|
@@ -63,6 +63,7 @@ folder is presentation and provenance, not a namespace.
|
|
|
63
63
|
| [`worktree-create`](git/worktree-create/) | workflow | Stand up isolated worktrees for parallel branches: detected install/config/health-check, per-worktree verification. |
|
|
64
64
|
| [`worktree-merge`](git/worktree-merge/) | workflow | Integrate finished worktree branches through a throwaway integration branch with per-merge tests and a full final gate. |
|
|
65
65
|
| [`resolve-merge-conflicts`](git/resolve-merge-conflicts/) | workflow | A merge/rebase is stopped on conflicts. Resolves from both sides' reconstructed intent, validates, completes the operation. |
|
|
66
|
+
| [`branch-closeout`](git/branch-closeout/) | workflow | Proves merged work on the canonical base, inspects and removes associated worktrees through Git, deletes local branches safely, and audits surviving repository refs. |
|
|
66
67
|
|
|
67
68
|
### `research/` — scientific and literature work
|
|
68
69
|
|
|
@@ -101,11 +102,13 @@ folder is presentation and provenance, not a namespace.
|
|
|
101
102
|
| [`herdr`](meta/herdr/) | integration | The user asks to launch, drive, or inspect another agent or command in a Herdr pane — including a second Clio Coder instance. Requires `HERDR_ENV=1`. |
|
|
102
103
|
|
|
103
104
|
Each SKILL.md may declare `allowed-tools` / `disallowed-tools`. After a skill
|
|
104
|
-
loads, Clio enforces that declaration at tool admission
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
loads, Clio enforces that declaration at tool admission for the rest of the
|
|
106
|
+
session, across the operator's later turns, until another skill replaces it or
|
|
107
|
+
the operator runs `/skill off` (a worker run keeps the run-scoped lifetime):
|
|
108
|
+
calls outside the merged surface are blocked with reason code `skill_surface`,
|
|
109
|
+
with `context` and `ask_user` always admitted. A skill can narrow its tool
|
|
110
|
+
surface but never grant tools the host would not allow. See [Skill tool surface narrowing](../docs/architecture/safety-model.md#skill-tool-surface-narrowing)
|
|
111
|
+
for the full semantics.
|
|
109
112
|
|
|
110
113
|
## Install (activate a marketplace skill)
|
|
111
114
|
|
|
@@ -140,8 +143,8 @@ teammate cloning it gets the same behavior.
|
|
|
140
143
|
|
|
141
144
|
| Set | Scope | Why |
|
|
142
145
|
|---|---|---|
|
|
143
|
-
| `context-prime`, `context-handoff` | user |
|
|
144
|
-
| `find-skills`, `skill-craft` | user | Discovery and authoring are things you do to your toolkit, not things a project does.
|
|
146
|
+
| `context-prime`, `context-handoff` | user | The workflow is useful in every repo, while each handoff remains scoped to the project where it was written. |
|
|
147
|
+
| `find-skills`, `skill-craft` | user | Discovery and authoring are things you do to your toolkit, not things a project does. A user install outranks copies in shared user compatibility roots. |
|
|
145
148
|
| `credentials` | user | Credential handling is a personal-machine discipline; a repo does not get to define it. |
|
|
146
149
|
| `clio-coder-dev`, `clio-coder-test` | project, in this repo only | They describe Clio's own source tree. Elsewhere they are noise. |
|
|
147
150
|
| `--category git` | project, where `git-master` is used | Branch, PR, and worktree conventions are the repository's, and the recipe binds them by name. |
|
|
@@ -150,8 +153,11 @@ teammate cloning it gets the same behavior.
|
|
|
150
153
|
| `--category coding` | project | `tdd` and `coding-standards` follow the language and the test seams of the checkout. |
|
|
151
154
|
| `--category workflow` | either | `grill-me` and `cut-it` travel with the operator; `design-council` is worth pinning per project when the project has recurring design forks. |
|
|
152
155
|
|
|
153
|
-
|
|
154
|
-
user root,
|
|
156
|
+
Collision precedence from lowest to highest is extension, shared user
|
|
157
|
+
compatibility roots, the Clio user root, project compatibility roots,
|
|
158
|
+
`.clio-coder/skills`, then an explicit CLI skill path. Project compatibility
|
|
159
|
+
roots are model-visible only after the project-import trust opt-in; their
|
|
160
|
+
collision rank is still above the user root.
|
|
155
161
|
|
|
156
162
|
After install, confirm Clio sees it:
|
|
157
163
|
|
|
@@ -176,21 +182,23 @@ both route through `clio-coder skills`. A community skill of the same name is
|
|
|
176
182
|
commonly present in the compat roots (`~/.agents/skills`,
|
|
177
183
|
`~/.claude/skills`) and drives the external `npx skills` installer, which
|
|
178
184
|
bypasses Clio. Compat roots stay enabled, and the loader resolves name
|
|
179
|
-
collisions by precedence
|
|
180
|
-
|
|
185
|
+
collisions by the precedence above. A user install beats the shared user
|
|
186
|
+
compatibility copy. A project install beats both project and user
|
|
187
|
+
compatibility copies. Install at the scope where the catalog copy must win:
|
|
181
188
|
|
|
182
189
|
```bash
|
|
183
|
-
clio-coder skills install find-skills --user
|
|
190
|
+
clio-coder skills install find-skills --user
|
|
191
|
+
clio-coder skills install find-skills --project # strongest discovered project copy
|
|
184
192
|
```
|
|
185
193
|
|
|
186
194
|
## Publishing: the marketplace index
|
|
187
195
|
|
|
188
196
|
`npm run skills:pin` writes two files. `registry.yaml` pins content hashes and
|
|
189
197
|
is what drift is measured against. `skill-marketplace.json` is the published
|
|
190
|
-
index: one entry per skill with `name`, `description`, `
|
|
191
|
-
skill's own `clio.source-url`), `version`, `audit`, and
|
|
192
|
-
no hashes, because duplicating them into a second
|
|
193
|
-
creates a way for the two to disagree.
|
|
198
|
+
index: one entry per skill with `name`, `description`, optional `triggers`,
|
|
199
|
+
`sourceUrl` (the skill's own `clio-coder.source-url`), `version`, `audit`, and
|
|
200
|
+
`category`. It carries no hashes, because duplicating them into a second
|
|
201
|
+
published artifact only creates a way for the two to disagree.
|
|
194
202
|
|
|
195
203
|
A Clio install anywhere points at it and gets bare-name installs from this
|
|
196
204
|
catalog:
|
|
@@ -216,12 +224,12 @@ The frontmatter contract has two layers, and the split is the point:
|
|
|
216
224
|
- **Core keys stay community-standard.** `name`, `description`, `version`,
|
|
217
225
|
`license`, and `allowed-tools` mean exactly what Claude Code and other agent
|
|
218
226
|
loaders expect. No Clio-specific key ever lives at the top level.
|
|
219
|
-
- **Everything Clio-specific nests under one reserved `clio:` mapping.**
|
|
227
|
+
- **Everything Clio-specific nests under one reserved `clio-coder:` mapping.**
|
|
220
228
|
Registry identity, provenance, audit and eval status, agent bindings, model
|
|
221
229
|
guidance — all of it.
|
|
222
230
|
|
|
223
231
|
The invariant this buys: a Clio skill dropped into any `.claude/skills`
|
|
224
|
-
directory loads and works in Claude Code, which ignores the `clio:` block as
|
|
232
|
+
directory loads and works in Claude Code, which ignores the `clio-coder:` block as
|
|
225
233
|
an unknown key. Loaded by Clio Coder, the same file carries its full
|
|
226
234
|
marketplace metadata. One file, no forks, no lossy export.
|
|
227
235
|
|
|
@@ -230,7 +238,9 @@ Required shape for every catalog skill:
|
|
|
230
238
|
```yaml
|
|
231
239
|
---
|
|
232
240
|
name: <name> # lowercase, hyphens, matches the folder
|
|
233
|
-
description:
|
|
241
|
+
description: <one sentence> # what it does, plus "Not for X; use Y" routing, <=1024 chars
|
|
242
|
+
triggers: # the phrases a user types that should reach it
|
|
243
|
+
- <phrase>
|
|
234
244
|
version: 0.1.0
|
|
235
245
|
license: Apache-2.0
|
|
236
246
|
allowed-tools: # optional; community-standard tool narrowing
|
|
@@ -248,7 +258,7 @@ clio-coder:
|
|
|
248
258
|
---
|
|
249
259
|
```
|
|
250
260
|
|
|
251
|
-
Field semantics inside `clio:`:
|
|
261
|
+
Field semantics inside `clio-coder:`:
|
|
252
262
|
|
|
253
263
|
- `registry-id` names the audited catalog a skill claims membership of; it is
|
|
254
264
|
content, participates in the pinned hash, and survives installs.
|
|
@@ -280,16 +290,16 @@ Field semantics inside `clio:`:
|
|
|
280
290
|
`requires: [skill:<name>, ...]` stays top-level: Clio's loader consumes it for
|
|
281
291
|
dependency warnings, and other harnesses ignore it like any unknown key.
|
|
282
292
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
293
|
+
The deprecated nested `clio:` mapping and legacy flat keys (`registry-id`,
|
|
294
|
+
`source-url`, `audit` at the top level) are still read as fallbacks for older
|
|
295
|
+
installed copies. The catalog itself must use `clio-coder:`, and `npm run
|
|
286
296
|
skills:check` enforces that.
|
|
287
297
|
|
|
288
298
|
### Versioning policy
|
|
289
299
|
|
|
290
|
-
`version` describes the skill as a working instrument
|
|
291
|
-
|
|
292
|
-
operator runs changes:
|
|
300
|
+
`version` describes the skill as a working instrument. The registry separately
|
|
301
|
+
hashes the normalized contents of `SKILL.md`; it does not hash sibling files.
|
|
302
|
+
Move the version whenever the workflow an operator runs changes:
|
|
293
303
|
|
|
294
304
|
| Change | Version |
|
|
295
305
|
|---|---|
|
|
@@ -305,11 +315,11 @@ a broken link or a typo in a step. Nothing in this catalog is 1.0: a major bump
|
|
|
305
315
|
is reserved for a skill whose triggers change enough that an operator relying on
|
|
306
316
|
the old one would be surprised.
|
|
307
317
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
318
|
+
Lifecycle metadata changes do not bump the workflow version. The normalized
|
|
319
|
+
`SKILL.md` hash catches non-stripped frontmatter and body edits; install fields
|
|
320
|
+
such as `source-url` and `audit` are stripped. A sibling `references/`,
|
|
321
|
+
`scripts/`, or `evals.md` change is represented by the required version change
|
|
322
|
+
inside `SKILL.md`, because sibling bytes are not hashed directly.
|
|
313
323
|
|
|
314
324
|
## Claude Code interop
|
|
315
325
|
|
|
@@ -317,7 +327,7 @@ The invariant is that a catalog skill dropped unmodified into `.claude/skills`
|
|
|
317
327
|
loads and runs in Claude Code. Verified against Claude Code 2.1.231:
|
|
318
328
|
`skills/git/ship` copied into a scratch project's
|
|
319
329
|
`.claude/skills/`, invoked headlessly, loaded through the `Skill` tool and
|
|
320
|
-
answered a question about its own body. The `clio:` block is an unknown
|
|
330
|
+
answered a question about its own body. The `clio-coder:` block is an unknown
|
|
321
331
|
frontmatter key there and is ignored.
|
|
322
332
|
|
|
323
333
|
**`allowed-tools` means the opposite thing in each harness, and that is the one
|
|
@@ -353,7 +363,7 @@ The rest of the surface, read from the same build:
|
|
|
353
363
|
| `allowed-tools` | Grants, as above. Accepts a YAML list or one comma/space-separated string, same as Clio. |
|
|
354
364
|
| `disallowed-tools` | Not read. A Clio denial is not enforced there. |
|
|
355
365
|
| `requires:` | Not read; ignored as an unknown key, so a dependency warning is Clio-only. |
|
|
356
|
-
| `clio:` | Not read; ignored as an unknown key. This is the invariant. |
|
|
366
|
+
| `clio-coder:` | Not read; ignored as an unknown key. This is the invariant. |
|
|
357
367
|
| Unparseable frontmatter | The per-skill load is wrapped in a bare catch: the skill is skipped silently, with no diagnostic. Clio warns instead. |
|
|
358
368
|
| Size | No cap on SKILL.md. Clio rejects over 1 MiB and warns over 50 KiB, the activation delivery cap. |
|
|
359
369
|
| `references/`, `scripts/` subfolders | Not enumerated at load time; they are files the body tells the model to read, which works in both. |
|
|
@@ -370,7 +380,7 @@ A skill is "approved for the marketplace" when a maintainer:
|
|
|
370
380
|
1. Reviews `SKILL.md` against [`skill-craft`](meta/skill-craft/) (trigger-only
|
|
371
381
|
description, checkable completion criteria, progressive disclosure, pruning
|
|
372
382
|
pass, evals present).
|
|
373
|
-
2. Confirms it carries the frontmatter spec above with `clio.audit: pass`.
|
|
383
|
+
2. Confirms it carries the frontmatter spec above with `clio-coder.audit: pass`.
|
|
374
384
|
3. Sets / bumps `version`.
|
|
375
385
|
|
|
376
386
|
Each skill ships an `evals.md` recording the baseline scenarios it was tested
|
|
@@ -396,10 +406,11 @@ catalog where any skill is missing the required frontmatter, `audit: pass`, or
|
|
|
396
406
|
its `evals.md`, declares a tool name Clio does not have, or carries a
|
|
397
407
|
`source-url` that no longer ends with its catalog path. `npm run skills:check`
|
|
398
408
|
(run in CI) fails on any drift between the catalog and either generated file,
|
|
399
|
-
`registry.yaml` or `skill-marketplace.json`.
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
409
|
+
`registry.yaml` or `skill-marketplace.json`. Each pin covers the normalized
|
|
410
|
+
`SKILL.md`, not the whole skill directory. Install-lifecycle stamps such as
|
|
411
|
+
`installed-at` do not count as drift; body, version, and registry-identity
|
|
412
|
+
edits do. A copy installed via `clio-coder skills install` therefore still
|
|
413
|
+
verifies against its audited source at activation.
|
|
403
414
|
|
|
404
415
|
A skill may declare typed dependencies with `requires: [skill:<name>, ...]`
|
|
405
416
|
frontmatter; the loader warns at load time when a required skill is not
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ast-grep
|
|
3
|
-
description:
|
|
3
|
+
description: "Structural code search with ast-grep rules: finds code by shape when grep on text is too noisy, and never rewrites it. Not for plain string or filename lookups; use grep or find."
|
|
4
4
|
triggers:
|
|
5
5
|
- structural code search
|
|
6
6
|
- ast-grep rule
|
|
7
7
|
- find calls with this argument shape
|
|
8
8
|
- find code inside a function
|
|
9
9
|
- grep returns too much noise
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.3.0
|
|
11
11
|
license: Apache-2.0
|
|
12
12
|
allowed-tools:
|
|
13
13
|
- bash
|
|
14
14
|
- read
|
|
15
15
|
- write
|
|
16
|
+
- edit
|
|
16
17
|
- grep
|
|
17
18
|
- ls
|
|
18
19
|
clio-coder:
|
|
@@ -36,30 +37,78 @@ that returns nothing tells you nothing.
|
|
|
36
37
|
Search only. Never use `--update-all` / `-U` / `--rewrite`; when matches need
|
|
37
38
|
changing, report them and edit through the normal edit tools.
|
|
38
39
|
|
|
40
|
+
## Arguments
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
/skill ast-grep [--lang <language>] [--path <dir>] <structural question>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
- `--lang`: tree-sitter language name (`javascript`, `typescript`, `python`,
|
|
47
|
+
`rust`, `go`, ...). Omit to infer from the files under `--path`.
|
|
48
|
+
- `--path`: directory or file to scan. Omit to scan the project source
|
|
49
|
+
directory (`src/` when it exists, otherwise `.`).
|
|
50
|
+
- Everything else is the question: what shape to find, what to exclude.
|
|
51
|
+
|
|
52
|
+
The five steps below are the plan; do not open a task list for them.
|
|
53
|
+
|
|
54
|
+
Examples:
|
|
55
|
+
|
|
56
|
+
- `/skill ast-grep find async functions that await but have no try/catch`
|
|
57
|
+
- `/skill ast-grep --lang python --path app/ find calls to open() outside a with block`
|
|
58
|
+
|
|
59
|
+
Shell rules for every `bash` call in this workflow: one command per call,
|
|
60
|
+
plain and direct. Never use `$(...)` or backticks; they trigger an approval
|
|
61
|
+
gate that ends a headless run. Always pass rules through a file, never
|
|
62
|
+
through `--inline-rules`, because `$VAR` metavariables inside shell quotes
|
|
63
|
+
produce quoting errors that look exactly like non-matches.
|
|
64
|
+
|
|
39
65
|
## Step 0 — Check the binary
|
|
40
66
|
|
|
41
67
|
```bash
|
|
42
|
-
|
|
68
|
+
ast-grep --version
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If that fails, try the short alias, but verify it is really ast-grep:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
sg --version
|
|
43
75
|
```
|
|
44
76
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
77
|
+
Only an output that starts with `ast-grep` counts. On many Linux systems
|
|
78
|
+
`sg` is the unrelated shadow-utils "switch group" command and prints a
|
|
79
|
+
usage error; that is NOT ast-grep. If neither binary is ast-grep, say so
|
|
80
|
+
(`npm i -g @ast-grep/cli` or `cargo install ast-grep`) and stop. Do not
|
|
81
|
+
fall back to text grep and present it as a structural result.
|
|
82
|
+
|
|
83
|
+
Use the resolved binary name in every later command.
|
|
48
84
|
|
|
49
85
|
## Step 1 — Pin down the question
|
|
50
86
|
|
|
51
|
-
Before writing any rule,
|
|
52
|
-
what must be included and excluded. If the request is
|
|
53
|
-
these, ask one clarifying question
|
|
87
|
+
Before writing any rule, write in your reply: the target language; the
|
|
88
|
+
structure to match; what must be included and excluded. If the request is
|
|
89
|
+
ambiguous on any of these, ask one clarifying question. When running
|
|
90
|
+
headlessly, state your reading of the ambiguity and proceed.
|
|
54
91
|
|
|
55
92
|
## Step 2 — Write a minimal example
|
|
56
93
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
94
|
+
Create a scratch directory inside the workspace and write the smallest
|
|
95
|
+
code snippet that MUST match and, when exclusions matter, one that must
|
|
96
|
+
NOT match:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
mkdir -p .clio-coder/scratch/ast-grep
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Then write `.clio-coder/scratch/ast-grep/positive.<ext>` and
|
|
103
|
+
`.clio-coder/scratch/ast-grep/negative.<ext>` with the `write` tool. These
|
|
104
|
+
are the rule's test fixture: one file that must match, one that must not,
|
|
105
|
+
nothing more. Never write under `/tmp`, not even by shell redirection; a
|
|
106
|
+
write outside the workspace needs an approval a headless run cannot give,
|
|
107
|
+
and the call is refused.
|
|
60
108
|
|
|
61
109
|
## Step 3 — Write the rule, simplest first
|
|
62
110
|
|
|
111
|
+
Write `.clio-coder/scratch/ast-grep/rule.yml` with the `write` tool.
|
|
63
112
|
Escalate only when the simpler form fails:
|
|
64
113
|
|
|
65
114
|
1. `pattern` alone for direct shapes: `console.log($ARG)`.
|
|
@@ -73,7 +122,6 @@ Non-negotiable: every relational rule (`has`, `inside`) carries
|
|
|
73
122
|
rule silently under-matches.
|
|
74
123
|
|
|
75
124
|
```yaml
|
|
76
|
-
# /tmp/astgrep-rule.yml
|
|
77
125
|
id: async-no-trycatch
|
|
78
126
|
language: javascript
|
|
79
127
|
rule:
|
|
@@ -84,6 +132,15 @@ rule:
|
|
|
84
132
|
has: {pattern: 'try { $$$ } catch ($E) { $$$ }', stopBy: end}
|
|
85
133
|
```
|
|
86
134
|
|
|
135
|
+
This example is verified against ast-grep 0.45 on JavaScript. When the
|
|
136
|
+
question is this one, use it verbatim. Two facts it encodes that models
|
|
137
|
+
guess wrong: tree-sitter JavaScript and TypeScript have no
|
|
138
|
+
`async_function_declaration` kind (the `async` keyword is a token inside
|
|
139
|
+
`function_declaration`; assert it with `pattern: 'async function $F($$$) { $$$ }'`
|
|
140
|
+
when async matters), and an unknown `kind` fails the whole rule with
|
|
141
|
+
`Kind ... is invalid` (exit 8); answer that error with the tree dump in
|
|
142
|
+
Step 4, never with another guessed name.
|
|
143
|
+
|
|
87
144
|
Full syntax (atomic, relational, composite rules, metavariables, `constraints`,
|
|
88
145
|
`utils`): read `references/rule_reference.md` when the rule needs more than
|
|
89
146
|
the three forms above.
|
|
@@ -91,46 +148,57 @@ the three forms above.
|
|
|
91
148
|
## Step 4 — Test against the example
|
|
92
149
|
|
|
93
150
|
```bash
|
|
94
|
-
ast-grep scan --rule /
|
|
151
|
+
ast-grep scan --rule .clio-coder/scratch/ast-grep/rule.yml .clio-coder/scratch/ast-grep
|
|
95
152
|
```
|
|
96
153
|
|
|
97
|
-
Prefer a rule file over `--inline-rules`: inline YAML in shell needs `$VAR`
|
|
98
|
-
escaped as `\$VAR` (or single quotes), and quoting errors look exactly like
|
|
99
|
-
non-matches.
|
|
100
|
-
|
|
101
154
|
The rule must match the positive example and miss the negative one before
|
|
102
|
-
you scan anything real. When it
|
|
155
|
+
you scan anything real. When it passes, go to Step 5. When it does not,
|
|
156
|
+
debug in this order, changing the rule file with `edit`:
|
|
103
157
|
|
|
104
158
|
1. Strip the rule to its simplest positive key; re-add parts one at a time.
|
|
105
159
|
2. Confirm every `has`/`inside` has `stopBy: end`.
|
|
106
|
-
3. Dump the tree to check node kinds
|
|
160
|
+
3. Dump the tree to check node kinds; never guess a `kind` name:
|
|
107
161
|
|
|
108
162
|
```bash
|
|
109
|
-
ast-grep run --pattern '
|
|
163
|
+
ast-grep run --pattern 'async function f() { await g(); }' --lang javascript --debug-query=cst
|
|
110
164
|
```
|
|
111
165
|
|
|
112
166
|
(`cst` = every node; `ast` = named nodes only; `pattern` = how ast-grep
|
|
113
|
-
parsed your pattern.)
|
|
167
|
+
parsed your pattern.) Pipe long dumps through `head -80`. Dump the tree
|
|
168
|
+
only after a test has failed; a dump before the first test is a wasted
|
|
169
|
+
turn.
|
|
114
170
|
|
|
115
171
|
## Step 5 — Scan the codebase
|
|
116
172
|
|
|
117
173
|
Simple one-node patterns skip the rule file:
|
|
118
174
|
|
|
119
175
|
```bash
|
|
120
|
-
ast-grep run --pattern 'console.log($ARG)' --lang javascript
|
|
176
|
+
ast-grep run --pattern 'console.log($ARG)' --lang javascript src
|
|
121
177
|
```
|
|
122
178
|
|
|
123
179
|
Rule-based scans:
|
|
124
180
|
|
|
125
181
|
```bash
|
|
126
|
-
ast-grep scan --rule /
|
|
182
|
+
ast-grep scan --rule .clio-coder/scratch/ast-grep/rule.yml src
|
|
127
183
|
```
|
|
128
184
|
|
|
129
|
-
|
|
130
|
-
`
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
185
|
+
Scan the requested path, not `.`, so your own fixture under
|
|
186
|
+
`.clio-coder/scratch` does not show up as a match; if it does, drop those
|
|
187
|
+
lines from the report. Add `--json` only when the output feeds further
|
|
188
|
+
processing.
|
|
189
|
+
|
|
190
|
+
Report matches as `path:line` with a one-line reading of each; do not paste
|
|
191
|
+
raw JSON at the user. Done when the reported matches answer the Step 1
|
|
192
|
+
question and false positives you noticed are either excluded by the rule or
|
|
193
|
+
called out. Delete the scratch files last, naming each file. `rm -r` and
|
|
194
|
+
`rm -f` are hard-blocked by the safety net, so:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
rm .clio-coder/scratch/ast-grep/positive.js .clio-coder/scratch/ast-grep/negative.js .clio-coder/scratch/ast-grep/rule.yml
|
|
198
|
+
```
|
|
199
|
+
```bash
|
|
200
|
+
rmdir .clio-coder/scratch/ast-grep
|
|
201
|
+
```
|
|
134
202
|
|
|
135
203
|
## Red flags
|
|
136
204
|
|
|
@@ -138,5 +206,8 @@ the scratch files.
|
|
|
138
206
|
- A `has`/`inside` without `stopBy: end`.
|
|
139
207
|
- A guessed `kind` name instead of a `--debug-query=cst` dump.
|
|
140
208
|
- Any rewrite flag: this skill only reads.
|
|
141
|
-
-
|
|
142
|
-
|
|
209
|
+
- Treating shadow-utils `sg` as ast-grep because `command -v sg` succeeded.
|
|
210
|
+
- Cleaning up with `rm -rf`, or writing fixtures under `/tmp`; both are
|
|
211
|
+
refused in a headless run.
|
|
212
|
+
- Falling back to grep halfway because rule debugging felt slow; fix the
|
|
213
|
+
rule with Step 4, that is the job.
|
|
@@ -54,3 +54,29 @@ concurrency rule, admission and profile entries, and prompt-prefix cost paid by
|
|
|
54
54
|
every run whether or not anyone searches structurally. That is a tool-surface
|
|
55
55
|
decision, not skill-catalog cleanup. Until then the skill stays
|
|
56
56
|
`scenarios-recorded` and its first step is the binary check it already has.
|
|
57
|
+
|
|
58
|
+
## Battletest record (2026-09-03)
|
|
59
|
+
|
|
60
|
+
S1 fixture plus `src/orders.js` (one matching `loadOrders`, one non-awaiting
|
|
61
|
+
`noAwait`), `ornith1.5-35b-moe` on mini (llamacpp), `clio-coder run
|
|
62
|
+
--autonomy full-auto --json`, headless, `@ast-grep/cli` 0.45.3 on PATH.
|
|
63
|
+
Ground truth: `src/users.js:1` and `src/orders.js:1` match; `safe.js`,
|
|
64
|
+
`plain.js`, `noAwait` do not.
|
|
65
|
+
|
|
66
|
+
| run | wall | turns | in / out tokens | outcome |
|
|
67
|
+
|---|---|---|---|---|
|
|
68
|
+
| baseline (no skill) | 565s | 37 | 16.2k / 33.0k | never produced a valid rule (`$($params)` syntax, relational rules without `stopBy: end`, `--inline-rules` quoting); 3 `$(...)` calls; answered by reading the source; scratch left in `.astscratch/` |
|
|
69
|
+
| v0.2.0 | 123s | 13 | 7.9k / 7.1k | correct 2/5 via a proven rule; wrote fixtures to `/tmp` first, then into the workspace; `rm -rf` and `find -delete` hard-blocked, scratch left behind |
|
|
70
|
+
| v0.3.0 first cut | 176s | 13 | 9.8k / 10.5k | correct; dumped the tree before writing any rule; a `/tmp` write via shell redirection refused; `rm -rf` hard-blocked |
|
|
71
|
+
| v0.3.0 | 190s | 24 | 9.5k / 10.9k | correct; zero safety blocks; scratch removed with per-file `rm` + `rmdir`; working tree clean. Spent 10 turns recovering from a guessed `async_function_declaration` kind |
|
|
72
|
+
|
|
73
|
+
Changes in v0.3.0: `## Arguments` contract; Step 0 verifies `sg --version`
|
|
74
|
+
prints `ast-grep` because `/usr/bin/sg` is shadow-utils on Linux; scratch
|
|
75
|
+
lives in `.clio-coder/scratch/ast-grep/` (a `/tmp` write needs an approval
|
|
76
|
+
a headless run cannot give); rules always go through a file; tree dumps
|
|
77
|
+
only after a failed test; cleanup by named `rm` + `rmdir` because
|
|
78
|
+
`rm -r`/`rm -f` match the `rm-recursive-or-force` damage-control block;
|
|
79
|
+
`edit` added for rule iteration. The example rule was re-verified verbatim
|
|
80
|
+
against 0.45.3 (matches exactly the two expected functions) and the skill
|
|
81
|
+
now says so, plus that an unknown `kind` fails with exit 8 rather than
|
|
82
|
+
matching nothing.
|
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: coding-standards
|
|
3
|
-
description:
|
|
3
|
+
description: Correct-by-construction TypeScript rules (errors as values, parse don't validate, illegal states unrepresentable, deep modules) for writing or refactoring TypeScript when the project has not pinned its own standards.
|
|
4
4
|
triggers:
|
|
5
5
|
- TypeScript coding standards
|
|
6
6
|
- errors as values
|
|
7
7
|
- parse don't validate
|
|
8
8
|
- illegal states unrepresentable
|
|
9
9
|
- functional core imperative shell
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.3.0
|
|
11
11
|
license: Apache-2.0
|
|
12
|
-
allowed-tools:
|
|
13
|
-
- read
|
|
14
|
-
- grep
|
|
15
12
|
clio-coder:
|
|
16
13
|
registry-id: iowarp/clio-coder
|
|
17
14
|
source-url: https://github.com/iowarp/clio-coder/tree/main/skills/coding/coding-standards
|
|
18
15
|
audit: pass
|
|
19
16
|
provenance: adapted
|
|
20
17
|
origin: https://github.com/dmmulroy/skills/tree/main/coding-standards
|
|
21
|
-
eval-status:
|
|
18
|
+
eval-status: scenarios-recorded
|
|
22
19
|
model-size: any
|
|
23
20
|
provisional: true
|
|
24
21
|
agents:
|
|
@@ -36,6 +33,44 @@ code, and never rewrite unrelated old code without an explicit migration
|
|
|
36
33
|
request. **The host project's own documented standards always win over
|
|
37
34
|
this file.**
|
|
38
35
|
|
|
36
|
+
This skill declares no tool surface on purpose: it rides along with
|
|
37
|
+
whatever task is in flight (writing, refactoring, reviewing), so it must
|
|
38
|
+
not narrow the tools that task needs.
|
|
39
|
+
|
|
40
|
+
## Arguments
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
/skill coding-standards [<task>]
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
- With a task: do the task, and hold every new or changed TypeScript line
|
|
47
|
+
to the rules below. Keep using the ordinary `write`, `edit`, and `bash`
|
|
48
|
+
tools; the standards change what you write, not how you write it.
|
|
49
|
+
- Without a task: answer as a reference. Quote the relevant rule and show
|
|
50
|
+
a before/after snippet; do not touch the repository.
|
|
51
|
+
|
|
52
|
+
## How to apply
|
|
53
|
+
|
|
54
|
+
1. Read the host project's instruction file and one or two existing
|
|
55
|
+
modules near the change. If the project pins its own conventions on
|
|
56
|
+
errors, validation, or module layout, those win; note the conflict in
|
|
57
|
+
one line and follow the host.
|
|
58
|
+
2. Before writing, state in your reply which rules the change touches (for
|
|
59
|
+
a parser: errors, parse-don't-validate, illegal states; for a service:
|
|
60
|
+
modules). This is the checklist for the code you are about to write.
|
|
61
|
+
3. Write the code. Then run the project's typecheck (`npx tsc --noEmit` or
|
|
62
|
+
the repo script) with one plain `bash` call; never use `$(...)` or
|
|
63
|
+
backticks in the command.
|
|
64
|
+
4. If you want runtime evidence beyond the typecheck, prefer a single
|
|
65
|
+
`node -e` (or the project's runtime) call. If you must write a smoke
|
|
66
|
+
script, put it under `.clio-coder/scratch/` and remove it with plain
|
|
67
|
+
`rm <file>`; `rm -f`, `rm -r`, `find -delete`, and moving files to
|
|
68
|
+
`/tmp` are all refused by the safety net in a headless run, and every
|
|
69
|
+
refused attempt is a wasted turn.
|
|
70
|
+
5. Finish with a short audit of the diff against the checklist: each rule
|
|
71
|
+
either satisfied, or deliberately not, with the reason. `git status`
|
|
72
|
+
must show only the files the task asked for.
|
|
73
|
+
|
|
39
74
|
## Errors
|
|
40
75
|
|
|
41
76
|
- Expected failures are values in the return type, as custom tagged
|
|
@@ -32,3 +32,26 @@ Expected:
|
|
|
32
32
|
|
|
33
33
|
One representative scenario via `clio-coder skills eval` against Nemo-3.5-Lightning
|
|
34
34
|
(30B local, llamacpp on mini), full-auto sandbox. PASS (smoke). Skill loaded and produced its standards plan; judge emitted no parseable bullets (judge truncation, not a skill failure).
|
|
35
|
+
|
|
36
|
+
## Battletest record (2026-09-03)
|
|
37
|
+
|
|
38
|
+
S1 fixture: strict `tsconfig.json` (`strict`, `noUncheckedIndexedAccess`,
|
|
39
|
+
`exactOptionalPropertyTypes`), empty `src/`, `typescript` on PATH. Task:
|
|
40
|
+
add `src/webhook.ts` (parse unknown payload to a domain value, in-memory
|
|
41
|
+
store, report invalid payloads to the caller), then run `npx tsc --noEmit`.
|
|
42
|
+
`ornith1.5-35b-moe` on mini (llamacpp), `clio-coder run --autonomy
|
|
43
|
+
full-auto --json`, headless.
|
|
44
|
+
|
|
45
|
+
| run | wall | turns | in / out tokens | outcome |
|
|
46
|
+
|---|---|---|---|---|
|
|
47
|
+
| baseline (no skill) | 163s | 13 | 4.1k / 9.8k | typechecks; `{ok: boolean}` result with string errors; 5 `as` casts after manual checks |
|
|
48
|
+
| v0.2.0 | 693s | 7 | 4.6k / 42.6k | **no file written.** `allowed-tools: [read, grep]` narrowed the surface so `write` and `dispatch` were blocked (`skill_surface`); the model ended with a design-only report |
|
|
49
|
+
| v0.3.0 | 304s | 14 | 19.4k / 18.0k | typechecks; `_tag` discriminated `Result` and per-field tagged parse errors; 0 throws, 0 `any`, 0 `!`, 0 casts. Lost 5 turns cleaning a smoke script (`rm -f`, `find -delete`, `mv` to `/tmp` all refused) |
|
|
50
|
+
|
|
51
|
+
Root cause of the v0.2.0 failure: `src/core/skill-activation.ts` enforces
|
|
52
|
+
`allowed-tools` as a hard admission block, so a reference skill that names
|
|
53
|
+
only read tools makes the coding task impossible whenever it is the only
|
|
54
|
+
loaded skill. v0.3.0 declares no tool surface (same pattern as the meta
|
|
55
|
+
reference skills), adds an `## Arguments` contract, a four-line apply
|
|
56
|
+
checklist, and a scratch/cleanup rule (`.clio-coder/scratch/`, plain `rm`)
|
|
57
|
+
so the safety net stops eating turns.
|