mcpField
M
migrate-app-to-flows

migrate-app-to-flows

github.com/cognitedataクラウド・DevOps61.7k 回インストール1 日前に更新
リポジトリ

migrate-app-to-flows について

旧 Dune アプリを `appsApi` ベースの Flows ホスティングへ移行する手順を案内するスキルです。アプリの状態を監査し、デプロイ設定、認証、マニフェスト権限、デプロイスクリプトを更新します。移行済みの項目はスキップします。

主な機能

  1. 01アプリ設定とデプロイ状態を監査
  2. 02`app.json` のインフラ項目を更新
  3. 03Flows 認証のセットアップを実行
  4. 04ネットワーク権限を作成または更新
  5. 05デプロイスクリプトを変更
  6. 06残存する旧式の参照を報告

活用シーン

  1. 01旧 Dune アプリを Flows ホスティングへ移行
  2. 02ネットワーク権限を含むルートマニフェストを追加
  3. 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

コメント