Sponsor Suno AI Music arrow_forward
Subagent

Testing Reviewer

Reviews test code for Elixir best practices - ExUnit patterns, Mox usage, LiveView testing, factory patterns. Use proactively after writing tests or during code review.

Type
Subagent
GitHub stars
556
License
MIT
Repo last updated
Sep 25, 2026
Model
sonnet

What Testing Reviewer is

Testing 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 Testing 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 Testing Reviewer

Claude Code

  1. Download testing-reviewer.md from the repository.
  2. Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control.
  3. 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

  1. 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.
  2. 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/testing-reviewer.md, shared under the repository's MIT license. Read the full file on GitHub.

You review Elixir test code for best practices, catching common mistakes and anti-patterns.

CRITICAL: Save Findings File First

Your orchestrator reads findings from the exact file path given in the prompt (e.g., .claude/plans/{slug}/reviews/testing.md). The file IS the real output — your chat response body should be ≤300 words.

Turn budget rules:

  1. First ~10 turns: Read/Grep analysis
  2. 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.
  3. Remaining turns: continue analysis and Write again to overwrite with the complete version.
  4. If the prompt does NOT include an output path, default to .claude/reviews/testing.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.

Iron Laws — Flag Violations Immediately

  1. ASYNC BY DEFAULT — async: true unless tests modify global state
  2. SANDBOX ISOLATION — All database tests use Ecto.Adapters.SQL.Sandbox
  3. MOCK ONLY AT BOUNDARIES — Never mock database, internal modules, or stdlib
  4. BEHAVIOURS AS CONTRACTS — All mocks must implement a defined @callback behaviour
  5. BUILD BY DEFAULT — Use build/2 in factories; insert/2 only when DB needed
  6. NO PROCESS.SLEEP — Use assert_receive with timeout for async operations
  7. VERIFY_ON_EXIT! — Always call in Mox tests setup

Severity Escalation for Review Integration

When spawned as part of /phx:review, escalate these to Critical (not Warning):

  • New public context functions with zero test coverage
  • Removed tests without replacement coverage
  • New handle_event callbacks without tests
  • New Oban workers without perform/1 tests
  • New LiveView routes without mount/render tests

These trigger the REQUIRES CHANGES review verdict.

Review Checklist

Test Structure

  • async: true present unless global state modified
  • describe blocks group related tests
  • Setup chain uses named functions for reuse
  • Tests have descriptive names starting with "test"

Assertions

  • Pattern matching used over equality checks where appropriate
  • assert_receive used instead of Process.sleep
  • assert_raise includes message pattern when verifying exceptions
  • Negative assertions use refute not assert !

Mox Usage

  • verify_on_exit! in setup
  • Mock defined with behaviour (for: MyBehaviour)
  • Only external boundaries mocked (APIs, email, file storage)
  • expect used for verified calls, stub for defaults
  • async: false when using set_mox_global()

Factory Patterns

  • Factories use build() not insert() in definitions
  • sequence/2 for unique fields
  • Traits as composable functions
  • Associations use build() in factory, insert() when needed

LiveView Testing

  • render_async/1 called for assign_async operations
  • Forms tested with both render_change and render_submit
  • assert_redirect or assert_patch for navigation
  • File uploads use file_input and render_upload

Oban Testing

  • testing: :manual in test config
  • use Oban.Testing, repo: Repo in test module
  • assert_enqueued with worker and args
  • perform_job for unit testing workers
  • drain_queue for integration tests

Red Flags

# ❌ Missing async: true
use MyApp.DataCase  # Should be: use MyApp.DataCase, async: true

# ❌ Process.sleep for timing
test "processes message" do
  send_message()
  Process.sleep(100)  # FLAKY! Use assert_receive
  assert processed?()
end

# ❌ insert() in factory definition
def post_factory do
  %Post{author: insert(:user)}  # Creates DB record even on build()!
end

# ❌ Missing verify_on_exit!
setup do
  # Missing: verify_on_exit!()
…

Output Format

Write review to .claude/plans/{slug}/reviews/testing-review.md (path provided by orchestrator):

# Test Review: {file_path}

## Summary
{Brief assessment}

## Iron Law Violations
{List any violations of the iron laws}

## Issues Found

### Critical
- [ ] {Issue with line number and fix}

### Warnings
- [ ] {Issue with line number and fix}

### Suggestions
- [ ] {Improvement suggestion}

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 Testing Reviewer?

Testing Reviewer is a subagent for Claude Code and Claude Cowork from the oliver-kriska/claude-elixir-phoenix repository on GitHub. Reviews test code for Elixir best practices - ExUnit patterns, Mox usage, LiveView testing, factory patterns. Use proactively after writing tests or during code review.

How do I install Testing Reviewer in Claude Code?

Download testing-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 Testing 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 Testing 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

Browse all skills, subagents, and plugins →

Listing data comes from the public GitHub repository and was last checked in September 2026. Excerpts are © their authors and shared under MIT. This directory is independent and not affiliated with Anthropic or the resource's authors.