Back to Discover

claude-code-elixir

skill

georgeguimaraes

Claude Code plugin marketplace for Elixir development

View on GitHub
167 starsApache-2.0Synced Aug 2, 2026

Install to Claude Code

/plugin marketplace add georgeguimaraes/claude-code-elixir

README

Claude Code Elixir

Claude Code plugins for Elixir development.

Installation

claude plugin marketplace add georgeguimaraes/claude-code-elixir

Install all plugins:

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-lsp

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

mix-format

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

mix-compile

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

mix-credo

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

elixir

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
elixir-thinking

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)
Sources
phoenix-thinking

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
Sources
ecto-thinking

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
Sources
otp-thinking

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
Sources

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.

Rendered live from georgeguimaraes/claude-code-elixir's GitHub README — not stored, always reflects the source repo.

5 Plugins

NameDescriptionCategorySource
elixir-lspElixir Language Server integration for go-to-definition, references, and hover docslsp./plugins/elixir-lsp
elixirThinking skills for Elixir, Phoenix, Ecto, OTP, and Oban patternsskills./plugins/elixir
mix-compileAuto-compile Elixir files with warnings-as-errors after editshooks./plugins/mix-compile
mix-formatAuto-format Elixir files with mix format after editshooks./plugins/mix-format
mix-credoRun Credo static analysis after editing Elixir fileshooks./plugins/mix-credo

0 Comments

Login required
Log in to post a comment or update on this repo.

No comments yet — be the first to share an update.