| name | lsp-edit-export |
| description | Safe workflow for editing exported symbols or public APIs. Use when changing a function signature, modifying a public type, or altering any symbol used outside its own package — finds all callers first so nothing breaks silently. |
| argument-hint | [symbol-name] |
| user-invocable | true |
| allowed-tools | mcp__lsp__go_to_symbol mcp__lsp__open_document mcp__lsp__find_references mcp__lsp__get_diagnostics mcp__lsp__run_build mcp__lsp__replace_symbol_body Edit Write |
| license | MIT |
| compatibility | Requires the agent-lsp MCP server (github.com/blackwell-systems/agent-lsp) |
| metadata | {"required-capabilities":"referencesProvider","optional-capabilities":"workspaceSymbolProvider"} |
Requires the agent-lsp MCP server.
lsp-edit-export
Safe workflow for editing exported symbols. Always discovers all callers before
touching any code, then verifies the change is clean.
When to Use
Use this skill whenever you intend to change the signature, name, or behavior of
an exported symbol: a symbol visible outside its defining package or module.
Language-specific definitions:
| Language | Exported means... |
|---|
| Go | Identifier starts with an uppercase letter (e.g. MyFunc, MyType) |
| TypeScript | Has export keyword; or is a public class member (no private) |
| Python | Not prefixed with _; or explicitly listed in __all__ |
| Java/C# | Has public or protected visibility modifier |
| Rust | Has pub keyword |
If you are unsure whether a symbol is exported, treat it as exported and run
this workflow anyway. The cost is a few extra tool calls; the benefit is never
breaking a hidden caller.
Do NOT skip this workflow even when you believe there are zero callers.
The confirmation gate in step 3 exists precisely for that case.
Workflow
If LSP is not yet initialized, call mcp__lsp__start_lsp with the
workspace root first. (agent-lsp supports auto-inference from file paths, so
explicit start is only required when switching workspaces or on a cold session.)
Step 1 — Locate the symbol
Use go_to_symbol to find the symbol's definition by name, without needing to
know its file path or line number in advance:
mcp__lsp__go_to_symbol({
"symbol_path": "PackageName.ExportedFunction",
"workspace_root": "/abs/path/to/repo" // optional, narrows scope
})
symbol_path uses dot notation. For a top-level function Encode in package
codec, use "codec.Encode". For a method Reset on type Buffer, use
"Buffer.Reset". The last component is the leaf name; any prefix is used to
disambiguate when multiple symbols share the same leaf.