Skip to content
Skillpedia
General coding70k · #1740

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

https://github.com/code-yeongyu/oh-my-openagent/blob/dev/packages/shared-skills/skills/lsp-setup/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/code-yeongyu/oh-my-openagent/blob/dev/packages/shared-skills/skills/lsp-setup/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
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-setup

Or 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.md
Technical 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 inherits command automatically — you only override extensions / 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 by LSP_TOOLS_MCP_USER_CONFIG), where command + extensions are 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.

repo: code-yeongyu/oh-my-openagent

Popularity

GitHub stars
70k
Ranking position
#1740
License
NOASSERTION
Updated
10/16/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills