plugins/elixir-phoenix/skills/verify/SKILL.md
Verify Elixir/Phoenix changes — compile, format, and test in one loop. Use after implementation, before PRs, or after fixing bugs.
npx skillsauth add oliver-kriska/claude-elixir-phoenix phx:verifyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Project-aware verification for Elixir/Phoenix. Reads mix.exs and .check.exs to discover tools, test commands, and custom aliases before running anything.
mix.exs first; never run mix credo if credo isn't a dependency:ex_check + .check.exs exists, mix check replaces individual stepsmix ci or composite alias exists, use it over individual stepsRead mix.exs — extract deps/0, aliases/0, and cli/0 (for preferred_envs). Also check for .check.exs. See ${CLAUDE_SKILL_DIR}/references/project-discovery.md for full patterns.
Discover tools (deps): :credo, :dialyxir, :sobelow, :ex_check, :excoveralls, :boundary
Discover test commands (aliases + deps):
mix test (always), or custom alias like mix test.with_coveragemix playwright.test, mix cypress.run, or similar (check preferred_envs for MIX_ENV)mix playwright.run (skips setup — for re-runs)Discover composite runner: If .check.exs exists, read it — mix check may handle compile, format, credo, test, dialyzer, sobelow, and more.
Report discovery:
Project tools: compile ✓ | format ✓ | credo ✓ | dialyzer ✓ | sobelow ✓ | ex_check ✓
Test commands: mix test (unit) | mix playwright.test (E2E, MIX_ENV=int_test)
Composite runner: mix check (.check.exs covers: compiler, formatter, credo, dialyzer, sobelow, tests)
Strategy: Running `mix check` then asking about E2E
CRITICAL: Before using ANY discovered alias or composite command, verify it works:
mix.lock (not just mix.exs) — deps may not be fetchedIf ex_check installed + .check.exs exists: Try mix check. If it fails, fall back to individual steps.
If composite alias found (e.g., mix ci, mix precommit): Try it. If it fails, fall back to individual steps.
Otherwise (or after fallback): Run individual steps, skipping unavailable tools.
mix compile --warnings-as-errors — always
Elixir 1.20+ (OTP 27+): the compiler's built-in type checker emits type violations / verified bugs as warnings, so
--warnings-as-errorsnow fails the build on them — no Dialyzer needed. If a previously-green build fails after a 1.20 bump, suspect a newly-detected type violation, not a regression. Read the message literally (accepted vs supplied type); it is almost always a real bug. Seeelixir-idioms/references/elixir-120-type-system.md.
mix format --check-formatted — always (auto-fix with mix format if fails)
mix credo --strict — if :credo in deps, else skip
mix test --trace — use project test alias if available
mix dialyzer — if :dialyxir in deps, pre-PR only
mix sobelow --config — if :sobelow in deps
Skip unavailable tools with: "Credo: ⏭ Not installed"
After core verification passes, check if project has additional test commands (E2E, integration, coverage). Ask the user:
Core verification passed. Additional test commands available:
1. mix playwright.test (E2E, MIX_ENV=int_test) — ~5min
2. mix test.with_coverage (unit + coverage report)
Run any of these? [1/2/both/skip]
Respect preferred_envs / cli/0 for correct MIX_ENV on each command.
| Step | Command | Condition |
|------|---------|-----------|
| Discovery | Read mix.exs + .check.exs | Always first |
| Composite | mix check | If :ex_check installed |
| Compile | mix compile --warnings-as-errors | Always |
| Format | mix format --check-formatted | Always |
| Credo | mix credo --strict | :credo in deps |
| Test | mix test --trace | Always (use alias if exists) |
| Dialyzer | mix dialyzer | :dialyxir in deps, pre-PR |
| Sobelow | mix sobelow --config | :sobelow in deps |
| E2E/Extra | Ask user | If additional test commands found |
/phx:verify — discovery happens automaticallydevelopment
OTP/BEAM patterns and Elixir idioms — GenServer, Supervisor, Task, Registry, pattern matching, with chains, pipes. Use when designing processes or debugging BEAM issues.
tools
Self-improving loop for plugin skills. Reads program.md, proposes one mutation per iteration, evaluates against deterministic scorer, keeps improvements via git, reverts failures. Targets weakest skill+dimension. Use with /loop for overnight runs.
development
Project health audit and health check — architecture, performance, tests, dependencies, code quality. Use when assessing overall project health, before releases, or after refactors.
tools
Easter-egg alias for /catchup. Same return-from-absence briefing, squeezier name. Use exactly like /catchup — all flags pass through unchanged.