Skip to content
Back to skills

tilth

ASecurity

Use when exploring a codebase, finding where a symbol is defined or used, tracing its callers or callees, reading a source file as an outline, checking what depends on a file before changing it, or reviewing a diff by function. Covers 17 languages.

  • 356 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 12, 2026
ai-agentsjavascripttypescriptpythonrustgojavarubyphpswiftkotlin

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned November 9, 2026

npx -y skills add jahala/tilth --skill skills --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of tilth?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for tilth
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jahala-tilth/badge)](https://www.skillsdirectory.com/skills/jahala-tilth)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tilth
description: Use when exploring a codebase, finding where a symbol is defined or used, tracing its callers or callees, reading a source file as an outline, checking what depends on a file before changing it, or reviewing a diff by function. Covers 17 languages.
---

# tilth — code intelligence CLI

Tree-sitter + ripgrep + smart file reading in one binary. Replaces `grep`, `cat`, `find`, `ls` with AST-aware equivalents across 17 languages (Rust, TypeScript, TSX, JavaScript, Python, Go, Java, Scala, C, C++, Ruby, PHP, C#, Swift, Kotlin, Elixir, Bash).

Run via Bash: `tilth <args>`. Search before reading — `tilth <symbol> --scope .` returns definitions, usages, and callee footers in one call.

DO NOT use `grep`, `rg`, `cat`, `head`, `tail`, `find`, `ls` — use `tilth` instead.
DO NOT re-read files whose content is already shown in expanded search results.

## Read

```bash
tilth <path>                      # smart view: full if small, outline if large
tilth <path> --section 45-89      # exact line range
tilth <path> --section "## Foo"   # markdown heading (suggests fuzzy matches on miss)
tilth <path> --full               # force full content (file paths)
```

Outline format: `[<start>-<end>]  <symbol>`. Full/section format: `<line> │ <content>`. Binary files print `[skipped]`; lockfiles, minified bundles, generated code print `[generated]`.

## Search

The shape of the query picks the mode:

| Query | Mode | Example |
|---|---|---|
| One identifier | Symbol search: definitions, then usages | `tilth WeekService` |
| Several words | Literal text search | `tilth "study start date"` |
| Contains `*` | File listing | `tilth "*.swift"` |
| `/pattern/` or `/pattern/flags` | Regex search | `tilth "/week/i"` |
| An existing file path | Read the file | `tilth src/main.rs` |

Symbol search matches the identifier exactly, including case.

```bash
tilth <symbol> --scope <dir>                # definitions + usages
tilth "Foo,Bar,Baz" --scope <dir>           # multi-symbol (max 5)
tilth <symbol> --expand                     # inline source for top 2 matches
tilth <symbol> --expand=5                   # inline source for top 5
tilth <symbol> --full                       # up to 100 matches, source for the top 50
tilth <symbol> --full --expand=0            # up to 100 matches, no inline source
tilth <symbol> --callers --scope <dir>      # call sites (structural, not text)
tilth "TODO: fix" --scope <dir>             # content search (literal text)
tilth "/regex/" --scope <dir>               # regex search
tilth <symbol> --glob "*.rs" --scope <dir>  # file pattern filter
```

`--full` semantics depend on query type:
- File path → return whole file (bypass smart-view outline).
- Symbol / text / regex → raise the match cap from 10 to 100 and inline source for the top 50 matches. `--expand=N` sets the inline-source count only, so `--full --expand=0` still lists up to 100 matches. Multi-symbol (`"Foo,Bar"`) is the exception: it always expands at least one match per symbol.
- Glob → no-op.

Symbol search also surfaces **markdown headings as soft definitions** — `tilth StreamingResponse --scope docs/` finds `## StreamingResponse` headings ranked between code defs (60-80) and usages (0). Section body inlines automatically in the default preview (capped at 40 lines; pass `--expand` for the rest).

Output per match:
```
## <path>:<start>-<end> [definition|usage|impl]
<outline context>
<expanded source block>
-- calls --
  <callee>  <path>:<start>-<end>  <signature>
-- siblings --
  <related>  <path>:<start>-<end>  <signature>
```

`--callers` finds direct, by-name call sites. If it returns 0 matches but the symbol exists, the call is likely indirect (trait/interface dispatch, reflection, route registration, callback) — fall back to `tilth <symbol> --scope .` to see references.

## Files

```bash
tilth "*.test.ts" --scope <dir>   # glob files (.tilthignore honored)
tilth --respect-gitignore <symbol> --scope <dir>  # opt into .gitignore/.ignore
tilth --map --scope <dir>         # codebase skeleton with directory token rollups
```

## Deps (blast radius)

```bash
tilth <file> --deps               # what it imports + what depends on it
```

Use only before renaming, removing, or changing an export's signature.

## Diff (structural)

```bash
tilth diff                        # uncommitted changes
tilth diff HEAD~1                 # vs prior commit
tilth diff main..feat             # branch comparison
tilth diff --log HEAD~5..HEAD     # per-commit symbol summaries
tilth diff --blast                # warn on signature-changed exports
tilth diff --expand 3             # inline source for top 3 changed symbols
```

Function-level change detection — `[+]` added, `[-]` removed, `[~]` modified, `[~:sig]` signature changed. Replaces `git diff` for symbol-level review.

## Over MCP

When tilth runs as an MCP server (`tilth --mcp`), the tools are `tilth_search`, `tilth_read`, `tilth_list`, `tilth_deps`, `tilth_grok`, `tilth_diff`, and `tilth_write` in edit mode. Each tool's description carries its parameters. The rules below are the ones that are easy to get wrong.

Paths and scope:

- The server cannot see your shell's working directory. Pass absolute paths, or set `root` to the absolute project root whenever a `path` or `scope` is relative.
- `scope` is an existing directory, never a file. To search one file, set `scope` to its directory and `glob` to its name, or call `tilth_read` if you already know the file.
- Omitting `scope` searches `root` when it is set, and otherwise the directory the server was started in. In a worktree, set `root` so the search runs in the right checkout.
- `context` names the file you are working on. It boosts nearby results and does not narrow the search.

Search:

- `kind: "symbol"` (the default) for identifiers, `"content"` for literal text such as error messages or config keys, `"regex"` only when you need a pattern, and `"callers"` for call sites.
- Do not mix kinds in one query. Search a class name as a symbol and `__all__` as content, in two calls.
- Comma-separated queries are for up to five symbol names in one symbol search.
- `glob` narrows by file: `"**/*.py"`, `"models.py"`, or `"!**/*_test.py"` to exclude.
- Use `tilth_list` only to list files when there is no symbol or text to search for.
- Do not re-read source already shown in an expanded search result.

Other tools:

- `tilth_grok` when the task is to understand one symbol: it returns its definition, callers, callees, siblings and tests together.
- `tilth_deps` before changing a signature, renaming or removing an export, or changing behaviour that callers rely on.
- `tilth_write` replaces the host's Edit and Write tools. Group writes to several files into one call. `mode: "hash"` takes `edits`, each with a `start` anchor from `tilth_read`, an optional `end`, and `content`. `"overwrite"` and `"append"` take `content`. A multi-file call can partly succeed, so read each file's result.

## Budget

```bash
tilth <args> --budget 2000        # cap response at ~N tokens
```

Use when an outline or search returns more than you need.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.