Source profileQuality 73/100Review permissions

github/awesome-copilot/skills/lsp-setup/SKILL.md

lsp-setup

Enable code intelligence (go-to-definition, find-references, hover, type info) for any programming language by installing and configuring an LSP server for Copilot CLI. Detects the OS, installs the right server, and generates the JSON configuration (user-level or repo-level). Use when you need deeper code understanding and no LSP server is configured, or when the user asks to set up, install, or configure an LSP server.

Source repository stars
37,126
Declared platforms
0
Static risk flags
3
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

UTILITY SKILL — installs and configures Language Server Protocol servers for Copilot CLI. USE FOR: "setup LSP", "install language server", "configure LSP for Java", "add TypeScript LSP", "enable code intelligence", "I need go-to-definition", "find references not working", "need…

Best for

  • Use when you need deeper code understanding and no LSP server is configured, or when the user asks to set up, install, or configure an LSP server.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/github/awesome-copilot --skill "skills/lsp-setup"
Safe inspection promptEditorial

Inspect the Agent Skill "lsp-setup" from https://github.com/github/awesome-copilot/blob/9933dcad5be5caeb288cebcd370eeeb2fc2f1685/skills/lsp-setup/SKILL.md at commit 9933dcad5be5caeb288cebcd370eeeb2fc2f1685. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Workflow

    1. Ask the language — use askuser to ask which programming language(s) the user wants LSP support for 2. Detect the OS — run uname -s (or check for Windows via $env:OS / %OS%) to determine macOS, Linux, or Windows 3. Look up the LSP server — read references/lsp-servers.md for kn…

    Ask the language — use askuser to ask which programming language(s) the user wants LSP support forDetect the OS — run uname -s (or check for Windows via $env:OS / %OS%) to determine macOS, Linux, or WindowsLook up the LSP server — read references/lsp-servers.md for known servers, install commands, and config snippets
  2. 02

    Verification

    After setup, tell the user:

    Type /exit to quit Copilot CLI — this is required so the new LSP configuration is loaded on next launchRe-launch copilot in a project with files of the configured languageRun /lsp to check the server status
  3. 03

    Configuration Format

    Copilot CLI reads LSP configuration from user-level or repo-level locations, and repo-level config takes precedence over user-level config:

    User-level: /.copilot/lsp-config.jsonRepo-level: lsp.json (repo root) or .github/lsp.jsoncommand is the binary name (must be on $PATH) or an absolute path.
  4. 04

    Key rules

    command is the binary name (must be on $PATH) or an absolute path.

    command is the binary name (must be on $PATH) or an absolute path.args almost always includes "--stdio" to use standard I/O transport.fileExtensions maps each file extension (with leading dot) to a Language ID.
  5. 05

    Behavior

    Always use askuser with choices when asking the user to pick a language or scope.

    Always use askuser with choices when asking the user to pick a language or scope.If the language is not listed in references/lsp-servers.md, search the web for " LSP server" and guide the user through manual configuration.If a package manager is not available (e.g. no Homebrew on macOS), suggest alternative install methods from the reference file.

Permission review

Static risk signals and limitations

Runs scripts

medium · line 13

The documentation asks the agent to run terminal commands or scripts.

**Install the server** — run the appropriate install command for the detected OS

Writes files

medium · line 14

The documentation asks the agent to create, modify, or delete local files.

**Write the config** — merge the new server entry into the chosen config file (`~/.copilot/lsp-config.json` for user-level; `lsp.json` or `.github/lsp.json` for repo-level). If a repo-level config already exists, keep using that location; o

Network access

medium · line 52

The documentation includes network, browsing, or remote request actions.

If the language is not listed in `references/lsp-servers.md`, search the web for "<language> LSP server" and guide the user through manual configuration.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score73/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars37,126SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
github/awesome-copilot
Skill path
skills/lsp-setup/SKILL.md
Commit
9933dcad5be5caeb288cebcd370eeeb2fc2f1685
License
MIT
Collected
2026-07-28
Default branch
main
View the original SKILL.md

LSP Setup for GitHub Copilot CLI

UTILITY SKILL — installs and configures Language Server Protocol servers for Copilot CLI. USE FOR: "setup LSP", "install language server", "configure LSP for Java", "add TypeScript LSP", "enable code intelligence", "I need go-to-definition", "find references not working", "need better code understanding" DO NOT USE FOR: general coding tasks, IDE/editor LSP configuration, non-Copilot-CLI setups

Workflow

  1. Ask the language — use ask_user to ask which programming language(s) the user wants LSP support for
  2. Detect the OS — run uname -s (or check for Windows via $env:OS / %OS%) to determine macOS, Linux, or Windows
  3. Look up the LSP server — read references/lsp-servers.md for known servers, install commands, and config snippets
  4. Ask scope — use ask_user to ask whether the config should be user-level (~/.copilot/lsp-config.json) or repo-level (lsp.json at the repo root or .github/lsp.json)
  5. Install the server — run the appropriate install command for the detected OS
  6. Write the config — merge the new server entry into the chosen config file (~/.copilot/lsp-config.json for user-level; lsp.json or .github/lsp.json for repo-level). If a repo-level config already exists, keep using that location; otherwise ask the user which repo-level location they prefer. Create the file if missing and preserve existing entries.
  7. Verify — confirm the LSP binary is on $PATH and the config file is valid JSON

Configuration Format

Copilot CLI reads LSP configuration from user-level or repo-level locations, and repo-level config takes precedence over user-level config:

  • User-level: ~/.copilot/lsp-config.json
  • Repo-level: lsp.json (repo root) or .github/lsp.json

The JSON structure:

{
  "lspServers": {
    "<server-key>": {
      "command": "<binary>",
      "args": ["--stdio"],
      "fileExtensions": {
        ".<ext>": "<languageId>",
        ".<ext2>": "<languageId>"
      }
    }
  }
}

Key rules

  • command is the binary name (must be on $PATH) or an absolute path.
  • args almost always includes "--stdio" to use standard I/O transport.
  • fileExtensions maps each file extension (with leading dot) to a Language ID.
  • Multiple servers can coexist in lspServers.
  • When merging into an existing file, never overwrite other server entries — only add or update the target language key.

Behavior

  • Always use ask_user with choices when asking the user to pick a language or scope.
  • If the language is not listed in references/lsp-servers.md, search the web for " LSP server" and guide the user through manual configuration.
  • If a package manager is not available (e.g. no Homebrew on macOS), suggest alternative install methods from the reference file.
  • After installation, run which <binary> (or where.exe on Windows) to confirm the binary is accessible.
  • Show the user the final config JSON before writing it.
  • If the config file already exists, read it first and merge — do not clobber.

Verification

After setup, tell the user:

  1. Type /exit to quit Copilot CLI — this is required so the new LSP configuration is loaded on next launch
  2. Re-launch copilot in a project with files of the configured language
  3. Run /lsp to check the server status
  4. Try code intelligence features like go-to-definition or hover

Alternatives

Compare before choosing