elixir-phoenix-investigate
Investigate Phoenix bugs, crashes, and test failures to find root cause.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Investigate Phoenix bugs, crashes, and test failures to find root cause.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Recommend the right `$elixir-phoenix-*` skill for the current task.
Elixir/Phoenix: Review lifecycle, state-machine, Oban, persistence, pause/resume, retry, and restart-sensitive changes before commit, push, or PR. Use for concurrency-sensitive runtime work to produce explicit blocking vs optional findings, require durability checks, and verify smoke plus restart resilience when applicable.
Capture a solved Phoenix problem as a reusable solution doc.
Audit LiveView assigns for memory bloat, dead assigns, and stream candidates.
Audit project health across architecture, security, performance, tests, and deps.
Analyze Phoenix context boundaries and coupling with `mix xref`.
| name | elixir-phoenix-investigate |
| description | Investigate Phoenix bugs, crashes, and test failures to find root cause. |
| metadata | {"short-description":"Investigate Phoenix bugs and failures"} |
Investigate bugs using the Ralph Wiggum approach: check the obvious, read errors literally.
`elixir-phoenix-investigate` Users can't log in after password reset
`elixir-phoenix-investigate` FunctionClauseError in UserController.show
`elixir-phoenix-investigate` Complex auth bug --parallel
$ARGUMENTS = Bug description or error message. Add --parallel
for deep 4-track investigation.
Use parallel mode (spawn deep-bug-investigator) when:
bug mentions 3+ modules, spans multiple contexts, is intermittent
or involves concurrency, or user says --parallel/deep.
Otherwise: Run the sequential workflow below.
Avoid confirmatory subagents: Do NOT spawn parallel subagents to "verify" findings you already identified in the main context. If Step 3-4 already identified the root cause with high confidence, present it directly — don't spend ~80K tokens on 4 subagents to confirm what's already obvious (confirmed waste: session c135330a).
{:error, changeset} with validation failures, not viewport or JS issues.codex/solutions/ firstSearch .codex/solutions/ for relevant keywords using rg.
If matching solution exists, present it and ask: "Apply this fix, or investigate fresh?"
If Tidewave MCP is detected, start here instead of asking the user to paste errors. Auto-capture runtime context:
mcp__tidewave__get_logs level: :error -- capture recent errorsmcp__tidewave__get_source_locationmcp__tidewave__execute_sql_query to inspect statemcp__tidewave__project_eval to test hypothesesmcp__tidewave__get_source_location with component namePresent pre-populated context to the user:
Auto-captured from runtime:
- Error: {parsed error from logs}
- Location: {file:line from get_source_location}
Investigating this. Correct if wrong.
This eliminates copy-pasting errors between app and agent. If Tidewave NOT available: Fall through to Step 1.
Run mix compile --warnings-as-errors 2>&1 | head -50, then mix ecto.migrate.
Run mix test test/path_test.exs --trace. Then read the last 200 lines of log/dev.log and search for "error" or "exception" patterns.
Parse the error message — check references/error-patterns.md.
File saved? Atom vs string? Data preloaded? Pattern match correct? Nil? Return value? Server restarted?
LiveView form saves silently failing? Check changeset errors
FIRST — not viewport, click mechanics, or JS. A missing
hidden_input for a required embedded field causes {:error, changeset} with no visible UI feedback.
Find what's actually happening vs what should happen.
Use /ralph-loop:ralph-loop for autonomous debugging with
clear completion criteria and --max-iterations.
references/error-patterns.md — Common errors and checklistreferences/investigation-template.md — Output formatreferences/debug-commands.md — Debug commands and common fixes