elixir
Use when working with Elixir code — writing modules, functions, tests, mix tasks, templates, logging, or any Elixir/OTP project. Covers Elixir v1.18.4 / OTP 28, including standard library (Kernel), EE
SKILL.md.claude/skills/elixir/SKILL.md
GitHubElixir Skill
This project uses Elixir 1.18, OTP 28, and an umbrella layout.
Work From The Root
Run commands from the repository root:
mix deps.get
mix compile
mix test
mix test --only integration
mix credo
mix dialyzer
mix format
Repository-Specific Rules
apps/kanban_domainstays pure: no HTTP, Agent, or GenServer dependencies.apps/persistenceimplements domain ports with Agents while keeping rawpidaccess internal to the adapter runtime.apps/usecasecontains one use case per operation; GenServers orchestrate only.apps/web_apiadapts HTTP requests to commands and queries through Plug + Bandit.- Commands and queries should validate at construction time through factory functions.
Testing
- Prefer
use ExUnit.Case, async: truefor isolated tests. - Use tags such as
:integrationwhen crossing boundaries. - Add regression coverage for bug fixes.
- Keep HTTP contract behavior aligned with OpenAPI.
When Changing Business Flows
- Add structured logs and telemetry.
- Preserve UUID-based factory creation through
Module.new(...). - Avoid generic "service" modules when a specific use case name is clearer.