lsp
Diagnose and install missing LSP servers for your project. Use when the user says "lsp", "language servers", "check lsp", or wants to ensure code intelligence is fully working. Also use when live code intelligence ops (get_hover, get_completions, go to definition) return degraded results from the tree-sitter layer instead of LSP, or when you see "no code intelligence", "can't go to definition", "no type info available", or "source_layer: TreeSitter" on ops that should have full LSP data.
What this skill does
# LSP
Diagnose LSP server health and install missing servers for the `code_context` MCP tool. When live LSP ops (`get_hover`, `get_completions`, `go_to_definition`) return tree-sitter results instead of LSP, the most likely cause is a missing server.
## Process
### 1. Get status
```json
{"op": "lsp status"}
```
Returns:
- `languages[]`: `{icon, extensions, lsp_server, installed, install_hint}` (hint only when not installed)
- `all_healthy`: true when every detected language's server is installed
### 2. Present
One row per language:
| Icon | Server | Status | Install Command |
|------|--------|--------|-----------------|
| (icon) | rust-analyzer | Installed | — |
| (icon) | typescript-language-server | Missing | `npm install -g typescript-language-server` |
### 3. Act
**`all_healthy: true`** — report all good, no action.
**Servers missing**:
1. List the missing servers + install commands
2. Ask permission before installing
3. Run approved installs via `shell`
4. Re-run `lsp status` to confirm
5. Show updated table
### 4. Verify with a live op
Confirm end-to-end with a known symbol:
```json
{"op": "get symbol", "query": "main"}
```
LSP-sourced data confirms it works. Still degraded? The server may need a project restart or config (`compile_commands.json` for C/C++, `tsconfig.json` for TS).
### 5. Errors
- **Install fails**: report output; suggest manual install (different package manager, permissions, version).
- **No languages detected**: confirm source files exist; re-run after adding them.
## Troubleshooting
### `get_hover` / `get_definition` still return `source_layer: TreeSitter` after `installed: true`
The LSP process was already running (against the prior state) when the binary was installed, or the initial scan hasn't finished. Installs don't restart live sessions.
Restart the MCP server (or parent harness) so `sah` spawns a fresh LSP, then wait for the scan. Verify:
```json
{"op": "get hover", "file_path": "<known-file>", "line": 0, "character": 0}
```
A non-empty `contents` from the LSP layer = fixed.
### `clangd` (C/C++): no symbols or "Unable to handle compilation, expected compilation database"
`clangd` needs `compile_commands.json` at the workspace root (or a discoverable `build/`). Generate, then re-run `lsp status`:
- CMake: `cmake -S . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON && ln -sf build/compile_commands.json .`
- Make (Bear): `bear -- make`
- Meson: already emitted in the build dir — symlink to root
### `typescript-language-server` returns nothing in a monorepo
No (or wrong) `tsconfig.json` resolves for the file — common when each package has its own but the root doesn't. Add a root `tsconfig.json` with `"references"` to each package, or open the agent inside the package dir. Confirm:
```json
{"op": "get hover", "file_path": "packages/<pkg>/src/index.ts", "line": 0, "character": 0}
```
### Install succeeded but binary still not on `PATH`
Installed to a dir (`~/.cargo/bin`, `~/.npm-global/bin`, `~/go/bin`) that the MCP server's env doesn't see. Shell rc only affects interactive shells.
Export the directory in the environment that launches the agent (launchd on macOS, your service manager on Linux), then restart the MCP server. Confirm with `which <binary>` in that same environment.
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.