PostgreSQL 写完不放心?这个 Skill 帮你把 JSONB/数组/RLS 一锅端走查
做后端开发的朋友,应该都被 PostgreSQL 的 JSONB 坑过:明明存进去了,查询却慢成 PPT;用 data->>'status' 这种表达式查询,索引根本吃不到。这种”代码能跑但实际很难用”的情况,普通的代码评审基本看不出来——因为它不是逻辑问题,而是 PostgreSQL 特有的反模式。
最近在 GitHub 的 awesome-copilot 仓库里翻到一个专门做这件事的 Skill:postgresql-code-review,累计安装量 1.2 万,父仓库 2.74 万 star。它不做通用代码评审,只盯 PostgreSQL 专属的那一摊事。
它解决了什么问题
通用代码评审工具(比如 Refactor、PR Reviewer)看的是命名、风格、控制流,但 PostgreSQL 这门数据库有一堆”专有暗坑”:JSONB 索引、数组操作、ENUM/DOMAIN 自定义类型、GIN/GiST 索引、PL/pgSQL 函数优化、RLS 行级安全、扩展使用等等。一个看似简洁的 WHERE data->>'status' = 'shipped' 在百万级数据下能把数据库打穿——而这种事,普通评审根本不会提。
核心能力清单
postgresql-code-review 提供的检测维度包括:
- JSONB 模式审查:检查是否用
@>、?等可索引操作符,而不是->>;是否对 JSONB 加了 GIN 索引;JSON 结构是否有 CHECK 约束 - 数组操作审计:是否用 GIN 索引数组列、是否在循环里做数组拼接
- 数据类型优化:CITEXT vs VARCHAR、TIMESTAMPTZ vs TIMESTAMP、BIGSERIAL vs INTEGER
- 自定义类型建议:ENUM、DOMAIN、CITEXT 等 PostgreSQL 专属类型的合理使用
- RLS 行级安全:策略粒度是否过粗、是否依赖
current_setting - 权限最小化:是否给
app_user全表 ALL PRIVILEGES 这种自杀式授权 - 函数与触发器质量:PL/pgSQL 中的
NOW()vsCURRENT_TIMESTAMP、触发器WHEN条件
使用方式
# 安装到 Claude Code / Codex / Cursor
npx skills add https://github.com/github/awesome-copilot --skill postgresql-code-review
触发方式很简单:选中一段 SQL 或 PL/pgSQL 函数,说一句”review 一下 PostgreSQL”,它就会按上面这套清单逐项打分并给出改写建议。
适合谁
如果你做的是 SaaS、电商、金融、IoT 这类强依赖 PostgreSQL 高级特性(JSONB、数组、RLS)的系统,这个 Skill 几乎是把社区最佳实践打包成了一段 SOP,比请一个懂 PostgreSQL 的高级 DBA 划算太多。它不会替你做架构决策,但能让你的 schema 和函数少踩 90% 的”性能地雷”。
GitHub 地址:github/awesome-copilot/skills/postgresql-code-review
GitHub: https://github.com/github/awesome-copilot/tree/main/skills/postgresql-code-review
评论区
登录后可评论。