code-navigation
Skill16 starsChanged 57 days agoMITView on GitHub
CodeGraph-first code navigation with LSP and grep fallback. Provides agents with a reusable strategy for semantic code exploration -- codegraph tools when available, LSP goToDefinition/findReferences/documentSymbol otherwise, grep as last resort.
- Installs packages
1 other project uses a version of this.
Adopted by
Most recently taken up by
- snui1s/losna-clitheir own version, first seen Aug 31, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- snui1s/losna-cli★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository23 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- adviseSkill
- brainstormSkill
- commitSkill
- create-agents-mdSkill
- create-prSkill
- design-buildSkill
- design-fixSkill
- designSkill
- handoverSkill
- hypothesis-debuggingSkill
- load-handoverSkill
- local-filesSkill
- planSkill
- report-checkSkill
- reviewSkill
- senior-reviewSkill
- shipSkill
- tddSkill
- verificationSkill
- visual-companionSkill
- workSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 2 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 88
Check if .codegraph/ directory exists at project root.
- Very specific: line 89
If exists: set codegraph_available=true.
- Very specific: line 90
If not: set codegraph_available=false.
- Very specific: line 96
If lsp_confirmed found: set lsp_available=true, skip to step 4.
- Very specific: line 101
If LSP responds with results: set lsp_available=true, cache lsp_confirmed in project memory, skip to step 4.
- Distinctive: line 136
If your agent searches the broader codebase (beyond files it already knows about), reference this skill:
- Distinctive: line 138
Add the Code Navigation Strategy block from above to your agent's prompt.
- Very specific: line 139
Ensure the dispatching skill passes codegraph_available and lsp_available context to your agent.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Code Navigation
Reference skill for agents that search the broader codebase. Defines when to use LSP vs Grep/Glob and how to handle fallback.
Navigation Hierarchy
Three tiers, highest precision first. Use the highest available tier for each operation.
| Tier | Tools | Available When | Best For |
| CodeGraph | codegraph_search, codegraph_context, codegraph_callers, codegraph_callees, codegraph_impact, codegraph_node | .codegraph/ exists in project root | Symbol lookup, task-relevant files, call chains, change impact |
| LSP | goToDefinition, findReferences, documentSymbol | Language server installed | Definition jump, reference finding, file structure |
| Grep/Glob/Read | Pattern matching + file reads | Always | File discovery, text patterns, config files, non-code content |
CodeGraph Operation Catalog
Six semantic operations. For file discovery and text patterns, use Grep/Glob regardless of CodeGraph.
| Operation | Use When |
codegraph_search | Find symbols by name (functions, classes, types) |
codegraph_context | Get relevant code context for a task description |
codegraph_callers | Find what calls a function |
codegraph_callees | Find what a function calls |
codegraph_impact | Assess what is affected by changing a symbol |
codegraph_node | Get details and source code for a specific symbol |
LSP Operation Catalog
Three semantic operations where LSP outperforms grep. For everything else, use Grep/Glob/Read directly.
| Operation | Use When | Grep Fallback |
goToDefinition | Find where a function, class, or type is defined | Grep for function {name}, class {name}, def {name}, const {name} |
findReferences | Find all callers or consumers of a symbol | Grep for the symbol name (noisier -- includes comments, strings, partial matches) |
documentSymbol | Get a structural overview of a file's exports and symbols | Read the file and parse manually |
Not covered by this skill (Grep/Glob is already sufficient):
- File discovery -- use Glob
- Text pattern matching -- use Grep
- Content reading -- use Read
Agent Instructions Block
Agents that search the broader codebase should include this block in their prompt. The dispatching skill passes codegraph_available: true|false and lsp_available: true|false as part of the agent's context.
## Code Navigation Strategy
You have been provided `codegraph_available` and `lsp_available` flags in your context.
**When `codegraph_available: true`:**
- First, load codegraph tool schemas by calling ToolSearch with query `"select:mcp__codegraph__codegraph_search,mcp__codegraph__codegraph_context,mcp__codegraph__codegraph_callers,mcp__codegraph__codegraph_callees,mcp__codegraph__codegraph_impact,mcp__codegraph__codegraph_node"`. Codegraph tools are deferred and cannot be called without this step.
- For finding symbols by name: use codegraph_search first.
- For understanding what code is relevant to a task: use codegraph_context first.
- For finding callers of a function: use codegraph_callers first.
- For finding what a function calls: use codegraph_callees first.
- For assessing change impact: use codegraph_impact first.
- For getting source code of a specific symbol: use codegraph_node.
- If codegraph returns insufficient results, fall through to LSP (if available) then grep.
- For file discovery and pattern matching: always use Grep/Glob regardless of codegraph.
**When `codegraph_available: false` and `lsp_available: true`:**
- For finding where a function/class/type is defined: use LSP goToDefinition first.
- For finding all callers or consumers of a symbol: use LSP findReferences first.
- For getting a structural overview of a file: use LSP documentSymbol first.
- If LSP returns empty or unhelpful results for any operation, inform the user:
"LSP returned no results for {operation} on `{symbol}` -- falling back to grep-based search."
Then use the grep equivalent from the catalog above.
- For file discovery and pattern matching: always use Grep/Glob regardless of LSP availability.
**When both unavailable:**
- Use Grep, Glob, and Read for all code navigation.Skill-Level Navigation Detection
Skills that dispatch code-exploration agents (/plan, /quiver:review) run this detection once before agent dispatch. Results are passed as codegraph_available and lsp_available flags to quiver:code-navigator and other agents that search the codebase.
CodeGraph Detection Flow
- Check if
.codegraph/directory exists at project root. - If exists: set
codegraph_available=true. - If not: set
codegraph_available=false. No user prompt -- CodeGraph is a passive enhancement. - Pass
codegraph_availablealongsidelsp_availableto all dispatched agents.
LSP Detection Flow
- Check project memory for cached LSP preference.
- If
lsp_confirmedfound: setlsp_available=true, skip to step 4. - A negative result is never cached (see step 3), so nothing else short-circuits here.
- If
- Attempt an LSP probe.
- Try a lightweight LSP call (e.g.,
documentSymbolon any source file from the project root). - If LSP responds with results: set
lsp_available=true, cachelsp_confirmedin project memory, skip to step 4.
- Try a lightweight LSP call (e.g.,
- LSP not available -- continue with grep.
- Set
lsp_available=false. Detect the project language from manifest files (
package.json,Gemfile,requirements.txt,pubspec.yaml,go.mod,Cargo.toml,Package.swift, etc.) and print one line naming the recommended server from the table below:> LSP not available; using grep. Install {recommended_server} for {language} to enable go-to-definition and find-references.- No
AskUserQuestion. LSP is an enhancement, and a question here stops every skill that runs detection, including one another skill invoked with no user at the prompt. Do not cache the negative result: the probe is a single call, and a server installed later is picked up by the next run.
- Set
- Pass
lsp_availableflag to all dispatched agents as part of their context.
Language Server Recommendations
| Language | Recommended Server | Install Command |
| TypeScript/JavaScript | typescript-language-server | npm install -g typescript-language-server typescript |
| Python | pyright | npm install -g pyright or pip install pyright |
| Go | gopls | go install golang.org/x/tools/gopls@latest |
| Rust | rust-analyzer | Install via rustup or IDE extension |
| Swift | sourcekit-lsp | Included with Xcode |
| Dart/Flutter | dart language-server | Included with Dart SDK |
| Ruby | solargraph | gem install solargraph |
| Java/Kotlin | jdtls | Install via IDE or manually |
Memory Caching
LSP preference is stored in project memory:
- File:
lsp_preference.mdin the project's auto-memory directory - Content:
lsp_confirmed, which language server responded, date cached. Only a successful probe is written; an absent server is re-probed on every run. - Lifetime: Persists across sessions. User can reset by saying "forget LSP preference" or by removing the file; installing a server needs no reset.
For Agent Authors
If your agent searches the broader codebase (beyond files it already knows about), reference this skill:
- Add the Code Navigation Strategy block from above to your agent's prompt.
- Ensure the dispatching skill passes
codegraph_availableandlsp_availablecontext to your agent. - Your agent does NOT need to handle LSP detection -- that is the skill's responsibility.
Locate vs Map
Two agents serve code navigation. Pick by output need:
| Job | Agent | Output |
| Where is X defined / what calls Y / list uses of Z / map a directory / verify a path | quiver:code-locator | Compressed path:line -- symbol -- note table |
| Conventions, patterns, planning context, feature impact | quiver:code-navigator | Structured file:role:pattern report with Key Conventions and Gaps |
Both agents use the tier strategy from this skill (codegraph -> LSP -> grep). code-locator runs on haiku and refuses convention extraction; code-navigator runs on inherit and emits the full map /plan consumes.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

