Skip to content

feat(plugins): add dual-client LSP plugins for Copilot CLI and Claude Code - #37

Merged
SebastienDegodez merged 3 commits into
mainfrom
feat/lsp-plugins
Nov 6, 2026
Merged

SebastienDegodez merged 3 commits into
mainfrom
feat/lsp-plugins

Conversation

@SebastienDegodez

@SebastienDegodez SebastienDegodez commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

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.

Plugin Language server Files
python-lsp Pyright .py .pyi .pyw
java-lsp Eclipse JDT.LS .java
csharp-lsp Roslyn Language Server (Microsoft, roslyn-language-server) .cs
typescript-lsp TypeScript 7 native (tsc --lsp --stdio) .ts .tsx .mts .cts .js .jsx .mjs .cjs
dockerfile-lsp Docker Language Server .dockerfile .containerfile
json-lsp VS Code JSON Language Server .json .jsonc
yaml-lsp Red Hat YAML Language Server .yaml .yml
markdown-lsp Marksman .md .markdown
gherkin-lsp Cucumber Language Server .feature
bash-lsp Bash Language Server .sh .bash

Plugin layout

plugins/<lang>-lsp/
├── plugin.json                  # Agent Plugins 1.0 manifest (Copilot CLI)
├── .claude-plugin/plugin.json   # Claude Code manifest
├── .lsp.json                    # Claude Code LSP config (extensionToLanguage)
├── com.github.copilot/lsp.json  # Copilot CLI LSP config (lspServers / fileExtensions)
├── plugin.yaml                  # Website catalog
└── README.md                    # French documentation

In Agent Plugins mode, Copilot CLI reads LSP servers from com.github.copilot/lsp.json. Claude Code reads .lsp.json at 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 marketplace
  • tests/plugins/<lang>-lsp/scenarios.yaml: evaluator scenarios
  • README.md: new "LSP Plugins" section

Notes

  • TypeScript: npm i -g typescript now installs TypeScript 7, which no longer ships tsserver.js, so typescript-language-server can'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.
  • Dockerfile: both clients pick a server by file extension, so a plain Dockerfile with no extension isn't matched. This limitation is documented.
  • C#: uses the official Microsoft roslyn-language-server .NET tool (prerelease only on NuGet) with --stdio --autoLoadProjects. --autoLoadProjects is required: neither client sends the VS Code solution/open notification, and without the flag cross-file go-to-definition times out (verified). csharp-ls is documented as an alternative.
  • Java: startup timeout raised to 120 s (startupTimeout for Claude Code, initializationTimeoutMs for Copilot CLI).

Validation

  • copilot plugin install <name>@copilot-instructions-sebastien-degodez + copilot lsp list: all 10 servers loaded from the plugins
  • claude plugin validate: passed for all 10 plugins and the Claude marketplace
  • Root plugin.json files validated against the Agent Plugins 1.0 JSON Schema
  • LSP initialize handshake run against each real server using the plugin's own config: all 10 respond (definition/references/rename/hover capabilities)
  • Scenario files validated with the evaluator's Zod schema; website build succeeds and renders the 10 plugin pages

SebastienDegodez and others added 3 commits November 6, 2026 23:25
… 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>
@SebastienDegodez
SebastienDegodez merged commit fa2d13a into main Nov 6, 2026
@SebastienDegodez
SebastienDegodez deleted the feat/lsp-plugins branch November 6, 2026 22:35
@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown

🤖 Evaluation Results

✅ All evaluations passed — 0/0 assets passed (18 skipped due to API errors — not counted)

Asset Kind Score Pass Rate Status
bash-lsp plugin N/A N/A ⚠️ SKIPPED
csharp-clean-architecture-development plugin N/A N/A ⚠️ SKIPPED
csharp-lsp plugin N/A N/A ⚠️ SKIPPED
dockerfile-lsp plugin N/A N/A ⚠️ SKIPPED
gherkin-lsp plugin N/A N/A ⚠️ SKIPPED
java-lsp plugin N/A N/A ⚠️ SKIPPED
json-lsp plugin N/A N/A ⚠️ SKIPPED
markdown-lsp plugin N/A N/A ⚠️ SKIPPED
minimal-context-tools plugin N/A N/A ⚠️ SKIPPED
python-lsp plugin N/A N/A ⚠️ SKIPPED
superpowers-whetstone plugin N/A N/A ⚠️ SKIPPED
typescript-lsp plugin N/A N/A ⚠️ SKIPPED
yaml-lsp plugin N/A N/A ⚠️ SKIPPED
creating-dotnet-mcp-servers skill N/A N/A ⚠️ SKIPPED
generate-microcks-openapi-samples skill N/A N/A ⚠️ SKIPPED
migrating-prompts-to-skills skill N/A N/A ⚠️ SKIPPED
setup-husky-dotnet skill N/A N/A ⚠️ SKIPPED
skill-creator skill N/A N/A ⚠️ SKIPPED

Scenario Details

bash-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

csharp-clean-architecture-development (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

csharp-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

dockerfile-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

gherkin-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

java-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

json-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

markdown-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

minimal-context-tools (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

python-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

superpowers-whetstone (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

typescript-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

yaml-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

creating-dotnet-mcp-servers (skill) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

generate-microcks-openapi-samples (skill) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

migrating-prompts-to-skills (skill) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

setup-husky-dotnet (skill) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

skill-creator (skill) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.


Tokens used: 0 input, 0 output
View workflow run

@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown

🤖 Evaluation Results

✅ All evaluations passed — 0/0 assets passed (18 skipped due to API errors — not counted)

Asset Kind Score Pass Rate Status
bash-lsp plugin N/A N/A ⚠️ SKIPPED
csharp-clean-architecture-development plugin N/A N/A ⚠️ SKIPPED
csharp-lsp plugin N/A N/A ⚠️ SKIPPED
dockerfile-lsp plugin N/A N/A ⚠️ SKIPPED
gherkin-lsp plugin N/A N/A ⚠️ SKIPPED
java-lsp plugin N/A N/A ⚠️ SKIPPED
json-lsp plugin N/A N/A ⚠️ SKIPPED
markdown-lsp plugin N/A N/A ⚠️ SKIPPED
minimal-context-tools plugin N/A N/A ⚠️ SKIPPED
python-lsp plugin N/A N/A ⚠️ SKIPPED
superpowers-whetstone plugin N/A N/A ⚠️ SKIPPED
typescript-lsp plugin N/A N/A ⚠️ SKIPPED
yaml-lsp plugin N/A N/A ⚠️ SKIPPED
creating-dotnet-mcp-servers skill N/A N/A ⚠️ SKIPPED
generate-microcks-openapi-samples skill N/A N/A ⚠️ SKIPPED
migrating-prompts-to-skills skill N/A N/A ⚠️ SKIPPED
setup-husky-dotnet skill N/A N/A ⚠️ SKIPPED
skill-creator skill N/A N/A ⚠️ SKIPPED

Scenario Details

bash-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

csharp-clean-architecture-development (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

csharp-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

dockerfile-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

gherkin-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

java-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

json-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

markdown-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

minimal-context-tools (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

python-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

superpowers-whetstone (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

typescript-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

yaml-lsp (plugin) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

creating-dotnet-mcp-servers (skill) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

generate-microcks-openapi-samples (skill) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

migrating-prompts-to-skills (skill) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

setup-husky-dotnet (skill) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.

skill-creator (skill) — ⚠️ SKIPPED

⚠️ All runs failed due to API errors — evaluation was skipped and is not counted in the benchmark.


Tokens used: 0 input, 0 output
View workflow run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant