with one click
lspeasy
Use when working with lspeasy (client, core, server).
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Use when working with lspeasy (client, core, server).
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Documentation site for lspeasy Use when: You are building a browser-based LSP client, a WebSocket-backed language....
Documentation site for lspeasy Use when: You are implementing a custom client layer and need the same validation....
Documentation site for lspeasy Use when: The client sets `partialResultToken` in the request params and you want to....
API reference for cli
`@lspeasy/cli` — programmatic entry point. Exposes the reusable refactor internals (session pipeline + WorkspaceEdit applier) so the same machinery can be embedded in scripts, not just invoked through the `lspeasy` bin. Also: lsp, language-server-protocol, refactor, rename, codemod, move-symbol, cli.
Documentation site for lspeasy Use when: You are building a browser-based LSP client, a WebSocket-backed language....
| name | lspeasy |
| description | Use when working with lspeasy (client, core, server). |
Use this skill for ANY work with lspeasy. It routes to the correct package.
Use this router when:
lspeasy-clientlspeasy-corelspeasy-serverlspeasy-clientUse @lspeasy/client when you need to build the consumer side of the
Language Server Protocol — an editor extension, a CLI analysis tool, a test
harness, or any process that speaks to a language server process.
LSPClient uses. Otherwise this is an internal detail.Key APIs: CapabilityGuard, ClientCapabilityGuard, ConnectionHealthTracker
lspeasy-core@lspeasy/core is the shared foundation for the lspeasy SDK. It contains
everything needed to build custom LSP integrations, and re-exports the
most-used pieces from @lspeasy/client and @lspeasy/server.
MethodNotFound when a capability was not declared, or InvalidParams when schema validation fails).Key APIs: DedicatedWorkerTransport, SharedWorkerTransport, WebSocketTransport, getCapabilityForRequestMethod, getClientCapabilityForRequestMethod
lspeasy-serverUse @lspeasy/server when you need to build the provider side of the
Language Server Protocol — a daemon that editors and language-client tooling
connect to in order to get diagnostics, completions, hover, go-to-definition,
and other language intelligence features.
partialResultToken in the request params and you want to stream intermediate results (e.g. symbols found so far) rather than waiting for the complete set.MethodNotFound when a capability was not declared, or InvalidParams when schema validation fails).Key APIs: MessageDispatcher, PartialResultSender, ResponseError
Top pitfall per package:
CapabilityGuard before the initialize handshake completes. Server capabilities are only known after the InitializeResult is received; instantiating the guard too early will treat all methods as unsupported. (client)null silently when no lsp.json is found anywhere in the search path (including the global ~/.claude/lsp.json fallback). Callers that skip the null check will silently fail to resolve a server command — for the CLI this means lsproxy exits before the proxy daemon is ever spawned. Create an lsp.json at the workspace root or at ~/.claude/lsp.json for a per-user fallback. (core)| Thought | Reality |
|---|---|
| "I'll just use client for everything" | client is for documentation site for lspeasy. The transport already provides its own keep-alive mechanism (e.g. WebSocket ping frames) — adding a heartbeat on top creates redundant round-trips and may interfere with the transport's own timeout logic. |
| "I'll just use core for everything" | core is for documentation site for lspeasy. You are building a CLI language server — StdioTransport (from @lspeasy/core/node) is the conventional choice and avoids the overhead of a network stack. For same-process workers prefer DedicatedWorkerTransport or SharedWorkerTransport. |
| "I'll just use server for everything" | server is for documentation site for lspeasy. You want to log a server-side error without sending an error to the client — throw a plain Error and handle it via server.onError() instead. |
User: "I need to documentation site for lspeasy"
→ Load lspeasy-client
User: "I need to documentation site for lspeasy"
→ Load lspeasy-core
User: "I need to documentation site for lspeasy"
→ Load lspeasy-server