Skip to content
cccskills
FreePublished on GitHub

lsp-setup

Set up a language server, a tool that helps agents understand source code, for a project. Detect the language, install and configure the server, then verify that it responds to a diagnostic request.

OriginalShow the original description

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.

See how to install

Good for

  • Resolving a no LSP server configured error
  • Setting up language tools for a new project
  • Enabling definition lookup and reference search
  • Verifying that a language server responds

Files included (25)

  • SKILL.md5.4 KB
  • references/bash/README.md2.1 KB
  • references/c-cpp/README.md2.4 KB
  • references/csharp/README.md2.4 KB
  • references/dart/README.md1.9 KB
  • references/elixir/README.md2.1 KB
  • references/go/README.md1.9 KB
  • references/haskell/README.md2.3 KB
  • references/java/README.md2.6 KB
  • references/julia/README.md2.3 KB
  • references/kotlin/README.md2.4 KB
  • references/lua/README.md2.0 KB
  • references/php/README.md1.9 KB
  • references/python/README.md2.9 KB
  • references/ruby/README.md2.3 KB
  • references/rust/README.md2.0 KB
  • references/swift/README.md2.2 KB
  • references/terraform/README.md2.2 KB
  • references/typescript/README.md3.2 KB
  • references/yaml/README.md2.3 KB
  • references/zig/README.md1.7 KB
  • scripts/detect-lsp.ts6.5 KB
  • scripts/lsp-server-table.ts5.1 KB
  • scripts/tsconfig.json397 B
  • scripts/verify-lsp.ts5.1 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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 .astroreferences/typescript/README.md
.py .pyireferences/python/README.md
.goreferences/go/README.md
.rsreferences/rust/README.md
.c .cpp .cc .cxx .h .hpp .hh .hxxreferences/c-cpp/README.md
.javareferences/java/README.md
.kt .ktsreferences/kotlin/README.md
.cs .razor .cshtmlreferences/csharp/README.md
.swiftreferences/swift/README.md
.rb .rake .gemspec .rureferences/ruby/README.md
.phpreferences/php/README.md
.dartreferences/dart/README.md
.ex .exsreferences/elixir/README.md
.zig .zonreferences/zig/README.md
.luareferences/lua/README.md
.sh .bash .zsh .kshreferences/bash/README.md
.yaml .ymlreferences/yaml/README.md
.tf .tfvarsreferences/terraform/README.md
.hs .lhsreferences/haskell/README.md
.jlreferences/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

OK = the server started and answered. FAIL: language server not installed = go back to step 2. Other FAIL text carries the server/startup error. SKIP = the engine source could not be located; run from inside the omo repo/worktree, or call the lsp MCP diagnostics tool directly.


Scripts

ScriptPurpose
scripts/detect-lsp.tsScan a directory; per detected language report server id, install status, install hint, config status. --json for machine output.
scripts/verify-lsp.tsReal LSP diagnostics roundtrip for one file via the lsp-tools-mcp engine; OK/FAIL/SKIP + exit code 0/1/3.
scripts/lsp-server-table.tsEmbedded snapshot of the primary builtin server per language (mirrors server-definitions.ts).

Run with Bun: curl -fsSL https://bun.sh/install | bash.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

ast-grep

FreeSummary

Finds and rewrites code by its syntax structure across 25 languages. Use it to locate matching calls or declarations, preview bulk changes, and run reusable YAML rules that check code or apply fixes.

  • Finding calls or functions with a specific structure
  • Previewing and applying bulk code changes
  • Checking code with reusable YAML rules
code-yeongyu/oh-my-openagent70.2KUpdated Oct 19, 2026

browser

FreeSummary

Automate forms, clicks, screenshots, and website checks in a browser where you are already signed in. A separately launched browser also supports scraping and network capture, while login or verification steps can be handed to a person.

  • Fill forms on websites where you are already signed in
  • Capture screenshots and check website behavior
  • Record network traffic in a separately launched browser
code-yeongyu/oh-my-openagent70.2KUpdated Oct 19, 2026

codex-qa

FreeSummary

Test omo Codex Light edition in an isolated environment using real Codex and a local mock model. Verify installation, plugin hooks, and terminal startup, with captured evidence and no calls to a real model API.

  • Verify installation and config.toml changes in isolation
  • Confirm plugin hooks run during a real Codex turn
  • Check terminal interface startup
code-yeongyu/oh-my-openagent70.2KUpdated Oct 19, 2026

Search local session histories across Codex, Claude Code, OpenCode, and other coding agents. Find earlier requests, inspect transcripts and child sessions, and reconstruct past work using recorded evidence, with filters for dates, projects, platforms, and models.

  • Finding work done a few days ago
  • Checking whether a migration was already completed
  • Reviewing tasks delegated to child agents
code-yeongyu/oh-my-openagent70.2KUpdated Oct 19, 2026

comment-checker

FreeSummary

Help Codex respond to automatic warnings about comments after code edits. It explains when the checker runs and directs Codex to fix the flagged comment or explain it before continuing with other work.

  • Understand a comment warning after an edit
  • Fix a comment flagged by the checker
  • Explain a flagged comment before continuing
code-yeongyu/oh-my-openagent70.2KUpdated Oct 19, 2026

dag-library

FreeSummary

Saves multi-agent workflows as named JSON files and runs them again without copying their definitions. Handles placeholders and run keys so repeated workflows can create fresh runs or deliberately reuse an existing run.

  • Saving a workflow for repeated audits
  • Running a saved workflow by name
  • Sharing workflow definitions within a project
code-yeongyu/oh-my-openagent70.2KUpdated Oct 19, 2026

See all skills by code-yeongyu

Report a problem with this skill