supabase-best-practices について
supabase-best-practicesは、Clerk認証を使うSupabaseアプリ向けの開発スキルで、優先度付きのセキュリティとパフォーマンス指針を提供します。データベース、API、ストレージ、Realtime、Edge Functionsを扱い、個別の参照ファイルに例を掲載しています。
主な機能
- 0110カテゴリの優先度付きルール
- 02SupabaseとClerkの連携指針
- 03RLSポリシーの推奨事項
- 04コード例付きの参照ファイル
活用シーン
- 01新規Supabaseプロジェクトの保護
- 02Row Level Securityポリシーのレビュー
- 03Clerk認証連携の確認
- 04Edge FunctionsとStorage設定の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pedrobarretocw/ supabase-best-practices --skill supabase-best-practicesインストール後、Claude Code で/supabase-best-practicesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/rules/_sections.md_template.mdapi-filter-queries.mdapi-publishable-keys.mdapi-service-role-server-only.mdauth-app-metadata-authorization.mdauth-jwt-claims-validation.mdauth-session-management.mdauth-user-metadata-safety.mdclerk-client-client-side.mdclerk-client-server-side.mdclerk-mfa-policies.mdclerk-no-jwt-templates.mdclerk-org-policies.mdclerk-role-claim.mdclerk-setup-third-party.mddb-foreign-keys.mddb-indexes-strategy.mddb-migrations-versioned.mddb-schema-design.mddb-triggers-security.mddb-views-security-invoker.mdedge-cors-handling.mdedge-secrets-management.mdedge-verify-jwt.mdrealtime-cleanup-subscriptions.mdrealtime-private-channels.mdrealtime-rls-authorization.mdrls-add-indexes.mdrls-always-enable.md詳細
Supabase のベストプラクティス
Clerk 認証を統合した Supabase アプリケーション向けの、セキュリティとパフォーマンス最適化に関する包括的なガイドです。10 のカテゴリにわたる 40 以上のルールを、影響度の高い順にまとめ、安全な開発とコードレビューを支援します。
適用する場面
次のような場面で、これらのガイドラインを参照してください。
- 新しい Supabase プロジェクトをセットアップするとき
- Clerk 認証を Supabase と統合するとき
- Row Level Security(RLS)ポリシーを作成するとき
- データベーススキーマを設計するとき
- リアルタイム機能を実装するとき
- Storage バケットを設定するとき
- Edge Functions を作成するとき
- セキュリティ上の問題がないかコードをレビューするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | Row Level Security | CRITICAL | rls- |
| 2 | Clerk Integration | CRITICAL | clerk- |
| 3 | Database Security | HIGH | db- |
| 4 | Authentication Patterns | HIGH | auth- |
| 5 | API Security | HIGH | api- |
| 6 | Storage Security | MEDIUM-HIGH | storage- |
| 7 | Realtime Security | MEDIUM | realtime- |
| 8 | Edge Functions | MEDIUM | edge- |
| 9 | Testing | MEDIUM | test- |
| 10 | Security | MEDIUM | security- |
クイックリファレンス
1. Row Level Security(CRITICAL)
rls-always-enable- public スキーマのテーブルでは常に RLS を有効にするrls-wrap-functions-select- パフォーマンス向上のため、認証関数を (SELECT ...) でラップするrls-add-indexes- RLS ポリシーで使用するカラムにインデックスを追加するrls-specify-roles- TO authenticated 句でロールを指定するrls-security-definer- 複雑なポリシーには SECURITY DEFINER 関数を使用するrls-minimize-joins- RLS ポリシーでの結合を最小限にするrls-explicit-auth-check- auth.uid() による明示的なチェックを使用するrls-restrictive-policies- 制約を追加するには RESTRICTIVE ポリシーを使用する
2. Clerk Integration(CRITICAL)
clerk-setup-third-party- Third-Party Auth 統合を使用する(JWT テンプレートは使用しない)clerk-client-server-side- サーバーサイドクライアントには accessToken コールバックを使用するclerk-client-client-side- クライアントサイドクライアントには useSession() フックを使用するclerk-role-claim- Clerk で role: authenticated クレームを設定するclerk-org-policies- マルチテナント RLS には組織クレームを使用するclerk-mfa-policies- RESTRICTIVE ポリシーで MFA を強制するclerk-no-jwt-templates- 非推奨の JWT テンプレート統合は使用しない
3. Database Security(HIGH)
db-migrations-versioned- スキーマ変更にはバージョン管理されたマイグレーションを使用するdb-schema-design- 適切なスキーマ設計パターンに従うdb-indexes-strategy- 適切なインデックス戦略を実装するdb-foreign-keys- 常に外部キー制約を使用するdb-triggers-security- トリガー関数を適切に保護するdb-views-security-invoker- ビューには SECURITY INVOKER を使用する
4. Authentication Patterns(HIGH)
auth-jwt-claims-validation- 常に JWT クレームを検証するauth-user-metadata-safety- user_metadata は信頼できないものとして扱うauth-app-metadata-authorization- 認可には app_metadata を使用するauth-session-management- 適切なセッション管理を実装する
5. API Security(HIGH)
api-filter-queries- RLS が有効でも、クエリには常にフィルターを適用するapi-publishable-keys- publishable キーを正しく使用するapi-service-role-server-only- service role キーをクライアントに絶対に公開しない
6. Storage Security(MEDIUM-HIGH)
storage-rls-policies- storage.objects で RLS を有効にするstorage-bucket-security- バケットレベルのセキュリティを設定するstorage-signed-urls- 非公開ファイルには署名付き URL を使用する
7. Realtime Security(MEDIUM)
realtime-private-channels- 機密データにはプライベートチャンネルを使用するrealtime-rls-authorization- RLS ポリシーはリアルタイム機能にも適用されるrealtime-cleanup-subscriptions- アンマウント時にサブスクリプションをクリーンアップする
8. Edge Functions(MEDIUM)
edge-verify-jwt- Edge Functions では常に JWT を検証するedge-cors-handling- CORS を適切に処理するedge-secrets-management- 機密データにはシークレットを使用する
9. テスト(中)
test-pgtap-rls- pgTAP で RLS ポリシーをテストしますtest-isolation- テストを適切に分離しますtest-helpers- テストヘルパー関数を使用します
10. セキュリティ(中)
security-validate-inputs- 処理する前に、すべての入力を検証しますsecurity-audit-advisors- Security Advisor のチェックを定期的に実行します
使用方法
詳しい説明とコード例については、個々のルールファイルをお読みください。
references/rules/rls-always-enable.md
references/rules/clerk-setup-third-party.md
references/rules/_sections.md
各ルールファイルには、以下が含まれています。
- 重要な理由の簡単な説明
- 説明付きの誤ったコード例
- 説明付きの正しいコード例
- このパターンを使用しない場合
- 公式ドキュメントへの参考リンク
コンパイル済みドキュメント全文
すべてのルールを展開した完全なガイドについては、references/supabase-guidelines.md をご覧ください。
コメント
Markdown 対応