用途:这是一个知识型技能,不是智能体。当出现 SQL 编写或评审任务时从上下文加载;角色智能体(/be、/dba、/rev、/arch)会路由到它——它承载语言规范,方言参考文件承载具体引擎细节。
触发时机:编辑或新建 .sql 文件;编写或评审 schema 迁移;应用代码中内嵌原生 SQL 字符串(如 Rust 的 sqlx/rusqlite、JVM 的 JdbcTemplate 或 @Query(nativeQuery = true)、JS/TS 的 sql 模板、Python 的 DB-API 字符串);设计索引、阅读 EXPLAIN 计划或调优查询形态;编写存储过程、触发器或视图。不适用于:不写 SQL 字符串的 ORM 实体映射(归 /be)、分析/数仓/dbt 建模(归 /data)。
主要能力:按引擎选择方言参考(Postgres、MySQL、Oracle、SQLite)以及 SQL 评审参考;强制执行三条结果——值进入语句处不得有注入面、迁移所述 schema 与数据库实际不得有静默漂移、未经计划证据不得合并查询形态。核心标准(评审时阻断):SQL 即代码并需通过 sqlfluff 4.x lint;值只能通过绑定参数进入,字符串拼接 SQL 为阻断项,标识符需经静态白名单映射,LIKE 模式需转义 % 和 _;迁移按时间戳或序列号版本化且线性,已应用迁移不得编辑,修复走新迁移;对线上应用读取的内容采用 expand-migrate-contract;事务范围需刻意设计;新查询形态合并前需带 EXPLAIN 证据;每个索引需说明其服务的查询;可空列谓词需审查 NULL 行为;测试数据需确定性管理;schema 以迁移为唯一真相源。
必要用法:文档查询为强制要求,需对目标服务器实际版本做活体检查(如 Postgres 用 SELECT version();,MySQL 用 SELECT @@version;,Oracle 用 SELECT banner_full FROM v$version;,SQLite 用 SELECT sqlite_version();),因为特性受版本门控,受管平台常落后一到两个大版本。lint 命令:pipx install sqlfluff;sqlfluff lint --dialect postgres <paths>(或 mysql | oracle | sqlite)。技能提供草稿容器实测检查,可用 docker 启动临时引擎验证 NULL 行为、LIMIT 截断、upsert、排序规则等疑问,并附迁移文件头、应用集跟踪表、批量回填、keyset 分页等模板。
限制:该技能不拥有任何门禁;schema/迁移变更属于工作流中的 ARCH_APPROVED 触发,由工作流引擎决定是否触发,/dba 评审迁移安全性。其边界为:提交的 SQL 制品(查询、DDL、迁移文件、其正确性/计划/方言语义)归它;引擎运维、生产计划回归归 /dba;引擎与拓扑选型归 /arch。向量/ANN 索引调优归 /dba 的参考文件。Oracle 若无可达实例且拉取代价过高,可跳过实测检查但须标注未验证而非猜测。关于收费、价格等事实资料未提供。