replica-backend について
replica-backendは、`replica/architecture.md`を基にアプリのレプリカのバックエンドを実装する開発スキルです。認証、データベース、決済、メール、連携、セキュリティを扱い、決済はテストモードから始めます。
主な機能
- 01architecture.mdに基づくバックエンド実装
- 02認証とセッションの指針
- 03データベース移行とアクセス制御
- 04Stripeテストモードの決済フロー
- 05メール、ジョブ、連携の指針
- 06セキュリティチェックリストと記録
活用シーン
- 01アプリのレプリカ向けバックエンド機能の構築
- 02検証付き登録とアカウントアクセスの追加
- 03テストモードでのサブスクリプション実装
- 04バックエンドのセキュリティとデプロイ準備の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jakeschincariol/ replica-skill --skill replica-backendインストール後、Claude Code で/replica-backendを入力して読み込まれたか確認します。
詳細
replica-backend
replica/architecture.md を読み込みます。マイグレーションとサーバーコードを作成し、replica/backend.md(以下のチェックリスト)を最新の状態に保ちます。
ルール
- ユーザー自身のキーを使用し、公式の公開 API のみを使います。 元のアプリの非公開エンドポイントは決して呼び出さず、OAuth クライアントを再利用せず、元のアプリ経由でプロキシしないでください。
- アカウントとキーはユーザーが作成します。 Claude がサービスに登録したり、パスワード、カード情報、実際のキーを入力したりすることはありません。ユーザーが Stripe、Supabase、Resend または Google Cloud のプロジェクトを作成し、キーを
.env.localに設定します。Claude はすべての変数名を記載し、値は空にした.env.exampleを作成します。 - まずテストモードで進めます。 replica-deploy までは Stripe のテストキーとテストカードを使用します。
認証
- メールアドレスでの登録と確認、パスワードのリセット、元のアプリにあればマジックリンクにも対応します。OAuth(Google、Apple)にはユーザー自身の開発者アプリを使用します。
- セッションには HTTP のみで安全な Cookie を使用します。すべての場所からサインアウトできるようにします。
- リコンマップにロールやチームがある場合は、owner、admin、member を用意し、「このユーザーがこのレコードに対してこの操作を行えるか」を判定する関数を 1 つ設けます。
- アカウントを実際に削除できるようにします。登録機能のあるアプリでは、Apple がこれを必須としています。
データベース
architecture.mdに基づくマイグレーションを作成し、リポジトリにコミットして、スクリプトで実行します。- すべてのテーブルにアクセスルールを設定します。Supabase では行レベルセキュリティポリシーを使い、そうでない場合はすべてのクエリで認可関数を呼び出します。必ずテストし、別のユーザーには何も返されないことを確認します。
- 現実的な偽データ(実在の人物のデータは使いません)を使ったシードスクリプトを用意します。
- バックアップを有効にします(ホストの日次バックアップがあれば、それが有効になっていることを確認します)。
支払い
- プランへの登録には Stripe Checkout を、プランの変更やキャンセルには Customer Portal を使用します。カード入力フォームは作成しないでください。
- Webhook では署名を検証し、イベント ID を保存し、すべてのハンドラーを冪等にします(Stripe は再試行します)。
checkout.session.completed、customer.subscription.updated、customer.subscription.deleted、invoice.payment_failedを処理します。 - サブスクリプションのステータスはデータベースに保存し、Webhook で更新し、アプリで読み取ります。クライアントを決して信用しないでください。
- キャンセルは 1 回のクリックでできるようにします。キャンセルしにくい請求は、多くのアプリに対するよくある不満であり、多くの地域で違法です。
メールとジョブ
- トランザクションメールは、独自ドメインから Resend または Postmark 経由で送信します。テンプレートは新たに作成します。
- リマインダー、ダイジェスト、同期、クリーンアップなど、時間に基づいて実行する処理には、再試行とデッドレターのログを備えたジョブを用意します。時刻は UTC で扱い、ユーザーのタイムゾーンで表示します。
インテグレーション
機能マトリクスにある各インテグレーションについて、公式 API、必要な OAuth スコープ(可能な限り少なく)、プロバイダーの審査プロセス、レート制限を確認します。Calendar などの Google スコープでは、一般公開の前に Google の OAuth 検証が必要で、数週間かかります。早めに着手し、その旨を backend.md に記載します。
セキュリティチェックリスト
- シークレットは環境変数にのみ保存し、
.env*を.gitignoreに追加し、クライアントのバンドルには含めない - すべてのルートでサーバー側の入力検証を行う(zod など)
- すべての読み取りと書き込みで認可を確認し、別のユーザーを使ってテストする
- 認証、登録、メールや SMS を送信するすべての処理にレート制限を設ける
- Webhook の署名を検証する
- アップロードにはサイズと種類の制限を設け、別ドメインまたはバケットから配信する
- URL やログにユーザーデータを含めない
- 依存関係を監査する(
npm audit) - プライバシーポリシーにすべての処理事業者(Stripe、Resend、ホスト、アナリティクス)を記載する
出力
動作する認証、データベース、テストモードの支払い、メールとインテグレーション、.env.example、チェックリストにチェックを入れた replica/backend.md、更新済みの機能マトリクスの行。次は /replica-test です。
コメント
Markdown 対応