Hex.pm Hex Docs License

Help make Claude Code write production-ready Elixir, every time.

Claude, not to be confused with the Claude (probably should have picked a better name πŸ˜…), is an elixir library, batteries-included integration that helps ensure every line of code Claude writes is checked for proper formatting, compiles without warnings, and follows your project's conventionsβ€”automatically.

πŸš€ Quickstart

New to Claude? Our quickstart guide walks you through a complete setup with real examples.

Installation

# Install Claude
mix igniter.install claude

# That's it! Now Claude:
# βœ“ Checks if files need formatting after editing
# βœ“ Detects compilation errors immediately
# βœ“ Validates code before commits

The Problem

When Claude Code writes Elixir, you often need to:

  • Run mix format manually or prompt Claude to format the file
  • Discover compilation errors only when you run the code or tests

The Solution

This project hooks directly into Claude Code's workflow:

# When Claude writes this code with formatting and compilation issues:
defmodule MyModule do
  def process_user_data(user, _options) do
    {:ok, %{id: user.id, name: user.name, email: user.email, created_at: user.created_at, updated_at: user.updated_at, status: user.status, role: user.role}} # Line too long!
  end

  def calculate_total(items) do # Unused function!
    Enum.reduce(items, 0, fn item, acc -> acc + item.price * item.quantity end)
  end
end

# Claude immediately sees:
# ⚠️ File needs formatting (line too long)
# ❌ Compilation error: unused function `calculate_total/1`

Features

🎯 Smart Hooks

Automatically check formatting, catch compilation errors, validate commits, and more.

β†’ See Hooks Documentation for details and configuration.

πŸ€– Sub-agents

Create specialized AI assistants with built-in best practices from your dependencies.

β†’ See Sub-Agents Documentation for details and examples.

πŸ”Œ MCP Server Support

Integrate with Phoenix development tools via Tidewave. MCP servers are configured in .claude.exs and synced to .mcp.json when you run mix claude.install.

β†’ See MCP Servers Guide for details and configuration.

πŸ“š Best Practices

Usage rules from your dependencies are automatically synced to CLAUDE.md, ensuring Claude follows library-specific best practices.

β†’ See Usage Rules Guide for how Claude integrates with usage rules.

Installation

Requirements

Install via Igniter

mix igniter.install claude

This will:

  1. Add claude to your dependencies
  2. Generate .claude.exs configuration file
  3. Configure hooks in .claude/settings.json
  4. Generate sub-agents in .claude/agents/
  5. Sync usage rules to CLAUDE.md
  6. Create .mcp.json for MCP servers (if configured)

Configuration File

All Claude settings are managed through .claude.exs:

%{
  hooks: %{
    stop: [:compile, :format],
    post_tool_use: [:compile, :format]
  },
  mcp_servers: [:tidewave],  # For Phoenix projects
  subagents: [...]            # Specialized AI assistants
}

Run mix claude.install after updating to apply changes.

How It Works

This library leverages Claude Code's hook system to intercept file operations:

  1. Claude edits a file β†’ PostToolUse hook triggered
  2. Hook runs Mix tasks β†’ mix format --check-formatted, mix compile --warnings-as-errors
  3. Feedback provided β†’ Claude sees any issues and can fix them
  4. Process repeats β†’ Until the code is production-ready

This happens automatically, without interrupting Claude's workflow.

Documentation

Contributing

We welcome contributions!

# Run tests
mix test

# Format code
mix format

# Run quality checks
mix compile --warnings-as-errors

Support

Roadmap

βœ… Recently Added

Mix Task Generator

  • mix claude.gen.subagent - Interactive generator for new sub-agents with:
    • Name validation and formatting
    • Tool selection with warnings
    • Multi-line prompt support
    • Automatic .claude.exs integration

πŸš€ Coming Soon

Custom Slash Commands

  • /create-subagent - Generate a new sub-agent with guided prompts (wraps mix task)
  • Auto-generate commands in .claude/commands/ during installation

Scoped CLAUDE.md's

  • Directory-specific instructions (e.g., *_web/CLAUDE.md for Phoenix)

More MCP Servers

  • Database tools (PostgreSQL, MySQL, Redis)
  • Testing and documentation servers
  • Auto-configuration based on project dependencies

Dynamic Sub-agents

  • Generate sub-agents for each dependency with context automatically
  • Common workflow templates (LiveView, GraphQL, Testing)

Want to contribute? Open an issue on GitHub!

License

MIT - see LICENSE for details.


Made with ❀️ by the Elixir community