Sandbox
@georgeguimaraes/elixir-agent-tools

Elixir skills, checks, and LSP for Claude Code and Codex

This bundle adds five Elixir skills for language idioms, Phoenix, Ecto, OTP, and Oban. It also includes optional plugins that run Mix format, compile, and Credo checks after edits, plus an Expert LSP integration for code navigation and diagnostics.

169 stars15 forksShellUpdated 11d ago
The Soul of Erlang and Elixir • Sasa Juric • GOTO 2019
GOTO Conferences382k views • 7 years ago

Videos about this repo

Who it's for

Builders who use Claude Code or Codex on Elixir apps and want shared project guidance and automated checks.

What it delivers

You can keep Elixir agent work consistent while getting format, compile, and quality checks as you edit.

What it does

Five Elixir skills

Adds separate skills for `elixir`, `phoenix`, `ecto`, `otp`, and `oban`, each loaded when the task matches its domain.

Mix format hook

Runs `mix format` after edits to `.ex` and `.exs` files in the nearest Mix project.

Mix compile hook

Runs `mix compile --warnings-as-errors` after `.ex` edits and skips when a BEAM process is already running in the project.

Mix credo hook

Runs `mix credo` after `.ex` and `.exs` edits when the project has Credo installed.

Expert LSP bridge

Connects Claude Code to Expert for navigation and compiler diagnostics in `.ex`, `.exs`, `.heex`, and `.leex` files.

How to get it

  1. 1Add the marketplace and install the skills
    claude plugin marketplace add georgeguimaraes/elixir-agent-tools
    claude plugin install elixir-dev@elixir-agent-tools
  2. 2Install any optional tools you want
    claude plugin install mix-format@elixir-agent-tools
    claude plugin install mix-compile@elixir-agent-tools
    claude plugin install mix-credo@elixir-agent-tools
    claude plugin install elixir-lsp@elixir-agent-tools
  3. 3Register the marketplace from your terminal
    codex plugin marketplace add georgeguimaraes/elixir-agent-tools
  4. 4In Codex, open /plugins, select the Elixir Agent Tools marketplace, and install Elixir…
    codex plugin add elixir-dev@elixir-agent-tools
  5. 5Install any optional Mix checks you want
    codex plugin add mix-format@elixir-agent-tools
    codex plugin add mix-compile@elixir-agent-tools
    codex plugin add mix-credo@elixir-agent-tools
  6. 6To try unpublished changes from a local checkout, register that directory instead of the…
    codex plugin marketplace add /path/to/elixir-agent-tools
    codex plugin add elixir-dev@elixir-agent-tools

README

Elixir Agent Tools

Elixir development guidance for coding agents, with optional Mix checks and Expert language server integration.

Install the elixir-dev plugin for five skills covering language idioms, Phoenix interfaces, Ecto persistence, OTP processes, and Oban jobs. Add the tooling plugins when you want automatic checks or code navigation.

Choose your plugins

PluginWhat you getRequirements
elixir-devFive skills that load when relevant to a taskA harness with Agent Skills support
mix-formatRun mix format after edits to .ex and .exs filesClaude Code or Codex, Bash, Elixir/Mix, a Mix project
mix-compileCompile with --warnings-as-errors after edits to .ex filesClaude Code or Codex, Bash, Elixir/Mix, a Mix project
mix-credoRun Credo after edits to .ex and .exs filesClaude Code or Codex, Bash, Elixir/Mix, Credo in the project
elixir-lspCode navigation and diagnostics through ExpertClaude Code, Expert, Python 3

The skills are Markdown instructions and need no local Elixir installation to load. Running the project's code still requires its normal development environment. The Mix hooks support macOS and Linux, including WSL on Windows. They use Bash 3.2+, standard Unix tools, and the OS file-lock utility: lockf on macOS or flock on Linux/WSL. JSON parsing is bundled, so the Mix hooks need no jq, Python, uv, or newer Elixir version.

Installation

Claude Code

Add the marketplace and install the skills:

claude plugin marketplace add georgeguimaraes/elixir-agent-tools
claude plugin install elixir-dev@elixir-agent-tools

Install any optional tools you want:

claude plugin install mix-format@elixir-agent-tools
claude plugin install mix-compile@elixir-agent-tools
claude plugin install mix-credo@elixir-agent-tools
claude plugin install elixir-lsp@elixir-agent-tools

Both Claude Code and Codex use the marketplace ID elixir-agent-tools and the skills plugin name elixir-dev.

Codex plugin

Register the marketplace from your terminal:

codex plugin marketplace add georgeguimaraes/elixir-agent-tools

In Codex, open /plugins, select the Elixir Agent Tools marketplace, and install Elixir Development. You can also install directly from the terminal:

codex plugin add elixir-dev@elixir-agent-tools

Start a new session to use the five bundled skills. The Codex plugin contains the same skill files as the Claude Code plugin.

Install any optional Mix checks you want:

codex plugin add mix-format@elixir-agent-tools
codex plugin add mix-compile@elixir-agent-tools
codex plugin add mix-credo@elixir-agent-tools

Use /hooks in Codex to review and trust the installed hook commands. Codex requires hook trust separately from plugin installation. See the Codex hooks documentation. The Expert LSP plugin remains Claude Code only.

To try unpublished changes from a local checkout, register that directory instead of the GitHub repository:

codex plugin marketplace add /path/to/elixir-agent-tools
codex plugin add elixir-dev@elixir-agent-tools

Codex and other agents with npx skills

Use the Skills CLI to install all five skills into your current project for Codex:

npx skills add georgeguimaraes/elixir-agent-tools -a codex --skill '*'

Add -g to make them available across projects. To choose individual skills, replace --skill '*' with names such as --skill phoenix ecto. Use -a opencode for OpenCode or -a claude-code for a skills-only Claude Code installation.

To preview the available skills without installing:

npx skills add georgeguimaraes/elixir-agent-tools --list

This installs standalone skill files. Choose either this method or the native plugin to avoid duplicate skills. Install Mix hooks through the native Claude Code or Codex plugin commands above. The LSP plugin uses Claude Code's plugin installation.

Manual skills installation

Both Codex and OpenCode discover personal skills under ~/.agents/skills. Clone this repository into a persistent location and link each skill:

git clone https://github.com/georgeguimaraes/elixir-agent-tools.git "$HOME/.local/share/elixir-agent-tools"
mkdir -p "$HOME/.agents/skills"
for skill in elixir phoenix ecto otp oban; do
  ln -s "$HOME/.local/share/elixir-agent-tools/plugins/elixir-dev/skills/$skill" "$HOME/.agents/skills/$skill"
done

If a destination already exists, inspect it before replacing it. Start a new session after installation. Updating the clone updates the linked skills.

For other harnesses with Agent Skills support, install the individual folders from plugins/elixir-dev/skills/ in that harness's skill directory. Mix hooks are packaged for Claude Code and Codex. Other harnesses need an adapter for their edit events.

Elixir skills

Each skill has its own discovery description. The agent can load several skills for a task that crosses domains, such as a LiveView form backed by an Ecto changeset. There is no startup hook or mandatory routing skill.

SkillScopeExample request
elixirFunctions, modules, data structures, pattern matching, error handling"Refactor this nested case expression"
phoenixLiveView, components, HTTP endpoints, Plug, channels, PubSub"Keep this LiveView filter in sync with the URL"
ectoSchemas, changesets, queries, transactions, migrations, data access"Fix the N+1 queries on this page"
otpProcesses, supervision, runtime concurrency, ETS, Broadway"Find the bottleneck in this GenServer"
obanDurable jobs, retries, scheduling, uniqueness, Oban Pro workflows"Send these emails in a job that retries failures"

OTP covers work and state managed by running processes. Oban covers jobs that need persistence, retry policies, or scheduling. Phoenix owns interface behavior, while Ecto owns the persistence behind it.

Upgrading to elixir-dev 3.0

Skill names now use their domain directly: elixir, phoenix, ecto, otp, and oban. Remove the -thinking suffix from explicit skill references in your prompts and agent instructions. The using-elixir-skills router and its startup hook have been removed.

The plugin is now named elixir-dev and the marketplace is elixir-agent-tools. If you installed from the old Claude Code marketplace, uninstall the plugins you used from claude-code-elixir, remove that marketplace, and add georgeguimaraes/elixir-agent-tools. Reinstall your chosen plugins with the new marketplace ID using the installation commands above. The old elixir plugin is replaced by elixir-dev.

Update any explicit plugin-qualified skill references to use the new bundle name.

If you installed skills manually, replace your old skill links or copies with the renamed folders under plugins/elixir-dev/skills/.

Sources

The skills draw on Elixir and Erlang documentation, framework guides, and talks about application design:

Optional tools

The three Mix plugins share a Bash runner and a bundled JSON.sh parser. They handle Claude Code's Edit, MultiEdit, and Write events and Codex's apply_patch events, including patches spanning multiple files or projects. Shell commands that write files do not trigger these edit hooks.

Checks run synchronously and return failures as context to the agent. The plugins serialize their Mix commands per project, but hook execution order is not guaranteed. Formatting is not guaranteed to finish before compilation or Credo starts. Hooks have bounded waits and report timeouts. Mix plugins 2.0 replace the old single-file scripts and asynchronous Credo hook.

mix-format

Runs mix format on surviving edited .ex and .exs files, using the nearest parent mix.exs to locate each project. Reports formatting failures.

mix-compile

Runs mix compile --warnings-as-errors once per affected Mix project after editing an .ex file. Deletions and both sides of a move also trigger compilation. Reports compiler warnings and errors. Edits to .exs scripts and tests don't trigger compilation.

Skips compilation when lsof detects a BEAM process running from the project directory, to avoid competing with a running server or Mix task.

mix-credo

Runs mix credo for each surviving edited .ex or .exs file using the project's Credo configuration. Reports code quality issues and skips the check if the Credo task isn't installed. Dependency and project failures remain visible.

elixir-lsp

Connects Claude Code to Expert for navigation and compiler diagnostics in .ex, .exs, .heex, and .leex files.

Install the expert binary using the Expert installation guide and make sure it's on your PATH. The bundled wrapper also requires Python 3.

The wrapper works around Claude Code's handling of server-initiated LSP requests, including client/registerCapability (upstream issue). See expert-wrapper for the implementation.

Developing the hooks

Edit the canonical runner and parser helpers under scripts/mix-hooks/, then run bash scripts/sync-mix-hooks.sh to bundle them into the three independently installable plugins. The bundled JSON.sh source and its MIT license live under vendor/ in each copy.

Run bash test/verify-plugins.sh to check package structure and bundle consistency. Run uv run --no-project python test/test-mix-hooks.py for behavioral tests with isolated plugin installations and fake Mix commands. Python is used only by development checks, not the Mix hooks.

License

Copyright (c) 2025 George Guimarães

Licensed under the Apache License, Version 2.0. See LICENSE.

Files in the repo

Repository payload8 top-level entries
  • .agents
  • .claude-plugin
  • plugins
  • scripts
  • test
  • .gitignore
  • LICENSE
  • README.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More plugins

Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

138k
1 add

Graphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.

82k
code-yeongyu/
oh-my-openagent

OmO: Just type "mass ulw" keyword with your prompt. Now you are the master of graph engineering.

69k

Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More

94k

Opinionated Oxlint rules for rejecting low-evidence TypeScript and JavaScript patterns

4.3k