Agent Skills
返回列表
💻

Squawk PostgreSQL 迁移 Lint 检查

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md 安装 @user_3c6cb52e/lint-postgresql-migrations-and-sql-changes-before-irreversible-schema-mistakes-land-with-squawk

技能介绍

迁移审查的盲区

大多数数据库事故不是写错了一行 SQL,而是一条看似无害的 ALTER TABLE 在生产环境静默生效。给 varchar 字段改长度可能触发 ACCESS EXCLUSIVE 锁,整个表的读写被瞬间冻结;在错误的时机建索引会拖垮高峰期负载;列类型变更、外键删除这类操作一旦执行,回滚成本极高。代码评审只关心逻辑对不对,没人会逐行核对每条 DDL 在锁行为上的代价。

Squawk 如何工作

这个技能把 Squawk 接入你的迁移流程,对 PostgreSQL 迁移文件和 SQL 变更做静态 Lint:

  • 规则驱动分析:内置一组针对 DDL 的规则,覆盖锁竞争、索引策略、字段变更等高危模式,对每条迁移 SQL 给出 warning 或错误标记;
  • 逐条迁移扫描:直接读取项目中的 SQL 文件,逐条识别风险操作并输出可操作的诊断信息,例如指出某次 varchar 长度变更会阻塞全表读写;
  • 灵活集成:可以走 CLI、Docker 镜像,也能接入 CI 或 pre-commit 钩子,让检查发生在代码合入之前。

适用边界

Squawk 是静态规则检查器,不是执行计划分析工具:它无法感知你的表实际数据量、负载曲线和锁等待情况,误报和漏报都可能存在,高危操作仍需人工判断。规则集是通用的,业务特定的约束需要自己补充或忽略。它只覆盖 PostgreSQL 方言,其他数据库的迁移文件不在范围内。把它当作迁移评审的第一道筛子,而不是替代品。

使用场景

  • 准备提交 PostgreSQL 迁移 PR 前,本地跑一遍 Lint,确认改动不包含会锁全表的 DDL
  • 在 CI 流水线里增加一道迁移 SQL 检查,防止其他同事的 PR 带入 ACCESS EXCLUSIVE 锁
  • 评审生产大表变更方案时,用规则扫描逐条核对索引创建和字段变更的锁风险
  • 为仓库配置 pre-commit 钩子,在提交前自动拦截危险的模式变更语句

适合人员

  • 经常改动 PostgreSQL 表结构的后端工程师,需要在发版前确认迁移安全
  • 负责生产库变更评审的 DBA,要把锁竞争和不可逆 DDL 挡在上线前
  • 搭建 CI 流水线的平台工程师,想给数据库变更加一道自动化检查