agentleFS
yagizdoyagizdo/quiver/skills/code-navigation/SKILL.md

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

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
  1. Very specific:

    Check if .codegraph/ directory exists at project root.

    line 88
  2. Very specific:

    If exists: set codegraph_available=true.

    line 89
  3. Very specific:

    If not: set codegraph_available=false.

    line 90
  4. Very specific:

    If lsp_confirmed found: set lsp_available=true, skip to step 4.

    line 96
  5. Very specific:

    If LSP responds with results: set lsp_available=true, cache lsp_confirmed in project memory, skip to step 4.

    line 101
  6. Distinctive:

    If your agent searches the broader codebase (beyond files it already knows about), reference this skill:

    line 136
  7. Distinctive:

    Add the Code Navigation Strategy block from above to your agent's prompt.

    line 138
  8. Very specific:

    Ensure the dispatching skill passes codegraph_available and lsp_available context to your agent.

    line 139

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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.

TierToolsAvailable WhenBest For
CodeGraphcodegraph_search, codegraph_context, codegraph_callers, codegraph_callees, codegraph_impact, codegraph_node.codegraph/ exists in project rootSymbol lookup, task-relevant files, call chains, change impact
LSPgoToDefinition, findReferences, documentSymbolLanguage server installedDefinition jump, reference finding, file structure
Grep/Glob/ReadPattern matching + file readsAlwaysFile 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.

OperationUse When
codegraph_searchFind symbols by name (functions, classes, types)
codegraph_contextGet relevant code context for a task description
codegraph_callersFind what calls a function
codegraph_calleesFind what a function calls
codegraph_impactAssess what is affected by changing a symbol
codegraph_nodeGet 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.

OperationUse WhenGrep Fallback
goToDefinitionFind where a function, class, or type is definedGrep for function {name}, class {name}, def {name}, const {name}
findReferencesFind all callers or consumers of a symbolGrep for the symbol name (noisier -- includes comments, strings, partial matches)
documentSymbolGet a structural overview of a file's exports and symbolsRead 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

  1. Check if .codegraph/ directory exists at project root.
  2. If exists: set codegraph_available=true.
  3. If not: set codegraph_available=false. No user prompt -- CodeGraph is a passive enhancement.
  4. Pass codegraph_available alongside lsp_available to all dispatched agents.

LSP Detection Flow

  1. Check project memory for cached LSP preference.
    • If lsp_confirmed found: set lsp_available=true, skip to step 4.
    • A negative result is never cached (see step 3), so nothing else short-circuits here.
  2. Attempt an LSP probe.
    • Try a lightweight LSP call (e.g., documentSymbol on any source file from the project root).
    • If LSP responds with results: set lsp_available=true, cache lsp_confirmed in project memory, skip to step 4.
  3. 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.
  4. Pass lsp_available flag to all dispatched agents as part of their context.

Language Server Recommendations

LanguageRecommended ServerInstall Command
TypeScript/JavaScripttypescript-language-servernpm install -g typescript-language-server typescript
Pythonpyrightnpm install -g pyright or pip install pyright
Gogoplsgo install golang.org/x/tools/gopls@latest
Rustrust-analyzerInstall via rustup or IDE extension
Swiftsourcekit-lspIncluded with Xcode
Dart/Flutterdart language-serverIncluded with Dart SDK
Rubysolargraphgem install solargraph
Java/KotlinjdtlsInstall via IDE or manually

Memory Caching

LSP preference is stored in project memory:

  • File: lsp_preference.md in 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:

  1. Add the Code Navigation Strategy block from above to your agent's prompt.
  2. Ensure the dispatching skill passes codegraph_available and lsp_available context to your agent.
  3. 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:

JobAgentOutput
Where is X defined / what calls Y / list uses of Z / map a directory / verify a pathquiver:code-locatorCompressed path:line -- symbol -- note table
Conventions, patterns, planning context, feature impactquiver:code-navigatorStructured 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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.