mcpField
S
supabase-usage

supabase-usage

github.com/fcakyonデータ・データベース1.2k37 回インストール今日更新
リポジトリ

supabase-usage について

Supabase データベース作業向けのリファレンススキルです。Auth、Row Level Security、テーブル間の関係、クエリの実践を扱い、安全なアクセス制御と効率的なクエリの指針を示します。

主な機能

  1. 01テーブルとスキーマの調査
  2. 02読み取り専用 SQL クエリの実行
  3. 03Auth と RLS の実践
  4. 04リレーションとネストしたクエリの処理
  5. 05フィルタリングとページネーションのパターン
  6. 06詳細なリファレンスファイルの参照

活用シーン

  1. 01Supabase データベース構造の調査
  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 データベースのパターン

Auth、Row Level Security、テーブルのリレーション、クエリのベストプラクティスなど、Supabase データベースを扱うためのパターンです。

概要

  • MCP ツール:データベース構造のクエリと調査
  • 認証:ユーザー管理、セッション、認証テーブル
  • Row Level Security:データアクセス制御のポリシーパターン
  • テーブルのリレーション:外部キー、結合、ネストされたクエリ
  • クエリパターン:フィルタリング、ページネーション、パフォーマンス

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('*') ではなく .select('id, name') を使います
禁止事項
  • ✗ RLS を設定せずに機密データを保存しないでください
  • ✗ ポリシーで auth.uid() を直接使わないでください((select auth.uid()) を使います)
  • ✗ ロールを指定せずにポリシーを作成しないでください
  • ✗ 頻繁にフィルタリングするカラムへのインデックスを忘れないでください
  • ✗ 深いページ(1000 行超)でオフセットページネーションを使わないでください
  • ✗ auth.users を API 経由で直接公開しないでください(public プロファイルテーブルを使います)

クイックリファレンス

よく使うフィルター
フィルター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])
NULL かどうか.is('col', null).is_("col", "null")
OR.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 - Row Level Security ポリシーとパフォーマンスのヒント
  • references/relationships.md - テーブルのリレーションとネストされたクエリ
  • references/query-patterns.md - フィルタリング、ページネーション、カウント、インデックス

コメント