lsp-cross-repo
About
This skill performs cross-repository analysis to find all callers of a library symbol across multiple consumer codebases. It's essential when refactoring shared libraries to understand downstream usage patterns. The skill leverages LSP capabilities like references and call hierarchy providers through the agent-lsp MCP server.
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-cross-repoCopy and paste this command in Claude Code to install this skill
Documentation
Requires the agent-lsp MCP server.
lsp-cross-repo
Multi-root cross-repo caller analysis for library + consumer workflows. Finds all usages of a library symbol across one or more consumer codebases in a single call.
Read-only — does not modify any files.
When to use
- Before changing a library API: find all callers in every consumer
- Before deleting a symbol: verify it has no cross-repo dependents
- When a change in repo A might break repo B or C
- Auditing how internal packages are used across services
Use /lsp-impact instead for single-repo blast-radius analysis.
Workflow
Step 1 — Initialize the primary workspace
Start the language server on the library root if not already running:
mcp__lsp__start_lsp({ "root_dir": "/path/to/library" })
Step 2 — Locate the library symbol
Find the symbol's definition to get file_path, line, and column:
mcp__lsp__find_symbol({ "query": "<symbol-name>" })
Pick the result in the library repo (not a test file).
Step 3 — Find all cross-repo references (primary step)
Call get_cross_repo_references with the symbol location and all consumer repo
roots. This adds each consumer as a workspace folder, waits for indexing, runs
find_references across all roots, and returns results partitioned by repo:
mcp__lsp__get_cross_repo_references({
"symbol_file": "/abs/path/to/library/file.go",
"line": <line>,
"column": <column>,
"consumer_roots": [
"/abs/path/to/consumer-a",
"/abs/path/to/consumer-b"
]
})
Returns:
library_references— usages within the library itselfconsumer_references— a map ofconsumer-root → [file:line ...]warnings— any roots that could not be indexed (check these manually)
Decision after Step 3:
| Result | Action |
|---|---|
| No consumer refs | Safe to change — verify warnings is empty first |
| Consumer refs found | Run /lsp-impact on each call site before editing |
warnings non-empty | Re-add that root manually and retry Step 3 |
Step 4 — Callers and implementations (optional)
For a deeper look at how consumers call the symbol:
mcp__lsp__find_callers({
"file_path": "<library-file>",
"line": <line>,
"column": <column>,
"direction": "incoming"
})
For interfaces — all consumer-side implementations:
mcp__lsp__go_to_implementation({
"file_path": "<library-file>",
"line": <line>,
"column": <column>
})
Output format
## Library-internal references
- file:line — brief context
## Consumer references
### /path/to/consumer-a
- file:line — brief context
### /path/to/consumer-b
- file:line — brief context
Decision guide
| Situation | Action |
|---|---|
| No consumer refs, warnings empty | Safe to change |
| Consumer refs found | Run /lsp-impact on each call site before editing |
warnings lists a consumer root | That root failed indexing — check LSP logs |
| Consumer uses interface, not concrete type | Use go_to_implementation to find all implementors |
Example
# Refactoring ParseConfig in a shared config library used by 3 services
start_lsp(root_dir="/repos/config-lib")
find_symbol(query="ParseConfig") # find definition → file:42:6
get_cross_repo_references(
symbol_file="/repos/config-lib/pkg/config/parser.go",
line=42, column=6,
consumer_roots=["/repos/api-service", "/repos/worker-service", "/repos/batch-job"]
)
# → library_references: 2
# → consumer_references: {api-service: [main.go:14, app.go:31], worker-service: [runner.go:8]}
# → warnings: []
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.
