- name
- lsp-maintain
- description
- Diagnose and align Kode LSP behavior with the reference CLI (plugin-based .lsp.json, stdio-only, no install menus). Use when LSP results are missing, LSP is disabled, or you need to configure plugin LSP servers without telling the user to run menu-style install commands.
- allowed-tools
- Read Edit SlashCommand
# LSP Maintain (Reference-aligned)
## Non-negotiables (policy)
- Do not respond with menu-style instructions like “run `/lsp-maintain install`” or “run `/lsp-maintain doctor`”.
- Prefer executing capability changes through `SlashCommand` (e.g. `/plugin ...`, `/lsp`) or `Edit` to configuration files.
- Keep the conversation focused: only load deeper resources if absolutely necessary.
## What “LSP enabled” means in Kode
Kode’s `LSP` tool is enabled only when there is at least one resolved LSP server and at least one is not in `error`.
## Step 1 — Establish facts (no guessing)
1. Ask for the user goal (languages, monorepo vs single package, whether they already use plugins).
2. Run `/lsp` via `SlashCommand` and read the “Configured servers” list.
3. If there are zero servers, conclude: **no LSP servers are configured** (do not speculate about missing binaries).
## Step 2 — Identify configuration source (plugin-only)
Kode resolves LSP servers from enabled plugins:
- Plugin root `.lsp.json` (JSON, top-level record)
- Plugin manifest field `lspServers` (inline record or relative file path within plugin root)
If the user needs a new server, the correct path is: enable a plugin that provides it, or add/update a plugin’s `.lsp.json`.
## Step 3 — Apply changes through agent CLI
Prefer:
- Use `SlashCommand` to manage plugins (`/plugin ...`) and re-check with `/lsp`.
- Use `Edit` to update the plugin’s `.lsp.json` or manifest `lspServers` record/file.
## Step 4 — Verify
1. Re-run `/lsp` and confirm servers are resolved.
2. Attempt one `LSP` tool call (e.g. `goToDefinition`) on a file extension that is mapped in `extensionToLanguage`.
## Notes for LSP server config authoring
- `command` must be an executable (avoid embedding arguments; use `args`).
- Kode runs servers using stdio pipes.
- Do not use `restartOnCrash`, `startupTimeout`, or `shutdownTimeout` in the config (Kode treats them as unsupported).
View on GitHub