Skip to content

Wire allium-lsp in plugin.json for live .allium diagnostics (#39)#48

Merged
yavorpanayotov merged 2 commits into
mainfrom
feat/wire-allium-lsp
Jun 19, 2026
Merged

Wire allium-lsp in plugin.json for live .allium diagnostics (#39)#48
yavorpanayotov merged 2 commits into
mainfrom
feat/wire-allium-lsp

Conversation

@yavorpanayotov

Copy link
Copy Markdown
Collaborator

What

Wires the allium-lsp language server into the Claude Code plugin so Claude receives live diagnostics, go-to-definition and hover for .allium files immediately after each edit — without a separate allium check run. Closes #39.

Changes

  1. .claude-plugin/plugin.json — add the lspServers entry (exact config from the issue):
    "lspServers": {
      "allium": {
        "command": "allium-lsp",
        "extensionToLanguage": { ".allium": "allium" }
      }
    }
  2. README.md — note in the Verification section that allium-lsp is not bundled and must be installed separately and be on PATH, with a pointer to allium-tools.

Acceptance criteria (#39)

  • plugin.json includes an lspServers entry wiring allium-lsp to .allium
  • README notes allium-lsp must be installed separately
  • Cannot verify here that diagnostics actually flow — that requires the allium-lsp binary on PATH and a Claude Code session; the binary work lives in juxt/allium-tools and is out of scope for this repo.

🤖 Generated with Claude Code

yavorpanayotov and others added 2 commits June 19, 2026 14:12
Add an lspServers entry so the Claude Code plugin connects the
allium-lsp language server to .allium files, giving Claude checker
diagnostics, go-to-definition and hover immediately after each edit
without a separate `allium check` invocation.

Note in the README that allium-lsp is not bundled and must be
installed separately (and be on PATH), consistent with official
marketplace LSP plugins.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The language server calls createConnection(ProposedFeatures.all), which
requires a transport flag on argv, so it must be launched as
`allium-lsp --stdio` (per allium-tools CONTRIBUTING). Add args: ["--stdio"]
to the lspServers entry; without it the server errors on startup.

allium-lsp is not published to npm (the bare and @juxt-scoped names both
404), so drop the `npm install -g allium-lsp` instruction and point to the
allium-tools repo for installing the server onto PATH instead.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@yavorpanayotov

Copy link
Copy Markdown
Collaborator Author

Sanity-check of the issue's suggested config — two corrections

I verified the request against the Claude Code plugin schema and the actual allium-lsp source in juxt/allium-tools. The intent is sound and the plugin system supports it, but the issue's exact config has two problems, now fixed in this PR:

  1. Missing --stdio arg. allium-lsp calls createConnection(ProposedFeatures.all) (packages/allium-lsp/src/server.ts), which requires a transport flag on argv or it errors on startup. allium-tools CONTRIBUTING confirms clients launch allium-lsp --stdio. The issue's "command": "allium-lsp" with no args would fail. → added "args": ["--stdio"]. (args is a documented optional field in the plugin lspServers schema.)

  2. npm install -g allium-lsp does not work. The package is not published to npm — the bare name and @juxt/-scoped name both 404. The source exists (packages/allium-lsp, bin allium-lsp, v3.4.2) but is unpublished. → README now points to allium-tools for installing the server onto PATH instead of a command that 404s.

The field names command / extensionToLanguage and the .allium key (with leading dot) are correct, so the rest of the config stands.

⚠️ Blocker for actually using this

Until allium-lsp is installable via a published artifact (npm/brew/nix), users can't get the binary onto PATH, so the LSP integration won't activate — it'll fall back to CLI checking. This PR is correct and safe to merge (no effect when the binary is absent), but the feature isn't usable end-to-end until allium-tools ships an install path. Tracking deps in the issue: juxt/allium-tools#16 (nix/brew), #17 (standalone binary).

@yavorpanayotov

Copy link
Copy Markdown
Collaborator Author

Upstream dependency now in progress: juxt/allium-tools#54 makes allium-lsp installable via npm install -g allium-lsp (adds a publish-npm job to the release workflow). Once that merges and a tagged release publishes the package (plus the maintainer adds an NPM_TOKEN secret and claims the npm name), the lspServers wiring in this PR becomes fully usable end-to-end.

@yavorpanayotov

Copy link
Copy Markdown
Collaborator Author

Correction — #48 is not blocked by npm publishing (allium-tools#54).

The lspServers entry only needs allium-lsp on PATH; it doesn't care how it got there. The existing release tarball already provides that — download allium-lsp-<version>.tar.gz, extract, put the self-contained binary on PATH, and it runs allium-lsp --stdio. So this PR works today via the current tarball/source install and can merge independently.

allium-tools#54 (npm install -g) is a convenience that makes install a one-liner — not a prerequisite. My earlier comment saying this becomes usable only after #54 was wrong.

@yavorpanayotov yavorpanayotov merged commit 9a18891 into main Jun 19, 2026
1 check passed
@yavorpanayotov yavorpanayotov deleted the feat/wire-allium-lsp branch June 19, 2026 11:52
yavorpanayotov added a commit to yenda/claude-plugins that referenced this pull request Jun 19, 2026
Refresh the vendored snapshot to current juxt/allium main: picks up the
lspServers block (juxt/allium#48), the external-API pattern (#46) and the
zero-argument contract signature docs (#49). 229ccd0 also carries the
.codex-plugin/plugin.json merged via #41, matching the ref pinned by the
sync guard (juxt#12).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
yavorpanayotov added a commit to juxt/claude-plugins that referenced this pull request Jun 19, 2026
* Expose Allium as local marketplace plugin

* Re-vendor plugins/allium from juxt/allium@229ccd0

Refresh the vendored snapshot to current juxt/allium main: picks up the
lspServers block (juxt/allium#48), the external-API pattern (#46) and the
zero-argument contract signature docs (#49). 229ccd0 also carries the
.codex-plugin/plugin.json merged via #41, matching the ref pinned by the
sync guard (#12).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Yavor Panayotov <y.panayotov@yahoo.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
yavorpanayotov added a commit that referenced this pull request Jun 19, 2026
Minor bump for new backwards-compatible features added since v3.3.0:
LSP server wiring via lspServers (#48) and Codex support / .codex-plugin
manifest (#41). Updates both the Claude and Codex plugin manifests.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

Wire allium-lsp in plugin.json for live .allium diagnostics

1 participant