fallow-cloud-setup について
fallow-cloud-setupは、本番環境のランタイムカバレッジをFallow Cloudに接続するセットアップスキルです。ビーコンとCIの設定を案内し、ランタイムデータ、インベントリ、ソースマップ、デプロイ、コードを同じコミットSHAに結び付けます。
主な機能
- 015段階のCloud設定プラン生成
- 02Fallowビーコンのインストールと設定
- 03CIでのインベントリとソースマップ送信
- 04コミットSHAに基づくデプロイ登録
- 05有効化確認と未完了手順の特定
活用シーン
- 01アプリの本番カバレッジをFallow Cloudに接続
- 02CIのアップロードとデプロイ登録を設定
- 03データ欠落や関数の未一致を調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ fallow-rs/ fallow-skills --skill fallow-cloud-setupインストール後、Claude Code で/fallow-cloud-setupを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlreferences/manual-setup.md
詳細
Fallow Cloud のセットアップ:1 つのコミット SHA で実現するランタイムカバレッジ
Fallow Cloud が本番環境のランタイムカバレッジとコードを結び付けるのは、次の 5 つが同じコミット SHA を指定している場合に限られます。
- アプリ内のビーコンが
commitShaを送信する。 - CI がその SHA の静的インベントリをアップロードする。
- ビルドでコードをバンドルする場合、CI がその SHA のソースマップをアップロードする。
- CI がその SHA のデプロイを登録する。
- その SHA の最初の本番データが届く。
fallow coverage setup --cloud --json は、5 つすべての手順の計画を書き出します。このスキルでは、その計画を適用します。
使用する場面
- アプリに Fallow ビーコンを追加し、本番環境のカバレッジを Fallow Cloud に送信する場合。
- インベントリとソースマップをアップロードし、デプロイを登録する CI 手順を設定する場合。
- Fallow Cloud にリポジトリのデータが表示されない、または一致する関数が表示されない場合に、不足している手順を特定する場合。
使用しない場面
- ローカルのコード品質ツール、CI 品質ゲート、またはエージェントの連携には使用しないでください。
fallow-setupを使用してください。 - すでにセットアップ済みのリポジトリのランタイムデータを読み取る場合には使用しないでください。
fallowを使用してください。
ルール
- API キーの値をファイル、コマンド、メッセージに書き込まないでください。計画に記載された環境変数名(
cloud.api_key_env、cloud.browser_key_env)を使用してください。ユーザーは値を CI シークレットおよびサーバーの環境変数として保管します。--api-keyフラグは決して使わず、コマンドの前にキーを記述しないでください(FALLOW_API_KEY=... npx ...)。ユーザーがシェルでキーをエクスポートします。 - ブラウザバンドルに使用できるのは、取り込み専用キー(プレフィックス
fallow_pub_k1_)だけです。フルキー(プレフィックスfallow_live_k1_)は CI とサーバーに保管します。 - すべての手順で同じコミット SHA を使用してください。計画内の
$GITHUB_SHAやcommitSha式を別の値に置き換えないでください。 - フラグは
fallow coverage setup --helpで確認してください。記憶に頼ってフラグを使用しないでください。 - CI ワークフローを変更する前に、変更内容をユーザーに提示してください。デプロイワークフローにはシークレットや本番環境へのアクセス権が含まれる場合があります。
手順
-
フラグを確認します。
npx fallow coverage setup --helpを実行します。--cloudが表示されない場合は、手順 2〜8 ではなく手動セットアップを使用してください。同じ 5 つの手順があります。 -
プランを取得します。 リポジトリのルートで
npx fallow coverage setup --cloud --jsonを実行します。cloud.project_idが null の場合は、Fallow Cloud のプロジェクト ID(owner/repo)をユーザーに尋ね、--project-id <owner/repo>を付けてコマンドを再実行します。これにより、スニペットにOWNER/REPOのプレースホルダーが残りません。コマンドが 2 で終了し、JSON が出力されない場合は、stderr のエラーを確認してください。プロジェクト ID、--git-sha、--api-endpointなどの入力が無効です。 -
プランを読みます。
members[]には、コードを実行する各ワークスペースメンバーのエントリがあります。各エントリには、それぞれ独自のsnippets、files_to_edit、dockerfile_snippet、warningsがあります。members[]のスニペットのみを適用してください。トップレベルのsnippetsとfiles_to_editは、最初のメンバーの内容を繰り返しています。commandsはビーコンをインストールします。cloud.ci.stepsには、GitHub Actions の手順が含まれています(cloud.ci.providerはgithub_actionsです)。cloud.ci.workflows_detectedには、デプロイ用と思われるワークフローファイルが示されます。cloud.source_maps.dirsには、バンドルされた各メンバーのビルド出力先が示されます。cloud.source_maps.reasonには、ソースマップの出力など、ビルドで必要な処理が示されます。warningsには、Node サーバーのカバレッジソースなど、プランでは対応できない内容が示されます。
-
ビーコンをインストールします。 プロジェクトのパッケージマネージャーを使用して、
commandsのコマンドを実行します。 -
スニペットを追加します。 各メンバーについて、各スニペットを
pathに指定されたファイルに追加します。スニペットのprojectId、commitSha、coverageOrigin、runtimeSurfaceの値はそのままにします。ファイルが存在する場合は、エントリーモジュールの先頭にスニペットを追加してください。ファイルを置き換えないでください。 -
コミット SHA をランタイムに渡します。
- ブラウザーバンドル:ビルド手順で
VITE_FALLOW_COMMIT_SHAを設定します(CI の手順に記載されています)。 - コンテナー内のサーバー:
dockerfile_snippetの行を Dockerfile に追加し、--build-arg FALLOW_COMMIT_SHA=$GITHUB_SHAを付けてビルドします。 - プラットフォーム上のサーバー:スニペットは、Vercel、Render、または Railway が設定する SHA を読み取ります。それ以外のプラットフォームでは、ランタイム環境で
FALLOW_COMMIT_SHAを設定します。
- ブラウザーバンドル:ビルド手順で
-
CI の手順を追加します。
cloud.ci.stepsを、cloud.ci.workflows_detectedにあるワークフロー内の、ビルドとデプロイを行うジョブに追加します。このリストが空の場合、またはプロジェクトで GitHub Actions を使用していない場合は、どのジョブがデプロイを行うかユーザーに尋ね、そのジョブに合わせて手順を調整します。チェックアウトではfetch-depth: 0が必要です。アップロード手順はビルド手順の後に追加します。アップロードでデータを送信するには、ビルドでソースマップを出力する必要があります。登録手順はデプロイ手順の後に追加します。cloud.ci.instructionsに従ってください。 -
ユーザーが手動で行う作業を伝えます。 ユーザーは Fallow Cloud のダッシュボードでキーを作成し、プランに記載されたシークレットとして保存してから、デプロイします。
-
デプロイ後にセットアップを確認します。 シェルで
FALLOW_API_KEY(完全なキー)をエクスポートするようユーザーに依頼します。プランのcloud.wait_commandに--jsonを追加し、$DEPLOYED_SHAにデプロイしたコミット SHA を設定して実行します。このコマンドにはプロジェクト ID が含まれています。その後、終了コードを確認します。- 0:すべての手順が完了しています。
- 1:タイムアウトです。
cloud.wait.activation.nextを確認してください。今すぐ実行する手順と、存在する場合はコマンドが示されます。読み取りに成功しなかった場合、activationは null になり、next.commandも null の場合があります。 - 2:エラーです。
cloud.wait.messageを確認するか、標準出力に JSON がない場合は stderr を確認してください。
activation の本文には、このスキルに記載されていない手順 ID や状態が含まれることがあります。そのままユーザーに伝えてください。
よくある問題
beaconがproblemになる:ビーコンがコミット SHA を送信していません。ステップ 5 を確認してください。runtimeがwaitingのままになる:アプリにまだ本番トラフィックがないか、ビーコンのcommitShaが CI で使用した完全な SHA ではありません。deploymentがwaitingになる:古いデプロイに引き続きランタイムデータが届いています。新しいデプロイは、最初のランタイムデータを受け取ると現在のデプロイになります。overlapがwaitingになる:これまでに実行された関数が少なすぎます。トラフィックを増やしてください。- バンドルせずにソースファイルを実行するアプリで
source_mapsがmissingになる:ランタイムデータがインベントリに加わるとnot_neededに変わります。 overlapがproblemになる:ランタイムのパスがインベントリのパスと一致していません。たとえば、コンテナ内でコードを別のルート(/appなど)から実行する場合は、upload-inventoryに--path-prefixが必要です。バンドルされたアプリにはソースマップが必要です。- CI で
inventoryが失敗する:チェックアウトが浅い状態です。fetch-depth: 0を設定してください。
参考資料
- 手動セットアップ:
--cloudを使わず、未使用バージョンで手動で行う 5 つのステップです。