supp
Structured code context for LLMs. Extracts files, diffs, symbols, and trees from your codebase and copies them to the clipboard — ready to paste into any chat.
Install
# From crates.io
# Or via install script (Linux / macOS)
|
Windows (PowerShell):
Invoke-WebRequest -Uri https://raw.githubusercontent.com/AndrewPBerg/supp/main/install.ps1 -OutFile install.ps1
.\install.ps1
Remove-Item install.ps1
Binaries are available for Linux (x86_64, ARM64, musl), macOS (Intel, Apple Silicon), and Windows. See GitHub Releases for downloads.
Quick start
# Get context from files — copies to clipboard automatically
# Multiple files and directories
# See what changed on your branch
# Show the project tree with git status
# Search for a symbol by name
# Deep-dive a symbol — definition, call sites, dependencies
# Pick files interactively with fzf
Add -n to any command to print output without copying to clipboard.
Commands
| Command | What it does |
|---|---|
supp <paths> |
Bundle files into structured context with token estimate |
supp diff |
Git diff with file tree, line counts, and full patches |
supp tree |
Project layout with git status markers |
supp sym <query> |
Find functions, types, and constants by name |
supp why <symbol> |
Explain a symbol — definition, call sites, and dependencies |
supp pick |
Interactive file picker (requires fzf) |
supp clean-cache |
Delete the symbol cache for a project |
NOTE:
supp pickrequires fzf to be installed and available on yourPATH. Install it via your package manager (e.g.brew install fzf,winget install fzf,pacman -S fzf,xbps-install fzf) before using this command. |supp completions <shell>| Generate shell completions (bash, zsh, fish) |
Useful flags
| Flag | Short | Description |
|---|---|---|
--no-copy |
-n |
Print only, skip clipboard |
--json |
Output as JSON (machine-readable) | |
--regex |
-r |
Filter paths by regex |
--slim |
Reduce noise: strip comments, collapse blanks | |
--map |
-m |
Outline mode: signatures, types, and API surface only |
--depth |
-d |
Limit tree depth |
Docs
Detailed usage for each command:
- Context — bundling files into LLM context
- Diff — git diffs and comparison modes
- Sym — finding symbols by name
- Why — deep-diving a symbol
- Tree — directory tree
- Examples — workflows and multi-language demos
- Config — configuration
Claude Code integration
supp ships with Claude Code skills that let Claude use supp directly. Once supp is installed, these slash commands are available in any Claude Code session inside a project:
| Slash command | What it does |
|---|---|
/ctx <paths> |
Read files with project tree and token estimate |
/diff |
Review git changes with structured patches |
/tree |
See project layout with git status |
/sym <query> |
Find a symbol by name |
/why <symbol> |
Explain a symbol — definition, call sites, dependencies |
Suggested prompts
These work well as starting points for Claude Code conversations:
# Orient yourself in an unfamiliar project
"Use /tree and /ctx --map . to map out this codebase, then summarize the architecture."
# Understand a specific function before changing it
"Use /why handle_request to explain how it works, then suggest how to add rate limiting."
# Review your own changes
"Use /diff to review my changes and suggest improvements."
# Explore a domain concept across languages
"Use /sym User to find all User-related types, then /why the most important one."
Token estimation
supp shows an approximate token count for all output (≈ ~N tokens). This uses a fast heuristic — bytes / 3.5 — rather than running a full BPE tokenizer. For mixed code, this is typically accurate within ~10% of the true cl100k count. The tradeoff is speed: estimation is instant, while tokenization would add hundreds of milliseconds.
Symbol cache
supp sym, supp why, and supp <paths> build a symbol index using tree-sitter. The index is cached per project at .git/supp/sym-cache (or /tmp/supp-sym-<hash> for non-git directories).
On subsequent runs, supp checks file mtimes and sizes — only changed files are re-parsed. If nothing changed, the cached index is used as-is.
To force a full rebuild, delete the cache:
The cache is scoped to each project root (the directory you pass to supp). Different projects maintain independent caches.
Shell completions
# Bash
# Zsh
# Fish
Managing supp