name: phx:examples description: 实用示例和详细指南。参考官方 Phoenix 指南以获取标准模式,记录插件特定工作流程。
示例与实战指南
官方 Phoenix 指南(参考)
对于标准实现模式,首先总是检查官方指南:
| 主题 | 指南 |
|---|---|
| 上下文 | hexdocs.pm/phoenix/contexts |
| Ecto 基础 | hexdocs.pm/phoenix/ecto |
| LiveView | hexdocs.pm/phoenix_live_view |
| 认证 | mix phx.gen.auth |
| 通道 | hexdocs.pm/phoenix/channels |
| 测试 | hexdocs.pm/phoenix/testing |
| 部署 | hexdocs.pm/phoenix/deployment |
插件特定模式
不在官方指南中的模式(本插件独有):
Tidewave 集成工作流程
# 1. 检查 Tidewave 是否运行中
/mcp
# 2. 如果已连接,使用运行时工具调试
# 获取 YOUR 依赖版本的精确文档
mcp__tidewave__get_docs "Ecto.Query"
# 在运行的应用中执行代码
mcp__tidewave__project_eval "MyApp.Accounts.list_users() |> length()"
# 直接查询数据库
mcp__tidewave__execute_sql_query "SELECT count(*) FROM users"
多智能体审查工作流程
# 1. 与专业智能体规划功能
/phx:plan 添加带有 S3 上传的用户头像
# 2. 实施后,从多角度审查
/phx:review lib/my_app/accounts.ex # Elixir 习惯用法
# 安全分析器在认证代码上自动运行
# 3. 部署前
# 部署验证器检查生产就绪情况
铁律强制执行
本插件在所有智能体中强制执行非协商的规则:
Elixir 习惯用法:
- 没有运行时原因时不使用进程
- 消息被复制(保持小型)
- 变更集用于外部数据
LiveView:
- 永远不在 mount 中查询数据库
- 总是使用流处理列表
- 在每个 handle_event 中重新授权
Oban:
- 作业必须是幂等的
- 总是处理 {:error, _} 返回
- 使用唯一键进行去重
安全:
- 在边界处验证
- 永远不要在查询中插值用户输入
- 到处授权(不仅限于 mount)
示例工作流程
错误调查
# 1. 从明显检查开始
/phx:investigate 密码重置后登录失败
# 2. 智能体检查 Ralph Wiggum 列表:
# - 文件保存了?编译了?迁移了?
# - 原子键 vs 字符串键?
# - 数据预加载了?
# 3. 如果复杂,升级到 Ralph Wiggum 循环(如果安装)
/ralph-loop:ralph-loop "修复登录测试。输出 <promise>完成</promise> 当绿色时。"
功能规划
# 1. 研究阶段
/phx:research Oban 唯一作业最佳实践
# 2. 通过上下文分析规划
/phx:plan 添加每日摘要邮件作业
# 3. 智能体协调:
# - hex-library-researcher 评估依赖
# - oban-specialist 设计工作者
# - ecto-schema-designer 规划数据模型
安全审计
# 1. 在认证代码上运行安全分析器
/phx:review lib/my_app_web/controllers/session_controller.ex
# 2. 检查常见漏洞:
# - SQL 注入(参数化查询?)
# - XSS(正确转义?)
# - CSRF(令牌存在?)
# - 授权(事件中重新检查?)
何时使用官方文档 vs 插件
| 情况 | 使用 |
|---|---|
| “如何创建上下文?” | 官方 Phoenix 指南 |
| “我的上下文设计是否符合习惯?” | 插件的 /phx:review |
| “如何添加 LiveView?” | 官方 LiveView 指南 |
| “我的 LiveView 是否有内存问题?” | 插件的铁律 |
| “如何部署到 Fly.io?” | 官方部署指南 |
| “我的发布配置是否生产就绪?” | 插件的部署验证器 |