All skills
github avatar

/lsp-setup

@9d8c98e official
by githubgithub/awesome-copilot40k stars
5,040

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.

Use this Skill: https://skilld.dev/gh/github/awesome-copilot/lsp-setup

This session only. Nothing lands on disk.

SKILL.md

β‰ˆ109 tokens always: the name and description. β‰ˆ885 when used: this file. β‰ˆ2.2k more on demand in 1 file.

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 "<language> 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

Source: SKILL.md on GitHub

1 warning16d4 checks Β· Risk SAFE
  • Gen Agent Trust Hub16d

    The skill is a configuration utility designed to set up Language Server Protocol (LSP) servers for the GitHub Copilot CLI. It uses standard package managers and official software sources to install the necessary tools and manages configuration files in a way that preserves existing user settings.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: MEDIUM Β· 1 issue

  • ZeroLeaks5mo

    Score: 93/100 Β· 2 sections analyzed

Signed by skilld at 9d8c98e. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 20 hours ago.

Activeupdated 6 months ago
  • TypeScript
  • Python
  • lsp
  • language-server
  • copilot-cli
  • code-intelligence
  • setup
  • configuration
  • go-to-definition
  • java

README badge

README badge for github/awesome-copilot/lsp-setup

Installs and configures Language Server Protocol servers for Copilot CLI, enabling go-to-definition, find-references, and hover information. Detects the OS, installs the appropriate LSP binary, and writes the configuration (user-level or repo-level) in the format Copilot CLI expects.

Generated from the current SKILL.md.

Does this configure LSP for my editor or IDE?
No. This skill configures LSP servers specifically for Copilot CLI, not for VS Code, Neovim, or other editors. Use it when you need code intelligence features (go-to-definition, find-references, hover) within the Copilot CLI workflow.
What happens if my language isn't in the reference file?
The skill searches the web for a suitable LSP server for that language and guides you through manual configuration with the JSON format.
Can I have multiple language servers configured at once?
Yes. The JSON structure supports multiple servers in the same `lspServers` object, and the skill merges new entries without overwriting existing ones.
Do I need to restart Copilot CLI after setup?
Yes. You must type `/exit` to quit Copilot CLI so the new LSP configuration is loaded on the next launch.
Can I use both user-level and repo-level LSP config?
Yes. Repo-level config takes precedence over user-level, so you can set defaults at user-level and override them per repository.

Generated from the current SKILL.md. These answers refresh after source changes.