migrate-googleai について
Google AI Studio のプロトタイプを、静的な Domo App Platform Custom App に移行するためのスキルです。ビルド、サブパス配信、ルーティング、秘密情報の扱い、公開要件を示します。
主な機能
- 01Vite で dist/ を生成
- 02サブパス配信用の相対アセットパス
- 03静的ホスティング向けルーティング案内
- 04クライアント側の秘密情報管理ルール
- 05Domo の公開手順要件
活用シーン
- 01AI Studio アプリの Domo 向け移行
- 02ネストしたパスでのアセット読み込み修正
- 03静的デプロイ向けルーティング調整
- 04AI Studio 環境変数への依存解消
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ stahura/ domo-ai-vibe-rules --skill migrate-googleaiインストール後、Claude Code で/migrate-googleaiを入力して読み込まれたか確認します。
詳細
ルール:Google AI Studio のプロトタイプを Domo App Platform のカスタムアプリに移行する(静的な dist をデプロイ)
Google AI Studio で開始されたプロジェクト(多くの場合、Cloud Run またはプレビュー向け)を、Domo CLI で静的アセットとしてデプロイする Domo App Platform のカスタムアプリに変換します。 必要なデプロイ要件は次のとおりです。
npm run buildで自己完結型のdist/フォルダーが生成されることcd dist && domo publishが機能すること(Domo はアプリをサイトのルートではなく、サブパスから配信します)- アプリがアセットを正しく読み込み、更新やナビゲーションで問題が発生しないこと
AI Studio 由来かどうかを判定する
次のいずれかが見られる場合、そのプロジェクトは「AI Studio 由来」と見なします。
- README に Google AI Studio/Gemini API/「Build」モード/Cloud Run の記載がある
- cloudbuild.yaml、Dockerfile、または Cloud Run のデプロイ手順がある
process.env.GEMINI_API_KEYの使用、または「AI Studio が提供」と説明されたプレースホルダーがある- 静的ホスティングではなく、サーバー/コンテナ経由で実行する構成になっている
該当する場合は、以下の手順を適用してください。
主な目的
次の条件を満たす、標準的なフロントエンドにします。
- ローカルで
npm run devにより実行できる npm run buildで本番用ファイルがdist/に生成される- ルート以外のサブパスからホストできる(Domo App Platform)
- UI の描画にサーバーランタイムを必要としない
ステップ 1 — 標準的なビルドパイプラインを用意する
package.json を開き、選択したツールチェーンに適したスクリプトが存在し、正しく設定されていることを確認します。
-
Vite の場合:
dev:vitebuild:vite buildpreview:vite preview- 出力先が
dist/であることを確認します
-
CRA の場合:
buildのデフォルト出力先はbuild/です(この要件を満たしません)- 次のいずれかを選択します。 A) Vite に移行する(App Platform ではこちらを推奨します)、または B) Domo の公開手順/コマンドを更新する(ユーザーが明示的に CRA を希望する場合のみ)
判断に迷う場合は、デフォルトで Vite を使用します。
受け入れ基準:
npm installが成功するnpm run buildにより、index.htmlとassets/*を含むdist/が作成される
ステップ 2 — Domo でアセットが機能するようベースパスを修正する(サブパスでのホスティング)
Domo App Platform はアプリを / でホストしません。アプリはネストされたパスの下に配置されます。
したがって、アセットのパスは相対パスにするか、明示的に設定する必要があります。
-
Vite の場合:ベースパスを相対パスに設定します
vite.config.*にbase: './'を設定します
-
その他のバンドラーの場合:同等の「public path」が相対パスになるよう設定します。
受け入れ基準:
- ビルドした
dist/index.htmlをネストされたパスから開いても、JS/CSS アセットが読み込まれる(404 が発生しない) - ホストのルートが確実に分かっている場合を除き、
/assets/...のような絶対パスをハードコードしない
ステップ 3 — 静的ホスティングに適した堅牢なルーティングにする
アプリが React Router(または他のクライアントルーター)を使用している場合:
- プラットフォームが SPA のリライトを提供すると分かっている場合を除き、App Platform では HashRouter を推奨します。
- HashRouter への切り替えの影響が大きすぎる場合は、Domo でリライト規則を設定しない限り、深い階層のルートを更新すると 404 になることをドキュメントに記載します。
デフォルトの対応:
- ルーターが存在し、リライトを制御できるか不明な場合は、
HashRouterに切り替えます。
受け入れ基準:
- ビルドしたアプリで、サーバーのリライトなしにナビゲーションと更新ができる
ステップ 4 — 環境変数とシークレット:AI Studio 専用の前提を取り除く
AI Studio は、ホスト上での実行時に Gemini API キーなどのプレースホルダーを「自動的に」提供することがあります。 Domo App Platform では、ブラウザーにシークレットを安全に保持することはできません。
ルール:
- 生の API キーをクライアントコードに含めてはいけません。
- UI から Gemini/LLM を呼び出す必要がある場合:
- 利用可能で許可されていれば、domo.js 経由で Domo AI API を使用することを優先する、または
- バックエンド(例:Domo Code Engine)を介してプロキシし、サーバー側でシークレットを注入する
process.env.*のパターンを、ツールチェーン固有の環境変数の使用方法に置き換えます。- Vite:
import.meta.env.VITE_*
- Vite:
- 必要な変数(シークレットを除く)を説明する
.env.exampleを追加します。
受け入れ基準:
- コミットされたシークレットがない
- AI Studio による環境変数の注入がないことによる実行時クラッシュがない
Step 5 — Domo のデプロイ契約
最終的な開発者ワークフローが次のとおりであることを確認します。
npm run buildcd distdomo publish
App Platform プロジェクトで Domo のマニフェスト/設定ファイル(例:manifest.json)が必要な場合は、Domo が想定する場所に配置するか、ビルド中に dist/ へコピーされるようにしてください。
プラットフォームがマニフェストをルートに配置することを想定している一方で、dist/ を公開する場合は、次のいずれかを実装してください。
- ビルドの一部として、必要な設定/マニフェストを
dist/にコピーする(postbuild スクリプト) - または、ユーザーが定めた標準と異なる場合は、公開方法を調整する
デフォルト:
- 必要な App Platform ファイルが
dist/にない場合にコピーするpostbuildスクリプトを追加します。
受け入れ基準:
dist/に公開と実行に必要なものがすべて含まれている。- 手動でファイルをコピーせずに、
dist/内からdomo publishを実行できる。
出力要件(アシスタントとして提供するもの)
変更を適用した後、次の内容を提示してください。
- 変更したファイルの簡潔な一覧
- ローカルで実行する正確なコマンド
- 次の項目を確認する「完了チェックリスト」:
- ビルドによって
dist/が生成される - サブパスでアセットが読み込まれる
- ルーティングが機能する(ハッシュルーター、または必要なリライトについての説明)
- クライアントにシークレットが含まれていない
- ビルドによって
決断力を持って変更を実装し、ファイルが不足していて作業を進められない場合を除き、追加の質問はしないでください。