BeClaude

elixir

New
158Community RegistryDevelopmentby George Guimaraes

Thinking skills for Elixir, Phoenix, Ecto, OTP, and Oban patterns

Community PluginView Source

Overview

Claude Code plugins for Elixir development.

Installation

bash
claude plugin marketplace add georgeguimaraes/claude-code-elixir

Install all plugins:

bash
claude plugin install elixir-lsp@claude-code-elixir && \
claude plugin install mix-format@claude-code-elixir && \
claude plugin install mix-compile@claude-code-elixir && \
claude plugin install mix-credo@claude-code-elixir && \
claude plugin install elixir@claude-code-elixir

Prerequisites

Install the expert binary and make sure it's on your PATH. See installation instructions.

Note: mix-format, mix-compile, and mix-credo require bash (Git Bash or WSL on Windows).


Plugins

Overview

PluginTypeDescription
elixir-lspLSPLanguage Server with completions, go-to-definition, diagnostics
mix-formatHookAuto-format .ex/.exs files on save
mix-compileHookCompile with --warnings-as-errors on save
mix-credoHookRun Credo code quality checks on save
elixirSkillsBEAM architecture, Phoenix, Ecto, OTP patterns

Tools

Elixir Language Server integration powered by Expert.

FeatureDescription
NavigationGo to definition, find references
CompletionsWith signature help and docs
DiagnosticsCompiler warnings and errors
File types.ex, .exs, .heex, .leex

Auto-runs mix format after editing .ex and .exs files.

Auto-runs mix compile --warnings-as-errors after editing .ex files.

  • Only .ex files (not .exs scripts/tests)
  • Finds mix.exs by walking up directories
  • Fails on warnings or errors

Auto-runs mix credo after editing .ex and .exs files to check code quality.

  • Runs on both .ex and .exs files
  • Uses project's default Credo configuration
  • Gracefully skips if Credo is not installed
  • Fails on code quality issues

Skills

Paradigm-shifting skills for Elixir, Phoenix, and OTP development. Includes a SessionStart hook that auto-suggests skills when working on Elixir code.

Included skills:

SkillUse When
elixir-thinkingDesigning modules, processes, data structures
phoenix-thinkingWorking with Phoenix, LiveView, PubSub
ecto-thinkingWorking with Ecto, contexts, schemas
otp-thinkingImplementing GenServers, supervisors, Tasks

Mental models for writing Elixir — how it differs from OOP.

ConceptInsight
Iron LawNO PROCESS WITHOUT A RUNTIME REASON
Three dimensionsBehavior, state, mutability are decoupled
ProcessesFor runtime (state/concurrency/faults), not code organization
"Let it crash"Means "let it heal" — supervisors restart
PolymorphismBehaviors → Protocols → Message passing (least to most dynamic)

<details> <summary>Sources</summary>

</details>

Architectural patterns for Phoenix and LiveView.

ConceptInsight
Where to load datamount/3 by default; handle_params/3 for live navigation (push_patch)
Initial double-loadmount and handle_params both run twice; use connected?/1, assign_async/3, or assign_new/3
Scopes (1.8+)Security-first authorization threading
PubSubScoped topics, broadcast_from to avoid self-broadcast
Channel fastlaneSocket state can be stale — re-fetch or include in broadcast

<details> <summary>Sources</summary>

</details>

Architectural patterns for Ecto and contexts.

ConceptInsight
ContextsBounded domains with their own "dialect"
Cross-context refsUse IDs, not belongs_to associations
SchemasMultiple changesets per schema, embedded_schema for forms
PreloadsSeparate vs join — pick based on data shape
pool_count vs pool_sizepool_count = DBConnection pools, pool_size = connections per pool

<details> <summary>Sources</summary>

</details>

OTP design patterns and when to use each abstraction.

ConceptInsight
Iron LawGENSERVER IS A BOTTLENECK BY DESIGN
ETSBypasses bottleneck — concurrent reads with :read_concurrency
Task.SupervisorTHE pattern for async work (not raw Task.async)
Registry + DynamicSupervisorNamed dynamic processes without atom leaks
Broadway vs ObanExternal queues vs background jobs — different problems

<details> <summary>Sources</summary>

</details>


Known Issues

elixir-lsp: `client/registerCapability` workaround. Claude Code's LSP client doesn't respond to client/registerCapability requests that Expert sends during initialization (anthropics/claude-code#32595). The plugin includes a Python wrapper (expert-wrapper) that intercepts these requests and auto-responds so Expert can initialize properly. The wrapper will be removed once the upstream fix lands. Requires Python 3 on PATH.

Troubleshooting

expert not found: Ensure the expert binary is on your PATH. See installation instructions.


License

Copyright (c) 2025 George Guimarães

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

Install & Usage

1
Create the skills directory
mkdir -p .claude/skills
2
Download the skill file
mkdir -p .claude/skills && curl -o .claude/skills/elixir.md https://raw.githubusercontent.com/georgeguimaraes/claude-code-elixir/main/SKILL.md
3
Invoke in Claude Code
/elixir
View source on GitHub
elixirphoenixectootpobanliveviewgenserver

Frequently Asked Questions

What is elixir?

Thinking skills for Elixir, Phoenix, Ecto, OTP, and Oban patterns

How to install elixir?

To install elixir, create the .claude/skills directory in your project, then run the curl command to download the skill file. Once installed, invoke it in Claude Code with /elixir.

What is elixir best for?

elixir is a community categorized under Development. It is designed for: elixir, phoenix, ecto, otp, oban, liveview, genserver. Created by George Guimaraes.