跳到主要内容
知仓学习社ZHICANG

tidewave-integration

Tidewave MCP runtime tools — debugging, smoke testing, live state; Use

执行命令联网无严重或高危命中oliver-kriska/claude-elixir-phoenix

它会碰到什么

扫了多少4 个文本文件,16 KB
它会碰到什么执行命令联网
命中总数2 处
命中统计严重 0 · 高 0 · 中 1 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Tidewave MCP Integration

Runtime intelligence for Phoenix apps via MCP. Prefer Tidewave tools over Bash when available.

Iron Laws — Never Violate These

  1. DEV ONLY — Never use Tidewave tools in production contexts. Avoid on shared dev servers with production data copies
  2. PREFER TIDEWAVE OVER BASHmcp__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 VERSIONSget_docs returns docs for YOUR mix.lock versions, not latest

Quick Reference

| 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 |

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.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: true

The 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.

Reliability Guards

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".

Proactive Runtime Checks

Don't just use Tidewave reactively. **Query runtime state at

workflow checkpoints** automatically:

  • After code edits: get_logs level: :error (catch runtime crashes)
  • After features complete: project_eval smoke test (behavioral check)
  • Before planning: get_ecto_schemas + routes eval (concrete context)
  • When investigating: Auto-capture errors before asking user
  • LiveView UI bugs: browser_eval to inspect DOM state before editing components

See references/proactive-patterns.md for full integration points.

References

For detailed patterns, see:

  • references/proactive-patterns.md - Push-like runtime patterns at workflow checkpoints
  • references/tool-examples.md - Complete tool usage examples
  • references/validation-checklist.md - Runtime validation patterns

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 553
本站分层T2
该仓技能数322
原文件路径targets/codex/skills/tidewave-integration/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 322 个技能

同名技能的其他版本

有 6 个不同仓库或目录里都有叫 tidewave-integration 的技能。它们内容并不相同,别混用: