tarsk 0.6.87 → 0.6.88
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/dist/bundled-skills/email-me/SKILL.md +15 -0
- package/dist/bundled-skills/email-me/scripts/__tests__/email_me.test.js +64 -0
- package/dist/bundled-skills/email-me/scripts/email_me.js +45 -0
- package/dist/bundled-skills/handoff/SKILL.md +19 -0
- package/dist/bundled-skills/tarsk-agent/SKILL.md +372 -0
- package/dist/bundled-skills/tarsk-ask-user/SKILL.md +18 -0
- package/dist/bundled-skills/tarsk-ask-user/scripts/ask_user.js +101 -0
- package/dist/bundled-skills/tarsk-bash/SKILL.md +17 -0
- package/dist/bundled-skills/tarsk-bash/scripts/bash.js +248 -0
- package/dist/bundled-skills/tarsk-browser/SKILL.md +17 -0
- package/dist/bundled-skills/tarsk-browser/scripts/browser.js +252 -0
- package/dist/bundled-skills/tarsk-chat-title/SKILL.md +14 -0
- package/dist/bundled-skills/tarsk-chat-title/scripts/chat_title.js +37 -0
- package/dist/bundled-skills/tarsk-connect-mcp/SKILL.md +23 -0
- package/dist/bundled-skills/tarsk-connect-mcp/scripts/__tests__/connect_mcp.test.js +68 -0
- package/dist/bundled-skills/tarsk-connect-mcp/scripts/connect_mcp.js +119 -0
- package/dist/bundled-skills/tarsk-create-project/SKILL.md +25 -0
- package/dist/bundled-skills/tarsk-create-project/scripts/__tests__/create_project.test.js +94 -0
- package/dist/bundled-skills/tarsk-create-project/scripts/create_project.js +88 -0
- package/dist/bundled-skills/tarsk-edit/SKILL.md +18 -0
- package/dist/bundled-skills/tarsk-edit/scripts/edit.js +118 -0
- package/dist/bundled-skills/tarsk-execute-skill-script/SKILL.md +19 -0
- package/dist/bundled-skills/tarsk-execute-skill-script/scripts/execute_skill_script.js +77 -0
- package/dist/bundled-skills/tarsk-fetch/SKILL.md +18 -0
- package/dist/bundled-skills/tarsk-fetch/scripts/fetch.js +38 -0
- package/dist/bundled-skills/tarsk-find/SKILL.md +16 -0
- package/dist/bundled-skills/tarsk-find/scripts/find.js +78 -0
- package/dist/bundled-skills/tarsk-find-images/SKILL.md +18 -0
- package/dist/bundled-skills/tarsk-find-images/scripts/find_images.js +78 -0
- package/dist/bundled-skills/tarsk-generate-image/SKILL.md +18 -0
- package/dist/bundled-skills/tarsk-generate-image/scripts/generate_image.js +55 -0
- package/dist/bundled-skills/tarsk-get-observation/SKILL.md +19 -0
- package/dist/bundled-skills/tarsk-get-observation/scripts/get_observation.js +293 -0
- package/dist/bundled-skills/tarsk-grep/SKILL.md +16 -0
- package/dist/bundled-skills/tarsk-grep/scripts/grep.js +174 -0
- package/dist/bundled-skills/tarsk-history/SKILL.md +15 -0
- package/dist/bundled-skills/tarsk-history/scripts/history.js +68 -0
- package/dist/bundled-skills/tarsk-improve/SKILL.md +232 -0
- package/dist/bundled-skills/tarsk-improve/references/signals.md +16 -0
- package/dist/bundled-skills/tarsk-improve/scripts/durable-runs.ts +635 -0
- package/dist/bundled-skills/tarsk-improve/scripts/ensure-exported.ts +238 -0
- package/dist/bundled-skills/tarsk-improve/scripts/export-tool-skills-lib.ts +299 -0
- package/dist/bundled-skills/tarsk-improve/scripts/summarize-session.ts +126 -0
- package/dist/bundled-skills/tarsk-jobs/SKILL.md +18 -0
- package/dist/bundled-skills/tarsk-jobs/scripts/job_kill.js +45 -0
- package/dist/bundled-skills/tarsk-jobs/scripts/job_list.js +64 -0
- package/dist/bundled-skills/tarsk-jobs/scripts/job_output.js +66 -0
- package/dist/bundled-skills/tarsk-notes/SKILL.md +17 -0
- package/dist/bundled-skills/tarsk-notes/scripts/notes.js +86 -0
- package/dist/bundled-skills/tarsk-projects/SKILL.md +18 -0
- package/dist/bundled-skills/tarsk-projects/scripts/projects.js +54 -0
- package/dist/bundled-skills/tarsk-prompt-project/SKILL.md +18 -0
- package/dist/bundled-skills/tarsk-prompt-project/scripts/prompt_project.js +58 -0
- package/dist/bundled-skills/tarsk-propose-branch/SKILL.md +16 -0
- package/dist/bundled-skills/tarsk-propose-branch/scripts/propose_branch.js +45 -0
- package/dist/bundled-skills/tarsk-read/SKILL.md +17 -0
- package/dist/bundled-skills/tarsk-read/scripts/read.js +331 -0
- package/dist/bundled-skills/tarsk-read-skill/SKILL.md +16 -0
- package/dist/bundled-skills/tarsk-read-skill/scripts/read_skill.js +37 -0
- package/dist/bundled-skills/tarsk-read-skill-reference/SKILL.md +19 -0
- package/dist/bundled-skills/tarsk-read-skill-reference/scripts/read_skill_reference.js +60 -0
- package/dist/bundled-skills/tarsk-run-js/SKILL.md +18 -0
- package/dist/bundled-skills/tarsk-run-js/scripts/run_js.js +192 -0
- package/dist/bundled-skills/tarsk-tasks/SKILL.md +18 -0
- package/dist/bundled-skills/tarsk-tasks/scripts/tasks.js +96 -0
- package/dist/bundled-skills/tarsk-todo/SKILL.md +16 -0
- package/dist/bundled-skills/tarsk-todo/scripts/todo.js +165 -0
- package/dist/bundled-skills/tarsk-web-search/SKILL.md +15 -0
- package/dist/bundled-skills/tarsk-web-search/scripts/web_search.js +120 -0
- package/dist/bundled-skills/tarsk-write/SKILL.md +16 -0
- package/dist/bundled-skills/tarsk-write/scripts/write.js +57 -0
- package/dist/index.js +215804 -210026
- package/dist/node_modules/@libsql/darwin-arm64/README.md +3 -0
- package/dist/node_modules/@libsql/{darwin-x64 → darwin-arm64}/index.node +0 -0
- package/dist/node_modules/@libsql/{darwin-x64 → darwin-arm64}/package.json +6 -6
- package/dist/public/assets/account-view-DkuCOxkE.js +1 -0
- package/dist/public/assets/{alert-dialog-DVaEQlVa.js → alert-dialog-BcZULJsX.js} +1 -1
- package/dist/public/assets/api-B_GSyYGh.js +1 -0
- package/dist/public/assets/api-C4ukGdyH.js +2 -0
- package/dist/public/assets/{async-error-boundary-DH6Sqgmt.js → async-error-boundary-FT8_xvjy.js} +1 -1
- package/dist/public/assets/browser-tab-DCjHytQ8.js +12 -0
- package/dist/public/assets/button-DDaJhJP1.js +1 -0
- package/dist/public/assets/{card-BkOGFps5.js → card-DAc45J1v.js} +1 -1
- package/dist/public/assets/chat-dock-context-a2bV9cnz.js +1 -0
- package/dist/public/assets/chat-handlers-context-2xSKzkKa.js +9 -0
- package/dist/public/assets/commit-dialog-C1oUFznJ.js +1 -0
- package/dist/public/assets/{commit-error-dialog-D3S6kRVr.js → commit-error-dialog--NTHg7Aw.js} +1 -1
- package/dist/public/assets/{commit-method-fields-BEKfSRyW.js → commit-method-fields-Xt3vbwUg.js} +1 -1
- package/dist/public/assets/{conversation-history-view-CVMD8hUU.js → conversation-history-view-CdfE7JTD.js} +1 -1
- package/dist/public/assets/{create-project-dialog-nquqlloK.js → create-project-dialog-BdR6iQE9.js} +2 -2
- package/dist/public/assets/{create-project-workspace-C4tXAUWJ.js → create-project-workspace-DSTTGom_.js} +2 -2
- package/dist/public/assets/create-repo-dialog-gw-8Rpdm.js +1 -0
- package/dist/public/assets/{delete-confirm-dialog-SpYpU1AX.js → delete-confirm-dialog-D1N86piR.js} +1 -1
- package/dist/public/assets/dialog-D_12AsZd.js +1 -0
- package/dist/public/assets/diff-view-B6JJNyn1.js +4 -0
- package/dist/public/assets/{dist-NcyjV9Gu.js → dist-2xH_pFmV.js} +1 -1
- package/dist/public/assets/{dist-BTu7PDzc.js → dist-AbkJBHH5.js} +1 -1
- package/dist/public/assets/{dist-lFBinzor.js → dist-B-h6Wj39.js} +1 -1
- package/dist/public/assets/dist-CgbWuuq4.js +1 -0
- package/dist/public/assets/{dist-f54JuzFV.js → dist-DOz2WXwX.js} +1 -1
- package/dist/public/assets/{dist-CqrmQxmV.js → dist-DfnQ9YJh.js} +1 -1
- package/dist/public/assets/{dist-BOfRC57H.js → dist-JGbQ_EJY.js} +1 -1
- package/dist/public/assets/{dist-ButPmyjr.js → dist-pCVg1Jdl.js} +1 -1
- package/dist/public/assets/dist-v_MvKS2-.js +2 -0
- package/dist/public/assets/{es2015-CE7VcoOH.js → es2015-eNVkKfFF.js} +1 -1
- package/dist/public/assets/{explorer-file-drop-CEbBlDEp.js → explorer-file-drop-CzyAqZgf.js} +1 -1
- package/dist/public/assets/{explorer-monaco-editor-Bgo9Y1cP.js → explorer-monaco-editor-ChJZBFy5.js} +1 -1
- package/dist/public/assets/explorer-tab-view-CiUPh4uK.js +2 -0
- package/dist/public/assets/explorer-tree-BA12VLz_.js +1 -0
- package/dist/public/assets/{explorer-view-BuTa_0Uq.js → explorer-view-Daxl93oM.js} +3 -3
- package/dist/public/assets/git-history-dialog-Dqj1p35g.js +1 -0
- package/dist/public/assets/index-CoY8DilQ.js +97 -0
- package/dist/public/assets/index-D14wLW4o.css +1 -0
- package/dist/public/assets/{label-C31qF5zZ.js → label-BCs5CZEs.js} +1 -1
- package/dist/public/assets/markdown-renderer-D2VcKU4g.js +10 -0
- package/dist/public/assets/{mcp-manager-C3K_62H2.js → mcp-manager-D1HmLT3t.js} +1 -1
- package/dist/public/assets/{minus-l6BdrAEk.js → minus-CgQcbBQT.js} +1 -1
- package/dist/public/assets/{model-list-controls-DwW8S18v.js → model-list-controls-rXmaDp2r.js} +1 -1
- package/dist/public/assets/onboarding-dialog-DSqBJyBa.js +1 -0
- package/dist/public/assets/{pill-tabs-CmvvHdKG.js → pill-tabs-DtdTmrg7.js} +1 -1
- package/dist/public/assets/progress-indicator-hJ74ac5W.js +1 -0
- package/dist/public/assets/project-coding-view-DP4qKePE.js +1 -0
- package/dist/public/assets/{project-danger-zone-view-D18k4pUF.js → project-danger-zone-view-CGxIenpr.js} +1 -1
- package/dist/public/assets/{project-env-vars-view-BWFqoaFD.js → project-env-vars-view-DKyQkh7h.js} +1 -1
- package/dist/public/assets/project-model-aliases-view-BewwJZAx.js +1 -0
- package/dist/public/assets/project-settings-view-CE4nAz5B.js +1 -0
- package/dist/public/assets/{project-tools-view-DT87KPjE.js → project-tools-view-CbDfst02.js} +1 -1
- package/dist/public/assets/providers-list-view-BtwccvX2.js +1 -0
- package/dist/public/assets/pull-request-dialog-nKYATjbm.js +1 -0
- package/dist/public/assets/pull-with-changes-dialog-zzoFzCv4.js +1 -0
- package/dist/public/assets/push-before-pr-dialog-DH91JHEC.js +1 -0
- package/dist/public/assets/remote-media-url-CyuN31H_.js +1 -0
- package/dist/public/assets/{scroll-area-BWc4OPsj.js → scroll-area-CGEZ1gAL.js} +1 -1
- package/dist/public/assets/{select-B6RizwDW.js → select-BR2pG61R.js} +1 -1
- package/dist/public/assets/settings-general-tabs-view-BWR0UX2P.js +2 -0
- package/dist/public/assets/settings-general-view-BhtrDmJH.js +1 -0
- package/dist/public/assets/{settings-list-D35rpAof.js → settings-list-Dgip9HpD.js} +1 -1
- package/dist/public/assets/settings-logs-view-CS29x4VT.js +5 -0
- package/dist/public/assets/settings-mcp-servers-view-B5ithpfh.js +5 -0
- package/dist/public/assets/settings-models-view-DS7nm54P.js +1 -0
- package/dist/public/assets/settings-plugins-view-avaUE36r.js +2 -0
- package/dist/public/assets/settings-providers-view-B39k1iRQ.js +2 -0
- package/dist/public/assets/settings-remote-machines-view-BXondQG_.js +1 -0
- package/dist/public/assets/settings-setup-view-I5MGUi_D.js +2 -0
- package/dist/public/assets/settings-skills-view-BKrUABbi.js +2 -0
- package/dist/public/assets/{settings-slack-view-DkclyaBc.js → settings-slack-view-B0p-96GC.js} +1 -1
- package/dist/public/assets/settings-slash-commands-view-DA1scWv1.js +1 -0
- package/dist/public/assets/{settings-statistics-view-B03ZZjEy.js → settings-statistics-view-B3g6BD7p.js} +1 -1
- package/dist/public/assets/settings-storage-view-BJvjhI4f.js +1 -0
- package/dist/public/assets/settings-subagents-view-BziLwvNq.js +2 -0
- package/dist/public/assets/settings-system-prompt-view-BqAk56cD.js +1 -0
- package/dist/public/assets/{settings-tab-bar-ajzyt79U.js → settings-tab-bar-DYzU_lmi.js} +1 -1
- package/dist/public/assets/settings-view-zjMs7jNe.js +2 -0
- package/dist/public/assets/{slug-utils-D2jhPz-o.js → slug-utils-CO6nui1C.js} +1 -1
- package/dist/public/assets/square-CtxvwmM2.js +1 -0
- package/dist/public/assets/store-W78TGOIO.js +8 -0
- package/dist/public/assets/{table-C3Hc0Gwy.js → table-CQMqIW_-.js} +1 -1
- package/dist/public/assets/task-utils-BZPVmvY4.js +1 -0
- package/dist/public/assets/tasks-view-wFf77AQX.js +1 -0
- package/dist/public/assets/{terminal-panel-DCKqScJu.js → terminal-panel-Bm_ZelN-.js} +2 -2
- package/dist/public/assets/{toggle-group-DqSxGqvP.js → toggle-group-CPmseZfb.js} +1 -1
- package/dist/public/assets/{tooltip-CJKJfu0l.js → tooltip-CqwCZ7wt.js} +1 -1
- package/dist/public/assets/{use-account-settings-query-AUeOqKvo.js → use-account-settings-query-C-zOdREq.js} +1 -1
- package/dist/public/assets/{use-active-dock-panel-instance-BvAhUd_V.js → use-active-dock-panel-instance-4Ss8lB9K.js} +1 -1
- package/dist/public/assets/use-browser-overlay-block-CO1pUEAZ.js +1 -0
- package/dist/public/assets/use-git-check-CumqGAvN.js +1 -0
- package/dist/public/assets/{use-installed-ai-files-iy_AB0dN.js → use-installed-ai-files-DQey9Zm3.js} +1 -1
- package/dist/public/assets/use-open-chat-dock-panel-DqfWJ8e8.js +1 -0
- package/dist/public/assets/use-projects-CizIH2Fa.js +2 -0
- package/dist/public/assets/utils-CqsIXqSC.js +1 -0
- package/dist/public/assets/web-BNWoiS4w.js +1 -0
- package/dist/public/assets/web-CGP-jEpi.js +1 -0
- package/dist/public/assets/web-CKC9gpFi.js +1 -0
- package/dist/public/assets/web-Dlo3GwCf.js +1 -0
- package/dist/public/fonts/schibsted-grotesk-latin-ext-wght-normal.woff2 +0 -0
- package/dist/public/fonts/schibsted-grotesk-latin-wght-normal.woff2 +0 -0
- package/dist/public/index.html +45 -45
- package/package.json +6 -6
- package/dist/node_modules/@libsql/darwin-x64/README.md +0 -3
- package/dist/public/assets/account-view-5q3pHEHY.js +0 -1
- package/dist/public/assets/ai-spinner-DHwhlk4j.js +0 -1
- package/dist/public/assets/api-BdebJfuN.js +0 -1
- package/dist/public/assets/api-COO2LfdU.js +0 -2
- package/dist/public/assets/browser-overlay-block-CiDtkfup.js +0 -1
- package/dist/public/assets/browser-tab-CVdYLmW5.js +0 -12
- package/dist/public/assets/button-Dp5XDZNR.js +0 -1
- package/dist/public/assets/chat-dock-context-ymLoO90X.js +0 -1
- package/dist/public/assets/checkbox-D-BV8-Z_.js +0 -1
- package/dist/public/assets/commit-dialog-CEbCFh1x.js +0 -1
- package/dist/public/assets/create-repo-dialog-B5IE3pUJ.js +0 -1
- package/dist/public/assets/dialog-pHPeIGaB.js +0 -1
- package/dist/public/assets/diff-view-Cy6nPdX-.js +0 -4
- package/dist/public/assets/dist-D5vgS4RP.js +0 -2
- package/dist/public/assets/explorer-tab-view-C-8QZO9S.js +0 -2
- package/dist/public/assets/explorer-tree-HrLSFgcI.js +0 -1
- package/dist/public/assets/git-history-dialog-ClfF5IOn.js +0 -1
- package/dist/public/assets/index-BBLA5zVt.css +0 -1
- package/dist/public/assets/index-CalVAwXj.js +0 -104
- package/dist/public/assets/markdown-renderer-DXRBG7uP.js +0 -10
- package/dist/public/assets/onboarding-dialog-BtLy0wjC.js +0 -1
- package/dist/public/assets/progress-indicator-4zQXqOqP.js +0 -1
- package/dist/public/assets/project-coding-view-CyJwnJes.js +0 -1
- package/dist/public/assets/project-model-aliases-view-D3tYNkkM.js +0 -1
- package/dist/public/assets/project-settings-view-0oN9vFvD.js +0 -1
- package/dist/public/assets/providers-list-view-DCnh0W-5.js +0 -1
- package/dist/public/assets/pull-request-dialog-BdJxYQwu.js +0 -1
- package/dist/public/assets/pull-with-changes-dialog-Do9x9neW.js +0 -1
- package/dist/public/assets/push-before-pr-dialog-C-9z2O0-.js +0 -1
- package/dist/public/assets/remote-media-url-B8OFqxOM.js +0 -1
- package/dist/public/assets/settings-general-tabs-view-Dcek-ysB.js +0 -2
- package/dist/public/assets/settings-general-view-DhA2N6G5.js +0 -1
- package/dist/public/assets/settings-logs-view-eEUTIMeb.js +0 -5
- package/dist/public/assets/settings-mcp-servers-view-_oeuVkUe.js +0 -5
- package/dist/public/assets/settings-models-view-DW-ZmVup.js +0 -1
- package/dist/public/assets/settings-plugins-view-DTooco_c.js +0 -2
- package/dist/public/assets/settings-providers-view-CEeJkhg9.js +0 -2
- package/dist/public/assets/settings-remote-machines-view--UB8GlCK.js +0 -1
- package/dist/public/assets/settings-setup-view-DFL6DlYS.js +0 -2
- package/dist/public/assets/settings-skills-view-xS569-Kb.js +0 -2
- package/dist/public/assets/settings-slash-commands-view-DrCiayfq.js +0 -1
- package/dist/public/assets/settings-storage-view-CQnaVOt_.js +0 -1
- package/dist/public/assets/settings-subagents-view-DIctUJcE.js +0 -2
- package/dist/public/assets/settings-system-prompt-view-BMDbrFRR.js +0 -1
- package/dist/public/assets/settings-view-8M6sbGiX.js +0 -2
- package/dist/public/assets/store-CxUwqrZ5.js +0 -8
- package/dist/public/assets/task-utils-WAei2PDi.js +0 -1
- package/dist/public/assets/tasks-view-DKyqgGdE.js +0 -1
- package/dist/public/assets/use-browser-overlay-block-z9imTmiZ.js +0 -1
- package/dist/public/assets/use-git-check-B_5Jak2s.js +0 -1
- package/dist/public/assets/use-open-chat-dock-panel-w3hc5Vxn.js +0 -1
- package/dist/public/assets/use-projects-BmhAMgxB.js +0 -2
- package/dist/public/assets/utils-mYB1USG6.js +0 -1
- package/dist/public/assets/web-C6Gm4nQ0.js +0 -1
- package/dist/public/assets/web-DFlyNg8o.js +0 -1
- package/dist/public/assets/web-DlEPs8Xe.js +0 -1
- package/dist/public/assets/web-Gx3xReQH.js +0 -1
- package/dist/public/backgrounds/arctic-tundra.avif +0 -0
- package/dist/public/backgrounds/autumn-leaves.avif +0 -0
- package/dist/public/backgrounds/coastal-cliff.avif +0 -0
- package/dist/public/backgrounds/floating-waterfall.avif +0 -0
- package/dist/public/backgrounds/forest-path.avif +0 -0
- package/dist/public/backgrounds/garden-path.avif +0 -0
- package/dist/public/backgrounds/glow-marsh.avif +0 -0
- package/dist/public/backgrounds/golden-wheat.avif +0 -0
- package/dist/public/backgrounds/moon-desert.avif +0 -0
- package/dist/public/backgrounds/night-pond.avif +0 -0
- package/dist/public/backgrounds/prairie-grassland.avif +0 -0
- package/dist/public/backgrounds/river-winding.avif +0 -0
- package/dist/public/backgrounds/salt-flat.avif +0 -0
- package/dist/public/backgrounds/salt-marsh.avif +0 -0
- package/dist/public/backgrounds/sandy-beach.avif +0 -0
- package/dist/public/backgrounds/snow-river.avif +0 -0
- package/dist/public/backgrounds/sunset-pond.avif +0 -0
- package/dist/public/fonts/plus-jakarta-sans-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/public/fonts/plus-jakarta-sans-latin-ext-wght-normal.woff2 +0 -0
- package/dist/public/fonts/plus-jakarta-sans-latin-wght-normal.woff2 +0 -0
- package/dist/public/fonts/plus-jakarta-sans-vietnamese-wght-normal.woff2 +0 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* grep — success/empty/pagination copy in the Skill; host runs path-safe ripgrep.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export const description =
|
|
6
|
+
"Search file contents (not paths; use find for path globs) with regex (ripgrep-compatible). Content mode defaults to match lines only (-C 0); pass -C 3 (or -A/-B/context) when you need nearby lines for a unique edit hunk. output_mode: content (default; -A/-B/-C/context/-n apply here, -n defaults true), files_with_matches, count. Scope with path; glob for name/extension (*.ts, **/*.tsx)—not a path substitute. type = rg --type. head_limit default 25 (0=unlimited); offset skips. multiline: . matches newlines. Respects .gitignore. For many hits→reads, prefer one run_js over serial turns.";
|
|
7
|
+
|
|
8
|
+
export const parameters = {
|
|
9
|
+
type: "object",
|
|
10
|
+
required: ["pattern"],
|
|
11
|
+
properties: {
|
|
12
|
+
pattern: { type: "string" },
|
|
13
|
+
path: { type: "string" },
|
|
14
|
+
glob: {
|
|
15
|
+
description: "name/extension filter, e.g. *.ts. Prefer path for a directory.",
|
|
16
|
+
type: "string",
|
|
17
|
+
},
|
|
18
|
+
output_mode: {
|
|
19
|
+
anyOf: [
|
|
20
|
+
{ const: "content", type: "string" },
|
|
21
|
+
{ const: "files_with_matches", type: "string" },
|
|
22
|
+
{ const: "count", type: "string" },
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
"-B": { type: "number" },
|
|
26
|
+
"-A": { type: "number" },
|
|
27
|
+
"-C": {
|
|
28
|
+
description: "Lines of context around each match (default 0 = match lines only).",
|
|
29
|
+
type: "number",
|
|
30
|
+
},
|
|
31
|
+
context: {
|
|
32
|
+
description: "Alias for -C (default 0 = match lines only).",
|
|
33
|
+
type: "number",
|
|
34
|
+
},
|
|
35
|
+
"-n": { type: "boolean" },
|
|
36
|
+
"-i": { type: "boolean" },
|
|
37
|
+
type: { type: "string" },
|
|
38
|
+
head_limit: { type: "number" },
|
|
39
|
+
offset: { type: "number" },
|
|
40
|
+
multiline: {
|
|
41
|
+
description: ". matches newlines",
|
|
42
|
+
type: "boolean",
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const LITERAL_FALLBACK_NOTICE = "[Pattern was not valid regex; searched as a literal string]";
|
|
48
|
+
/** Matches shared MAX_GREP_CONTENT_CONTEXT — Skill-owned notice copy. */
|
|
49
|
+
const MAX_GREP_CONTENT_CONTEXT = 2;
|
|
50
|
+
|
|
51
|
+
function emptyMatchText(pathScopedGlob) {
|
|
52
|
+
if (pathScopedGlob) {
|
|
53
|
+
return (
|
|
54
|
+
"No matches found. Tip: prefer path for file/directory scope " +
|
|
55
|
+
'(e.g. path="app/components") and extension globs like "*.tsx" or "**/*.ts"; ' +
|
|
56
|
+
"path-prefixed globs can miss matches depending on the search root."
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
return "No matches found";
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function formatLimitInfo(appliedLimit, appliedOffset) {
|
|
63
|
+
const parts = [];
|
|
64
|
+
if (appliedLimit !== undefined) parts.push(`limit: ${appliedLimit}`);
|
|
65
|
+
if (appliedOffset) parts.push(`offset: ${appliedOffset}`);
|
|
66
|
+
return parts.join(", ");
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function formatBudgetNotice(budget) {
|
|
70
|
+
const parts = [];
|
|
71
|
+
if (budget.contextClamped) {
|
|
72
|
+
parts.push(`Context limited to ${MAX_GREP_CONTENT_CONTEXT} lines per side.`);
|
|
73
|
+
}
|
|
74
|
+
if (budget.headLimitScaled && budget.headLimit) {
|
|
75
|
+
parts.push(`Output line budget scaled to ${budget.headLimit}.`);
|
|
76
|
+
}
|
|
77
|
+
if (parts.length === 0) return "";
|
|
78
|
+
return `[${parts.join(" ")}]`;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function formatSkippedNotice(skippedPaths) {
|
|
82
|
+
if (!skippedPaths || skippedPaths.length === 0) return undefined;
|
|
83
|
+
return `[Skipped missing path(s): ${skippedPaths.join(", ")}]`;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function buildPrefix(searchedAsLiteral, skippedPaths) {
|
|
87
|
+
const notices = [];
|
|
88
|
+
if (searchedAsLiteral) notices.push(LITERAL_FALLBACK_NOTICE);
|
|
89
|
+
const skipped = formatSkippedNotice(skippedPaths);
|
|
90
|
+
if (skipped) notices.push(skipped);
|
|
91
|
+
return notices.length > 0 ? `${notices.join("\n")}\n` : "";
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function formatContent(result, context) {
|
|
95
|
+
const emptyText = emptyMatchText(result.pathScopedGlob);
|
|
96
|
+
if (result.lines.length === 0) return emptyText;
|
|
97
|
+
|
|
98
|
+
const compressed = context.util.compressGrepContent(result.lines);
|
|
99
|
+
let text = compressed.applied ? `${compressed.banner}\n${compressed.text}` : compressed.text;
|
|
100
|
+
const budgetNotice = formatBudgetNotice(result.budget);
|
|
101
|
+
if (budgetNotice) text += `\n\n${budgetNotice}`;
|
|
102
|
+
const limitInfo = formatLimitInfo(result.appliedLimit, result.appliedOffset);
|
|
103
|
+
if (limitInfo) text += `\n\n[Showing results with pagination = ${limitInfo}]`;
|
|
104
|
+
return text;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function formatCount(result, context) {
|
|
108
|
+
const emptyText = emptyMatchText(result.pathScopedGlob);
|
|
109
|
+
if (result.lines.length === 0) return emptyText;
|
|
110
|
+
|
|
111
|
+
const compressed = context.util.compressGrepCount(result.lines);
|
|
112
|
+
let text = compressed.applied ? `${compressed.banner}\n${compressed.text}` : compressed.text;
|
|
113
|
+
const totalMatches = result.totalMatches ?? 0;
|
|
114
|
+
const fileCount = result.fileCount ?? 0;
|
|
115
|
+
const occurrenceLabel = totalMatches === 1 ? "occurrence" : "occurrences";
|
|
116
|
+
const fileLabel = fileCount === 1 ? "file" : "files";
|
|
117
|
+
text += `\n\nFound ${totalMatches} total ${occurrenceLabel} across ${fileCount} ${fileLabel}.`;
|
|
118
|
+
const limitInfo = formatLimitInfo(result.appliedLimit, result.appliedOffset);
|
|
119
|
+
if (limitInfo) text += ` with pagination = ${limitInfo}`;
|
|
120
|
+
return text;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function formatFiles(result, context) {
|
|
124
|
+
const emptyText = emptyMatchText(result.pathScopedGlob);
|
|
125
|
+
if (result.lines.length === 0) {
|
|
126
|
+
return emptyText === "No matches found"
|
|
127
|
+
? "No files found"
|
|
128
|
+
: emptyText.replace("No matches found", "No files found");
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const fileLabel = result.lines.length === 1 ? "file" : "files";
|
|
132
|
+
const compressed = context.util.compressGrepFiles(result.lines);
|
|
133
|
+
const listing = compressed.applied ? `${compressed.banner}\n${compressed.text}` : compressed.text;
|
|
134
|
+
const limitInfo = formatLimitInfo(result.appliedLimit, result.appliedOffset);
|
|
135
|
+
return `Found ${result.lines.length} ${fileLabel}${limitInfo ? ` ${limitInfo}` : ""}\n${listing}`;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/** @param {Record<string, unknown>} args @param {import("../../../../src/tools/agent-runtime/types.js").AgentRuntime} context @param {{ signal?: AbortSignal }} [options] */
|
|
139
|
+
export async function execute(args, context, options) {
|
|
140
|
+
const result = await context.fs.grep(args, { signal: options?.signal });
|
|
141
|
+
|
|
142
|
+
let body;
|
|
143
|
+
if (result.mode === "count") {
|
|
144
|
+
body = formatCount(result, context);
|
|
145
|
+
} else if (result.mode === "files_with_matches") {
|
|
146
|
+
body = formatFiles(result, context);
|
|
147
|
+
} else {
|
|
148
|
+
body = formatContent(result, context);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const truncation = context.util.truncateHead(body);
|
|
152
|
+
const trailing = truncation.truncated
|
|
153
|
+
? `\n\n[${context.util.formatSize(context.util.maxBytes)} limit reached]`
|
|
154
|
+
: "";
|
|
155
|
+
const text = `${buildPrefix(result.searchedAsLiteral, result.skippedPaths)}${truncation.content}${trailing}`;
|
|
156
|
+
|
|
157
|
+
const details = {
|
|
158
|
+
mode: result.mode,
|
|
159
|
+
};
|
|
160
|
+
if (result.mode === "content") details.numLines = result.lines.length;
|
|
161
|
+
if (result.mode === "count") {
|
|
162
|
+
details.numFiles = result.fileCount;
|
|
163
|
+
details.numMatches = result.totalMatches;
|
|
164
|
+
}
|
|
165
|
+
if (result.mode === "files_with_matches") details.numFiles = result.lines.length;
|
|
166
|
+
if (result.appliedLimit !== undefined) details.appliedLimit = result.appliedLimit;
|
|
167
|
+
if (result.appliedOffset !== undefined) details.appliedOffset = result.appliedOffset;
|
|
168
|
+
if (truncation.truncated) details.truncation = truncation;
|
|
169
|
+
|
|
170
|
+
return {
|
|
171
|
+
content: [{ type: "text", text }],
|
|
172
|
+
details,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* history Tool — logic in the Skill; transcript store is context.history (host).
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export const description =
|
|
6
|
+
"Search and read the complete durable agent transcript, including content outside the current model context window. Use search to find exact earlier instructions, tool results, commands, errors, or decisions, then read an entry by id for more detail. Reads are paged by character offset. Search the current conversation by default; set allConversations only when older conversations in this thread are relevant.";
|
|
7
|
+
|
|
8
|
+
export const parameters = {
|
|
9
|
+
type: "object",
|
|
10
|
+
required: ["op"],
|
|
11
|
+
properties: {
|
|
12
|
+
op: {
|
|
13
|
+
anyOf: [
|
|
14
|
+
{ const: "search", type: "string" },
|
|
15
|
+
{ const: "read", type: "string" },
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
query: { description: "Text to find for search", type: "string" },
|
|
19
|
+
entryId: { description: "Entry id returned by search", type: "string" },
|
|
20
|
+
offset: { minimum: 0, description: "Character offset for read", type: "integer" },
|
|
21
|
+
limit: { minimum: 1, maximum: 25, type: "integer" },
|
|
22
|
+
allConversations: {
|
|
23
|
+
description: "Search every conversation in this thread",
|
|
24
|
+
type: "boolean",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
function textResult(text) {
|
|
30
|
+
return {
|
|
31
|
+
content: [{ type: "text", text }],
|
|
32
|
+
details: undefined,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function requireValue(value, field) {
|
|
37
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
38
|
+
throw new Error(`${field} is required for this operation`);
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** @param {Record<string, unknown>} args @param {import("../../../../src/tools/agent-runtime/types.js").AgentRuntime} context */
|
|
44
|
+
export async function execute(args, context) {
|
|
45
|
+
if (!context.history.available) {
|
|
46
|
+
return textResult("Conversation history is unavailable for this session.");
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (args.op === "search") {
|
|
50
|
+
const results = await context.history.search({
|
|
51
|
+
query: requireValue(args.query, "query"),
|
|
52
|
+
allConversations: Boolean(args.allConversations),
|
|
53
|
+
limit: typeof args.limit === "number" ? args.limit : undefined,
|
|
54
|
+
});
|
|
55
|
+
return textResult(JSON.stringify(results));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (args.op === "read") {
|
|
59
|
+
const result = await context.history.read({
|
|
60
|
+
entryId: requireValue(args.entryId, "entryId"),
|
|
61
|
+
allConversations: Boolean(args.allConversations),
|
|
62
|
+
offset: typeof args.offset === "number" ? args.offset : undefined,
|
|
63
|
+
});
|
|
64
|
+
return textResult(result ? JSON.stringify(result) : "History entry not found.");
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
throw new Error(`Unknown history op: ${String(args.op)}`);
|
|
68
|
+
}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tarsk-improve
|
|
3
|
+
description: >-
|
|
4
|
+
End-of-session review that improves Tarsk built-in Tool skills from this chat
|
|
5
|
+
or prior runs in tarsk.db, then applies the small description/schema/execute
|
|
6
|
+
fixes that clear the worth bar. In an ordinary project it exports bundled
|
|
7
|
+
tarsk-* Skills into .agents/skills and edits those copies. In the Tarsk
|
|
8
|
+
checkout the built-ins are the repo's own files: it copies nothing and edits
|
|
9
|
+
cli/bundled-skills/tarsk-* directly. At the end it prunes project copies that
|
|
10
|
+
still match bundled. Use when the user says improve tools, /tarsk-improve,
|
|
11
|
+
learn from this session, or reduce tool failures/turns/tokens after a chat.
|
|
12
|
+
version: 2.2.1
|
|
13
|
+
disable-model-invocation: true
|
|
14
|
+
when_to_use: >-
|
|
15
|
+
At the end of a chat (or when reviewing recent sessions) to improve shipped
|
|
16
|
+
Tool skills from real failures, retries, or turn/token waste — not mid-task
|
|
17
|
+
opportunistic edits.
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Improve Tarsk Tool skills (`tarsk-improve`)
|
|
21
|
+
|
|
22
|
+
Turn this conversation (or recent sessions) into **small fixes to built-in Tool
|
|
23
|
+
skills**. Edit whichever copy the Tool loader resolves for this repo:
|
|
24
|
+
|
|
25
|
+
- **Ordinary project:** the project export under `.agents/skills/tarsk-*`
|
|
26
|
+
(step 0 copies it in).
|
|
27
|
+
- **The Tarsk checkout itself:** `cli/bundled-skills/tarsk-*` directly. Here the
|
|
28
|
+
built-ins are the repo's own files, so step 0 copies nothing and
|
|
29
|
+
`.agents/skills/tarsk-*` must stay absent.
|
|
30
|
+
|
|
31
|
+
This skill ships with Tarsk and works in any repo. It is **user-invoked**
|
|
32
|
+
(`disable-model-invocation`) — run at the end of a session, not mid-task.
|
|
33
|
+
|
|
34
|
+
## Goal
|
|
35
|
+
|
|
36
|
+
Cut repeated tool failures, serial multi-hop that should be one `run_js`, noisy
|
|
37
|
+
defaults, and misleading schemas/descriptions — by patching the Tool skill that
|
|
38
|
+
publishes that tool.
|
|
39
|
+
|
|
40
|
+
Every change must clear the **worth bar** before it is made:
|
|
41
|
+
|
|
42
|
+
- One of: cuts wasted turns significantly, cuts tokens significantly, fixes a
|
|
43
|
+
bug the tool itself causes — or a new Tool skill would be a significant gain.
|
|
44
|
+
- Likely to recur: the waste affects or plausibly will affect multiple
|
|
45
|
+
sessions, not one call pattern from a single chat.
|
|
46
|
+
- Tool copy stays token-efficient: edited `description` / parameter text is
|
|
47
|
+
the same length or shorter.
|
|
48
|
+
- Nothing clearing the bar is a valid outcome too: end the run with that
|
|
49
|
+
result and nothing patched.
|
|
50
|
+
|
|
51
|
+
## Scope
|
|
52
|
+
|
|
53
|
+
**In scope**
|
|
54
|
+
|
|
55
|
+
- Bundled Tool skills: `.agents/skills/tarsk-*/` in a user project (must exist
|
|
56
|
+
after step 0), or `cli/bundled-skills/tarsk-*/` in the Tarsk checkout
|
|
57
|
+
- `description`, `parameters`, and `execute` in `scripts/{tool}.js`
|
|
58
|
+
- Packaging rules in the `tarsk-agent` skill
|
|
59
|
+
|
|
60
|
+
**Out of scope**
|
|
61
|
+
|
|
62
|
+
- User project skills/rules/`AGENTS.md` that are not `tarsk-*` Tool skills
|
|
63
|
+
- Mid-task workarounds (system prompt already covers those)
|
|
64
|
+
- Large Tarsk product refactors unrelated to a Tool skill surface
|
|
65
|
+
|
|
66
|
+
## Required workflow
|
|
67
|
+
|
|
68
|
+
Copy and track:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
Improve progress:
|
|
72
|
+
- [ ] 0. Export tarsk-* into .agents/skills (Tarsk checkout: copies nothing)
|
|
73
|
+
- [ ] 1. Summarize this session / recent runs
|
|
74
|
+
- [ ] 2. Diagnose Tool skill gaps
|
|
75
|
+
- [ ] 3. Assess by the worth bar (no ask; no-change is a valid result)
|
|
76
|
+
- [ ] 4. Patch the one resolvable copy (read tarsk-agent first)
|
|
77
|
+
- [ ] 5. Report what changed and the expected improvement
|
|
78
|
+
- [ ] 6. Prune project copies that still match bundled
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 0. Export before any edit (user projects)
|
|
82
|
+
|
|
83
|
+
From the project / thread root:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
bun .agents/skills/tarsk-improve/scripts/ensure-exported.ts
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
If that path is missing (skill not yet exported), run from the bundled copy and
|
|
90
|
+
point at the project:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
bun <path-to-bundled-skills>/tarsk-improve/scripts/ensure-exported.ts --project-skills .agents/skills
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Or set `TARSK_BUNDLED_SKILLS` to the bundled-skills directory.
|
|
97
|
+
|
|
98
|
+
**In the Tarsk checkout the script copies nothing** — it prints:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Tarsk checkout: the built-ins are this repo's own files, so nothing was copied.
|
|
102
|
+
Edit cli/bundled-skills/tarsk-* directly (/…/cli/bundled-skills).
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Then edit `cli/bundled-skills/tarsk-*/` in place. Never create
|
|
106
|
+
`.agents/skills/tarsk-*` copies in this repo, and read "Editable Tool skills
|
|
107
|
+
(none)" as the expected result, not as a failure.
|
|
108
|
+
|
|
109
|
+
**Hard rule (user projects):** Only edit paths listed under "Editable Tool
|
|
110
|
+
skills" in the script output (under `.agents/skills/…`). If a Tool skill is
|
|
111
|
+
missing there, re-run the export command above. The host never creates project
|
|
112
|
+
copies on chat load; it only prunes copies that match bundled, so export before
|
|
113
|
+
editing.
|
|
114
|
+
|
|
115
|
+
### 1. Summarize
|
|
116
|
+
|
|
117
|
+
Prefer the **current conversation** when the user is wrapping up this chat:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
bun .agents/skills/tarsk-improve/scripts/summarize-session.ts --conversation <id>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Otherwise recent waste:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
bun .agents/skills/tarsk-improve/scripts/summarize-session.ts --since 24h
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Do not dump raw `entries` JSON. Use `history` only for a specific failure quote.
|
|
130
|
+
|
|
131
|
+
### 2. Diagnose
|
|
132
|
+
|
|
133
|
+
Map waste to a **Tool skill** (package that publishes the tool), not only a tool
|
|
134
|
+
name:
|
|
135
|
+
|
|
136
|
+
| Signal | Likely fix |
|
|
137
|
+
| ----------------------------- | --------------------------------------------------- |
|
|
138
|
+
| Same tool fails repeatedly | Clearer errors, validation, safer defaults |
|
|
139
|
+
| grep→read loops / serial hops | Description bias to `run_js`; tighten tool guidance |
|
|
140
|
+
| Huge results / token spikes | Default `select`, truncation, preview copy |
|
|
141
|
+
| Wrong tool chosen often | Description / when_to_use / schema shape |
|
|
142
|
+
| Retries with identical args | Idempotent messaging or “already applied” guidance |
|
|
143
|
+
|
|
144
|
+
Read [references/signals.md](references/signals.md) when patterns are unclear.
|
|
145
|
+
|
|
146
|
+
### 3. Assess by the worth bar — then implement, no gate
|
|
147
|
+
|
|
148
|
+
Keep the plan short, state one grouped reason the changes clear the bar, and go
|
|
149
|
+
straight into step 4 in the same turn. Do not ask which items to implement; the
|
|
150
|
+
bar decides. List below-bar candidates as skipped, one line each. If nothing
|
|
151
|
+
clears the bar, "no changes needed" is the correct result: say it in one line
|
|
152
|
+
and skip patching.
|
|
153
|
+
|
|
154
|
+
```markdown
|
|
155
|
+
## Improve plan
|
|
156
|
+
|
|
157
|
+
**Runs:** <this conversation / since …>
|
|
158
|
+
**Export:** <copied N; editable Tool skills — or Tarsk checkout: edit bundled>
|
|
159
|
+
|
|
160
|
+
### Findings
|
|
161
|
+
|
|
162
|
+
1. …
|
|
163
|
+
2. …
|
|
164
|
+
|
|
165
|
+
### Changes to make (ROI order)
|
|
166
|
+
|
|
167
|
+
1. `tarsk-<skill>` / `scripts/<tool>.js` — …
|
|
168
|
+
2. …
|
|
169
|
+
|
|
170
|
+
### Why these clear the bar (one group)
|
|
171
|
+
|
|
172
|
+
<Short plain wording: what the runs waste in turns/tokens, how often, and why
|
|
173
|
+
it will keep recurring across sessions — one paragraph for the whole batch, not
|
|
174
|
+
one reason per item.>
|
|
175
|
+
|
|
176
|
+
### Skipped (below the bar)
|
|
177
|
+
|
|
178
|
+
1. <finding> — <one line: single-session only / cost already small / …>
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### 4. Implement
|
|
182
|
+
|
|
183
|
+
1. Read the `tarsk-agent` skill (packaging + `context.*` contract).
|
|
184
|
+
2. Edit the resolved copy only: `.agents/skills/tarsk-<name>/` (user project) or
|
|
185
|
+
`cli/bundled-skills/tarsk-<name>/` (Tarsk checkout).
|
|
186
|
+
3. Prefer the smallest change: `description` / `parameters` / `execute`. Keep
|
|
187
|
+
copy the same length or shorter — fold new guidance into existing lines
|
|
188
|
+
instead of adding sentences.
|
|
189
|
+
4. Bump the Skill `version` patch (or minor) in that package's `SKILL.md` when
|
|
190
|
+
you intentionally change behavior so future major exports do not silently
|
|
191
|
+
clobber without a decision.
|
|
192
|
+
5. If `edit`/`write` returns `[tool-skill-load]` with a revert, the bad script
|
|
193
|
+
was restored automatically — fix the reported error and retry; do not leave
|
|
194
|
+
a broken Tool skill on disk.
|
|
195
|
+
6. In a user project do **not** hand-edit `cli/bundled-skills/` or any other
|
|
196
|
+
built-in tree; the project export is the only edit surface there.
|
|
197
|
+
|
|
198
|
+
### 5. Report
|
|
199
|
+
|
|
200
|
+
List files changed, which Tool each affects, and one expected-improvement line
|
|
201
|
+
for the batch in plain wording a curious non-developer can follow (fewer
|
|
202
|
+
retries, smaller output, no more needless blocks). Point back to the plan's
|
|
203
|
+
group reason for why, instead of repeating it. When nothing was patched, one
|
|
204
|
+
line: what was reviewed and why no change cleared the bar. Then how to verify:
|
|
205
|
+
re-run the failing call pattern in a new turn; Tool skill reload picks up script
|
|
206
|
+
mtime.
|
|
207
|
+
|
|
208
|
+
In the Tarsk checkout there is no upstream step: the files you edited under
|
|
209
|
+
`cli/bundled-skills/tarsk-*` are the built-ins that ship.
|
|
210
|
+
|
|
211
|
+
### 6. Prune unchanged copies (required in user projects)
|
|
212
|
+
|
|
213
|
+
Delete project copies that still match bundled so the repo only keeps Tool
|
|
214
|
+
skills that actually changed:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
bun .agents/skills/tarsk-improve/scripts/ensure-exported.ts --prune
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
`removed` lists the copies that matched bundled; `kept` lists the ones you
|
|
221
|
+
changed. The host also prunes on chat load, so untouched copies never persist.
|
|
222
|
+
In the Tarsk checkout this only cleans up legacy copies; `removed: (none)` with
|
|
223
|
+
`kept: 0` is the expected result.
|
|
224
|
+
|
|
225
|
+
## Script index
|
|
226
|
+
|
|
227
|
+
| Script | Role |
|
|
228
|
+
| --------------------------- | -------------------------------------------------------------------------------------------- |
|
|
229
|
+
| `ensure-exported.ts` | Export `tarsk-*` for editing (skips the Tarsk checkout); `--prune` deletes copies that match |
|
|
230
|
+
| `export-tool-skills-lib.ts` | Shared export/prune rules (also used by the host) |
|
|
231
|
+
| `summarize-session.ts` | Waste-ranked run summary from `tarsk.db` |
|
|
232
|
+
| `durable-runs.ts` | Shared DB reader (imported by summarize-session) |
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Signals → Tool skill fixes
|
|
2
|
+
|
|
3
|
+
Use the summarize-session output. Prefer product-facing Tool skill edits over
|
|
4
|
+
telling the model to “try harder.”
|
|
5
|
+
|
|
6
|
+
| Pattern in runs | Prefer editing |
|
|
7
|
+
| ---------------------------------------------- | -------------------------------------------------------- |
|
|
8
|
+
| Same `tool` fails with the same args | Error text / validation in that tool’s `execute` |
|
|
9
|
+
| Many turns of grep → read → grep | `run_js` description + tool descriptions that bias chain |
|
|
10
|
+
| Large `largest tool results` on read/bash/grep | Defaults for `select` / truncation / preview copy |
|
|
11
|
+
| Tool chosen when another was right | `description` disambiguation |
|
|
12
|
+
| `retried a failed call unchanged` | Clearer “already done / change approach” messaging |
|
|
13
|
+
| Browser / MCP flailing | Deferred tool descriptions; deferral list clarity |
|
|
14
|
+
|
|
15
|
+
Always resolve the Tool name to its Skill package under
|
|
16
|
+
`.agents/skills/tarsk-*/SKILL.md` (`tools:` list) before editing.
|