| 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)
- Ask for the user goal (languages, monorepo vs single package, whether they already use plugins).
- Run
/lsp via SlashCommand and read the “Configured servers” list.
- 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
- Re-run
/lsp and confirm servers are resolved.
- 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).