Skip to content

feat(.claude-plugin): extract LSP servers into individual plugin packages#89

Merged
amondnet merged 3 commits into
mainfrom
feat/extract-lsp-plugins
Mar 3, 2026
Merged

feat(.claude-plugin): extract LSP servers into individual plugin packages#89
amondnet merged 3 commits into
mainfrom
feat/extract-lsp-plugins

Conversation

@amondnet

@amondnet amondnet commented Mar 3, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Split each LSP server into its own standalone plugin under plugins/ directory
  • Each plugin contains its own .claude-plugin/plugin.json with lspServers config, enabling users to install only the language servers they need
  • Remove lspServers field from core plugin.json so the core plugin now only handles CLI/hooks

Changes

New plugin packages (28 total):

  • plugins/astro-lsp - Astro Language Server
  • plugins/bash-lsp - Bash Language Server
  • plugins/biome-lsp - Biome Linter/Formatter
  • plugins/clangd-lsp - C/C++ (clangd) Language Server
  • plugins/csharp-lsp - C# Language Server
  • plugins/dart-lsp - Dart Language Server
  • plugins/deno-lsp - Deno Language Server
  • plugins/dockerfile-lsp - Dockerfile Language Server
  • plugins/elixir-lsp - Elixir Language Server
  • plugins/fsharp-lsp - F# Language Server
  • plugins/gleam-lsp - Gleam Language Server
  • plugins/gopls-lsp - Go Language Server
  • plugins/jdtls-lsp - Java (jdtls) Language Server
  • plugins/kotlin-lsp - Kotlin Language Server
  • plugins/lua-lsp - Lua Language Server
  • plugins/ocaml-lsp - OCaml Language Server
  • plugins/oxlint-lsp - Oxlint Linter
  • plugins/php-lsp - PHP Language Server
  • plugins/prisma-lsp - Prisma Language Server
  • plugins/pyright-lsp - Python (Pyright) Language Server
  • plugins/rubocop-lsp - Ruby (RuboCop) Language Server
  • plugins/rust-analyzer-lsp - Rust Language Server
  • plugins/svelte-lsp - Svelte Language Server
  • plugins/swift-lsp - Swift Language Server
  • plugins/terraform-lsp - Terraform Language Server
  • plugins/texlab-lsp - LaTeX Language Server
  • plugins/yaml-lsp - YAML Language Server
  • plugins/zls-lsp - Zig Language Server

Updated files:

  • .claude-plugin/marketplace.json - Register all 28 new plugins, remove graphql-lsp, update descriptions
  • .claude-plugin/plugin.json - Remove lspServers field (core plugin now only handles CLI/hooks)
  • .claude/settings.json - Update marketplace name from code-please to code-intelligence

Test Plan

  • Verify each plugin's plugin.json is valid JSON with correct lspServers config
  • Verify core plugin no longer registers any LSP servers
  • Verify marketplace lists all new plugins correctly
  • Test installing individual LSP plugins via marketplace

Summary by cubic

Split all LSP servers into 28 standalone plugins so you can install only the languages you need. The core plugin now handles only MCP/CLI and no longer registers any LSP servers.

  • Refactors

    • Added 28 per-language LSP plugins under plugins/*, each with its own .claude-plugin/plugin.json.
    • Updated marketplace.json to register new plugins, remove graphql-lsp, sort entries alphabetically, and clarify rust-analyzer-lsp description.
    • Switched settings to the code-intelligence marketplace and fixed enabledPlugins vendor names.
    • Pinned all LSP plugins to use @pleaseai/code@0.1.19 for stability.
  • Migration

    • Enable only the LSP plugins you need from the code-intelligence marketplace.
    • If you depended on core LSPs, add the matching per-language plugins to enabledPlugins.

Written for commit 90f0a91. Summary will update on new commits.

…ages

Split each LSP server into its own standalone plugin under plugins/ directory.
Each plugin contains its own .claude-plugin/plugin.json with lspServers config,
enabling users to install only the language servers they need.

- Add 28 new LSP plugin packages (astro, bash, biome, clangd, csharp, dart,
  deno, dockerfile, elixir, fsharp, gleam, gopls, jdtls, kotlin, lua, ocaml,
  oxlint, php, prisma, pyright, rubocop, rust-analyzer, svelte, swift,
  terraform, texlab, yaml, zls)
- Remove lspServers field from core plugin.json (core handles CLI/hooks only)
- Update marketplace.json to register all new plugins, remove graphql-lsp
- Update settings.json marketplace name from code-please to code-intelligence
@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly refactors the project's architecture by modularizing Language Server Protocol (LSP) integrations. Instead of a monolithic core plugin managing multiple LSP servers, each server is now encapsulated within its own dedicated plugin. This change enhances flexibility, allowing users to selectively install only the language support they require, thereby reducing overhead and improving customization. The core plugin is now streamlined to handle only fundamental CLI and hook functionalities.

Highlights

  • LSP Server Modularity: Language Server Protocol (LSP) servers have been extracted from the core plugin into 28 individual, standalone plugin packages.
  • Decentralized LSP Configuration: Each new LSP plugin now contains its own .claude-plugin/plugin.json file, allowing for independent configuration and installation of specific language servers.
  • Core Plugin Streamlining: The lspServers field was removed from the core plugin.json, ensuring the core plugin focuses solely on CLI and hooks.
  • Marketplace Updates: The .claude-plugin/marketplace.json was updated to register all 28 new LSP plugins, remove the graphql-lsp entry, and refine existing plugin descriptions.
  • Marketplace Name Change: The marketplace name in .claude/settings.json was updated from code-please to code-intelligence.
Changelog
  • .claude-plugin/marketplace.json
    • Registered 28 new individual LSP plugins.
    • Removed the graphql-lsp entry.
    • Updated descriptions for several existing plugins.
    • Changed the description for the code-please core plugin.
  • .claude-plugin/plugin.json
    • Removed the entire lspServers configuration object.
  • .claude/settings.json
    • Updated the marketplace name from code-please to code-intelligence.
    • Adjusted the list of enabledPlugins to reflect the new marketplace name for typescript-lsp and removed code-please@code-please.
  • plugins/astro-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Astro Language Server.
  • plugins/bash-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Bash Language Server.
  • plugins/biome-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Biome Linter/Formatter.
  • plugins/clangd-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the C/C++ (Clangd) Language Server.
  • plugins/csharp-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the C# Language Server.
  • plugins/dart-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Dart Language Server.
  • plugins/deno-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Deno Language Server.
  • plugins/dockerfile-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Dockerfile Language Server.
  • plugins/elixir-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Elixir Language Server.
  • plugins/fsharp-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the F# Language Server.
  • plugins/gleam-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Gleam Language Server.
  • plugins/gopls-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Go Language Server.
  • plugins/jdtls-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Java (Eclipse JDTLS) Language Server.
  • plugins/kotlin-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Kotlin Language Server.
  • plugins/lua-lsp/.claude-plugin/plugin.claude-plugin/plugin.json
    • Added a new plugin definition for the Lua Language Server.
  • plugins/ocaml-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the OCaml Language Server.
  • plugins/oxlint-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Oxlint Linter.
  • plugins/php-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the PHP (Intelephense) Language Server.
  • plugins/prisma-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Prisma Language Server.
  • plugins/pyright-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Python (Pyright) Language Server.
  • plugins/rubocop-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the RuboCop (Ruby) Linter.
  • plugins/rust-analyzer-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Rust Language Server.
  • plugins/svelte-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Svelte Language Server.
  • plugins/swift-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Swift (SourceKit) Language Server.
  • plugins/terraform-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Terraform Language Server.
  • plugins/texlab-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the LaTeX (TexLab) Language Server.
  • plugins/yaml-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the YAML Language Server.
  • plugins/zls-lsp/.claude-plugin/plugin.json
    • Added a new plugin definition for the Zig Language Server.
Activity
  • No specific activity (comments, reviews, or progress updates) was detected in the provided context.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 31 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name=".claude/settings.json">

<violation number="1" location=".claude/settings.json:26">
P1: The enabled plugin is registered under the wrong marketplace name (`claude-intelligence` vs `code-intelligence`), which can prevent `typescript-lsp` from being found and loaded.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment thread .claude/settings.json Outdated

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the LSP server configurations by extracting them from the core plugin into individual, standalone plugin packages. This is a significant architectural improvement that will allow users to install only the language servers they need. The changes include updating the marketplace to register 28 new LSP plugins, removing the lspServers configuration from the core plugin, and creating new plugin packages for each server. My review focuses on ensuring consistency in the new plugin definitions and improving maintainability. I've suggested sorting the plugins in the marketplace file and pinning the dependency version in the new plugin configurations for better stability.

Note: Security Review has been skipped due to the limited scope of the PR.

Comment thread plugins/astro-lsp/.claude-plugin/plugin.json Outdated
Comment thread .claude-plugin/marketplace.json Outdated
Comment thread .claude-plugin/marketplace.json Outdated
@amondnet amondnet self-assigned this Mar 3, 2026
amondnet added 2 commits March 3, 2026 18:42
claude-intelligence → code-intelligence to match extraKnownMarketplaces key
- Pin @pleaseai/code version from ^0.1.0 to 0.1.19 in all LSP plugin.json files for stability
- Sort plugins array alphabetically in marketplace.json for better maintainability
- Update rust-analyzer-lsp description to "Rust Language Server (rust-analyzer)" for consistency
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying code-please with  Cloudflare Pages  Cloudflare Pages

Latest commit: 90f0a91
Status:⚡️  Build in progress...

View logs

@pleaseai

pleaseai Bot commented Mar 3, 2026

Copy link
Copy Markdown

@amondnet님의 요청을 완료했습니다 (2m 1s) —— View job


Changes Verified ✅

  • Verify version pinning applied correctly across all 29 LSP plugins
  • Verify marketplace.json is consistent
  • Check settings.json marketplace name fix
  • Summary

All applied changes look correct. Here's a quick verification of what was done in 90f0a91 and c78ff4b:

Version Pinning (@pleaseai/code@0.1.19) — ✅ Confirmed
All new LSP plugins correctly use the pinned version. No plugins with @pleaseai/code@^0.1.0 remain in the codebase.

Marketplace Name (code-intelligence) — ✅ Confirmed
settings.json correctly has typescript-lsp@code-intelligence (P1 issue from cubic-dev-ai is resolved).

Marketplace sorting + Rust description — ✅ Confirmed
marketplace.json plugins are alphabetically sorted and rust-analyzer-lsp shows "Rust Language Server (rust-analyzer)".


One pre-existing issue to note (not introduced by this PR):

plugins/eslint-lsp/.claude-plugin/plugin.json line 12 is missing its indentation for the "args" field — the diff shows this was pre-existing before the version bump. It's valid JSON so it won't break anything, but you may want to clean it up: Fix this →

@amondnet
amondnet merged commit a557833 into main Mar 3, 2026
4 of 5 checks passed
@amondnet
amondnet deleted the feat/extract-lsp-plugins branch March 3, 2026 09:50
@passionfactory-bot passionfactory-bot Bot mentioned this pull request Mar 3, 2026
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