Skip to content
Back to skills

Lsp Guide

ASecurity

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.

  • 5,621 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added September 13, 2026
ai-agentsjavascripttypescriptpythonrustgojava

Security analysis

A100/100

Scanned September 13, 2026

npx -y skills add weave-os/router --skill lsp-guide --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Lsp Guide?

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

Security grade badge for Lsp Guide
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/weave-os-lsp-guide/badge)](https://www.skillsdirectory.com/skills/weave-os-lsp-guide)

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: 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.

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.