About typescript-lsp
A skill documenting use of the TypeScript language server in the clickhouse-js workspace, for developers needing interactive code intelligence. It covers startup, project configuration discovery, and verified LSP capabilities.
Key features
- 01Start LSP over stdio
- 02Select nearest tsconfig.json automatically
- 03Query hover details and definitions
- 04Find references and workspace symbols
- 05Provide completions and pushed diagnostics
Use cases
- 01Inspect inferred signatures and JSDoc
- 02Navigate definitions across workspace packages
- 03Search symbols and their references
- 04Get file diagnostics and completions
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ clickhouse/ clickhouse-js --skill typescript-lspAfter installing, type/typescript-lspin Claude Code to confirm it loaded.
Details
From the project READMETypeScript Language Server in clickhouse-js
typescript-language-server is declared as a root devDependency, so after
npm install (see the setup skill) it is available via npx and uses the
workspace-local typescript (6.x) compiler, matching CI exactly.
The server (6.x) requires Node.js >= 22.22.2, newer than the repository's
Node 20 minimum; on Node 20 npm install only warns, but the server isn't supported there.
Starting the server
From the repo root:
npx typescript-language-server --stdio
It speaks LSP (JSON-RPC, Content-Length-framed) over stdio. There is no
extra configuration: each packages/* workspace, tests/clickhouse-test-runner,
examples/node, and examples/web has its own tsconfig.json, and the
server picks the nearest one per opened file automatically.
Protocol essentials
- Send
initializewithrootUri/workspaceFolderspointing at the repo root, then theinitializednotification. - Send
textDocument/didOpenwith the full file text for every file you want to query (the server reads dependencies from disk on its own; only files you query positions in need to be opened). - Positions are 0-based (line and character).
Verified capabilities (typescript-language-server 5.x, TS 6.x)
| Request | Notes |
|---|---|
textDocument/hover | Returns the full inferred signature + JSDoc markdown |
textDocument/definition | Resolves across workspace packages via source, not dist/ |
textDocument/references | Within the opened file's project |
workspace/symbol | e.g. query ClickHouseClient finds class + re-exports |
textDocument/completion | Context-aware member completions |
| Diagnostics | Push only (textDocument/publishDiagnostics notifications, sent ~1–3s after didOpen). The pull textDocument/diagnostic request is not supported (-32601) — wait for the push notification instead. |
Tips
- If your environment provides built-in LSP/code-intelligence tooling, point
it at
npx typescript-language-server --stdiowith the repo root as the workspace folder. - For one-off scripted queries, spawn the server from Node, frame messages
with
Content-Length: <bytes>\r\n\r\n<json>, and match responses byid. - A full workspace typecheck is still
npm run build && npm run typecheck(build first — some workspaces import compileddist/outputs); the LSP is for targeted, interactive queries, not for CI-equivalent validation.