mcpField
S
supabase-usage

supabase-usage

github.com/fcakyon数据与数据库1.2k37 次安装今天更新
代码仓库

关于 supabase-usage

面向 Supabase 数据库工作的参考技能,涵盖 Auth、Row Level Security、表关系和查询实践,并提供数据库探索步骤及安全访问策略和高效查询建议。

主要功能

  1. 01探索表和架构
  2. 02执行只读 SQL 查询
  3. 03应用 Auth 与 RLS 实践
  4. 04处理关系和嵌套查询
  5. 05使用筛选与分页模式
  6. 06查阅详细参考文件

适用场景

  1. 01检查 Supabase 数据库结构
  2. 02审查公开表的访问策略
  3. 03构建筛选和分页查询
  4. 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.md
query-patterns.md
relationships.md
rls.md

详细介绍

Supabase 数据库模式

使用 Supabase 数据库的模式,包括 Auth、行级安全、表关系和查询最佳实践。

概览

  • MCP 工具:查询和探索数据库结构
  • 身份验证:用户管理、会话、身份验证表
  • 行级安全:数据访问控制策略模式
  • 表关系:外键、联接、嵌套查询
  • 查询模式:筛选、分页、性能

MCP 工具

可用于探索数据库的工具:

  • mcp__supabase__list_tables - 列出数据库中的所有表
  • mcp__supabase__get_table_schema - 获取指定表的架构
  • mcp__supabase__execute_sql - 运行只读 SQL 查询

工作流:

  1. 先使用 list_tables 了解数据库结构
  2. 使用 get_table_schema 检查列和类型
  3. 使用 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(应使用公共用户资料表)

快速参考

常用筛选条件
筛选条件JavaScriptPython
等于.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.usersid、email、phone、created_at、last_sign_in_at、raw_user_meta_data
auth.sessionsid、user_id、created_at、updated_at
auth.identitiesid、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