/install-lsps
Install language servers (gopls, typescript-language-server, pyright, rust-analyzer) and their prerequisite toolchains (Go, Node/npm, rustup) so the lsp tool works. Use when the user asks to enable or install LSP / language-server support, when lsp_enable reports a missing
Claude Code
$ npx -y skills add weave-os/router --skill install-lsps --agent claude-code
Codex
$ npx skills add weave-os/router --skill install-lsps -a codex -y
Cursor
$ npx skills add weave-os/router --skill install-lsps -a cursor -y
Gemini CLI
$ npx skills add weave-os/router --skill install-lsps -a gemini-cli -y
GitHub Copilot
$ npx skills add weave-os/router --skill install-lsps -a github-copilot -y
OpenCode
$ npx skills add weave-os/router --skill install-lsps -a opencode -y
Windsurf
$ npx skills add weave-os/router --skill install-lsps -a windsurf -y
SKILL.md
install-lsps.SKILL.mdname: install-lsps
description: Install language servers (gopls, typescript-language-server, pyright, rust-analyzer) and their prerequisite toolchains (Go, Node/npm, rustup) so the lsp tool works. Use when the user asks to enable or install LSP / language-server support, when lsp_enable reports a missing toolchain, or when the lsp tool reports no language server is installed.
Install LSPs
Enable the `lsp` tool for a language by installing its language server — and, when the server install needs it, the underlying toolchain.
Rules
- Everything here is consent-gated: only act on the user's explicit go-ahead,
and confirm each toolchain install separately — those are system-level changes, not part of whatever task prompted this.
- If the user declines, stop. If they ask not to be offered again, call
`lsp_enable` with `{"language": "<language>", "action": "dismiss"}`.
- Prefer the `lsp_enable` tool over bash whenever the toolchain already
exists; reach for bash only for the prerequisites `lsp_enable` refuses to install itself.
Per language
Work the ladder for each language the user wants:
1. **Check what is missing.** Server binaries: `gopls`, `typescript-language-server`, `pyright-langserver` (or `basedpyright-langserver`), `rust-analyzer` — also look in `~/go/bin` and `~/.cargo/bin`, which the lsp tool searches even when they are off PATH. Toolchains: `go`, `npm`, `rustup`. 2. **Toolchain present** → call `lsp_enable` with `{"language": "<go|typescript|python|rust>"}` and you are done; it runs the right server install and verifies the binary resolves. 3. **Toolchain missing** → show the user the command you intend to run, get their confirmation, run it in bash, then return to step 2. 4. **Verify** with a real `lsp` query (`documentSymbol` on an actual source file). The first query per workspace can take up to a minute while the server indexes; that is normal.
Toolchain installs (step 3 reference)
Go (for gopls):
brew install go # macOS
sudo apt-get install -y golang-go # Debian/Ubuntu; or dnf install golang
Or the official downloads at https://go.dev/dl for anything else.
Node/npm (for typescript-language-server and pyright):
brew install node # macOS
sudo apt-get install -y nodejs npm # Debian/Ubuntu
Or nvm (https://github.com/nvm-sh/nvm) when the user prefers per-user installs.
rustup (for rust-analyzer):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
This is the official rust installer; show the user the command before running it and follow its printed PATH instructions afterwards.
Notes
- `go install` drops gopls in `~/go/bin` and rustup drops rust-analyzer in
`~/.cargo/bin`. The lsp tool finds both without PATH changes; other tools may still want a PATH entry.
- All of this can also happen at install time:
`npx @weave-os/router --pi --lsp go,typescript,python,rust`.
Read more
name: install-lsps description: Install language servers (gopls, typescript-language-server, pyright, rust-analyzer) and their prerequisite toolchains (Go, Node/npm, rustup) so the lsp tool works. Use when the user asks to enable or install LSP / language-server support, when lsp_enable reports a missing toolchain, or when the lsp tool reports no language server is installed.
Install LSPs
Enable the `lsp` tool for a language by installing its language server — and, when the server install needs it, the underlying toolchain.
Rules
- Everything here is consent-gated: only act on the user's explicit go-ahead,
and confirm each toolchain install separately — those are system-level changes, not part of whatever task prompted this.
- If the user declines, stop. If they ask not to be offered again, call
`lsp_enable` with `{"language": "<language>", "action": "dismiss"}`.
- Prefer the `lsp_enable` tool over bash whenever the toolchain already
exists; reach for bash only for the prerequisites `lsp_enable` refuses to install itself.
Per language
Work the ladder for each language the user wants:
1. **Check what is missing.** Server binaries: `gopls`, `typescript-language-server`, `pyright-langserver` (or `basedpyright-langserver`), `rust-analyzer` — also look in `~/go/bin` and `~/.cargo/bin`, which the lsp tool searches even when they are off PATH. Toolchains: `go`, `npm`, `rustup`. 2. **Toolchain present** → call `lsp_enable` with `{"language": "<go|typescript|python|rust>"}` and you are done; it runs the right server install and verifies the binary resolves. 3. **Toolchain missing** → show the user the command you intend to run, get their confirmation, run it in bash, then return to step 2. 4. **Verify** with a real `lsp` query (`documentSymbol` on an actual source file). The first query per workspace can take up to a minute while the server indexes; that is normal.
Toolchain installs (step 3 reference)
Go (for gopls):
brew install go # macOS sudo apt-get install -y golang-go # Debian/Ubuntu; or dnf install golang
Or the official downloads at https://go.dev/dl for anything else.
Node/npm (for typescript-language-server and pyright):
brew install node # macOS sudo apt-get install -y nodejs npm # Debian/Ubuntu
Or nvm (https://github.com/nvm-sh/nvm) when the user prefers per-user installs.
rustup (for rust-analyzer):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
This is the official rust installer; show the user the command before running it and follow its printed PATH instructions afterwards.
Notes
- `go install` drops gopls in `~/go/bin` and rustup drops rust-analyzer in
`~/.cargo/bin`. The lsp tool finds both without PATH changes; other tools may still want a PATH entry.
- All of this can also happen at install time:
`npx @weave-os/router --pi --lsp go,typescript,python,rust`.
Weave Router is a proxy that selects a model for each API request. It works with Anthropic, OpenAI, and Gemini APIs, so you can use it with coding tools or your own application. You can use the hosted router or run it yourself with your own provider keys.
More skills from other plugins.
agentmail
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
adr-create
Create a new Architecture Decision Record with sequential numbering and AgentDB registration
Questions about install-lsps.
- Which coding agents can use install-lsps?
- install-lsps installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

