By pradeepmouli
Project-wide rename, file-move-with-importer-updates, and move-symbol via a real language server. Use this whenever a refactor touches more than one file — Claude Code's built-in LSP tool is READ-ONLY and cannot rename, move files, or move symbols. A text-only edit silently misses re-exports, aliased and type-only imports, and {@link} references; this plugin drives the LSP to catch every one.
Use for ANY rename, file-move, or move-symbol refactor — especially rename-heavy work across multiple files. Claude Code's built-in LSP tool is READ-ONLY (find references, but no rename / file-move / move-symbol). Hand-editing those refactors silently misses re-exports, aliased imports, type-only imports, and {@link} doc references. This skill drives a real language server via the `lspeasy` CLI to apply a correct WorkspaceEdit that catches every reference. Trigger when the user asks to rename a function/class/variable/type project-wide, move a file and fix its importers, or pull a symbol out into another module.
Documentation site for lspeasy Use when: You are implementing a custom client layer and need the same validation....
Documentation site for lspeasy Use when: You are building a browser-based LSP client, a WebSocket-backed language....
Documentation site for lspeasy Use when: The client sets `partialResultToken` in the request params and you want to....
Use when working with lspeasy (client, core, server).
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A TypeScript SDK for building Language Server Protocol clients and servers that run anywhere JavaScript runs — Node, browsers, web workers, or VS Code extensions — with a capability-aware, strongly-typed API.
⚠️ Pre-1.0 software — APIs are subject to change between minor versions. Pin to exact versions in production. See the CHANGELOG for breaking changes between releases.
📚 Documentation: https://pradeepmouli.github.io/lspeasy/
The Language Server Protocol standardizes how editors and IDEs talk to language tooling — hover, completion, diagnostics, symbol navigation, and dozens of other features all flow over a single JSON-RPC connection. Implementing a server or client against LSP directly is deceptively involved: you need JSON-RPC framing, message validation, cancellation tokens, progress reporting, capability negotiation, the full lifecycle handshake, and correct handling of roughly a hundred request and notification types.
lspeasy is a set of small, focused TypeScript packages that wrap all of that in a modern, ESM-first API. Handlers are registered against a typed, capability-aware namespace — server.textDocument.onHover(...) — so the editor-facing surface mirrors the spec and advertised capabilities are enforced at both compile time and runtime. Transports are swappable: run the same server over stdio for a classic editor plugin, over a web worker for a browser playground, over WebSockets for a remote tooling backend, or over TCP for diagnostics.
Compared to vscode-languageserver (which is tightly coupled to Node and the VS Code extension model), lspeasy is runtime-agnostic, tree-shakeable, browser-friendly, and exposes a middleware pipeline for logging, tracing, and request rewriting without monkey-patching the dispatcher.
server.textDocument.onHover(...) is only callable after registerCapabilities({ hoverProvider: true }); mismatches are caught at both compile time and at the dispatcher.StdioTransport, TcpTransport, IpcTransport, WebSocketTransport, DedicatedWorkerTransport, SharedWorkerTransport; write your own against the Transport interface.@lspeasy/core/node; the root export is browser-safe so the same code ships to a VS Code extension and a web playground.client.textDocument.hover(...), client.workspace.symbol(...), and the full request surface with request/response types pulled from the LSP spec.composeMiddleware(...) plus createScopedMiddleware({ methods, direction }) for logging, tracing, metrics, or request mutation without touching the core dispatcher.CancellationToken support.# Build a server
pnpm add @lspeasy/server @lspeasy/core
# Build a client
pnpm add @lspeasy/client @lspeasy/core
Requires Node.js ≥ 20. For WebSocket server mode or Node < 22.4, also install ws (optional peer): pnpm add ws.
A minimal LSP server over stdio that responds to textDocument/hover:
import { LSPServer } from '@lspeasy/server';
import { StdioTransport } from '@lspeasy/core/node';
const server = new LSPServer({ name: 'hello-lsp', version: '0.1.0' });
server.registerCapabilities({ hoverProvider: true });
server.textDocument.onHover(async (params) => ({
contents: {
kind: 'markdown',
value: `**Hovered** line ${params.position.line}, character ${params.position.character}`
}
}));
await server.listen(new StdioTransport());
npx claudepluginhub pradeepmouli/lspeasy --plugin lsp-refactorAI-powered tracker for external informational dependencies. Bootstrap Dependabit in any repo to discover, track, and monitor documentation sites, research papers, API schemas, and reference implementations.
Generate a raster logo with whatever image tooling you have, then idealize it into a clean, symmetric, editable SVG via the vectormark CLI.
Memory compression system for Claude Code - persist context across sessions
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Frontend design skill for UI/UX implementation
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Marketing skills for AI agents — conversion optimization, copywriting, SEO, paid ads, ad creative, and growth
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.