| name | rust-lsp |
| description | This skill MUST be used for semantic Rust navigation and analysis: resolving definitions across crate boundaries, finding all references to a symbol, inspecting inferred types or trait implementations, searching symbols by name, and renaming symbols safely. SHOULD be preferred over grep or file reads whenever the task requires Rust-aware understanding. |
Rust Analyzer Agent Skill
When to use
MUST use the MCP tools when the task involves:
- Resolving where a symbol is defined, including across crate boundaries
- Finding all references to a function, type, field, or trait method
- Inspecting type signatures, inferred types, or trait implementations
- Searching for symbols by name across a workspace
- Renaming a symbol across all usage sites
SHOULD prefer the MCP tools over grep or file reads when the task requires Rust-aware
semantic understanding (scoping, imports, trait dispatch, macro expansion).
Fall back to grep or file reads when the task is not Rust-specific, targets string literals
or comments, or covers files outside the Rust compilation.
Installation
If the Rust LSP tools are not available yet, run scripts/install.sh from this skill before using the MCP tools. Treat the tools as "not available yet" whenever the current session does not expose the Rust LSP MCP tool APIs: attempt the install/setup path first, then verify whether the tools become usable.
Common workflows
Navigate to a definition
definitions at the symbol position
- Read the target file at the returned location
Find all callers
references at the function name position
- Review the returned locations
Inspect a type
hover at the position — returns the resolved type even for inferred types,
trait objects, and generic instantiations
Find a symbol by name
workspace_symbols with the name as query
- Read the returned location if needed
Rename a symbol safely
open_document with the file contents
rename_symbol at the position with the new name
- Apply the returned workspace edits to disk
close_document when done
Update in-memory content for analysis
Position-based tools work on saved files without open_document. Use the document
lifecycle only when analyzing unsaved or in-memory content:
open_document to synchronize contents with rust-analyzer
replace_document to update contents (version auto-increments)
close_document when done (idempotent)
React to project structure changes
reload_workspace after editing Cargo.toml or adding/removing crates
rebuild_proc_macros if proc-macro source changed