Skip to content
Agent Orchestration
Skill

/lsp-guide

Recipes for the lsp tool — resolving where a symbol is defined, every place it is used, type signatures and docs, file outlines, and compiler/type errors through a real language server (Go, TypeScript/JavaScript, Python, Rust). Use when navigating or explaining code by symbol,

BOOST
From plugin
weave-os-router-2
5.6k2 skills13 commands
Install
$ npx -y skills add weave-os/router --skill lsp-guide --agent claude-code

How 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/lsp-guide

Context preview

The summary Claude sees to decide when to auto-load this skill.

Recipes for the lsp tool — resolving where a symbol is defined, every place it is used, type signatures and docs, file outlines, and compiler/type errors through a real language server (Go, TypeScript/JavaScript, Python, Rust). Use when navigating or explaining code by symbol,

SKILL.md

lsp-guide.SKILL.md
name: lsp-guide
description: Recipes for the lsp tool — resolving where a symbol is defined, every place it is used, type signatures and docs, file outlines, and compiler/type errors through a real language server (Go, TypeScript/JavaScript, Python, Rust). Use when navigating or explaining code by symbol, finding callers or usages, checking what broke after an edit, or deciding between lsp and text search.

Using the lsp tool

The `lsp` tool answers *semantic* questions through the language's own server: it resolves through imports, types, and aliases, where grep only matches text. Reach for it whenever the question is about a **symbol**; keep grep for plain strings, comments, and file types no server supports.

Operations

| Operation | Answers | Needs | |---|---|---| | `definition` | where the symbol at a position is defined | `path`, `line`, `column` | | `references` | every place the symbol at a position is used | `path`, `line`, `column` | | `hover` | type signature + docs for the symbol at a position | `path`, `line`, `column` | | `documentSymbol` | the outline (types, functions, methods) of one file | `path` | | `diagnostics` | compiler/type errors and warnings for one file | `path` |

Positions are 1-based, and `column` must point **at the identifier** (its first character works). All paths resolve against the working directory.

Recipes

**"Where is X defined?"** — from any usage site of X: `{"operation": "definition", "path": "<file>", "line": <L>, "column": <C>}`. Don't know a usage site? Find one first (see next recipe's step 1).

**"Everywhere X is used"** — two steps, always:

1. Locate the declaration: `rg -n --column '\bX\b'` (the `--column` output is exactly the coordinate the next call needs), or `documentSymbol` when you already know the file. 2. `{"operation": "references", "path": "<decl file>", "line": <L>, "column": <C>}`.

A grep hit list is **not** a references answer: it includes comments and strings, misses aliased imports, and can't distinguish same-named symbols. Step 2 is what makes the answer authoritative.

**"What is this / what's its signature?"** — `hover` at the symbol. Prefer it over reading the definition file when you only need the type or doc comment.

**"What's in this file?"** — `documentSymbol` before reading a large file; jump straight to the line the outline gives you.

**"Did my edit break anything here?"** — `diagnostics` on the file after editing. It reports the server's current analysis of the saved file.

Behavior worth knowing

  • **First query per workspace is slow** (the server indexes — up to a minute

in a big repo). Later queries on that workspace are fast; don't give up after one timeout, retry once.

  • **References are capped** (default 100, header says how many exist).
  • **Unsupported file type or missing server** returns advice text, not an

error — fall back to grep for that file. A missing server can be installed with the user's consent via `lsp_enable` (see the install-lsps skill for toolchain prerequisites).

  • Works inside dispatch subagents too (they share the parent's warm servers),

so symbol lookups are safe to fan out.

Read more
Ships withweave-os-router-2

Model router for agentic systems. Routes every prompt to the right model in <50ms. Cut costs 40-70% with just an endpoint change.

Get the whole plugin
Stats
5,577
Stars
153
Forks
Active
Maintenance
Go
Language
Apache-2.0
License
26m ago
Last commit
5mo ago
Created
16h ago
Added

Repo: weave-os/router

Other skills on weave-os-router-2.