跳到主要内容
知仓学习社ZHICANG

lsp-setup

Configures a language server so editor/agent tooling (diagnostics, go-to-definition, references, rename) works. Use when a project needs an LSP inst…

执行命令联网读凭据读文件严重 2 · 高危 2code-yeongyu/oh-my-openagent

它会碰到什么

扫了多少25 个文本文件,67 KB
它会碰到什么执行命令联网读凭据读文件
命中总数7 处
命中统计严重 2 · 高 2 · 中 2 · 低 1
逐条看命中(4 条严重或高危)
  • 严重 references/julia/README.md:14exec-pipe-to-shell
    - **Linux:** `curl -fsSL https://install.julialang.org | sh` (installs juliaup)
  • 严重 SKILL.md:139exec-pipe-to-shell
    Run with [Bun](https://bun.sh): `curl -fsSL https://bun.sh/install | bash`.
  • scripts/detect-lsp.ts:94cred-envread
    return (process.env["PATH"] ?? "").split(delimiter).filter((dir: string) => dir.length > 0)
  • scripts/detect-lsp.ts:99cred-envread
    process.platform === "win32" ? (process.env["PATHEXT"]?.split(";") ?? [".EXE", ".CMD", ".BAT"]) : [""]

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

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

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

| Script | Purpose |

|---|---|

| scripts/detect-lsp.ts | Scan a directory; per detected language report server id, install status, install hint, config status. --json for machine output. |

| scripts/verify-lsp.ts | Real LSP diagnostics roundtrip for one file via the lsp-tools-mcp engine; OK/FAIL/SKIP + exit code 0/1/3. |

| scripts/lsp-server-table.ts | Embedded snapshot of the primary builtin server per language (mirrors server-definitions.ts). |

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

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 69,100
本站分层T1
该仓技能数62
原文件路径packages/shared-skills/skills/lsp-setup/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 62 个技能