Skip to content
Back to skills

Install Lsps

BSecurity

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.

  • 5,621 stars
  • 0 votes
  • 0 copies
  • 7 views
  • Added September 13, 2026
ai-agentstypescriptpythonrustgobashnodenodejsgit

Works with

  • cli

Security analysis

B75/100
  • criticalPipes output to a shell interpreter
  • criticalDownloads and executes remote scripts — classic supply chain attack

Pro shows the line behind each finding and how to fix it

Scanned September 13, 2026

npx -y skills add weave-os/router --skill install-lsps --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Install Lsps?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Install Lsps
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/weave-os-install-lsps/badge)](https://www.skillsdirectory.com/skills/weave-os-install-lsps)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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):

```bash
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):

```bash
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):

```bash
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`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.