cc-changelog
CONTRIBUTOR TOOL - Track CC changelog, extract new versions since last check, analyze impact on plugin (breaking changes, opportunities, deprecations). Run…
Tidewave MCP runtime tools — debugging, smoke testing, live state inspection, SQL queries, hex docs. Use when evaluating code in a running Phoenix app.
$ npx -y skills add oliver-kriska/claude-elixir-phoenix --skill tidewave-integration --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/tidewave-integrationContext preview
The summary Claude sees to decide when to auto-load this skill.
Tidewave MCP runtime tools — debugging, smoke testing, live state inspection, SQL queries, hex docs. Use when evaluating code in a running Phoenix app.
name: tidewave-integration description: "Tidewave MCP runtime tools — debugging, smoke testing, live state inspection, SQL queries, hex docs. Use when evaluating code in a running Phoenix app." effort: low user-invocable: false
Runtime intelligence for Phoenix apps via MCP. Prefer Tidewave tools over Bash when available.
1. **DEV ONLY** — Never use Tidewave tools in production contexts. Avoid on shared dev servers with production data copies 2. **PREFER TIDEWAVE OVER BASH** — `mcp__tidewave__get_docs` > `web_fetch`, `execute_sql_query` > `psql` 3. **CHECK AVAILABILITY FIRST** — Call Tidewave only when matching `mcp__tidewave__*` tools are present 4. **SQL IS READ-HEAVY** — Use `execute_sql_query` for SELECT, be careful with mutations 5. **EXACT VERSIONS** — `get_docs` returns docs for YOUR mix.lock versions, not latest
| Task | Tidewave Tool | Fallback | |------|---------------|----------| | Get docs | `mcp__tidewave__get_docs Module.func/3` | `web_fetch hexdocs.pm/...` | | Run code | `mcp__tidewave__project_eval` | `mix run -e "code"` | | SQL query | `mcp__tidewave__execute_sql_query` | `psql $DATABASE_URL` | | Find source | `mcp__tidewave__get_source_location` | `grep -rn "defmodule"` | | Inspect DOM | `mcp__Tidewave-Web__browser_eval` | Manual browser inspection | | List schemas | `mcp__tidewave__get_ecto_schemas` | Read `lib/*/schemas/` | | Read logs | `mcp__tidewave__get_logs level: :error` | `tail -f log/dev.log` |
# 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.
# mcp__tidewave__project_eval
MyApp.Accounts.create_user(%{email: "test@example.com"})-- mcp__tidewave__execute_sql_query SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'users';
# mcp__tidewave__project_eval
pid = pid("0.1234.0")
:sys.get_state(pid) |> Map.get(:socket) |> Map.get(:assigns) |> Map.keys()# mix.exs
{:tidewave, "~> 0.6", 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: trueThe dependency and endpoint plug expose Tidewave's streamable HTTP server; they do not register it with an MCP client. Configure the current runtime separately with `http://localhost:<port>/tidewave/mcp`, then verify that Tidewave tools are available before relying on this skill.
**Worktree/port check (FIRST, in multi-worktree setups)**: multiple worktrees = multiple dev servers on different ports. Before trusting any Tidewave result, confirm the endpoint belongs to THIS checkout: grep `config/dev.exs` for the configured port, and verify with `project_eval File.cwd!()` — if it returns a different worktree path, you're debugging the wrong server.
**Schema introspection BEFORE SQL**: never guess column names. Run `get_ecto_schemas` (or query `information_schema.columns`) before writing SQL against a table you haven't already introspected this session. A guessed-column error costs more than the introspection.
**Output-size guard**: runtime output is unbounded. Always cap it — `LIMIT 20` in SQL, `Enum.take(20)` in evals, `inspect(x, limit: 50, printable_limit: 500)` for large structs. Re-query narrower rather than dumping wide.
**browser_eval fallback**: if `mcp__Tidewave-Web__browser_eval` is absent or errors, don't stall — inspect the same state server-side: LiveView assigns via `:sys.get_state(pid)` in `project_eval`, rendered HTML via `Phoenix.LiveViewTest`, or read the template source directly.
**QA walkthrough pattern**: after a feature completes, run a short checklist through `project_eval`/`browser_eval`: create the record, fetch it back, exercise the main event, check `get_logs level: :error` is clean. Report each step's pass/fail — not just "smoke test passed".
Don't just use Tidewave reactively. **Query runtime state at workflow checkpoints** automatically:
See `${CLAUDE_SKILL_DIR}/references/proactive-patterns.md` for full integration points.
For detailed patterns, see:
Docs: phxagents.dev -- install guides per runtime, the runtime compatibility matrix, all 26 Iron Laws, and a browsable skill and agent catalog. Claude Code is great.
Repo: oliver-kriska/claude-elixir-phoenix
CONTRIBUTOR TOOL - Track CC changelog, extract new versions since last check, analyze impact on plugin (breaking changes, opportunities, deprecations). Run…
Run an A/B codex review experiment — holistic codex review vs 3 focused dimension passes (security, ecto, liveview) on the branch diff, classify findings,…
CONTRIBUTOR TOOL - Validate plugin against latest Claude Code documentation. Catches breaking changes, deprecations, discovers new features. Run before…
Guide plugin development workflow — editing skills, agents, hooks, or eval framework in this repo. Use when modifying files in plugins/elixir-phoenix/,…
Generate X/Twitter release promotion posts with ASCII tables and CodeSnap rendering. Use when writing release posts, promotion tweets, plugin announcements, or…
CONTRIBUTOR TOOL - Cut a plugin release: bump plugin.json version, finalize CHANGELOG, update README if needed, gate on make ci, commit, tag vX.Y.Z, and create…