Claude-elixir-phoenix tidewave-integration
Tidewave MCP runtime tools — debugging, smoke testing, live state inspection, SQL queries, hex docs. Use when evaluating code in a running Phoenix app.
install
source · Clone the upstream repo
git clone https://github.com/oliver-kriska/claude-elixir-phoenix
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/oliver-kriska/claude-elixir-phoenix "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/elixir-phoenix/skills/tidewave-integration" ~/.claude/skills/oliver-kriska-claude-elixir-phoenix-tidewave-integration && rm -rf "$T"
manifest:
plugins/elixir-phoenix/skills/tidewave-integration/SKILL.mdsource content
Tidewave MCP Integration
Runtime intelligence for Phoenix apps via MCP. Prefer Tidewave tools over Bash when available.
Iron Laws — Never Violate These
- DEV ONLY — Never use Tidewave tools in production contexts. Avoid on shared dev servers with production data copies
- PREFER TIDEWAVE OVER BASH —
>mcp__tidewave__get_docs
,web_fetch
>execute_sql_querypsql - CHECK AVAILABILITY FIRST — Use
command or detect/mcp
toolsmcp__tidewave__ - SQL IS READ-HEAVY — Use
for SELECT, be careful with mutationsexecute_sql_query - EXACT VERSIONS —
returns docs for YOUR mix.lock versions, not latestget_docs
Quick Reference
| Task | Tidewave Tool | Fallback |
|---|---|---|
| Get docs | | |
| Run code | | |
| SQL query | | |
| Find source | | |
| Inspect DOM | | Manual browser inspection |
| List schemas | | Read |
| Read logs | | |
Detection
# Check endpoint curl -s http://localhost:4000/tidewave/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"ping"}'
Or use
/mcp in Claude Code to see connected servers.
Essential Patterns
Test Function Immediately
# mcp__tidewave__project_eval MyApp.Accounts.create_user(%{email: "test@example.com"})
Verify Migration
-- mcp__tidewave__execute_sql_query SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'users';
Debug LiveView (with PID from browser)
# mcp__tidewave__project_eval pid = pid("0.1234.0") :sys.get_state(pid) |> Map.get(:socket) |> Map.get(:assigns) |> Map.keys()
Setup Requirements
# mix.exs {:tidewave, "~> 0.1", only: :dev} # endpoint.ex (in dev block) plug Tidewave # config/dev.exs (for LiveView source mapping) config :phoenix_live_view, debug_heex_annotations: true, debug_attributes: true
Proactive Runtime Checks
Don't just use Tidewave reactively. Query runtime state at workflow checkpoints automatically:
- After code edits:
(catch runtime crashes)get_logs level: :error - After features complete:
smoke test (behavioral check)project_eval - Before planning:
+ routes eval (concrete context)get_ecto_schemas - When investigating: Auto-capture errors before asking user
- LiveView UI bugs:
to inspect DOM state before editing componentsbrowser_eval
See
${CLAUDE_SKILL_DIR}/references/proactive-patterns.md for full integration points.
References
For detailed patterns, see:
- Push-like runtime patterns at workflow checkpoints${CLAUDE_SKILL_DIR}/references/proactive-patterns.md
- Complete tool usage examples${CLAUDE_SKILL_DIR}/references/tool-examples.md
- Runtime validation patterns${CLAUDE_SKILL_DIR}/references/validation-checklist.md