tagawa0525

Lsp Det — Development skill for Claude Code

Development community

Transparent LSP proxy that removes language servers' silent lies (empty answers from an unfinished index, successful-looking answers from a broken server, stale answers that ignore an edit).

How to install Lsp Det

This entry records only its repository, not the path inside it, so there is no exact command to give. Open tagawa0525/lsp-det and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Lsp Det does

Transparent LSP proxy that removes language servers' silent lies (empty answers from an unfinished index, successful-looking answers from a broken server, stale answers that ignore an edit). Reference implementation of the server state protocol.

Alternatives in Development

  • Notebooklm Skill — Use this skill to enable Claude Code to communicate directly with your Google NotebookLM notebooks 5.9k ★
  • Fix Imports — Fix Broken Imports 2.8k ★
  • /remember — Save a finding or successful pattern to persistent hunt memory 1.2k ★

README

lsp-det

[日本語](README.ja.md)

[![CI](https://github.com/tagawa0525/lsp-det/actions/workflows/ci.yml/badge.svg)](https://github.com/tagawa0525/lsp-det/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/tagawa0525/lsp-det?display_name=tag)](https://github.com/tagawa0525/lsp-det/releases) [![License](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue)](#license)

A reference implementation of the server state protocol, which removes the "silent lies" of language servers.

LSP gives a client no machine-readable way to learn whether the server can fully answer a request. As a result, the client accepts an empty array from an unfinished index, a successful-looking response from a broken server, or a result that ignores recent edits, all as legitimate answers. In editors, human eyes and a sense of timing compensated for this. Coding agents do not compensate. They send `textDocument/references` right after `initialize`, read the empty array as "no references", and go ahead with the rename or the deletion.

lsp-det consists of two things.

  • The server state protocol (docs/spec/server-state.md): a vocabulary that describes a server's state on two axes, health and readiness, plus capabilities that guarantee coverage (answers computed over the whole workspace index) and freshness of responses in that state. The end goal is a proposal to LSP itself
  • The transparent proxy lsp-det (Rust, single binary): sits between a client and a language server and provides the protocol to both sides. It maps the language server's own vocabulary onto the protocol, and on behalf of clients that do not speak the protocol, it holds cross-workspace requests until ready

What changes

Measured with Claude Code driving rust-analyzer through lsp-det ([docs/research/claude-code-dogfooding.md](docs/research/claude-code-dogfooding.md)):

| Situation | Without lsp-det