supabase について
管理 API を通じて Supabase プロジェクトで SQL を実行するスキルです。クエリ、スキーマ変更、ポリシー、ストレージメタデータ、マイグレーション向けに環境選択と安全上の指針を提供します。
主な機能
- 01名前付き接続環境の管理
- 02SQL 文字列とファイルの実行
- 03プロジェクト管理 API 権限の使用
- 04クエリ結果の JSON 表示
- 05破壊的変更に関する安全対策
- 06SQL クックブックの参照
活用シーン
- 01指定環境のデータをクエリ
- 02スキーマやポリシーの変更
- 03ファイルからマイグレーションを実行
- 04ストレージメタデータやスキーマの確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jawwadfirdousi/ agent-skills --skill supabaseインストール後、Claude Code で/supabaseを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreenvironments.example.jsonreferences/sql-cookbook.mdscripts/supabase.sh詳細
Supabase
管理 API を通じて Supabase プロジェクトに対して SQL を実行します。データのクエリ、 スキーマの変更(DDL)、ポリシー(RLS)、ストレージのメタデータ、マイグレーションに対応しています。SQL は 管理 API の権限で実行されるため、データベースへの管理者レベルのアクセスとして扱ってください。
すべての操作は、次の 3 つのコマンドを備えた 1 つのスクリプト scripts/supabase.sh を通じて行います。
env— 接続環境を管理します(environments.jsonに保存)sql— SQL 文字列を実行しますsql-file— ファイル内の SQL を実行します
環境
各環境は environments.json(Git の追跡対象外、chmod 600)内の名前付きエントリで、
url と省略可能な access_token を保持します。env サブコマンドで管理します。
# List configured envs (tokens masked)
scripts/supabase.sh env list
# Add an env (--url required; --access-token and --description optional)
scripts/supabase.sh env add dev --url https://<dev-ref>.supabase.co --access-token sbp_...
scripts/supabase.sh env add prod --url https://<prod-ref>.supabase.co --description "Production"
# Update one or more fields on an existing env
scripts/supabase.sh env update dev --url https://<new-ref>.supabase.co --access-token sbp_...
# Inspect one env: human (default), json, or shell export
scripts/supabase.sh env get dev
scripts/supabase.sh env get dev --format json
scripts/supabase.sh env get dev --format export
# Remove an env (refused if it is the only one)
scripts/supabase.sh env remove prod
# Verify at least one env is configured (non-zero exit otherwise)
scripts/supabase.sh env check
スクリプトが適用するルールは次のとおりです。
env addには--urlが必要です。環境名は一意でなければなりません。- 最後に残った環境は
env removeで削除できません。 - アクセストークンはシークレットです。環境に保存されていない場合は、シェルの
SUPABASE_ACCESS_TOKENが代わりに使用されます。 environments.jsonはスキルのルートから読み込まれます。すでに存在する場合は~/.config/claude/supabase-environments.jsonから読み込まれます。
スクリプトが no environments configured または SUPABASE_URL not set と報告した場合、
ユーザーはまだセットアップを完了していません。env add を実行して最初の環境を作成するか、
README を参照するよう案内してください。
環境の選択
コマンドごとに --env <name> を指定して環境を選びます。解決の優先順位は次のとおりです。
1) --env <name> set -> use that env from environments.json
2) SUPABASE_URL + TOKEN exported -> use those exported values
3) exactly one env configured -> use it (--env optional)
4) multiple envs, none named -> error: pass --env <name>
ユーザーが環境を指定した場合(「prod で」「dev で」など)は、--env <name> を渡します。
環境が複数あり、ユーザーが指定していない場合は、実行前にどの環境を使うか確認してください。
SQL の実行
# Run a SQL string
scripts/supabase.sh sql --env dev "SELECT * FROM users LIMIT 5"
scripts/supabase.sh sql --env prod "SELECT count(*) FROM users"
scripts/supabase.sh sql --env dev "INSERT INTO users (name, email) VALUES ('Alice', '[email protected]')"
# Run SQL from a file (prefer for long or multi-statement SQL)
scripts/supabase.sh sql-file --env dev ./migrations/001_init.sql
- SQL は引用符で囲みます。内部の二重引用符はエスケープしてください(例:ポリシー名の
\"items_read_own\")。 sqlは文字列全体を 1 つのクエリとして送信するため、;で区切られた複数の文もまとめて実行されます。$を含む SQL — ドル引用符で囲まれた関数/トリガーの本文($$ … $$)や位置パラメーター($1)など — はsql-fileで実行する必要があります。二重引用符で囲んだsql引数では、シェルが$$(PID に展開)と$1を展開し、 文が破損するためです。ファイルの内容はそのまま送信されるため、sql-fileは安全です。
出力の読み取り
出力は、管理 API から返された生の JSON を jq に通したものです。
- クエリが成功すると、結果が JSON として返されます(
SELECTの場合は行オブジェクトの配列です)。 - クエリが拒否されると、
messageフィールドを含むオブジェクトが返されます。例:{"message": "syntax error at or near ..."}。messageキーのみのオブジェクトかどうかを確認して失敗を判定してください。SQL が拒否されても、HTTP 呼び出しと終了コードは通常成功扱いになります。
安全性
これらのコマンドは管理 API(管理者)の権限で実行されるため、誤った文によってデータが削除されたり、本番プロジェクトが破損したりする可能性があります。実行前に次の点を確認してください。
- 破壊的な文はユーザーに確認してください —
DROP、TRUNCATE、およびWHERE句のないDELETE/UPDATE。特に本番環境に対する操作では必ず確認してください。 - 書き込み先の環境を確認してください。 環境が複数設定されていて、要求が書き込みまたは DDL の場合は、実行前に対象の環境(
--env <name>)を確認してください。書き込み時に環境が自動選択される状態にしてはいけません。 - まず読み取り専用で調査してください。 データやスキーマを変更する前に、
SELECT ... LIMITで確認することを優先してください。 - マイグレーションをアトミックにしてください。 複数段階の変更は、途中で失敗した場合にロールバックされるよう、
sql-fileを使ってBEGIN; ... COMMIT;で囲んでください。CREATE INDEX CONCURRENTLYはトランザクション内で実行できないため、単独の文として実行してください。 - マイグレーションを再実行可能にしてください。
CREATE TABLE IF NOT EXISTS、CREATE OR REPLACE、ADD COLUMN IF NOT EXISTS、DROP ... IF EXISTSを優先してください。
SQL リファレンス
DDL、インデックス、列挙型、ビュー、関数/RPC、トリガー、RLS、データパターン(upsert、JSONB)、pgvector の類似検索、ストレージ、スキーマのイントロスペクションを含む、すぐに使える例については、references/sql-cookbook.md を参照してください。