/coderlm
Structural codebase navigation for supported languages (Rust, Python, TypeScript, JavaScript, Go, Java, Scala, Ruby, PHP, Zig, SQL). Provides tree-sitter-backed indexing: find symbols by name, get exact function bodies, follow caller chains, discover tests. Works best combined
$ npx -y skills add jaredstewart/coderlm --skill coderlm --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/coderlm
Context preview
The summary Claude sees to decide when to auto-load this skill.
Structural codebase navigation for supported languages (Rust, Python, TypeScript, JavaScript, Go, Java, Scala, Ruby, PHP, Zig, SQL). Provides tree-sitter-backed indexing: find symbols by name, get exact function bodies, follow caller chains, discover tests. Works best combined
SKILL.md
coderlm.SKILL.mdname: coderlm
description: "Structural codebase navigation for supported languages (Rust, Python, TypeScript, JavaScript, Go, Java, Scala, Ruby, PHP, Zig, SQL). Provides tree-sitter-backed indexing: find symbols by name, get exact function bodies, follow caller chains, discover tests. Works best combined with the Read tool: use coderlm CLI (`search`, `impl`, `callers`) to locate the right code across a codebase, then `Read` the identified files directly for full context. Use for: tracing execution paths across multiple files, answering 'what calls X', 'how does X work', 'where is X defined'. Avoid raw bash grep/find — use the coderlm `grep` command instead."
allowed-tools:
- Bash
- Read
- Agent
CodeRLM — Structural Codebase Exploration
You have access to a tree-sitter-backed index server. Use it instead of guessing with grep.
FIRST: Choose Your Mode
**Is the question "how does X work", "trace X", or "follow the execution path of X"?**
→ **Delegate immediately to a subcall agent. Do not do any CLI searches first.**
Agent(coderlm-subcall, "Trace how <X> works. Find the entrypoint, follow callers, and show the full execution path with code extracts.")
The subcall agent has a structured workflow for tracing and will return findings with code evidence. Using it keeps the full exploration out of your context window and produces more complete results than piecemeal CLI calls.
**Is the question a targeted lookup ("where is X defined", "what calls X", "show me X")?**
→ Use CLI commands directly (see below).
**When to just Read a file directly.** After 1-2 `search` or `structure` calls, if the relevant code is clearly concentrated in 1-3 files, **Read those files directly** instead of reconstructing them with granular CLI calls. Read is cheaper than 10+ `impl`/`symbols`/`peek` calls for a focused file. Only keep using CLI lookups when tracing across many files (5+) or when you need symbol-level precision that Read can't give you.
**NEVER fall back to raw bash grep/find/cat.** If a coderlm CLI command fails, use the coderlm fallback rules — not shell tools.
---
Setup
CLI=".claude/coderlm_state/coderlm_cli.py"
Session is auto-created by the plugin. If not, run `python3 $CLI init`.
Quick Lookups: One-Off Commands
For a single targeted lookup:
python3 $CLI search MyFunction
python3 $CLI impl MyFunction --file path/to/file.py
python3 $CLI callers MyFunction --file path/to/file.py
Multiple Lookups: Batch Mode
For 2-5 targeted lookups, use batch to minimize tool calls:
python3 $CLI batch --commands "
search MyFunction
impl MyFunction --file path/to/file.py
callers MyFunction --file path/to/file.py
"
Multiple Lookups: Python Exec Mode
For tracing a full execution path in one shot — search, then follow callers up the chain:
python3 $CLI exec --code "
# Find entrypoint, read its implementation, then walk callers up the chain
hits = search('serialize_response')
if hits.get('symbols'):
sym = hits['symbols'][0]
impl_(sym['name'], sym['file']) # read the function
c = callers(sym['name'], sym['file']) # find who calls it
if c.get('callers'):
caller = c['callers'][0]
impl_(caller['name'], caller['file']) # read the caller
callers(caller['name'], caller['file']) # one more hop up
"Use exec mode when you need to: follow a call chain across 3+ hops, or make later queries depend on earlier results. One exec call replaces many individual Bash calls and keeps the full trace in a single result.
Available helpers in exec mode: `search()`, `impl_()`, `callers()`, `tests()`, `grep()`, `symbols()`, `peek_file()`, `structure()`, `variables_list()`.
Commands
| Command | Purpose | |---------|---------| | `search QUERY [--file FILE]` | Find symbols by name | | `impl SYMBOL --file FILE` | Get full source code | | `callers SYMBOL --file FILE` | Find call sites | | `tests SYMBOL --file FILE` | Find tests referencing symbol | | `grep PATTERN [--scope code] [--file FILE]` | Regex search (`--scope code` skips comments) | | `peek FILE --start N --end N` | Read a line range | | `symbols [--file FILE] [--kind KIND]` | List all symbols | | `structure [--depth N]` | Project file tree |
Fallback Rules (coderlm only — not raw bash)
- `search` returns 0 → use `grep` for the name
- `impl` fails (404) → use `peek` with the file path
- `callers` returns nothing → `grep` for the symbol name
- Don't retry failures — pivot to an alternative
Output Requirements
1. **Code extracts** — Include actual source from `impl` or `peek` as fenced code blocks 2. **File:line references** — Cite specific locations for every claim 3. **Chain of evidence** — Show each hop when tracing execution paths
Inputs
This skill reads `$ARGUMENTS`. Accepted patterns:
- `query=<question>` (required): what to find or understand
- `cwd=<path>` (optional): project directory
- `port=<N>` (optional): server port (default: 3000)
Read more
name: coderlm description: "Structural codebase navigation for supported languages (Rust, Python, TypeScript, JavaScript, Go, Java, Scala, Ruby, PHP, Zig, SQL). Provides tree-sitter-backed indexing: find symbols by name, get exact function bodies, follow caller chains, discover tests. Works best combined with the Read tool: use coderlm CLI (`search`, `impl`, `callers`) to locate the right code across a codebase, then `Read` the identified files directly for full context. Use for: tracing execution paths across multiple files, answering 'what calls X', 'how does X work', 'where is X defined'. Avoid raw bash grep/find — use the coderlm `grep` command instead." allowed-tools: - Bash - Read - Agent
CodeRLM — Structural Codebase Exploration
You have access to a tree-sitter-backed index server. Use it instead of guessing with grep.
FIRST: Choose Your Mode
**Is the question "how does X work", "trace X", or "follow the execution path of X"?**
→ **Delegate immediately to a subcall agent. Do not do any CLI searches first.**
Agent(coderlm-subcall, "Trace how <X> works. Find the entrypoint, follow callers, and show the full execution path with code extracts.")
The subcall agent has a structured workflow for tracing and will return findings with code evidence. Using it keeps the full exploration out of your context window and produces more complete results than piecemeal CLI calls.
**Is the question a targeted lookup ("where is X defined", "what calls X", "show me X")?**
→ Use CLI commands directly (see below).
**When to just Read a file directly.** After 1-2 `search` or `structure` calls, if the relevant code is clearly concentrated in 1-3 files, **Read those files directly** instead of reconstructing them with granular CLI calls. Read is cheaper than 10+ `impl`/`symbols`/`peek` calls for a focused file. Only keep using CLI lookups when tracing across many files (5+) or when you need symbol-level precision that Read can't give you.
**NEVER fall back to raw bash grep/find/cat.** If a coderlm CLI command fails, use the coderlm fallback rules — not shell tools.
---
Setup
CLI=".claude/coderlm_state/coderlm_cli.py"
Session is auto-created by the plugin. If not, run `python3 $CLI init`.
Quick Lookups: One-Off Commands
For a single targeted lookup:
python3 $CLI search MyFunction python3 $CLI impl MyFunction --file path/to/file.py python3 $CLI callers MyFunction --file path/to/file.py
Multiple Lookups: Batch Mode
For 2-5 targeted lookups, use batch to minimize tool calls:
python3 $CLI batch --commands " search MyFunction impl MyFunction --file path/to/file.py callers MyFunction --file path/to/file.py "
Multiple Lookups: Python Exec Mode
For tracing a full execution path in one shot — search, then follow callers up the chain:
python3 $CLI exec --code "
# Find entrypoint, read its implementation, then walk callers up the chain
hits = search('serialize_response')
if hits.get('symbols'):
sym = hits['symbols'][0]
impl_(sym['name'], sym['file']) # read the function
c = callers(sym['name'], sym['file']) # find who calls it
if c.get('callers'):
caller = c['callers'][0]
impl_(caller['name'], caller['file']) # read the caller
callers(caller['name'], caller['file']) # one more hop up
"Use exec mode when you need to: follow a call chain across 3+ hops, or make later queries depend on earlier results. One exec call replaces many individual Bash calls and keeps the full trace in a single result.
Available helpers in exec mode: `search()`, `impl_()`, `callers()`, `tests()`, `grep()`, `symbols()`, `peek_file()`, `structure()`, `variables_list()`.
Commands
| Command | Purpose | |---------|---------| | `search QUERY [--file FILE]` | Find symbols by name | | `impl SYMBOL --file FILE` | Get full source code | | `callers SYMBOL --file FILE` | Find call sites | | `tests SYMBOL --file FILE` | Find tests referencing symbol | | `grep PATTERN [--scope code] [--file FILE]` | Regex search (`--scope code` skips comments) | | `peek FILE --start N --end N` | Read a line range | | `symbols [--file FILE] [--kind KIND]` | List all symbols | | `structure [--depth N]` | Project file tree |
Fallback Rules (coderlm only — not raw bash)
- `search` returns 0 → use `grep` for the name
- `impl` fails (404) → use `peek` with the file path
- `callers` returns nothing → `grep` for the symbol name
- Don't retry failures — pivot to an alternative
Output Requirements
1. **Code extracts** — Include actual source from `impl` or `peek` as fenced code blocks 2. **File:line references** — Cite specific locations for every claim 3. **Chain of evidence** — Show each hop when tracing execution paths
Inputs
This skill reads `$ARGUMENTS`. Accepted patterns:
- `query=<question>` (required): what to find or understand
- `cwd=<path>` (optional): project directory
- `port=<N>` (optional): server port (default: 3000)
CodeRLM applies the Recursive Language Model (RLM) pattern to codebases. A Rust server indexes a project's files and symbols via tree-sitter, then exposes a JSON API that LLM agents query for targeted context — structure, symbols, source code, callers, tests,

