--- name: rtk-skill description: Use when running shell commands that produce verbose output (git, test, build, lint, package managers, docker). Prefix with rtk to save 60-90% tokens. Terrain projects use explicit rtk prefix (no global hook). version: 1.2.0 --- # RTK Skill (Rust Token Killer) [RTK](https://github.com/rtk-ai/rtk) is a CLI proxy that **filters and compresses command output** before it reaches the LLM (typically **60–90% token savings**). ## Resolve the RTK command (read first) Use **conventional paths only** — never machine-specific absolute paths like `/Users/...` or `C:\Users\...`. On Windows, tools deploy to `%USERPROFILE%\.terrain\bin\` (also written as `~/.terrain/bin/` in Git Bash / PowerShell 7+). Binaries use `.exe` extensions; PATHEXT resolves `rtk` → `rtk.exe`. | Priority | Command prefix | When | |----------|----------------|------| | 1 | `~/.terrain/bin/rtk` | Terrain env integration or desktop app (see existence check below) | | 2 | `bunx @terrain-ai/rtk` | No Terrain install; needs network once | | 3 | `npx @terrain-ai/rtk` | Same as bunx if Bun unavailable | Optional manifest (local, gitignored): `.terrain/env/agent-tools.json` — same `~/.terrain/bin/…` conventions. **Existence check (cross-platform):** | Shell | Check | |-------|-------| | bash / zsh / Git Bash | `[ -x ~/.terrain/bin/rtk ] \|\| [ -x ~/.terrain/bin/rtk.exe ]` | | PowerShell | `Test-Path "$HOME\.terrain\bin\rtk.exe"` | | cmd | `if exist "%USERPROFILE%\.terrain\bin\rtk.exe"` | **Shell rules:** - Invoke as `~/.terrain/bin/rtk ` — tilde expands at word start in bash/zsh/Git Bash/PowerShell 7+. - Do **not** `export RTK="$(jq -r .rtk …)"` then `"$RTK"` — quoted variables do not expand `~`. - Do **not** assume bare `rtk` is on PATH. Example (pick one prefix per session after the existence check): ```bash # bash / Git Bash if [ -x ~/.terrain/bin/rtk ] || [ -x ~/.terrain/bin/rtk.exe ]; then PREFIX=~/.terrain/bin/rtk else PREFIX="bunx @terrain-ai/rtk" fi $PREFIX git status ``` ```powershell # PowerShell $PREFIX = if (Test-Path "$HOME\.terrain\bin\rtk.exe") { "$HOME\.terrain\bin\rtk.exe" } else { "bunx @terrain-ai/rtk" } & $PREFIX git status ``` Verify: ```bash ~/.terrain/bin/rtk gain || bunx @terrain-ai/rtk gain ``` We do **not** run `rtk init` / global hooks. ## Golden rule > For **any shell command** that prints more than a few lines, run it as **` `** instead of bare ``. Applies to: git, tests, builds, linters, package managers, docker/kubectl, `ls`/`grep`/`find`, `gh`, etc. In examples below, `` means your resolved prefix (`~/.terrain/bin/rtk` or `bunx @terrain-ai/rtk`). ## Critical: built-in Read / Grep / Glob Claude Code, Cursor, and similar agents often have **native Read/Grep tools that bypass Bash hooks**. Those tools **do not** auto-rewrite to RTK. For token-efficient file/search workflows, use: | Instead of native tool | Use | |------------------------|-----| | Read large source file | ` read path/to/file.rs` | | Read signatures only | ` read path/to/file.rs -l aggressive` | | Grep / search repo | ` grep "pattern" .` or ` rg "pattern"` | | Find files | ` find "*.ts" .` | | List directory | ` ls .` | **Exception:** `.terrain/agent/context.md` and short `knowledge/*.md` — read directly (already dense). ## Command reference (by category) ### Git (high savings) ```bash git status git log -n 20 --oneline git diff git diff --staged add -A && git commit -m "msg" git push git pull ``` ### Tests (failures-focused, ~90% savings) ```bash cargo test test cargo test bun test vitest jest pytest go test ``` ### Build & lint ```bash cargo build cargo clippy tsc eslint . ruff check next build ``` ### Package managers ```bash pnpm list bun install pip list ``` ### Files & search ```bash ls src/ read src/lib/foo.rs read src/lib/foo.rs -l aggressive grep "fn handle_" . find "*.svelte" . diff file1 file2 ``` ### Containers / cloud (when used) ```bash docker ps docker logs kubectl get pods gh pr list ``` ### Errors only ```bash err npm run build ``` ## Global flags ```bash -u git status -v cargo test ``` ## When command fails RTK may collapse output but preserves **exit codes**. On failure, look for a tee path in output: ``` FAILED: 2/15 tests [full output: ~/.local/share/rtk/tee/....log] ``` Read that log if you need the full unfiltered output — do not blindly re-run the same verbose command. ## Bypass RTK (rare) ```bash RTK_DISABLED=1 git status ``` ## When NOT to use RTK | Use RTK | Use other Terrain skills instead | |---------|----------------------------------| | Shell command output | Architecture → `terrain-knowledge-skill` / `context.md` | | git test build lint | Symbol relations → `codegraph-skill` | | ` read` for code slices | Structured repomix index → `repomix-context-skill` | **Workflow order:** Terrain knowledge → codegraph → repomix slices → **rtk** for remaining shell work. ## Analytics (optional) ```bash gain gain --history discover ``` ## Do not - Run `rtk init` or `rtk init -g` — Terrain owns agent guidance via AGENTS.md - Assume hooks rewrite commands — **you** must type the rtk prefix - Re-run identical verbose commands after RTK already summarized them - Use wrong rtk package (verify with ` gain`) ## Complements - **terrain-knowledge-skill** — what project knowledge to read first - **codegraph-skill** — AST/call-graph queries - **repomix-context-skill** — grep repomix pack for source sections