Challenge mode reviews - rigorous questioning before approving changes. Use when you want thorough scrutiny of Ecto changes, LiveView events, OTP designs, or PR readiness.
1k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
514
stars on the repo
on the repository, not the skill itself
Install
one command, takes just this skill from the repository
List every handle_event clause and expected socket state
What happens if socket assigns are missing when event fires?
Are there race conditions between user events and server pushes?
PubSub Handling
List every handle_info clause and when it's triggered
Do all PubSub subscriptions have corresponding handlers?
What happens if a message arrives before mount completes?
State Transitions
Show the event → handler → state transition table
Are all error states handled gracefully?
What's the recovery path from each error state?
Memory & Performance
Are large lists using streams?
Is transient data using temporary_assigns?
What's the memory footprint per connected user?
PR Challenge (/skill:phx-challenge pr)
Senior engineer review checklist:
Must Pass
[ ] No direct Repo calls in controllers/LiveViews
[ ] All Ecto queries use explicit preloads
[ ] Changesets validate all user input
[ ] No atoms created from params
[ ] Error cases handled (not just happy path)
[ ] Tests cover new functionality
Performance
[ ] No queries in Enum.map loops
[ ] LiveView streams for lists > 100 items
[ ] Indexes exist for WHERE clause columns
OTP
[ ] GenServers have supervision
[ ] Timeouts set for GenServer.call
[ ] No unbounded process spawning
Security
[ ] No SQL injection via raw queries
[ ] No path traversal in file handling
[ ] Authorization checks present
Prior Findings Deduplication (MANDATORY)
CRITICAL: Prevents re-discovering identical issues across consecutive runs.
Search.claude/plans/*/reviews/ and .claude/reviews/ for prior findings
Read ALL prior findings before analyzing code
Check each finding against priors:
Fixed → SKIP | Still present → PERSISTENT (one line) | New → NEW (full analysis) | Reintroduced → REGRESSION
Present: NEW first (full), then PERSISTENT (one-line), then REGRESSION
Example Challenge Output
## Challenge: Ecto — Orders Migration
### FINDING 1: Table lock risk (HIGH)
AddColumn on `orders` (2.1M rows) will lock table during deploy.
**Proof needed**: Run `SELECT count(*) FROM orders` — if >1M, use
`ALTER TABLE ... ADD COLUMN ... DEFAULT NULL` (no lock).
### FINDING 2: Missing index (MEDIUM)
New `WHERE status = ?` query on line 45 has no index.
**Action**: Add `create index(:orders, [:status])` to migration.
### Status: BLOCKED — 2 unresolved findings
Usage
Run /skill:phx-challenge [mode] to initiate a rigorous review. The reviewer will not approve until all concerns are addressed with evidence.
Example workflow:
Run /skill:phx-challenge ecto after migration changes
Answer each question with code references or test results
Address all concerns before proceeding to PR
How to use it
Copy the folder
Take oliver-kriska/claude-elixir-phoenix-pi-phx-challenge from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
Check the name does not clash
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.