SuperAPI AI 工具集

supabase

编程与开发

查看项目

更新于 10-16 02:21

技能介绍

Supabase 技能用于在项目中搭建、扩展或审计 Supabase 集成,目标是以迁移为基础、类型化对接,并明确划分授权边界。

【用途】 当需要集成 Supabase、修复数据库授权/迁移/类型问题,或审计 schema、grants、RLS、存储与外部认证时使用本技能。

【工作流程】

  1. 检查:查看 supabase/ 目录、迁移文件、生成类型、已安装的 Supabase 包与版本、框架/运行时、环境变量名称(不打印其取值)、认证/会话流程、经 Data API 暴露的 schema,以及已有的 grants 与 RLS。
  2. 领域建模:从领域模型推断表的所有权与租户关系;仅当所有权、协作、删除、保留或外部认证行为存在歧义时才询问。不要机械地为每张表添加 user_id 或四个 CRUD 策略。
  3. 结构设计:为每张表设计合适的键、外键、约束、索引、时间戳、生命周期/删除行为,以及服务端生成的归属默认值。除非有意建模本地身份映射,否则将外部提供方的 subject ID 用文本存储。
  4. 迁移:创建具名迁移;本地变更使用 supabase migration new 或经审阅的 db diff;用本地重置/测试数据库验证;检查 db push --dry-run;仅在明确需要远程部署时使用 db push。migration up 不能替代远程部署。
  5. 安全:用 Postgres grants 与 RLS 同时保护每个暴露对象;将策略限定到角色,使用带索引的谓词,为插入/更新添加 with check,单独审查视图/函数,并为 security definer 函数设置安全的 search_path。
  6. 认证策略匹配:Supabase Auth 使用 auth.uid()/auth.jwt() 与当前 SSR 会话指引;Clerk 或其他受支持的第三方提供方需配置原生集成、通过客户端传递提供方令牌,并使用真实的 JWT sub/claims,不能假设单靠 RLS 表达式即可配置令牌验证;服务端管理需使用专用的仅服务端客户端并显式授权,绝不暴露 secret/service 凭据。
  7. 当前 @supabase/ssr:每次请求创建一个客户端,使用受支持的 cookie getAll/setAll 适配器,await 异步框架 cookie API,并添加所需的代理/中间件刷新流程;不要使用旧的单 cookie 适配器。
  8. 类型:在将迁移应用到用于生成的目​​标后生成 TypeScript 类型,然后运行类型检查并更新类型化查询;避免使用 any,并显式处理 { data, error }。

【验证】 运行本地迁移重置/应用、schema/类型漂移检查,以及仓库的 lint/类型/测试/构建。针对每条策略测试允许的 owner/member/admin/service 访问,以及被拒绝的匿名/其他用户/其他租户的读取与变更(包括尝试更改所有权)。在目标运行时中测试会话刷新/过期与外部提供方令牌。

【输出】 报告变更的表/函数/存储、迁移文件、grants 与 RLS 策略及认证策略、客户端/会话变更、类型生成命令/结果、拒绝类授权测试,以及剩余的关联项目/仪表盘/生产步骤。

【限制】 具体价格、平台限制、官方文档链接或未提及的额外功能暂未提供。