bnadlerjr/dotfiles/developing-elixir
Claude Code and agent skill by bnadlerjr/dotfiles
- community
Checking that the SKILL.md file is still in the repository.
Comprehensive Elixir/Phoenix development expertise covering Phoenix controllers, routing, channels; LiveView components and real-time features; Ecto schemas, queries, migrations; OTP patterns (GenServer, Supervisor); functional domain modeling; and GraphQL with Absinthe. Use when working with .ex/.exs files, mix projects, Phoenix applications, or when the user mentions Elixir, Phoenix, Ecto, LiveView, OTP, GenServer, Supervisor, or Absinthe. Also use for defmodule, mix.exs, umbrella apps, or iex sessions.
Install
npx vskill@latest install bnadlerjr/dotfiles/developing-elixirSKILL.md
Developing Elixir
Expert guidance for building robust, scalable Elixir/Phoenix applications.
Quick Start
For immediate help, identify your task type and consult the relevant reference:
| Working On | Reference File | Key Topics | |
|---|---|---|---|
| Controllers, routing, plugs, channels | phoenix-framework | MVC patterns, authentication, WebSockets | |
| LiveView components, forms | liveview | Real-time UI, hooks, streams | |
| Schemas, queries, migrations | ecto-database | Associations, changesets, transactions | |
| Safe migrations, schema changes | safe-ecto-migrations | Concurrent indexes, zero-downtime DDL | |
| GenServer, Supervisor, processes | otp-patterns | Fault tolerance, state management | |
| Domain modeling, layering, value objects | functional-modeling | Layers, parse-don't-validate, DDD | |
| GraphQL schemas, resolvers | graphql-absinthe | Subscriptions, dataloader | |
| ExUnit tests, TDD workflow | testing-elixir skill | Delegated — ExUnit, assertions, Ecto sandbox, Phoenix test helpers |
Cross-Cutting Principles
These principles apply across all Elixir development:
Functional-First Approach
- Prefer pure functions over stateful processes
- Use explicit state passing through function parameters
- Only introduce OTP patterns when tests require them
- Push side effects to the Lifecycle and Workers layers
Progressive Abstraction
- Start with primitives and maps
- Introduce structs when structure is genuinely needed
- Add type specs when interfaces stabilize
- Extract domain modules when concepts are proven
Parse, Don't Validate
- Transform unstructured data into guaranteed-valid types at the Boundary layer
- Once data is parsed, it's always valid throughout the system
- Prefer constructors that return
{:ok, value} | {:error, reason}at that layer.
Constructors below it take already-parsed values and stay total.
Error Handling Philosophy
- Tagged tuples belong where a question can be answered "no", which is the Boundary
layer. Pure computation below it returns plain values. See functional-modeling.
- Implement proper error types for domain-specific errors
- Never expose internal implementation details in errors
Examples
Creating a Phoenix context with Ecto:
Implementing real-time updates:
Refactoring to proper domain model:
Adding background job processing:
Writing a database migration:
Anti-Patterns to Avoid
Premature OTP
- GenServer for data that could be function arguments
- Supervisors for processes that don't need restart strategies
- ETS tables for small, static datasets
- Message passing when direct function calls suffice
Premature Abstraction
- Creating types for single-use values
- Building generic solutions for specific problems
- Introducing abstractions without duplication
- Modeling future requirements
Reference File IDs
For programmatic access (e.g., parallel reviews), use these identifiers:
phoenix-framework · liveview · ecto-database · safe-ecto-migrations · otp-patterns · functional-modeling · graphql-absinthe
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingclaude/skills/developing-elixir/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/bnadlerjr/dotfiles/developing-elixir)