migrate-app-to-flows について
旧 Dune アプリを `appsApi` ベースの Flows ホスティングへ移行する手順を案内するスキルです。アプリの状態を監査し、デプロイ設定、認証、マニフェスト権限、デプロイスクリプトを更新します。移行済みの項目はスキップします。
主な機能
- 01アプリ設定とデプロイ状態を監査
- 02`app.json` のインフラ項目を更新
- 03Flows 認証のセットアップを実行
- 04ネットワーク権限を作成または更新
- 05デプロイスクリプトを変更
- 06残存する旧式の参照を報告
活用シーン
- 01旧 Dune アプリを Flows ホスティングへ移行
- 02ネットワーク権限を含むルートマニフェストを追加
- 03旧式のデプロイコマンドを置き換え
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cognitedata/ builder-skills --skill migrate-app-to-flowsインストール後、Claude Code で/migrate-app-to-flowsを入力して読み込まれたか確認します。
詳細
アプリを Flows インフラストラクチャに移行する
レガシー Dune アプリを新しい Flows アプリホスティング(appsApi)に完全に移行します。各項目を順番に処理し、すでに正しい状態になっている項目はスキップします。
ステップ 1 — 現在の状態を監査する
app.json、package.json、vite.config.ts、および(存在する場合は)manifest.jsonを読み取ります。
変更を加える前に、簡潔な概要を報告します。
Migration audit:
✗ app.json: missing infra field → will add "infra": "appsApi"
✗ Auth: DuneAuthProvider in use → will run setup-flows-auth
✗ manifest.json: missing → will create
✓ Deploy script: already uses @cognite/cli
その後、ステップ 2~5 を進めます。
ステップ 2 — app.json を更新する
infra がすでに "appsApi" なら、このステップをスキップします。それ以外の場合:
まず、レガシーのデプロイキー形式を修正します。 多くの POC アプリでは "deployment"(単数形、通常のオブジェクト)が使われています。CLI で必要なのは "deployments"(複数形、配列)です。ファイルが古い形式の場合は、キー名を変更し、値を配列でラップしてから次に進みます。
// Before (legacy)
{
"deployment": { "org": "...", "project": "...", ... }
}
// After (correct)
{
"deployments": [{ "org": "...", "project": "...", ... }]
}
次に "infra": "appsApi" を追加します。
{
"name": "My App",
"externalId": "my-app",
"versionTag": "0.0.1",
"infra": "appsApi",
"deployments": [...]
}
ステップ 3 — Flows 認証を設定する
今すぐ setup-flows-auth スキルを実行します。認証関連のすべて(パッケージのインストール、Vite プラグインの更新、エントリーファイルの変更、connectToHostApp の接続)を処理します。
ステップ 4 — manifest.json を作成または更新する
Flows ホストは、アプリに適用するコンテンツセキュリティポリシーの設定に manifest.json を使用します。このファイルはリポジトリのルートに存在する必要があります。
存在しない場合は作成します:
{
"manifestVersion": 1,
"permissions": {
"network": []
}
}
ネットワーク権限を設定するには、外部ドメインへの送信呼び出しをスキャンします。
grep -rn "fetch\|axios\|new XMLHttpRequest" src/ --include="*.ts" --include="*.tsx"
外部 URL のグループごとに、sources/directives の形式で network 配列にエントリを追加します。
{
"manifestVersion": 1,
"permissions": {
"network": [
{
"sources": ["https://api.example.com", "https://maps.googleapis.com"],
"directives": ["connect-src"]
}
]
}
}
ルール:
sourcesにはホスト名だけでなく、完全なオリジン(スキーム+ホスト名)を使用します。"connect-src"はfetch/XMLHttpRequestを対象とします。画像 URL には"img-src"、フォントには"font-src"を使用します。- CDF クラスター URL は自動的に許可されるため、記載しないでください。
- 外部への呼び出しがない場合は、
"network": []のままにします。 - ユーザーが手動で確認する必要がある動的 URL にはフラグを付けます。
ステップ 5 — デプロイスクリプトを更新する
package.json 内の dune deploy または npx @cognite/dune コマンドを置き換えます。
{
"scripts": {
"deploy": "npx @cognite/cli@latest apps deploy --interactive",
"deploy-preview": "npx @cognite/cli@latest apps deploy --interactive"
}
}
その他のすべてのスクリプト(start、build、test など)は変更しないでください。
ステップ 6 — 最終確認
grep -rn "DuneAuthProvider\|useDune\|@cognite/dune" src/ vite.config.ts 2>/dev/null
ユーザーが解決する必要がある残りの該当箇所を一覧表示します。その後、以下を報告します。
Migration complete:
✓ app.json: infra set to "appsApi", deployments key is an array
✓ Auth: setup-flows-auth applied
✓ manifest.json: network permissions set
✓ Deploy scripts: updated to @cognite/cli
続けて、ユーザーが次に行うべきことを正確に伝えます。
Next steps:
1. Run `npm run dev` to start the dev server
2. Open Fusion and verify the app loads and CDF data appears correctly
3. When happy, deploy with: npx @cognite/cli@latest apps deploy --interactive