Claude-elixir-phoenix phx:init
Initialize plugin in a project — install Iron Laws, auto-activation rules, and reference auto-loading into CLAUDE.md. Use when setting up or updating the plugin.
install
source · Clone the upstream repo
git clone https://github.com/oliver-kriska/claude-elixir-phoenix
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/oliver-kriska/claude-elixir-phoenix "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/elixir-phoenix/skills/init" ~/.claude/skills/oliver-kriska-claude-elixir-phoenix-phx-init && rm -rf "$T"
manifest:
plugins/elixir-phoenix/skills/init/SKILL.mdsource content
Plugin Initialization
Install the Elixir/Phoenix plugin's behavioral instructions into the project's CLAUDE.md.
Usage
/phx:init # First-time installation /phx:init --update # Update existing installation with latest rules
Iron Laws
- NEVER overwrite content outside plugin markers — User-written CLAUDE.md rules must be preserved verbatim
- Always detect stack before generating — Never assume Phoenix/Ecto versions
- Always validate after installation — Verify markers present and stack correct
Workflow
Step 1: Check Existing CLAUDE.md
Use Glob to check if
CLAUDE.md exists. Then use Grep to check for existing ELIXIR-PHOENIX-PLUGIN:START marker in CLAUDE.md.
Step 2: Detect Project Stack
Scan the project to customize the injected instructions:
Read
mix.exs and use Grep to extract:
- Phoenix version: search for
inphoenix.*"~>mix.exs - Ecto version: search for
inecto.*"~>mix.exs - Oban: search for
and"oban"
in"oban_pro"mix.exs - Frameworks: search for
,"ash"
in"surface"mix.exs - Tidewave: search for
in"tidewave"mix.exs - Project size: use Glob to count
fileslib/**/*.ex
Step 3: Handle Installation Modes
Mode A: Fresh Install (no CLAUDE.md or no markers)
- Create/append to CLAUDE.md
- Insert full behavioral instructions between markers
- Include only relevant sections based on detected stack
Mode B: Update (
--update flag or markers exist)
- Find content between
and<!-- ELIXIR-PHOENIX-PLUGIN:START --><!-- ELIXIR-PHOENIX-PLUGIN:END --> - Replace with latest behavioral instructions
- Preserve everything outside the markers
CRITICAL: NEVER overwrite or delete existing CLAUDE.md content outside the plugin markers — user-written rules, project conventions, and other plugin sections must be preserved verbatim
Step 4: Generate Content
Write the following structure to CLAUDE.md:
<!-- ELIXIR-PHOENIX-PLUGIN:START --> <!-- Last updated: {date} | Plugin version: 1.0 | Stack: Phoenix {version}, Ecto {version}, {optional: Oban, Tidewave} --> # Elixir/Phoenix Plugin - Auto-Activation Rules {Include all sections from the Content Template below, filtered by detected stack} <!-- ELIXIR-PHOENIX-PLUGIN:END -->
Step 5: Output Summary
✅ Elixir/Phoenix plugin initialized Detected stack: - Phoenix {version} - Ecto {version} - {Oban standard | Oban Pro | not detected} - {Tidewave ✓ | Tidewave not detected} - {Ash Framework detected - Ecto patterns disabled | not detected} Added to CLAUDE.md: - Auto-activation rules (complexity detection, interview mode) - Agent trigger patterns ({n} agents available) - Reference auto-loading ({n} reference docs) - Iron Laws enforcement ({n} laws) - Verification rules Run /phx:init --update after plugin updates. Run /phx:audit for a full project health check.
Content Template
The exact content to inject is in
${CLAUDE_SKILL_DIR}/references/injectable-template.md.
Key structure:
- 7-Step Mandatory Procedure — Claude Code MUST execute before every response
- Iron Laws — STOP behavior on violations
- Conditional Sections — Include based on detected stack:
— If Oban detected (not Pro){OBAN_SECTION}
— If Oban Pro detected{OBAN_PRO_SECTION}
— If Ash Framework detected{ASH_SECTION}
— If Tidewave detected{TIDEWAVE_SECTION}
- Verification — Mandatory after code changes
- Quick Reference — Skill routing table
Placeholder substitution:
| Placeholder | Source |
|---|---|
| Current date |
| From mix.exs |
| From mix.exs |
| Detected optional deps |
See
${CLAUDE_SKILL_DIR}/references/injectable-template.md for full template with all placeholders and conditional sections.
Validation
After running
/phx:init:
- Check CLAUDE.md contains markers
- Verify detected stack matches actual project
- New session should:
- Auto-detect complexity when given tasks
- Stop on Iron Law violations
- Offer relevant workflows based on task
Error Handling
| Scenario | Action |
|---|---|
| CLAUDE.md read-only | Error: "Cannot modify CLAUDE.md - check permissions" |
| Markers corrupted | Warn, offer to remove and reinstall |
| Unknown Phoenix version | Use conservative defaults (all features enabled) |
| Not an Elixir project | Error: "No mix.exs found - is this an Elixir project?" |
Relationship to Other Commands
| Command | When to Use |
|---|---|
| First time, or after plugin updates |
| Periodic project health check |
| After code changes |