关于 phoenix-code-review
phoenix-code-review 是用于审查 Phoenix 应用的技能,覆盖控制器、上下文、路由、Plug 和 JSON API,并规定问题报告的证据与核验要求。
主要功能
- 01控制器与上下文审查清单
- 02路由和 Plug 模式检查
- 03JSON API 响应及分页检查
- 04基于证据的问题报告要求
适用场景
- 01审查 Phoenix 控制器改动
- 02检查授权与输入验证处理
- 03评估路由和错误处理模式
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ existential-birds/ beagle --skill phoenix-code-review安装后在 Claude Code 中输入/phoenix-code-review确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/contexts.mdcontrollers.mdplugs.mdrouting.md详细介绍
Phoenix Code Review
快速参考
| 问题类型 | 参考 |
|---|---|
| 有界上下文、Ecto 集成 | references/contexts.md |
| Actions、参数、错误处理 | references/controllers.md |
| Pipelines、作用域、已验证路由 | references/routing.md |
| 自定义 plugs、身份验证 | references/plugs.md |
审查清单
控制器
- 业务逻辑放在上下文中,而不是控制器中
- 控制器返回正确的 HTTP 状态码
- Action 子句处理所有预期的模式
- Fallback 控制器以一致的方式处理错误
上下文
- 上下文按领域划分,而不是按技术层划分
- 公共函数的名称清晰且以领域为重点
- Changeset 验证所有用户输入
- 控制器中没有 Ecto 查询
路由
- 使用已验证路由(~p sigil),而不是字符串路径
- Pipelines 将相关 plugs 分组
- 资源仅使用所需的 actions
- Scopes 将相关路由分组
Plugs
- 通过 plugs 进行身份验证/授权
- Plugs 可组合且用途单一
- 在 plugs 中发送响应后调用 Halt
JSON API
- 正确进行内容协商
- 错误响应格式一致
- 列表端点支持分页
有效模式(不要标记)
- 控制器调用多个上下文 — 用于编排时有效
- 在上下文中内联 Ecto 查询 — 上下文负责其数据访问
- 使用
action_fallback— 集中式错误处理模式 - 每条路由使用多个 pipelines — 这是有意的组合方式
- 不调用 send 的
Plug.Conn.halt/1— 可能由 fallback 处理
上下文相关规则
| 问题 | 仅当以下情况时标记 |
|---|---|
| 缺少 changeset 验证 | 字段接受用户输入,且没有验证 |
| 控制器过大 | 超过 7 个 actions,或 actions 超过 20 行 |
| 缺少授权 | 路由不是公开路由,且 pipeline 中没有 auth plug |
检查关卡(按顺序运行;每步都有通过条件)
- 有据可查的证据 — 对于每个计划报告的问题,打开源文件,并记录从该次阅读中获得的文件路径 + 行号(不能仅凭记忆或 diff 片段)。通过条件: 每个问题都引用已打开文件中的
path:line。 - “已在其他位置处理”检查 — 报告“缺少验证”“缺少身份验证”或“状态码错误”之前,搜索路由器(pipelines/scopes)、控制器(
action_fallback、plug)以及相关上下文,检查是否已有处理逻辑。通过条件: 记录其他位置是否已有处理(有 + 位置,或搜索后确认没有)。 - 验证协议 — 根据问题类型加载并应用 review-verification-protocol。通过条件: 写出问题之前,满足该技能针对这一类问题的报告前检查要求。
- 问题格式 — 每个问题按
[FILE:LINE] ISSUE_TITLE的格式输出,并附上一行与引用代码相关的理由。通过条件: 每行都符合该格式。
提交问题前
只有在以上检查关卡全部通过后,才能报告问题。完整的防误报步骤请参阅 review-verification-protocol。
评论
支持 Markdown