Usage Rules Cheatsheet
View SourceQuick reference for managing and using usage rules in Claude projects
Core Commands
Sync Usage Rules to CLAUDE.md
# Sync all usage rules from dependencies
mix claude.install
# This embeds usage rules between markers in CLAUDE.md
# Rules are pulled from deps/*/usage-rules.md files
Including in Subagents
In .claude.exs
%{
  subagents: [
    %{
      name: "database-expert",
      description: "For database and Ecto work",
      prompt: "You are a database specialist...",
      # Include specific usage rules
      usage_rules: ["ash", "ash_postgres", "ecto"]
    },
    %{
      name: "phoenix-specialist", 
      description: "For Phoenix web development",
      prompt: "You are a Phoenix expert...",
      # Multiple usage rules
      usage_rules: ["phoenix", "ash_phoenix", "phoenix_live_view"]
    }
  ]
}Available Usage Rule Keys
# Core Elixir
"usage_rules:elixir"  # Elixir patterns and conventions
"usage_rules:otp"     # OTP/GenServer patterns
# Common packages (if installed)
"ash"                 # Ash framework
"ash_phoenix"         # Ash Phoenix integration  
"ash_postgres"        # PostgreSQL data layer
"igniter"            # Code generation
"ecto"               # Database wrapper
"phoenix"            # Web framework
"phoenix_live_view"  # LiveViewHow It Works
1. Dependencies Provide Rules
deps/
  ash/
    usage-rules.md      # Ash framework rules
  ash_phoenix/
    usage-rules.md      # Phoenix integration rules
  igniter/
    usage-rules.md      # Code generation rules2. Mix Task Syncs to CLAUDE.md
mix claude.install
# Reads deps/*/usage-rules.md
# Updates CLAUDE.md between markers
# Preserves custom content outside markers
3. Subagents Get Targeted Rules
# Only specified rules are included
usage_rules: ["ash", "ecto"]  
# Rules embedded in agent's system prompt
# Agent sees only relevant framework docsNested Memories
Distribute CLAUDE.md Files Across Directories
# In .claude.exs
%{
  nested_memories: %{
    "lib/my_app_web" => ["phoenix", "ash_phoenix"],
    "lib/my_app/accounts" => ["ash"]
  }
}Creates Context-Specific Files
lib/my_app_web/CLAUDE.md      # Phoenix and Ash Phoenix rules
lib/my_app/accounts/CLAUDE.md  # Ash framework rulesBenefits
- Context-aware guidance per directory
 - Reduced cognitive load for Claude
 - Better organization of domain rules
 
CLAUDE.md Structure
Auto-Generated Section
<!-- usage-rules-start -->
<!-- usage-rules-header -->
# Usage Rules
**IMPORTANT**: Consult these usage rules...
<!-- usage-rules-header-end -->
<!-- package-start -->
## package usage
[package usage rules](deps/package/usage-rules.md)
<!-- package-end -->
<!-- usage-rules-end -->Manual Content (Preserved)
# Custom Instructions
Your custom content here...
<!-- usage-rules-start -->
[Auto-generated rules]
<!-- usage-rules-end -->
# More Custom Content
Additional instructions...Configuration Examples
Minimal Subagent
%{
  name: "formatter",
  description: "Format and style code",
  prompt: "Focus on code formatting",
  # No usage_rules - gets general Elixir rules only
}Framework-Specific Agent
%{
  name: "ash-resource-builder",
  description: "Create and modify Ash resources",
  prompt: "You are an Ash framework expert",
  usage_rules: ["ash", "ash_postgres", "ash_phoenix"]
}Multi-Framework Agent
%{
  name: "full-stack-developer",
  description: "Full-stack Elixir development",  
  prompt: "You handle all aspects of Elixir apps",
  usage_rules: [
    "ash",           # Resources
    "ash_phoenix",   # Web layer
    "ash_postgres",  # Database
    "phoenix",       # Framework
    "ecto",          # Queries
    "igniter"        # Generation
  ]
}Best Practices
Keep Rules Focused
# ✅ Good: Specific to task
usage_rules: ["phoenix", "phoenix_live_view"]
# ❌ Bad: Everything included  
usage_rules: ["ash", "ecto", "phoenix", "oban", "req", ...]Match Rules to Agent Purpose
# Testing agent → testing frameworks
usage_rules: ["ex_unit", "mimic", "mox"]
# API agent → HTTP and JSON libs
usage_rules: ["req", "jason", "phoenix"]
# Database agent → data layers
usage_rules: ["ecto", "ash_postgres"]Update After Adding Dependencies
# After adding new deps
mix deps.get
mix claude.install  # Syncs new usage rules
Troubleshooting
Rules not appearing in CLAUDE.md?
# Check if package has rules
ls deps/*/usage-rules.md
# Re-run sync
mix claude.install
Subagent not seeing rules?
# Verify in .claude.exs
usage_rules: ["package_name"]  # Exact package name
# Reinstall agents
mix claude.installCustom rules needed?
<!-- Add outside markers in CLAUDE.md -->
# Project-Specific Rules
Your custom rules here...
<!-- usage-rules-start -->
[Auto-managed section]
<!-- usage-rules-end -->