关于 supabase-usage
面向 Supabase 数据库工作的参考技能,涵盖 Auth、Row Level Security、表关系和查询实践,并提供数据库探索步骤及安全访问策略和高效查询建议。
主要功能
- 01探索表和架构
- 02执行只读 SQL 查询
- 03应用 Auth 与 RLS 实践
- 04处理关系和嵌套查询
- 05使用筛选与分页模式
- 06查阅详细参考文件
适用场景
- 01检查 Supabase 数据库结构
- 02审查公开表的访问策略
- 03构建筛选和分页查询
- 04查找身份验证或表关系模式
MCP 相关
该技能介绍用于列出表、检查架构和执行只读 SQL 的 Supabase MCP 工具。MCP 客户端可借此探索数据库结构并运行查询。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ fcakyon/ claude-codex-settings --skill supabase-usage安装后在 Claude Code 中输入/supabase-usage确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/auth.mdquery-patterns.mdrelationships.mdrls.md详细介绍
Supabase 数据库模式
使用 Supabase 数据库的模式,包括 Auth、行级安全、表关系和查询最佳实践。
概览
- MCP 工具:查询和探索数据库结构
- 身份验证:用户管理、会话、身份验证表
- 行级安全:数据访问控制策略模式
- 表关系:外键、联接、嵌套查询
- 查询模式:筛选、分页、性能
MCP 工具
可用于探索数据库的工具:
mcp__supabase__list_tables- 列出数据库中的所有表mcp__supabase__get_table_schema- 获取指定表的架构mcp__supabase__execute_sql- 运行只读 SQL 查询
工作流:
- 先使用
list_tables了解数据库结构 - 使用
get_table_schema检查列和类型 - 使用
execute_sql执行自定义查询(只读)
最佳实践
应做
- ✓ 为所有公共表启用 RLS
- ✓ 在 RLS 策略中使用
(select auth.uid())以提升性能 - ✓ 为经过 RLS 检查的列添加索引
- ✓ 在策略中使用
TO authenticated指定角色 - ✓ 对指向 auth.users 的外键使用
on delete cascade - ✓ 对大型数据集使用基于游标的分页
- ✓ 只选择所需的列:
.select('id, name'),而非.select('*')
不应做
- ✗ 在没有 RLS 的情况下存储敏感数据
- ✗ 在策略中直接使用
auth.uid()(应使用(select auth.uid())) - ✗ 创建未指定角色的策略
- ✗ 忘记为常用筛选列添加索引
- ✗ 对较深的页面(>1000 行)使用偏移分页
- ✗ 通过 API 直接公开 auth.users(应使用公共用户资料表)
快速参考
常用筛选条件
| 筛选条件 | JavaScript | Python |
|---|---|---|
| 等于 | .eq('col', val) | .eq("col", val) |
| 不等于 | .neq('col', val) | .neq("col", val) |
| 大于 | .gt('col', val) | .gt("col", val) |
| 大于或等于 | .gte('col', val) | .gte("col", val) |
| 小于 | .lt('col', val) | .lt("col", val) |
| 小于或等于 | .lte('col', val) | .lte("col", val) |
| 模式匹配 | .ilike('col', '%val%') | .ilike("col", "%val%") |
| 在列表中 | .in('col', [a,b]) | .in_("col", [a,b]) |
| 为空 | .is('col', null) | .is_("col", "null") |
| 或 | .or('a.eq.1,b.eq.2') | .or_("a.eq.1,b.eq.2") |
Auth 表快速参考
| 表 | 关键列 |
|---|---|
auth.users | id、email、phone、created_at、last_sign_in_at、raw_user_meta_data |
auth.sessions | id、user_id、created_at、updated_at |
auth.identities | id、user_id、provider、identity_data |
RLS 策略模板
create policy "policy_name" on table_name
to authenticated -- or anon, or specific role
for select -- select, insert, update, delete, or all
using ( (select auth.uid()) = user_id )
with check ( (select auth.uid()) = user_id ); -- for insert/update
其他资源
如需详细模式和代码示例,请参阅:
references/auth.md- 使用 JS/Python SDK 进行身份验证、用户资料references/rls.md- 行级安全策略和性能提示references/relationships.md- 表关系和嵌套查询references/query-patterns.md- 筛选、分页、计数、索引
评论
支持 Markdown