lsp-implement
About
This skill finds all concrete implementations of an interface or abstract type using LSP capabilities, helping developers understand type hierarchies before making changes. It's read-only and requires the agent-lsp MCP server with implementationProvider support. Use it when modifying interface signatures or base types to see all affected subtypes.
Quick Install
Claude Code
Recommendednpx skills add blackwell-systems/agent-lsp -a claude-code/plugin add https://github.com/blackwell-systems/agent-lspgit clone https://github.com/blackwell-systems/agent-lsp.git ~/.claude/skills/lsp-implementCopy and paste this command in Claude Code to install this skill
Documentation
Requires the agent-lsp MCP server.
lsp-implement
Find every concrete type that implements an interface, or every subtype of an abstract type. Read-only — does not modify any files.
Use this skill before changing an interface signature, adding a method to an interface, or removing a base-type method. It tells you every type that must be updated.
Invocation: User provides type_name (e.g. "Handler", "io.Reader").
Optionally provide workspace_root.
Prerequisites
Check server capabilities — go_to_implementation and type_hierarchy are
optional features not implemented by all language servers:
mcp__lsp__get_server_capabilities()
Note which of go_to_implementation and type_hierarchy appear in
supported_tools. The steps below depend on this result.
If neither is supported, report "Server does not support implementation lookup" and stop.
Step 1 — Locate the interface or type
mcp__lsp__go_to_symbol({
"symbol_path": "<TypeName>",
"workspace_root": "/abs/path" // optional
})
→ returns: file, line, column (1-indexed)
Open the file so the language server tracks it:
mcp__lsp__open_document({
"file_path": "<file from go_to_symbol>"
})
Record file, line, column for subsequent steps.
Step 2 — Find all implementations
Only if go_to_implementation appears in supported_tools.
mcp__lsp__go_to_implementation({
"file_path": "<file>",
"line": <line>,
"column": <column>
})
Returns a list of locations — each is a concrete type that satisfies the interface. Group by file. Record type names and locations.
If go_to_implementation is not supported: skip; note in report.
Step 3 — Type hierarchy (subtypes and supertypes)
Only if type_hierarchy appears in supported_tools.
mcp__lsp__type_hierarchy({
"file_path": "<file>",
"line": <line>,
"column": <column>,
"direction": "subtypes" // use "both" to also see what this type extends
})
subtypes returns concrete types that extend or embed this type.
supertypes returns what this type itself implements.
Cross-reference with Step 2 results — the union gives the complete implementation surface.
If type_hierarchy is not supported: skip; note in report.
Step 4 — Report
## Implementation Report: <TypeName>
### Definition
- File: <file>:<line>
- Kind: interface / abstract type / base struct
### Concrete Implementations (<N> found)
- TypeA — <file>:<line>
- TypeB — <file>:<line>
...
### Type Hierarchy
Supertypes: [list or "none"]
Subtypes: [list or "same as implementations above" or "not supported"]
### Risk Assessment
| N implementations | Recommendation |
|---|---|
| 0 | Interface unused or no external implementors found. May be internal-only. |
| 1–3 | Low risk. All implementors can be updated together. |
| 4–10 | Medium risk. Plan updates package by package. |
| > 10 | High risk. Changing the interface is a breaking API change. |
Common use cases
Before adding a method to an interface: Run lsp-implement to find all types that will need the new method. Each implementation site must be updated — this is your required change list.
Before removing a method: Find all types that implement it. Check whether any external (outside this repo) packages may be affected.
Understanding polymorphism in an unfamiliar codebase: Run lsp-implement on the primary interface to see the full type hierarchy before making any changes.
Language notes
| Language | go_to_implementation finds... |
|---|---|
| Go | All types with matching method sets |
| TypeScript | All classes implementing the interface |
| Java/C# | All classes/structs implementing the interface |
| Rust | All structs with impl Trait for ... |
For Go: go_to_implementation on an interface finds all types that satisfy
it, even without an explicit implements declaration.
GitHub Repository
Related Skills
llamaguard
OtherLlamaGuard is Meta's 7-8B parameter model for moderating LLM inputs and outputs across six safety categories like violence and hate speech. It offers 94-95% accuracy and can be deployed using vLLM, Hugging Face, or Amazon SageMaker. Use this skill to easily integrate content filtering and safety guardrails into your AI applications.
cost-optimization
OtherThis Claude Skill helps developers optimize cloud costs through resource rightsizing, tagging strategies, and spending analysis. It provides a framework for reducing cloud expenses and implementing cost governance across AWS, Azure, and GCP. Use it when you need to analyze infrastructure costs, right-size resources, or meet budget constraints.
quantizing-models-bitsandbytes
OtherThis skill quantizes LLMs to 8-bit or 4-bit precision using bitsandbytes, achieving 50-75% memory reduction with minimal accuracy loss. It's ideal for running larger models on limited GPU memory or accelerating inference, supporting formats like INT8, NF4, and FP4. The skill integrates with HuggingFace Transformers and enables QLoRA training and 8-bit optimizers.
dispatching-parallel-agents
OtherThis Claude Skill dispatches multiple agents to investigate and fix 3+ independent problems concurrently. It is designed for scenarios involving unrelated failures that can be resolved without shared state or dependencies. The core capability is parallel problem-solving, assigning one agent per independent problem domain to maximize efficiency.
