lsp-setup
Has your agent set up development tools that help understand code. Useful for enabling features like autocompletion and finding function definitions.
What it does
This tool helps set up the correct 'language server' for your programming project. This makes features like finding errors, going to code definitions, and renaming functions work properly.
When to use it
- ✓When you get an error saying 'no LSP server configured'.
- ✓When you want code tooling (like error finding) to work in your project.
- ✓When starting a new project in a supported programming language.
Example of what to ask your AI
“Set up the language server for my Python project.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool first identifies your project's language. Then, it installs the necessary language server and configures the tooling so that features work correctly.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add code-yeongyu/oh-my-openagent --skill lsp-setupOr download just the file:
curl -L https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/packages/shared-skills/skills/lsp-setup/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
LSP Setup
Configure the right Language Server for a project so the lsp MCP tools
(diagnostics, goto_definition, find_references, symbols, rename)
actually work. This skill is an index: detect what a project needs, install the
server, write the config, then verify with a real roundtrip.
The list of servers we ship as builtin is the source of truth in
packages/lsp-tools-mcp/src/lsp/server-definitions.ts (BUILTIN_SERVERS +
LSP_INSTALL_HINTS). The per-language references below mirror it.
PHASE 0 — LANGUAGE GATE (run first)
Identify the language from the file extension, then read the matching reference before installing or configuring anything.
| Extension(s) | Reference |
|---|---|
.ts .tsx .js .jsx .mjs .cjs .mts .cts .vue .svelte .astro |
references/typescript/README.md |
.py .pyi |
references/python/README.md |
.go |
references/go/README.md |
.rs |
references/rust/README.md |
.c .cpp .cc .cxx .h .hpp .hh .hxx |
references/c-cpp/README.md |
.java |
references/java/README.md |
.kt .kts |
references/kotlin/README.md |
.cs .razor .cshtml |
references/csharp/README.md |
.swift |
references/swift/README.md |
.rb .rake .gemspec .ru |
references/ruby/README.md |
.php |
references/php/README.md |
.dart |
references/dart/README.md |
.ex .exs |
references/elixir/README.md |
.zig .zon |
references/zig/README.md |
.lua |
references/lua/README.md |
.sh .bash .zsh .ksh |
references/bash/README.md |
.yaml .yml |
references/yaml/README.md |
.tf .tfvars |
references/terraform/README.md |
.hs .lhs |
references/haskell/README.md |
.jl |
references/julia/README.md |
WORKFLOW — detect → install → configure → verify
1. Detect
Scan the project to see which languages are present and whether each server is installed and configured:
bun scripts/detect-lsp.ts <projectDir> # human report (default: cwd)
bun scripts/detect-lsp.ts <projectDir> --json
For each detected language it prints the builtin server id, the executable it
needs on PATH, whether that executable is installed, an install hint, and
whether a project config file already references it.
2. Install
Open references/<language>/README.md and run the install command for your OS.
Then confirm the executable resolves:
command -v <server-executable> # e.g. typescript-language-server, gopls, rust-analyzer
3. Configure
Most builtin servers need no config — they are resolved automatically by
file extension. Write config only to: pick between competing servers, set a
priority, pass initialization options, override extensions, set env, or
disable a server.
Two project-scoped config files, identical JSON shape:
- Codex harness →
.codex/lsp-client.json(user:~/.codex/lsp-client.json) - OpenCode/omo harness →
.opencode/lsp.json(also.omo/lsp.json)
{
"lsp": {
"<server-id>": {
"command": ["<bin>", "<args>"], // optional for builtin ids (supplied automatically)
"extensions": [".ext"], // optional override
"priority": 100, // higher wins when several servers match an extension
"initialization": { }, // server-specific initializationOptions
"env": { "KEY": "value" }, // optional
"disabled": false // set true to turn a server off
}
}
}
Rules enforced by config-loader.ts:
- In a project config (
.codex/lsp-client.json,.opencode/lsp.json) an entry whose id is a builtin server inheritscommandautomatically — you only overrideextensions/priority/initialization. A non-builtin id in a project config is ignored. - To define a fully custom (non-builtin) server with its own
command, put it in the user config (~/.codex/lsp-client.json, or the path set byLSP_TOOLS_MCP_USER_CONFIG), wherecommand+extensionsare honored. - Project entries win over user entries; both win over builtin defaults.
Each language reference gives a ready-to-paste snippet.
4. Verify
Run a real diagnostics roundtrip against a source file. This spawns the server,
opens the file, requests diagnostics, and reports OK/FAIL:
bun scripts/verify-lsp.ts <path/to/file.ext>
bun scripts/verify-lsp.ts <file> --timeout=90000
…
FAQ
What is a 'language server'?
It's a program that understands your programming language and helps code editor tools provide useful information, like errors and suggestions.
What languages are supported?
The tool supports various languages like TypeScript, Python, Go, Rust, C/C++, Java, C#, Swift, Ruby, PHP, Dart, Elixir, Zig, Lua, Bash, YAML, Terraform, Haskell, and Julia.
Do I need to install anything beforehand?
Yes, you might need to install the specific language server for your programming language by following the instructions provided by the tool.
Details
Original description by the author
Configures a language server so editor/agent tooling (diagnostics, go-to-definition, references, rename) works. Use when a project needs an LSP installed or wired, or a 'no LSP server configured' error appears.
Popularity
- GitHub stars
- 70k
- Ranking position
- #1740
- License
- NOASSERTION
- Updated
- 10/16/2026
Comments
- …
More skills from this repository
comment-checker
Helps your agent understand and respond to feedback from automatic comment checkers. It's useful when the agent needs to process information from tools that automatically review code or content.
code-yeongyu/oh-my-openagent
lcx-contribute-bug-fix
Helps your agent contribute bug fixes for LazyCodex-related projects. It creates issues or pull requests to ensure code quality.
code-yeongyu/oh-my-openagent
lcx-doctor
Lets your agent check the health of LazyCodex and Codex CLI installations. It's useful when the system behaves oddly after updates or changes.
code-yeongyu/oh-my-openagent
lcx-report-bug
Helps your agent report bugs in detail for LazyCodex projects. It creates issues with useful information for developers to fix the problem.
code-yeongyu/oh-my-openagent
Similar skills
benchmark-optimization-loop
Has your agent improve something's speed in a measured way. It tests multiple versions and chooses the fastest one that still works correctly.
affaan-m/ECC
change-impact
Helps your agent analyze the impact of code changes before making them. It compares the planned vs. actual results afterward, covering paths, data, tests, and documentation. Useful for risky or system-wide changes.
affaan-m/ECC
click-path-audit
Lets your agent trace all user buttons and interactions to find bugs. It finds issues where functions seem to work alone but fail together. Useful when bugs persist even after debugging.
affaan-m/ECC