Skip to main content
skill GitHub Copilot official · GitHub

lsp-setup — GitHub Copilot skill: LSP setup

Installs a language server and configures LSP for Copilot CLI. Use it when you need code navigation such as go-to-definition or find-references.

Install into GitHub Copilot · Skills CLI (Vercel) All methods and platforms ↓
npx skills add github/awesome-copilot --skill lsp-setup
Open on GitHub

What lsp-setup does

The skill asks which language needs LSP support and whether to save settings for the user or the repository. It detects the operating system, looks up a server in references/lsp-servers.md, installs it, then adds its settings to ~/.copilot/lsp-config.json or .github/lsp.json. Existing entries are preserved.

The configuration maps file extensions to language IDs and sets the server command and arguments. The skill checks that the binary is available and the config is valid JSON. If its reference does not cover the language, it searches for an LSP server and guides manual setup.

The selected language server must be installed for LSP to work. Repository settings take precedence over user-level settings. Choose this skill for Copilot CLI setup; it does not configure an IDE or editor.

What it helps with

  • configure LSP for a project language in Copilot CLI
  • install a language server for the detected operating system
  • add server settings to user or repository configuration
  • check that the LSP binary and JSON config are valid

Example prompts for the agent

  • Set up LSP for Java in Copilot CLI at repository level.
  • Install a TypeScript server and add it to `~/.copilot/lsp-config.json`.
  • Find an LSP server for my language and guide me through manual setup.

How to install lsp-setup

1Skills CLI (Vercel)

npx skills add github/awesome-copilot --skill lsp-setup

2GitHub CLI

gh skill install github/awesome-copilot lsp-setup

3Manually: put the files in place

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

From the same set554

The whole set →
git-commit official github This skill reviews Git changes, stages related files, and creates Conventional Commits. Use it when you want an agent to make one commit or split work into separate commits. GitHub Copilot 47,165installs excalidraw-diagram-generator official github Turn a plain-language description into an Excalidraw diagram. Useful for mapping processes, system structure, and relationships between entities. GitHub Copilot 31,639installs multi-stage-dockerfile official github This skill guides GitHub Copilot in writing multi-stage Dockerfiles for different languages and frameworks. Use it when the final runtime image should contain fewer build dependencies. GitHub Copilot 29,688installs documentation-writer official github Skill that turns the agent into a technical writer following the Diátaxis framework: tutorials, how-to guides, reference, and explanation. Proposes structure before writing. GitHub Copilot 27,757installs prd official github Turns a feature idea into a structured PRD with user stories, technical requirements, and risks. Use it when planning a software feature or an AI-powered one. GitHub Copilot 24,035installs refactor official github This skill reshapes existing code without changing its external behavior. Use it for gradual cleanup of large functions, duplication, weak types, and code smells. GitHub Copilot 22,321installs java-springboot official github Gives GitHub Copilot Spring Boot development practices, from project layout to tests and security. Use it when writing or reviewing Java application code. GitHub Copilot 21,272installs create-readme official github This skill reviews a project and creates a structured README.md. Use it when the repository needs clear documentation based on its actual files and code. GitHub Copilot 19,081installs

Similar

dart-use-doc-examples flutter Teaches agents to inject external code examples into Dartdoc using the {@example} directive instead of inline blocks. Claude Code CX Codex Cursor +1 6,300installs write-concept leonardomso Creates and reviews JavaScript concept pages for 33 JavaScript Concepts. Use it when adding, rewriting, or checking material in /docs/concepts/. Claude Code CX Codex Cursor +1 305installs cargo-fuzz trailofbits Sets up cargo-fuzz inside a Cargo-based Rust crate and walks through the harness, sanitizers and crash triage. Claude Code CX Codex Cursor +1 5,400installs dart-use-path-package flutter Teaches the agent to handle Dart file paths via package:path, avoiding string operations that break on Windows. Claude Code CX Codex Cursor +1 5,900installs swiftdata-pro Paul Hudson A skill for writing, reviewing, and improving SwiftData code with modern APIs and best practices. Essential when working with SwiftData-based projects in Swift. Claude Code CX Codex Cursor +1 9,200installs typescript-advanced-types sickn33 Teaches the agent generics, conditional and mapped types in TypeScript, and stays honest about where type checking stops. Claude Code CX Codex Cursor +1 1,300installs migrate-to-shoehorn Matt Pocock Replaces as type assertions in tests with helpers from @total-typescript/shoehorn. Use it when tests need partial objects or deliberately invalid data. Claude Code 475,388installs write-swift emilkowalski This skill guides Swift coding, reviews, and migrations using the language’s current practices. Use it to investigate concurrency errors, hangs, data races, or retain cycles. Claude Code CX Codex Cursor +1 117,500installs

Questions about lsp-setup

How do I install lsp-setup in GitHub Copilot?

Run npx skills add github/awesome-copilot --skill lsp-setup or gh skill install github/awesome-copilot lsp-setup.

What does lsp-setup do?

It installs and configures an LSP server for Copilot CLI, enabling features such as go-to-definition, find-references, and type information.

Where does Copilot CLI read LSP configuration?

User settings go in ~/.copilot/lsp-config.json; repository settings go in .github/lsp.json. Repository configuration takes precedence.

Source text

SKILL.md · MIT
---
name: lsp-setup
description: '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.'
---

# 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 (for Java, also read `references/java-jdtls.md`)
4. **Ask scope** — use `ask_user` to ask whether the config should be user-level (`~/.copilot/lsp-config.json`) or repo-level (`.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; `.github/lsp.json` for repo-level). 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**: `.github/lsp.json` (a bare `lsp.json` at the repo root is not read: with Copilot CLI 1.0.95, `copilot lsp list` listed servers from `.github/lsp.json` but not from a root `lsp.json`)

The JSON structure:

```json
{
  "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](https://code.visualstudio.com/docs/languages/identifiers#_known-language-identifiers).
- 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

## Java

For Java semantic navigation, prefer the `lsp` tool (`goToDefinition`, `findReferences`, `hover`, `incomingCalls`) over grep/view once a server is configured. LSP is optional for Java and is not a prerequisite for build or runtime diagnostics. See `references/java-jdtls.md` for setup details and troubleshooting.

© github · MIT · github/awesome-copilot

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor