Repository navigation
feat(plugins): add dual-client LSP plugins for Copilot CLI and Claude Code - #37
Conversation
… Code Add 10 LSP plugins (python, java, csharp, typescript/javascript, dockerfile, json, yaml, markdown, gherkin, bash) following the Agent Plugins 1.0 layout: - plugin.json (Agent Plugins) + com.github.copilot/lsp.json for Copilot CLI - .claude-plugin/plugin.json + .lsp.json for Claude Code - <plugin>-setup skill with check.sh to verify the server install - French README per plugin, plugin.yaml, evaluator scenarios - Copilot marketplace entries and new .claude-plugin/marketplace.json Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The LSP plugins now ship configuration only. Installation and verification steps remain documented in each plugin README. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace csharp-ls with roslyn-language-server (--stdio --autoLoadProjects). --autoLoadProjects is required because Copilot CLI and Claude Code do not send the solution/open notification; without it cross-file navigation fails. csharp-ls is documented as an alternative. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
🤖 Evaluation Results✅ All evaluations passed — 0/0 assets passed (18 skipped due to API errors — not counted)
Scenario Detailsbash-lsp (plugin) —
|
🤖 Evaluation Results✅ All evaluations passed — 0/0 assets passed (18 skipped due to API errors — not counted)
Scenario Detailsbash-lsp (plugin) —
|
Summary
Adds 10 LSP plugins that give the agent IDE-grade code intelligence (go-to-definition, references, rename, hover, diagnostics). Each plugin works with both GitHub Copilot CLI and Claude Code.
python-lsp.py.pyi.pywjava-lsp.javacsharp-lsproslyn-language-server).cstypescript-lsptsc --lsp --stdio).ts.tsx.mts.cts.js.jsx.mjs.cjsdockerfile-lsp.dockerfile.containerfilejson-lsp.json.jsoncyaml-lsp.yaml.ymlmarkdown-lsp.md.markdowngherkin-lsp.featurebash-lsp.sh.bashPlugin layout
In Agent Plugins mode, Copilot CLI reads LSP servers from
com.github.copilot/lsp.json. Claude Code reads.lsp.jsonat the plugin root. The two configs describe the same server, but the clients use different field names.Other changes
.github/plugin/marketplace.json: 10 new entries (Copilot CLI marketplace).claude-plugin/marketplace.json: new Claude Code marketplacetests/plugins/<lang>-lsp/scenarios.yaml: evaluator scenariosREADME.md: new "LSP Plugins" sectionNotes
npm i -g typescriptnow installs TypeScript 7, which no longer shipstsserver.js, sotypescript-language-servercan't start with it. The plugin uses the built-in TS 7 server (tsc --lsp --stdio) instead. The README explains the fallback for projects on TS 6 or earlier.Dockerfilewith no extension isn't matched. This limitation is documented.roslyn-language-server.NET tool (prerelease only on NuGet) with--stdio --autoLoadProjects.--autoLoadProjectsis required: neither client sends the VS Codesolution/opennotification, and without the flag cross-file go-to-definition times out (verified).csharp-lsis documented as an alternative.startupTimeoutfor Claude Code,initializationTimeoutMsfor Copilot CLI).Validation
copilot plugin install <name>@copilot-instructions-sebastien-degodez+copilot lsp list: all 10 servers loaded from the pluginsclaude plugin validate: passed for all 10 plugins and the Claude marketplaceplugin.jsonfiles validated against the Agent Plugins 1.0 JSON Schemainitializehandshake run against each real server using the plugin's own config: all 10 respond (definition/references/rename/hover capabilities)websitebuild succeeds and renders the 10 plugin pages