Communitygithub.com

RosieAlan/agent

Prisma Compute のデプロイとホスティングのガイドです。ユーザーが Prisma Compute、`prisma.compute.ts`、`defineComputeConfig`、Prisma アプリのデプロイやホスティング、`@prisma/cli app deploy`、`compute:deploy`、`create-prisma --deploy`、`PRISMA_SERVICE_TOKEN`、Compute 認証/ワークスペース、アプリ/デプロイ/ビルドログ/ドメイン、localhost と `0.0.0.0`、デプロイ時のポートバインド、Hono、Elysia、Next.js、TanStack Start、Astro、Nuxt、Svelte、Nest、Turborepo、カスタム/プリビルドアーティファクトのフレームワークデプロイ対応状況などについて言及した場合に使用します。

agent とは?

このスキルは、Prisma Compute を使用してアプリケーションを作成、デプロイ、運用するための包括的なガイドを提供します。AIエージェント(Claude Code, Cursor, Codex など)が、Prisma Platform CLI(`@prisma/cli`)と `create-prisma` を活用し、TypeScript アプリを Prisma Compute にデプロイする際のエンドツーエンドのワークフローを支援します。具体的には、`prisma.compute.ts` を使用した型安全なデプロイ設定の作成、認証とワークスペースの管理(`PRISMA_SERVICE_TOKEN` やローカル OAuth)、Next.js や Hono などのフレームワークごとのデプロイ準備チェック、ランタイムのホストとポートバインディングの設定、ブランチと環境変数の管理、デプロイ操作(本番/プレビュー、ビルドログの確認)、そして `@prisma/compute-sdk` を使用したプログラム的なデプロイまでをカバーします。また、デバッグやトラブルシューティングのためのフィードバックチャネルも提供します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/RosieAlan/agent/tree/HEAD/chapter-02-%E5%B7%A5%E7%A8%8B%E5%BA%95%E5%BA%A7/llm/services/chat/.agents/skills/prisma-compute

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Prisma Compute

Prisma Compute アプリの作成、デプロイ、運用、およびフレームワーク固有のデプロイ準備についてエージェントをガイドします。

Prisma Compute CLI サーフェス

Compute アプリのワークフローには Prisma Platform CLI を使用します:

bunx @prisma/cli@latest app deploy --help
bunx @prisma/cli@latest app --help
bunx @prisma/cli@latest build logs --help
bunx create-prisma@latest --help

Compute アプリのデプロイには @prisma/cli@latest を使用します。新しいプロジェクトのスキャフォールディングには create-prisma@latest を使用します。

フィードバックの送信と CLI 問題の報告

CLI には組み込みのフィードバックチャネルがあります。コマンドがクラッシュした場合(UNEXPECTED_ERROR)、トラブルシューティング後も失敗が解消されない場合、またはユーザーが Prisma チームにフィードバックを送信したい場合に使用します:

bunx @prisma/cli@latest feedback "app deploy crashed: <first error line>"
bunx @prisma/cli@latest feedback "love the deploy flow" --email [email protected]

クラッシュ出力は自動的にこのチャネルを指し示します:--json クラッシュエンベロープには、nextActions に recover エントリとして正確な事前入力されたコマンドが含まれています(そのまま実行します)。人間向けのクラッシュ出力は Tell us what happened: というヒントで終わります。フィードバックは匿名ですが、--email が渡された場合は、CLI バージョン、Node バージョン、OS プラットフォーム/アーキテクチャのみが添付されます。メッセージにシークレット、接続 URL、ユーザーデータを決して含めないでください。

信頼できる情報源の優先順位

何を編集または実行するかを決定する際は、次の順序でエビデンスを使用します:

  1. プロジェクトの生成されたスクリプトと設定、特に prisma.compute.ts、compute:deploy、フレームワーク設定、および package.json。
  2. create-prisma および @prisma/cli からの CLI ヘルプ出力。
  3. ローカルにインストールされたパッケージコード、生成されたアーティファクト、型定義。
  4. 公式ドキュメント。

適用タイミング

このスキルは以下の場合に使用します:

  • Prisma Compute にデプロイできる新しいアプリを作成する場合
  • 既存の TypeScript アプリを Prisma Compute にデプロイする場合
  • 型付けされた prisma.compute.ts デプロイ設定を作成または更新する場合
  • フレームワークが Compute に対応しているか判断する場合
  • create-prisma --deploy、compute:deploy、または app deploy をデバッグする場合
  • Compute アプリのログ、デプロイ、環境変数、ドメインを管理し、プラットフォームブランチを一覧表示する場合(branch list;ブランチの作成/削除コマンドはありません)
  • GitHub/Console のビルドログと GitHub のプッシュ-to-デプロイステータスを検査する場合
  • ブラウザ認証、複数の保存されたワークスペース、または Prisma サービス トークンを使用して非インタラクティブなデプロイを実行する場合
  • ローカルの Prisma Platform ワークスペースを @prisma/cli 用に切り替え、選択、一覧表示、またはログアウトする場合
  • @prisma/cli feedback を使用して、解決できない Compute CLI の失敗に関するフィードバックを送信する場合
  • @prisma/compute-sdk または Management API 統合を使用したプログラムによるデプロイの場合

決定木

  1. 既存のプロジェクトのデプロイまたは再デプロイ: references/app-deploy-cli.md を読んでください。

  2. 型付けされた Compute 設定、モノレポ、デプロイターゲット、アプリルート、ビルド/環境のデフォルト: references/compute-config.md を読んでください。

  3. フレームワーク固有のビルド/ランタイム作業: references/frameworks.md を読んでください。

  4. スキャフォールドからの新しいプロジェクト: references/create-prisma.md を読んでください。

  5. プログラムによるデプロイ、SDK、API、または低レベルのアプリ/デプロイメントの概念: references/sdk-api.md を読んでください。

  6. ビルド、認証、環境、デプロイ、またはランタイムの失敗: references/troubleshooting.md を読んでください。

優先順位別ルール

優先度カテゴリ影響プレフィックス
1コマンド検証CRITICALverify-
2認証とワークスペース選択CRITICALauth-
3フレームワーク対応状況CRITICALframework-
4ランタイムホストとポートバインディングCRITICALruntime-
5型付けされた Compute 設定HIGHconfig-
6ブランチ、環境、データベースの配線HIGHenv-
7デプロイ操作HIGHdeploy-
8SDK と API の自動化MEDIUMsdk-

クイックルール

1. コマンド検証

  • verify-help-first - 作業中に CLI ヘルプ出力を使用してコマンド構文を確認します。
  • verify-prisma-vs-platform-cli - prisma app deploy が ORM CLI に存在すると想定しないでください。タスクが @prisma/cli を使用すべきか確認します。
  • verify-generated-scripts - プロジェクトに既に compute:deploy スクリプトがある場合は、生成されたものを優先します。
  • verify-public-url - 実際のデプロイ後は、ローカルまたは準備完了チェックのみを信頼するのではなく、パブリックなデプロイメント URL を要求します。
  • verify-config-support - prisma.compute.ts を型付けされた Compute 設定として扱います。編集またはデプロイする前に、プロジェクトの設定と生成されたスクリプトを検査します。
  • verify-auth-workspace-support - @prisma/cli auth workspace コマンドをローカルワークスペースの一覧表示/使用/ログアウトフローに使用します。

2. 認証とワークスペース選択

  • auth-source-precedence - 空でない PRISMA_SERVICE_TOKEN はコマンドのアクティブな認証ソースであり、ローカル OAuth ワークスペースは実行時に無視されます。空に設定されている場合、CLI は保存された OAuth にフォールバックする代わりに失敗する必要があります。
  • auth-multi-workspace - auth login は、同じマシン上の複数のワークスペースに対して OAuth セッションを保存できます。アクティブなワークスペースポインターが、通常のコマンドが使用する保存済み OAuth 権限を選択します。
  • auth-list-before-switch - auth workspace list --json を使用してローカルセッションを検査します。エージェントは、名前が曖昧になる可能性があるため、名前よりも JSON からのワークスペース ID を優先する必要があります。
  • auth-switch-explicitly - 非インタラクティブな切り替えには auth workspace use <id-or-name> を使用します。インタラクティブなピッカー用、またはローカル OAuth ワークスペースがちょうど 1 つ存在する場合にのみ、引数なしの auth workspace use を使用します。
  • auth-no-fallthrough - アクティブな OAuth ワークスペースがログアウトされているか、リフレッシュに失敗した場合、CLI は他のキャッシュされたワークスペースに自動的にフォールスルーしてはいけません。auth workspace use <id> を実行して次のワークスペースを選択します。
  • auth-single-workspace-logout - auth workspace logout <id-or-name> または auth logout --workspace <id-or-name> を使用して、1 つのローカル OAuth ワークスペースセッションを削除します。プレーンな auth logout は、すべてのローカル OAuth ワークスペースセッションをクリアします。
  • auth-service-token-switching - PRISMA_SERVICE_TOKEN が設定されている間は、auth workspace use は使用できません。サービス トークンがアクティブな認証ソースであるためです。ローカル OAuth ワークスペースを切り替えるには、環境変数を設定解除します。ワークスペースのログアウトは、ローカル OAuth 状態のみをクリーンアップします。
  • auth-storage-awareness - ローカルの OAuth 資格情報はプラットフォーム認証ファイルにあり、ワークスペースのメタデータはサイドカーのコンテキストファイルにあります。プロジェクトのピンは .prisma/local.json にあり、CLI アプリ/プロジェクトの状態は、存在する場合は prisma.compute.ts の近くにある .prisma/cli/state.json にあります。

3. フレームワーク対応状況

  • framework-cli-first - @prisma/cli app deploy に対してデプロイ準備を評価します。create-prisma がスキャフォールディングできるものに対してではありません。
  • framework-supported-cli-deploy - Compute デプロイは nextjs、nuxt、astro、hono、nestjs、tanstack-start、custom、および bun をサポートしています。
  • framework-create-prisma-defaults-only - create-prisma は生成されたデフォルトと compute:deploy を提供できますが、既存のアプリの一般的なデプロイサーフェスではありません。
  • framework-build-output - Compute は、静的な出力だけでなく、サーバーエントリポイントまたはフレームワークアーティファクトを必要とします。

4. ランタイムホストとポートバインディング

  • runtime-bind-all-interfaces - デプロイされたサーバーは、すべてのインターフェース(0.0.0.0 またはフレームワークに相当するもの)にバインドする必要があり、ハードコードされた localhost や 127.0.0.1 ではありません。
  • runtime-match-http-port - アプリはデプロイされた HTTP ポートでリッスンする必要があります:可能な場合は process.env.PORT を読み取り、一致する --http-port を渡します。
  • runtime-readiness-port-only - Compute の準備完了チェックはリッスン中のポートを監視します。ループバック専用のリスナーは、パブリックイングレスが到達できないのに準備完了に見えることがあります。
  • runtime-respond-within-60s - イングレスはアプリに応答を開始するまで 60 秒を与え、その後 504 Gateway Time-out を返してリクエストをキャンセルします。ファーストアンサーを処理し、より長い作業は waitUntil またはキュー内で実行するようにハンドラーを設計します。リクエスト内で決して実行しないでください。

5. 型付けされた Compute 設定

  • config-optional-simple-app - 通常の単一アプリをデプロイするために prisma.compute.ts は必須ではありません。永続的な設定がない場合はフラグを使用します。
  • config-init-formalizer - bunx @prisma/cli@latest init で新しい設定を生成します:フレームワークを検出し、name/framework/httpPort(Bun/Hono の場合はエントリも)をピン留めし、プロジェクトリンクを提供します。--format json は依存関係のない prisma.compute.json を書き込みます。init は設定が既に存在する場合は拒否し、コードをスキャフォールディングせず、デプロイもしません。
  • config-use-prisma-compute-ts - 再利用可能なデプロイデフォルトは prisma.config.ts ではなく、prisma.compute.ts と defineComputeConfig に配置します。
  • config-app-vs-apps - 単一のデプロイターゲットには app を、モノレポまたはマルチアプリリポジトリには apps を使用します。正確に 1 つを定義します。
  • config-monorepo-roots - モノレポの場合、prisma.compute.ts を使用してアプリターゲット、ルート、フレームワークデフォルト、エントリポイント、ポート、環境入力を宣言します。
  • config-targets - マルチアプリ設定では、@prisma/cli app deploy web は apps.web ターゲットを選択します。[app] がない場合、コマンドはカレントディレクトリからターゲットを推測できます。そうでなければ、デプロイはすべてのターゲットを実行できますが、build/run は 1 つを必要とします。
  • config-region-new-app-only - 設定の region は新しく作成されたアプリのデフォルトにすぎません。既存のアプリへのデプロイは、アプリの現在のリージョンを保持します。
  • config-custom-artifact - プリビルドまたはカスタムビルドのアーティファクトには、framework: "custom" と build.outputDirectory および build.entrypoint を使用します。
  • config-no-project-branch-secrets - ワークスペース、プロジェクト、ブランチ、プロダクションインテント、サービス トークン、シークレット値を prisma.compute.ts にコミットしないでください。これらはフラグ、.prisma/local.json、環境ストレージ、または CI シークレットに保持します。region、root、framework、entry、httpPort、およびシークレット以外の環境ファイルパスなどのアプリレベルのデフォルトは設定に属します。
  • config-flags-win - --framework、--entry、--http-port、--region、--env などの明示的なデプロイフラグは、一致する設定値をオーバーライドします。

6. ブランチ、環境、データベース

  • env-do-not-leak-secrets - DATABASE_URL、サービス トークン、シークレット値の完全な値を決して出力しないでください。
  • env-deploy-loads-dotenv - 生成されたデプロイスクリプトは prisma.compute.ts または --env .env を介して環境変数をロードする場合があります。再デプロイする前に実際のスクリプト/設定を検査します。
  • env-migrations-separate - 再デプロイスクリプトはマイグレーションやシードデータを実行しません。適切な Prisma データベーススクリプトを別途実行します。
  • env-cli-token-name - @prisma/cli はサービス トークン認証に PRISMA_SERVICE_TOKEN を使用します。
  • env-branch-scope - ブランチデプロイ、ブランチ環境変数、およびブランチデータベースは同じブランチ名を使用する必要があります。プレビューブランチをターゲットにする場合は、明示的に --branch <git-name> を渡します。
  • env-production-vs-preview - プロダクション環境には --role production、プレビューテンプレート環境には --role preview、ブランチ固有のオーバーライドには --branch <git-name> を使用します。
  • env-db-explicit - データベースと環境の配線は、データベースおよびプロジェクト環境コマンドを通じて明示的に保ちます。デプロイの例にはデータベース設定を追加せず、デプロイはマイグレーションの実行、データのシード、またはアプリごとに自動的にデータベースを作成しません。

7. デプロイ操作

  • deploy-prod-intent - ユーザーがプロダクションデプロイを意図している場合にのみ --prod --yes を使用します。アプリの最初のプロダクションデプロイは --prod なしで自動プロモートされます。このフラグは後続のプロダクションブランチデプロイをゲートします。
  • deploy-no-promote - ビルドと検証のために app deploy --no-promote を使用します:これは、ライブデプロイメントに影響を与えずに独自の URL で到達可能な候補をビルドし、後で app promote <deployment-id> でプロモートされます。
  • deploy-github-default-branch - Compute アプリが GitHub のプッシュ-to-デプロイに接続されている場合、デフォルトブランチへのマージがプロダクションデプロイパスです。ユーザーにマージされた PR ブランチを再デプロイするか、デフォルトブランチのプレビューデプロイを実行するように指示する代わりに、デプロイメントレコードまたは GitHub チェックランを確認します。
  • deploy-build-logs - GitHub/Console のビルド出力には @prisma/cli build logs <build-id> を使用します。ランタイムデプロイメントログには app logs を使用します。2 つの ID は異なります。
  • deploy-noninteractive-auth - 非インタラクティブなデプロイには、正しいアクティブな保存済み OAuth ワークスペースか、サポートされているサービス トークン環境変数のいずれかが必要です。トークンを決して出力しないでください。
  • deploy-json-for-agents - スクリプトおよびエージェントが読み取り可能な出力には --json --no-interactive を使用します。
  • deploy-create-project - ユーザーがデプロイに新しいプロジェクトを作成してリンクさせたい場合にのみ --create-project <name> を使用します。これは --project および PRISMA_PROJECT_ID と競合します。
  • deploy-ops-targets - App show/open/logs/list-deploys/promote/rollback/remove およびドメインコマンドは、prisma.compute.ts からの [app] ターゲットも受け入れることができます。
  • deploy-report-cli-bugs - UNEXPECTED_ERROR または解決できない障害が発生した場合は、フィードバックコマンドを使用して報告します。上記の「フィードバックの送信と CLI 問題の報告」を参照してください。

8. SDK と API

  • sdk-use-cli-first - アプリのワークフローには @prisma/cli app deploy を優先します。ユーザーがより低レベルの自動化を構築している場合を除き、create-prisma は新しいアプリのスキャフォールディングにのみ使用します。
  • sdk-result-handling - @prisma/compute-sdk は Result 値を返します。例外に依存する代わりに、isOk()/isErr() をチェックします。
  • sdk-snapshot-detection - ディスクにチェックアウトされていないリポジトリのスナップショットには detectComputeApp を使用します。ワークスペースを自分で列挙し、候補となるアプリアルートごとに 1 回呼び出します。

推奨ワークフロー

  1. プロジェクトを検査します:パッケージマネージャー、テンプレート/フレームワーク、package.json のスクリプト、Prisma バージョン、Prisma クライアントの場所、prisma.compute.ts、既存の compute:deploy。
  2. 実際に使用されているパッケージの CLI ヘルプ出力を確認します。
  3. プロジェクト/アプリの変更前に認証コンテキストを確認します:auth whoami --json、および複数のローカルセッションが存在する可能性がある場合は auth workspace list --json。
  4. パスを選択します:
    • 既存のアプリデプロイ:設定が存在する場合は設定バックアップのターゲット、生成された compute:deploy、または @prisma/cli app build/run/deploy フラグ
    • 新しいアプリのスキャフォールド:create-prisma、次に生成された compute:deploy または @prisma/cli app deploy
    • 低レベルの自動化:@prisma/compute-sdk または Management API
  5. デプロイプロセスを監視します:デプロイが完了するのを待ち、ビルドログまたはデプロイメントログを確認します。
  6. デプロイされた URL を確認します:ビルド/テスト段階では --json 出力を使用し、実際のデプロイ後はパブリック URL を取得します。

関連スキル