The prompt to fix it in 30 seconds.

What rtk init Actually Puts in Your CLAUDE.md

rtk (Rust Token Killer) filters Claude Code command output before it hits your context window. Git diffs, build logs, test failures get compressed. The savings are real and come from RTK’s own documentation: 80% on git diffs, 90-99% on test output.

But rtk init also injects a 133-line reference block into CLAUDE.md that covers every tech stack. Cargo. TypeScript. Next.js. Vitest. Playwright. Prisma. Docker. Kubernetes. curl.

CLAUDE.md loads at the start of every Claude Code session. Not once. Every time. So if you run rtk init on a Hugo site, you load Kubernetes documentation on every session until you fix it.

Why Input Tokens Are the Part People Miss

Most rtk content talks about output savings. That makes sense because the savings are dramatic and easy to see.

Input is less visible. CLAUDE.md loads before you type anything. The default rtk block is 4,758 characters, which is roughly 1,190 tokens (about 4 characters per token for English text and code). Those tokens go out on every session, for every project where you ran rtk init and left the default in place.

The Cleanup Prompt

Run this once per project, right after rtk init:

RTK CLAUDE.md Cleanup

  Read these files to audit the project stack:
    package.json, Cargo.toml, go.mod, pyproject.toml (if any exist)
    .github/workflows/*.yml, Dockerfile, docker-compose.yml (if any exist)
    hugo.yaml, next.config.*, vite.config.*, webpack.config.* (if any exist)
    CLAUDE.md project overview section

  Remove RTK command categories whose tools don't exist in this project:
    cargo build/test/clippy  → only if Cargo.toml exists
    tsc/next/lint/prettier   → only if package.json with TS or Next.js exists
    vitest/playwright        → only if test config files exist
    pnpm/npm/npx/prisma      → only if package.json exists
    docker/kubectl           → only if Dockerfile or k8s manifests exist
    curl/wget                → only if used in CI or dev scripts
    gh pr/run/issue          → only if .github/ directory exists

  Always keep: Golden Rule, && chain example, Git, Files & Search, Meta
  (gain/discover).

  For every command line that survives, strip the inline comment and
  trailing whitespace. Turn this:
    rtk git add             # Ultra-compact confirmations (59%)
  Into this:
    rtk git add

  Also remove section heading savings percentages like "(59-80% savings)".
  Remove the Token Savings table at the bottom.
  Remove the blank line inside the && example block.

  Rewrite the block between <!-- rtk-instructions --> markers with only what
  survives.
  Report: original chars/tokens → cleaned chars/tokens → savings %.

Example: polski.directory

polski.directory is a Hugo static site. No Node. No Rust. No Docker. No GitHub Actions (for now).

The prompt audited the project and found seven irrelevant categories. All removed.

┌─────────────────────────────┬───────────────────┬──────┐
│          Category           │ Exists in Project │ Keep │
├─────────────────────────────┼───────────────────┼──────┤
│ Cargo / Rust                │ No                │ No   │
├─────────────────────────────┼───────────────────┼──────┤
│ TypeScript / Next.js / lint │ No                │ No   │
├─────────────────────────────┼───────────────────┼──────┤
│ vitest / playwright         │ No                │ No   │
├─────────────────────────────┼───────────────────┼──────┤
│ pnpm / npm / npx / prisma   │ No                │ No   │
├─────────────────────────────┼───────────────────┼──────┤
│ docker / kubectl            │ No                │ No   │
├─────────────────────────────┼───────────────────┼──────┤
│ curl / wget                 │ No                │ No   │
├─────────────────────────────┼───────────────────┼──────┤
│ GitHub PR workflows         │ No                │ No   │
├─────────────────────────────┼───────────────────┼──────┤
│ Git                         │ Yes               │ Yes  │
├─────────────────────────────┼───────────────────┼──────┤
│ Files and Search            │ Yes               │ Yes  │
├─────────────────────────────┼───────────────────┼──────┤
│ Meta (gain, discover)       │ Always            │ Yes  │
└─────────────────────────────┴───────────────────┴──────┘

Before

133 lines. 4,758 characters. ~1,190 tokens per session.

<!-- rtk-instructions v2 -->
# RTK (Rust Token Killer) - Token-Optimized Commands

## Golden Rule

**Always prefix commands with `rtk`**. If RTK has a dedicated filter, it uses it. If not, it passes through unchanged. This means RTK is always safe to use.

**Important**: Even in command chains with `&&`, use `rtk`:
```bash
# Wrong
git add . && git commit -m "msg" && git push

# Correct
rtk git add . && rtk git commit -m "msg" && rtk git push
```

## RTK Commands by Workflow

### Build & Compile (80-90% savings)
```bash
rtk cargo build         # Cargo build output
rtk cargo check         # Cargo check output
rtk cargo clippy        # Clippy warnings grouped by file (80%)
rtk tsc                 # TypeScript errors grouped by file/code (83%)
rtk lint                # ESLint/Biome violations grouped (84%)
rtk prettier --check    # Files needing format only (70%)
rtk next build          # Next.js build with route metrics (87%)
```

### Test (90-99% savings)
```bash
rtk cargo test          # Cargo test failures only (90%)
rtk vitest run          # Vitest failures only (99.5%)
rtk playwright test     # Playwright failures only (94%)
rtk test <cmd>          # Generic test wrapper - failures only
```

### Git (59-80% savings)
```bash
rtk git status          # Compact status
rtk git log             # Compact log (works with all git flags)
rtk git diff            # Compact diff (80%)
rtk git show            # Compact show (80%)
rtk git add             # Ultra-compact confirmations (59%)
rtk git commit          # Ultra-compact confirmations (59%)
rtk git push            # Ultra-compact confirmations
rtk git pull            # Ultra-compact confirmations
rtk git branch          # Compact branch list
rtk git fetch           # Compact fetch
rtk git stash           # Compact stash
rtk git worktree        # Compact worktree
```

Note: Git passthrough works for ALL subcommands, even those not explicitly listed.

### GitHub (26-87% savings)
```bash
rtk gh pr view <num>    # Compact PR view (87%)
rtk gh pr checks        # Compact PR checks (79%)
rtk gh run list         # Compact workflow runs (82%)
rtk gh issue list       # Compact issue list (80%)
rtk gh api              # Compact API responses (26%)
```

### JavaScript/TypeScript Tooling (70-90% savings)
```bash
rtk pnpm list           # Compact dependency tree (70%)
rtk pnpm outdated       # Compact outdated packages (80%)
rtk pnpm install        # Compact install output (90%)
rtk npm run <script>    # Compact npm script output
rtk npx <cmd>           # Compact npx command output
rtk prisma              # Prisma without ASCII art (88%)
```

### Files & Search (60-75% savings)
```bash
rtk ls <path>           # Tree format, compact (65%)
rtk read <file>         # Code reading with filtering (60%)
rtk grep <pattern>      # Search grouped by file (75%)
rtk find <pattern>      # Find grouped by directory (70%)
```

### Analysis & Debug (70-90% savings)
```bash
rtk err <cmd>           # Filter errors only from any command
rtk log <file>          # Deduplicated logs with counts
rtk json <file>         # JSON structure without values
rtk deps                # Dependency overview
rtk env                 # Environment variables compact
rtk summary <cmd>       # Smart summary of command output
rtk diff                # Ultra-compact diffs
```

### Infrastructure (85% savings)
```bash
rtk docker ps           # Compact container list
rtk docker images       # Compact image list
rtk docker logs <c>     # Deduplicated logs
rtk kubectl get         # Compact resource list
rtk kubectl logs        # Deduplicated pod logs
```

### Network (65-70% savings)
```bash
rtk curl <url>          # Compact HTTP responses (70%)
rtk wget <url>          # Compact download output (65%)
```

### Meta Commands
```bash
rtk gain                # View token savings statistics
rtk gain --history      # View command history with savings
rtk discover            # Analyze Claude Code sessions for missed RTK usage
rtk proxy <cmd>         # Run command without filtering (for debugging)
rtk init                # Add RTK instructions to CLAUDE.md
rtk init --global       # Add RTK to ~/.claude/CLAUDE.md
```

## Token Savings Overview

| Category | Commands | Typical Savings |
|----------|----------|-----------------|
| Tests | vitest, playwright, cargo test | 90-99% |
| Build | next, tsc, lint, prettier | 70-87% |
| Git | status, log, diff, add, commit | 59-80% |
| GitHub | gh pr, gh run, gh issue | 26-87% |
| Package Managers | pnpm, npm, npx | 70-90% |
| Files | ls, read, grep, find | 60-75% |
| Infrastructure | docker, kubectl | 85% |
| Network | curl, wget | 65-70% |

Overall average: **60-90% token reduction** on common development operations.
<!-- /rtk-instructions -->

After

41 lines. 708 characters. ~177 tokens per session.

<!-- rtk-instructions v2 -->
# RTK - Token-Optimized Commands

## Golden Rule

**Always prefix commands with `rtk`**. If RTK has a dedicated filter, it uses it. If not, it passes through unchanged. This means RTK is always safe to use.

**Important**: Even in command chains with `&&`, use `rtk`:
```bash
# Wrong
git add . && git commit -m "msg" && git push
# Correct
rtk git add . && rtk git commit -m "msg" && rtk git push
```

### Git
```bash
rtk git status
rtk git log
rtk git diff
rtk git add
rtk git commit
rtk git push
rtk git pull
rtk git branch
rtk git stash
```

### Files & Search
```bash
rtk ls
rtk grep
rtk find
```

### Meta
```bash
rtk gain
rtk discover
```
<!-- /rtk-instructions -->

The Numbers

Before:  4,758 chars  /  133 lines  /  ~1,190 tokens
After:     708 chars  /   41 lines  /    ~177 tokens
Saved:   4,050 chars  /   92 lines  /  ~1,013 tokens

85% reduction. Per session. Every session.

100 sessions per month: 101,300 tokens saved.

500 sessions per month: 506,500 tokens saved.

Token estimate uses the standard 4 characters per token heuristic for English text and code.

CLAUDE.md Is Not a README

It loads on every conversation. Every line has a recurring cost.

rtk handles output. A clean CLAUDE.md handles input. You want both.

rtk gain shows what you save on output. Run the prompt above to see what you save on input.