{
  "markdown": "# elixir-expert-lsp — Elixir Code Intelligence for Claude Code\n\nA Claude Code plugin that connects [Expert LSP](https://expert-lsp.org) — the official unified Elixir language server — to give Claude real-time code intelligence while working on Elixir projects.\n\n## What Claude gains\n\n- **Auto-diagnostics**: After every file edit, Expert analyzes changes and reports errors, warnings, and missing imports. Claude sees issues immediately and fixes them in the same turn.\n- **Code navigation**: Go to definition, find references, hover for type info, list symbols, code actions — precise navigation instead of grep-based search.\n\n### Verified capabilities\n\n| Capability | Status |\n|-----------|--------|\n| File change sync | Yes |\n| Code completion | Yes |\n| Hover / type info | Yes |\n| Go to definition | Yes |\n| Find references | Yes |\n| Document symbols | Yes |\n| Workspace symbols | Yes |\n| Code actions (quick fixes) | Yes |\n| Code lens | Yes |\n| Formatting | Yes |\n| Execute commands | Yes |\n\n## Performance Notes\n\nTested against an Elixir project (Rig, 8 lib files). Results are from a single project and may vary based on project size, hardware, and Expert version:\n\n| Metric | Expert LSP | ElixirLS v0.30.0 |\n|--------|-----------|----------|\n| Project compile | 12s | 30s |\n| Diagnostic latency | 1.0s | Did not return diagnostics in test window |\n| Incremental recompile | 58ms | N/A |\n\nIn this test, Expert detected an `undefined function run/3` error within 1 second of saving. ElixirLS did not return diagnostics within the test window. Expert is in release candidate status; ElixirLS is more mature. Your results will vary.\n\n## First Run\n\nOn first use, Expert builds an analysis engine (~30 seconds). This is a one-time cost cached at `~/Library/Caches/expert/`. Subsequent starts take under 1 second.\n\nTo warm the cache before using in Claude Code:\n\n```bash\ncd your-project\nexpert --stdio\n# Wait until you see \"Engine initialized\" in .expert/expert.log (~30s)\n# Then Ctrl+C\n```\n\nEach project also needs an initial compile on first open (~5-10s with warm engine). After that, incremental recompiles take milliseconds.\n\n## Requirements\n\n- **Claude Code** v1.0.33+\n- **Expert LSP** v0.1.0-rc.6+ installed and in your `$PATH`\n- **Elixir** 1.15+ with OTP 26+ (check with `elixir --version`)\n\n## Install the plugin\n\n```bash\n# From the Claude Code CLI\nclaude plugin install elixir-expert-lsp@<marketplace>\n\n# Or load locally for development\nclaude --plugin-dir /path/to/expert-lsp\n```\n\n## Install Expert LSP\n\nThe plugin configures the connection but doesn't include the server binary. Install Expert using one of these methods:\n\n### Download pre-built binary (recommended)\n\nDownload the latest release for your platform from [github.com/elixir-lang/expert/releases](https://github.com/elixir-lang/expert/releases) and place it in your `$PATH`:\n\n```bash\n# macOS ARM (Apple Silicon)\ngh release download v0.1.0-rc.6 --pattern 'expert_darwin_arm64' --repo elixir-lang/expert --dir /tmp\ncp /tmp/expert_darwin_arm64 ~/.local/bin/expert\nchmod +x ~/.local/bin/expert\n\n# macOS Intel\ngh release download v0.1.0-rc.6 --pattern 'expert_darwin_amd64' --repo elixir-lang/expert --dir /tmp\ncp /tmp/expert_darwin_amd64 ~/.local/bin/expert\nchmod +x ~/.local/bin/expert\n\n# Linux\ngh release download v0.1.0-rc.6 --pattern 'expert_linux_amd64' --repo elixir-lang/expert --dir /tmp\ncp /tmp/expert_linux_amd64 ~/.local/bin/expert\nchmod +x ~/.local/bin/expert\n```\n\n### Nightly builds\n\n```bash\ngh release download nightly --pattern 'expert_darwin_arm64' --repo elixir-lang/expert --dir /tmp\ncp /tmp/expert_darwin_arm64 ~/.local/bin/expert\nchmod +x ~/.local/bin/expert\n```\n\n### Verify installation\n\n```bash\nexpert --version\n# Should output: 0.1.0-rc.6 (or newer)\n```\n\nMake sure `~/.local/bin` is in your `$PATH`. Add this to your `~/.zshrc` if needed:\n\n```bash\nexport PATH=\"$HOME/.local/bin:$PATH\"\n```\n\n## Supported file types\n\n| Extension | Language ID |\n|-----------|------------|\n| `.ex`     | elixir       |\n| `.exs`    | elixir       |\n| `.heex`   | phoenix-heex |\n| `.leex`   | elixir       |\n\n## How it works\n\nThis plugin provides an `.lsp.json` configuration that tells Claude Code how to connect to Expert via stdio transport. Expert runs as a subprocess spawned by Claude Code, analyzing your project files and providing real-time diagnostics and navigation.\n\nWhen you edit an Elixir file, Expert analyzes the changes and pushes diagnostics back to Claude Code. Claude sees type errors, missing imports, and compilation warnings immediately and can fix them in the same turn — without you running `mix compile` manually.\n\n## Expert LSP vs ElixirLS\n\nExpert is the [official unified Elixir language server](https://elixir-lang.org/blog/2024/08/15/welcome-elixir-language-server-team/), created by the Elixir core team by merging the three previous implementations (ElixirLS, Lexical, Next LS). It's built on the Lexical codebase with Next LS components for single-binary releases and protocol abstraction.\n\nExpert is currently in release candidate status (v0.1.0-rc.6 as of March 2026). If you encounter issues, you can fall back to the `elixir-ls-lsp` plugin which uses the legacy ElixirLS server:\n\n```bash\nclaude plugin disable elixir-expert-lsp\nclaude plugin enable elixir-ls-lsp@claude-plugins-official\n```\n\n## Configuration\n\nThe plugin uses sensible defaults:\n- Transport: stdio (`expert --stdio`)\n- Auto-restart on crash: up to 3 times\n- Startup timeout: 60 seconds (accommodates first-run engine build)\n- Shutdown timeout: 5 seconds\n\n## Troubleshooting\n\n**\"Executable not found in $PATH\"**: Install Expert using the instructions above and ensure `~/.local/bin` is in your PATH. Verify with `expert --version`.\n\n**No diagnostics appearing**: Expert needs to build its engine on first run (~30s). Check the log at `.expert/expert.log` in your project directory for progress. Look for \"Engine initialized\" to confirm it's ready.\n\n**Plugin not loading**: Run `/plugin` in Claude Code and check the Errors tab. If Expert crashes on startup, try the nightly build which may have fixes:\n```bash\ngh release download nightly --pattern 'expert_darwin_arm64' --repo elixir-lang/expert --dir /tmp\ncp /tmp/expert_darwin_arm64 ~/.local/bin/expert && chmod +x ~/.local/bin/expert\n```\n\n**Conflicts with elixir-ls-lsp**: Disable one before enabling the other. Both configure an LSP for `.ex` files and may conflict.\n\n**Reporting issues**: Include your `expert --version`, `elixir --version`, and the contents of `.expert/expert.log` from your project directory.\n\n## License\n\nMIT\n",
  "bytes": 6559,
  "sha": "38893a3f29863d2562044f8d5be7e113afbae866010a5f86bdbb5455dfc387d8",
  "repo_slug": "chrisohalloran/elixir-expert-lsp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_chrisohalloran_elixir_expert_lsp_elixir__2838f835/readme"
}