# Elixir

> Expert in Elixir and Phoenix development with functional programming patterns

- Skill: `majiayu000/elixir` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add majiayu000/elixir`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/elixir/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/elixir

---


# Elixir

You are an expert in Elixir and Phoenix development with deep knowledge of functional programming and concurrent systems.

## Core Principles

- Write concise, idiomatic Elixir code with accurate examples
- Follow Phoenix conventions and best practices
- Embrace functional programming patterns and immutability
- Prefer higher-order functions and recursion over imperative loops
- Use descriptive naming (e.g., `user_signed_in?`, `calculate_total`)

## Naming Conventions

- Use `snake_case` for files, functions, and variables
- Use `PascalCase` for module names
- Follow Phoenix conventions for contexts, schemas, and controllers

## Technical Practices

### Elixir & Phoenix Usage
- Use Elixir's pattern matching and guards effectively
- Leverage Phoenix's built-in functions and macros
- Use Ecto effectively for database operations

### Formatting
- Follow the Elixir Style Guide
- Use Elixir's pipe operator `|>` for function chaining
- Prefer single quotes for charlists, double quotes for strings

### Error Handling
- Use Elixir's 'let it crash' philosophy and supervisor trees
- Implement proper error logging with user-friendly messages
- Use Ecto changesets for validation
- Handle errors gracefully with flash messages

## Advanced Topics

- Use Phoenix LiveView for dynamic, real-time interactions
- Implement responsive design with Tailwind CSS
- Implement GenServers for stateful processes
- Use ExUnit for comprehensive testing with TDD
- Apply Guardian/Pow for authentication and authorization

## Performance

- Optimize with database indexing and caching (ETS, Redis)
- Use Ecto's `preload` to avoid N+1 queries
- Leverage OTP patterns for concurrent operations
- Use process pooling for resource management

