Use when navigating or analyzing a codebase that's open in a running Neovim instance via vibing.nvim with an LSP client attached. Prefers the vibing-nvim MCP LSP tools (definitions, references, hover, diagnostics, symbols, call hierarchy) over text search for "where is X defined/used/called", "what type is this", "what's broken here" style questions, since they reflect language-aware, live analysis rather than a text match.
Scanned 8/31/2026
Install to Claude Code
npx -y skills add shabaraba/vibing.nvim --skill nvim-lsp-navigation --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Nvim Lsp Navigation?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/shabaraba-nvim-lsp-navigation)More formats (shields.io, HTML) on the badges page.
---
name: nvim-lsp-navigation
description: Use when navigating or analyzing a codebase that's open in a running Neovim instance via vibing.nvim with an LSP client attached. Prefers the vibing-nvim MCP LSP tools (definitions, references, hover, diagnostics, symbols, call hierarchy) over text search for "where is X defined/used/called", "what type is this", "what's broken here" style questions, since they reflect language-aware, live analysis rather than a text match.
user-invocable: false
---
# Neovim LSP Navigation
Text search (`Grep`/`Glob`) finds string matches; a language server understands imports,
overloads, generics, and cross-file symbol resolution. When `vibing-nvim` MCP tools are
available and the target filetype has an LSP client attached, prefer LSP-backed answers.
**Before calling anything:** pass `rpc_port` on every tool call — the exact value from your system
prompt inside a vibing.nvim chat, or from your task prompt if you are a subagent. Only when
neither supplies one, call `nvim_list_instances`; if that reports more than one instance, say
which you found and ask rather than picking one. And if the `mcp__vibing-nvim__` prefix below is
unavailable, look for a tool name **ending** in the one you need — loaded as a plugin they are
`mcp__plugin_vibing-nvim_vibing-nvim__<tool>`. The `nvim-context` skill explains both in full.
## Tool mapping
| Question | Tool |
| ----------------------------------------- | ---------------------------------------------------- |
| Where is this symbol defined? | `mcp__vibing-nvim__nvim_lsp_definition` |
| Where is this symbol used? | `mcp__vibing-nvim__nvim_lsp_references` |
| What type/doc does this have? | `mcp__vibing-nvim__nvim_lsp_hover` |
| What are the errors/warnings here? | `mcp__vibing-nvim__nvim_diagnostics` |
| What symbols exist in this file? | `mcp__vibing-nvim__nvim_lsp_document_symbols` |
| What's the underlying type of this alias? | `mcp__vibing-nvim__nvim_lsp_type_definition` |
| Who calls this function? | `mcp__vibing-nvim__nvim_lsp_call_hierarchy_incoming` |
| What does this function call? | `mcp__vibing-nvim__nvim_lsp_call_hierarchy_outgoing` |
## Workflow
1. LSP tools operate on a loaded buffer, not an arbitrary path. If the target file isn't open,
load it in the background first with `mcp__vibing-nvim__nvim_load_buffer` (returns `bufnr`) —
this doesn't disrupt the user's current window/view.
2. Pass that `bufnr` plus 1-indexed `line` / 0-indexed `col` to the LSP tool for the exact symbol
position.
3. Surface relevant `nvim_diagnostics` results before proposing a fix for a file you're editing.
4. Fall back to `Grep`/`Glob` for things LSP doesn't cover: string/comment search, config files,
non-code text, or a filetype with no attached LSP client (an empty/error result from an LSP
tool is a signal to fall back, not to retry).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!