用途
本技能适用于使用 Supabase 开发应用的场景,包括运行 Supabase CLI、设计迁移与 RLS 策略、测试数据库行为等。其核心立场是把 Supabase 视为以 Postgres 为中心、由多个独立版本化服务组成的系统,而不是一个不透明的后端。托管平台、CLI 本地栈和官方自托管 Compose 栈共享概念,但属于不同的运行环境,选择命令前必须先确认任务针对的是哪一种。
主要能力
技能覆盖以下方面:理解服务、信任边界、密钥与环境差异;安装和使用 CLI、建立本地工作流,或操作托管 Functions、secrets、branches、SSL 强制、CIDR 限制与网络封禁;创建 schema、迁移、种子数据、RLS 策略、测试与生成类型;使用 Auth、REST、Realtime、Storage 与 Edge Functions 构建应用;部署或加固官方 Docker 栈;备份、恢复、更新、升级、监控或恢复自托管实例;诊断不健康容器、错误 URL、认证失败、漂移或迁移失败;以及用评分场景评估智能体使用 Supabase 的能力。
使用方式
操作契约要求:变更前先发现目标与当前状态(托管项目、CLI 本地栈或自托管 Compose;CLI 与服务版本;项目链接;数据库与迁移状态;已启用服务;公开 URL;备份与回滚路径)。首次变更前确认目标、范围与回滚路径;只读发现无需确认。保持可发布密钥在客户端、secret/service-role 密钥仅在服务端,绝不打印、提交或把密钥、数据库密码、JWT 签名材料、SMTP 凭据或含密码的连接串放入报告。数据库变更通过版本化迁移完成,审查生成的 diff 作为草稿,重放完整链路,测试 RLS 反向用例,并在部署前重新生成客户端类型。自托管使用官方 supabase/supabase Docker 目录及其 setup.sh、run.sh、更新说明与测试,不要自行发明精简 Compose 栈。
首次只读发现可运行:supabase --version、supabase status --output json、supabase migration list、docker compose config --quiet、docker compose ps --format json。开发循环中,每个项目只使用一种 schema 编写模式:声明式先编辑 supabase/schemas/*.sql 再运行 supabase db diff -f change-name;命令式直接运行 supabase migration new change-name。两条路径汇聚到相同检查:supabase db reset、supabase test db、supabase gen types --lang typescript --local > database.types.ts。链接部署前运行 supabase migration list、supabase db push --dry-run、supabase db push。绝不对生产使用 db reset --linked 或 db push --include-seed。
自托管生命周期使用部署目录中已检入的官方辅助脚本:sh run.sh config、sh run.sh compose-config >/dev/null、docker compose config --quiet、sh run.sh start、sh run.sh status、sh tests/test-self-hosted.sh http://localhost:8000。生产环境需要真实密钥、正确的外部 URL、TLS 终止、WebSocket 转发、受保护的数据库端口、按需的 SMTP/提供商配置、备份与恢复测试。官方默认栈在 8000 暴露 Kong、8443 暴露 Kong TLS、5432/6543 暴露 Supavisor,应有意识地绑定或设置防火墙。
适用场景
适用于 Supabase 应用开发、CLI 操作、迁移与 RLS 设计、数据库行为测试、自托管部署与运维、故障排查,以及智能体能力评估等场景。
限制
CLI 本地栈仅用于开发:默认凭据、无 TLS、无生产速率限制,不得公开暴露。暴露 schema 中的每张表都必须启用 RLS;可发布密钥仅在授权与 RLS 策略正确时才可安全用于客户端,需测试拒绝路径。secret/service-role 密钥绕过 RLS,绝不应出现在浏览器包、移动应用、日志、示例或聊天输出中。当前自托管配置中 API_EXTERNAL_URL 包含 /auth/v1;SITE_URL 是应用落地 URL,不一定是 Supabase 主机名。Compose 配置应作为经过测试的发布集更新,独立拉取任意 latest 镜像可能造成不兼容的服务组合。新自托管部署当前默认 Postgres 17,绝不可指向 Postgres 15 数据目录,并需同时保留数据库数据和包含 pgsodium 根密钥的 db-config 卷。docker compose down -v、reset.sh、远程 reset、密钥重新生成与迁移历史修复可能破坏数据、访问或会话,应作为单独确认的操作并具备恢复证据。自托管功能对等不等于托管平台对等,备份、可用性、升级、滥用控制、SMTP、可观测性与支持均由运营者负责。
退出标准
仅当请求的产物或状态存在且相关边界已被验证时任务才算完成:本地项目可从迁移重放并通过测试;部署通过配置、健康与服务级冒烟测试;更新具备回滚证据与更新后检查;备份已恢复到独立目标;且提交或报告的输出中不出现任何密钥材料。