Elixir Reviewer
Expert Elixir/Phoenix code reviewer - idioms, patterns, performance, conventions. Use proactively after writing Elixir code.
- Type
- Subagent
- Repository
- oliver-kriska/claude-elixir-phoenix
- GitHub stars
- 556
- License
- MIT
- Repo last updated
- Sep 25, 2026
- Source file
- plugins/elixir-phoenix/agents/elixir-reviewer.md
- Model
- sonnet
What Elixir Reviewer is
Elixir Reviewer is a subagent published in the oliver-kriska/claude-elixir-phoenix repository on GitHub, which has about 556 stars. The repository describes itself as: “Claude Code plugin for Elixir/Phoenix/LiveView — 26 specialist agents, Iron Laws enforcement, and Tidewave MCP integration. Plan features with parallel research agents, execute with automatic verification, review with 4-agent parallel audits, and capture learnings as reusable knowledge.”
A subagent is a specialist assistant that Claude can hand part of a task to. It is a markdown file whose frontmatter sets a name, a description that tells Claude when to delegate, and optionally the tools and model it may use; the body becomes the subagent's own system prompt.
Because a subagent works in its own context, it keeps the main conversation focused: Claude can send a narrow job, such as a review or a specialised analysis, to Elixir Reviewer and get back a compact result.
It is set up to use these tools: Read, Grep, Glob, Write. Limiting tools is a good sign: the subagent can only do what those tools allow.
How to install Elixir Reviewer
Claude Code
- Download elixir-reviewer.md from the repository.
- Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control.
- Claude Code watches these folders, so the subagent is usually available right away. Ask Claude to use it by name, or @-mention it to make sure it runs.
Claude Cowork
- Cowork loads subagents through plugins. If the repository is packaged as a plugin marketplace, add it under Customize → Plugins → Add marketplace and install the plugin that contains this subagent.
- Otherwise, bundle the file into your own plugin's agents/ folder and upload it from Customize → Plugins.
New to extending Cowork? Our plugins guide and Customize guide explain how skills, plugins, and connectors fit together.
Inside the source file
An excerpt from plugins/elixir-phoenix/agents/elixir-reviewer.md, shared under the repository's MIT license. Read the full file on GitHub.
You are a strict Elixir/Phoenix code reviewer focused on idiomatic code, simplicity, and Phoenix conventions.
CRITICAL: Save Findings File First
Your orchestrator reads findings from the exact file path given in the prompt (e.g., .claude/plans/{slug}/reviews/elixir.md). The file IS the real output — your chat response body should be ≤300 words.
Turn budget rules:
- First ~10 turns: Read/Grep analysis. Scope reads to the diff — when a changed-files list or diff is provided, read only those files; for large files read targeted ranges around the changed lines (Read with offset), never whole 1000+ line files.
- By turn ~12: call Write with whatever findings you have — do NOT wait until the end. A partial file is better than no file when turns run out.
- Remaining turns: continue analysis and Write again to overwrite with the complete version.
- If the prompt does NOT include an output path, default to .claude/reviews/elixir.md.
You have Write for your own report ONLY. Edit and NotebookEdit are disallowed — you cannot modify source code, which upholds Review Iron Law #1.
Critical Rule: Verify Before Claiming
NEVER claim how a library/framework feature works without checking source or docs first. Read deps/{lib}/lib/ or use Tidewave get_docs before flagging behavior. Incorrect claims inject wrong code and waste user time correcting. If unsure about internal behavior, prefix with "UNVERIFIED:" so orchestrator can validate.
Known False-Positive Traps
- nil[:key] / nil["key"] is nil-safe (Access protocol returns nil) — a style note at most, never a crash finding. Map.get(nil, _) DOES raise.
Failure-Path Review (bugs lint misses)
For every changed function, also trace:
- Ecto.Multi / with failure paths — does the error branch leave data consistent? What about side effects already executed before the failure?
- Short-circuit paths — does the unhappy path skip a required side effect (audit log, notification, counter)?
- Multi-step transforms — re-verify type/shape assumptions at each hop, not just at the changed line
- Soft-delete filters — queries consistently include/exclude deleted_at-style rows
Review Philosophy
Core principles:
- Simple is better than clever
- Explicit is better than implicit
- Pattern matching over conditionals
- Let it crash (proper supervision)
- Small functions, clear names
Review Process
IMPORTANT: You do NOT have Bash access. Use Read, Grep, and Glob tools ONLY. Static analysis (format, compile, credo, dialyzer) is handled by the verification-runner agent.
- Read changed files using Read tool
- Review for patterns (see checklist below)
- Check for anti-patterns using Grep tool for known patterns
- Verify test coverage by checking test files exist for changed modules
Review Checklist
Elixir Idioms
- Using pipe operator correctly (data flows left to right)
- Pattern matching in function heads (not if/case inside)
- Guards over conditionals where possible
- with for happy-path chaining
- Proper use of @doc and @spec
Phoenix Conventions
- Business logic in contexts, not controllers/LiveViews
- Controllers thin (delegate to contexts)
- Changesets for all data transformations
- Using Phoenix generators patterns
- Routes follow RESTful conventions
Ecto Patterns
- Queries in context modules, not scattered
- Using Repo.preload not N+1 queries
- Changesets have proper validations
- Migrations are reversible
- Indexes for common queries
LiveView Patterns
- Mount is non-blocking
- Using streams for lists
- Function components where possible
- Events named as verbs
- No business logic in handle_event
Error Handling
- Using tagged tuples {:ok, result} / {:error, reason}
Before you install
- Read the whole file first. Skills, commands, and subagents are instructions Claude will follow, so make sure they match what you want.
- Check which tools, scripts, or MCP servers it uses. Local servers and scripts run with your permissions.
- Try it in a test project or a copy of your files before pointing it at real work.
- Pin the version you tested, and review changes before updating.
- Watch for instructions that fetch web content or run shell commands; those are where prompt injection risks start. See our prompt injection guide.
FAQ
What is Elixir Reviewer?
Elixir Reviewer is a subagent for Claude Code and Claude Cowork from the oliver-kriska/claude-elixir-phoenix repository on GitHub. Expert Elixir/Phoenix code reviewer - idioms, patterns, performance, conventions. Use proactively after writing Elixir code.
How do I install Elixir Reviewer in Claude Code?
Download elixir-reviewer.md from the repository. Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control. Claude Code watches these folders, so the subagent is usually available right away. Ask Claude to use it by name, or @-mention it to make sure it runs.
Can I use Elixir Reviewer in Claude Cowork?
Cowork loads subagents through plugins. If the repository is packaged as a plugin marketplace, add it under Customize → Plugins → Add marketplace and install the plugin that contains this subagent. Otherwise, bundle the file into your own plugin's agents/ folder and upload it from Customize → Plugins.
Is Elixir Reviewer safe to install?
It is a third-party community resource, not reviewed by Anthropic or this site. Read the source file first, check which tools and connectors it uses, and install only from sources you trust.
Similar resources
- Catchup Runner Does the catch-up fan-out, impact analysis, and brief assembly for /catchup on Sonnet (cheaper/faster than the caller's session). Spawned by the /catchup and /ketchup skills with a pre-resolved time window. Not user-invoked directly. Subagent · oliver-kriska/claude-elixir-phoenix
- Deployment Validator Deployment configuration validator - releases, Docker, Kubernetes, Fly.io. Use proactively before deploying to production. Subagent · oliver-kriska/claude-elixir-phoenix
- Ecto Schema Designer Ecto schema architect - designs migrations, data models, and query patterns. Use proactively when planning database structure for new features. Subagent · oliver-kriska/claude-elixir-phoenix
- Deep Bug Investigator Deep bug investigation using 4 parallel subagents (reproduction, root cause, impact, fix strategy). Use when bug is complex, can't be reproduced locally, or needs thorough analysis. Spawns fresh-context subagents for each investigation track. Subagent · oliver-kriska/claude-elixir-phoenix
- Hex Deps Triager Triage Hex supply-chain audit findings in Elixir/Phoenix — review diff windows and metadata to produce structured security verdicts. Use after /phx:deps-audit. Subagent · oliver-kriska/claude-elixir-phoenix
- Hex Library Researcher Researches Elixir libraries on hex.pm. Use when evaluating libraries for a feature, checking alternatives, or verifying library quality and compatibility. Subagent · oliver-kriska/claude-elixir-phoenix
- Iron Law Judge Checks code for Iron Law violations using pattern analysis. Use proactively after code changes or as part of review. Subagent · oliver-kriska/claude-elixir-phoenix
- Liveview Architect LiveView architecture specialist - component structure, real-time patterns, streams vs assigns, async patterns. Use proactively when planning interactive features. Subagent · oliver-kriska/claude-elixir-phoenix