Vibe-code(直感的なコーディング手法)で作られたウェブアプリケーションをAWSに移行します。分析から移行、デプロイメント(本番環境への公開)まで全体のワークフローを処理し、AWSで実行可能なインフラストラクチャコードを生成します。 Vibe-codingプラットフォーム(Lovable、Bolt.new、Replitなど)で構築されたフルスタックアプリケーション、およびReact、Vue、Angular、Next.js、Nuxt、Astro、SvelteKit、Gatsby、Vite、Svelte、Solid、Docosaurus等のフレームワークで作られたフロントエンドウェブアプリケーションやウェブサイト(静的サイト、SPA(シングルページアプリケーション)、静的エクスポート機能を持つSSR(サーバーサイドレンダリング)フレームワーク)に対応しています。 **次のような場合に使用:** - 「AWSで起動」「AWSにデプロイ」「AWSでホスト」「AWSに移行」「AWSにアプリを移す」などのキーワードが含まれる場合 - ユーザーが「移行」という言葉を明確に使わなくても、Vibe-codeで作られたアプリやフロントエンドウェブアプリをAWSに移したいという意図が見られる場合に自動で起動します。
Migrates vibe-coded web applications to AWS. Handles the full workflow from analysis through migration to deployment, producing deployable AWS Blocks infrastructure code. Supports full-stack apps built with vibe-coding platforms (Lovable, Bolt.new, Replit) and frontend web applications and websites: React, Vue, Angular, Next.js, Nuxt, Astro, SvelteKit, Gatsby, Vite, Svelte, Solid, Docusaurus, and others (static sites, SPAs, and SSR frameworks with static export). Triggers on: launch with AWS, launch on AWS, deploy to AWS, migrate to AWS, host my app on AWS, move my app to AWS, transfer my app to AWS. Activates when the user wants to migrate a vibe-coded app or frontend web app to AWS, even if they don't say 'migrate' explicitly.
CLI スクリプトを使用して AWS への移行を一元的に行うスキルです。ユーザーのウェブアプリケーションを取得して分析し、コスト見積もり付きの移行計画を生成し、デプロイ可能な AWS Blocks(AWS の基盤構築用テンプレート)のインフラストラクチャコードを提供します。
AWS MCP サーバーの使用が推奨されていますが、必須ではありません。このスキルは、どのエージェント環境でも CLI スクリプト経由でスタンドアロン動作します。
すべてのコマンドは以下の形式で実行します:
python3 scripts/launch_with_aws.py <command> [args...]
scripts/ はこのスキルのディレクトリからの相対パスです。エージェントはコマンド実行前に、作業ディレクトリをスキルのルートに設定する必要があります。
必須ファイル: launch_with_aws.py、launch_config.py、auth.py、auth_callback_server.py、launch_api_client.py、archive.py、および service model(launchwithaws-2026-06-15.json)。MCP 経由でロードする場合は、すべてをフェッチしてディレクトリ構造を保持したまま一時ディレクトリに書き込んでからコマンド実行してください。
各コマンドは成功時に JSON を標準出力に出力するか、失敗時に JSON エラーを標準エラー出力に出して終了コード 0 以外で終了します。
必要な環境: Python 3.10 以上および boto3。スクリプトはスタートアップ時に両者をチェックし、どちらかが不足していれば分かりやすいエラー メッセージを出して終了します。
vibe-coding(生成 AI を使ったコード生成)プラットフォームで構築されたフルスタックアプリ、およびフロントエンドウェブアプリケーション・ウェブサイト(スタティックサイト、SPA、スタティック書き出し機能付き SSR フレームワーク)です。
| 元のプラットフォーム | 対応内容 |
|---|---|
| Lovable | Lovable 生成フルスタックアプリ(React + Supabase) |
| Bolt.new | Bolt.new 生成フルスタックアプリ(React + Supabase) |
| Replit | Replit ホスト型フルスタックアプリ(React + Express.js + PostgreSQL) |
| フレームワーク | 例 |
|---|---|
| React エコシステム | React、CRA、Vite + React、Gatsby、Docusaurus |
| Vue エコシステム | Vue、Nuxt(スタティック書き出し)、VitePress |
| Angular | Angular |
| Svelte エコシステム | Svelte、SvelteKit(スタティック書き出し) |
| SSR とスタティック書き出し対応 | Next.js、Nuxt、Astro、SvelteKit |
| その他の最新フレームワーク | Astro、Solid、Preact、Lit、Eleventy |
| Vite(汎用) | Vite ベースのあらゆるアプリ |
その他のフレームワークでも動作する可能性があります。ユーザーのアプリが上記に当てはまらない場合は、以下の「非対応アプリケーションの取り扱い」を参照してください。
Lovable / Bolt.new アプリ(Supabase バックアップ):
| コンポーネント | 処理内容 |
|---|---|
| フロントエンド・ホスティング | AWS に移行(S3 + CloudFront + Lambda) |
| エッジ機能・サーバー機能 | AWS Lambda に移行 |
| AI 呼び出し(例:Lovable AI Gateway) | Amazon Bedrock に移行 |
| データベース(Supabase DB) | Supabase に留置(移行しない) |
| 認証(Supabase Auth) | Supabase に留置(移行しない) |
| ストレージ・リアルタイム機能 | Supabase に留置(移行しない) |
アプリは AWS ホスト型アプリケーションから Supabase にアクセスして、データベース、認証、ストレージ、リアルタイム機能を引き続き利用します。
Replit アプリ(Express.js + PostgreSQL):
| コンポーネント | 処理内容 |
|---|---|
| フロントエンド・ホスティング | AWS に移行(S3 + CloudFront + Lambda) |
| サーバーロジック(Express.js) | AWS Lambda に移行(API Gateway) |
| データベース(PostgreSQL) | スキーマとコードを AWS に移行(Aurora Serverless / DynamoDB)。既存データは移行しない。ユーザーがデータを個別にエクスポート・インポートする必要があります。 |
| 認証(Replit Auth) | コードを AWS に移行(Cognito)。既存ユーザーアカウントは移行しない。Cognito でユーザーを再作成または招待する必要があります。 |
| リアルタイム機能(WebSocket) | AWS に移行(API Gateway WebSocket) |
| ファイルストレージ | AWS に移行(S3)。既存ファイルは移行しない。 |
Replit アプリのインフラストラクチャとコードは AWS ネイティブサービスに移行されますが、既存データ、ユーザーアカウント、ファイルはユーザーが個別に移行する必要があります。
ユーザー入力をローカルディレクトリパスまたは GitHub URL に変換します:
スクリプトコマンドを順番に実行し、各ステップで結果をユーザーに表示します:
python3 scripts/launch_with_aws.py auth-start
常に最初に実行します。JSON をすぐに返します:
{"authenticated": true, "reusedCachedSession": true, "baseUrl": "..."}{"authenticated": true, "reusedCachedSession": false, "baseUrl": "..."}{"authenticated": false, "signInUrl": "https://...", "pid": 12345, "port": 54321, "baseUrl": "..."}authenticated が false の場合、signInUrl をすぐにユーザーに表示(ブラウザで開けるように)して、同じ応答内で auth-wait を呼び出します:
python3 scripts/launch_with_aws.py auth-wait <pid>
<pid> は auth-start の応答の pid 値です。ユーザーがブラウザでサインインを完了するか、600 秒後にタイムアウトするまでブロックします。成功時に {"authenticated": true, "baseUrl": "..."} を返します。
セッションは、ID プロバイダー側の有効期限設定がなくても 90 日でキャップされます。その後、再び対話型フローが必要です。
現在のセッションを確認する、またはサインアウトする場合:
python3 scripts/launch_with_aws.py session-status
python3 scripts/launch_with_aws.py sign-out
session-status はセッションの存在と、トークン・全体セッションの有効期限までの時間を報告します。sign-out は最善の努力でリフレッシュトークンを無効化し、ローカルの ~/.launch-with-aws/session.json を削除します。共有または信頼できないワークステーションでは、終了時に sign-out を実行してください。
ローカルディレクトリの場合、以下の確認を提示して明示的な承認を待ちます:
ソースコードは、アプリケーションを分析して移行計画を生成するために Launch with AWS サービスにアップロードされます。後で実行を承認した場合、AWS ホスト型エージェントが計画に従ってソースコードのコピーを変更し、移行後のスナップショットを生成して、ダウンロード可能にします。アップロードされたソースコードと関連する launch データは、転送中と保存時に暗号化され、復旧のために最大 48 時間保持されます。データは AI モデルの学習に使用されることはありません。Git 履歴、Git 無視ファイル、および一般的な機密ファイルパターンに一致するファイルは除外します。機密ファイルのフィルタリングはベストエフォート方式です。プロジェクトにシークレット(認証情報)がないか確認してください。続行しますか?
ユーザーが明示的に確認するまで、ローカルディレクトリに対して create-launch を呼び出してはいけません。あいまいまたは未応答は「いいえ」を意味します。
python3 scripts/launch_with_aws.py create-launch <source-path-or-github-url> [name]
ローカルディレクトリから launch を作成します(zip 化、アップロード、作成)、または GitHub URL から作成します(直接渡します)。launch.launchId を含むフル launch オブジェクトを持つ JSON を返します。
Launch は analyzing ステータスで開始され、分析と計画を自動的に進みます。
python3 scripts/launch_with_aws.py get-launch-status <launch-id>
status が planned(実行準備完了)、awaiting_input(コンテキスト回答が必要 — ステップ 4 参照)、または failed になるまでポーリングします。主なステータス遷移:
analyzing → アプリタイプと依存関係を検出中awaiting_input → コンテキスト回答が必要(refine-plan を参照)planning → 移行計画を生成中planned → 実行準備完了executing → デプロイメント進行中completed → 完了failed → failureReason を確認status が awaiting_input の場合、回答が必要な質問について contextInputs を確認します。required: true の入力は必須で、それ以外は任意の情報補強です。
python3 scripts/launch_with_aws.py refine-plan <launch-id> key1=value1 key2=value2
コンテキスト回答を提供して計画を調整します。再計画がトリガーされます。
python3 scripts/launch_with_aws.py get-launch <launch-id> plan,cost_estimate
launch の詳細情報を取得します。オプションの 2 番目引数はカンマ区切りの取得リスト: analysis、plan、execution、cost_estimate、download_url。
コスト見積もりと計画をユーザーに提示します。レスポンスの costEstimate フィールドには estimatedMonthlyCost(月間推定コスト)、region(リージョン)、およびサービスごとのコスト内訳を含む services が含まれます。
確認ゲート — 提示して明示的な承認を待ちます:
移行サマリー
- アプリタイプ: [分析から検出されたタイプ]
- アーキテクチャ: [計画から得られるターゲットアーキテクチャ]
- 月間推定コスト: $X.XX/月
- リージョン: us-east-1
実行してもよろしいですか? これにより、AWS マネージド環境での移行が実行されます(ユーザーに追加コストはありません)。移行後のスナップショットが生成され、ダウンロード可能になります。
ユーザーが明示的に確認するまで start-launch-execution を呼び出してはいけません。
python3 scripts/launch_with_aws.py start-launch-execution <launch-id>
デプロイメントを開始します。その後、status が completed または failed になるまで get-launch-status でポーリングを続けます。ポーリング間隔は最低 30 秒間隔で実施してください。
python3 scripts/launch_with_aws.py get-launch-download-url <launch-id>
フルダウンロード URL をすべてユーザーに提示してください。移行後のスナップショットを直接ダウンロードするか、参照として必要な場合があります。
python3 scripts/launch_with_aws.py list-launches
python3 scripts/
Drives an AWS migration end-to-end using CLI scripts. Takes a user's web application, analyzes it, generates a migration plan with cost estimate, and delivers deployable AWS Blocks infrastructure code.
The AWS MCP server is recommended but is not required. This skill works standalone via its CLI scripts in any agent environment.
All commands are run via:
python3 scripts/launch_with_aws.py <command> [args...]
where scripts/ is relative to this skill directory. The agent MUST set the working directory to the skill root before invoking commands.
Required files: launch_with_aws.py, launch_config.py, auth.py, auth_callback_server.py, launch_api_client.py, archive.py, service model. When loaded via MCP, fetch all and write to a temp directory preserving structure before invoking.
Each command outputs JSON to stdout on success, or exits non-zero with a JSON error on stderr.
Dependencies: Python 3.10+ and boto3. The script checks both on startup and exits with a clear error if either is missing.
Full-stack apps built with vibe-coding platforms, and frontend web applications and websites (static sites, SPAs, and SSR frameworks with static export).
| Origin Platform | What it covers |
|---|---|
| Lovable | Lovable-generated full-stack apps (React + Supabase) |
| Bolt.new | Bolt.new-generated full-stack apps (React + Supabase) |
| Replit | Replit-hosted full-stack apps (React + Express.js + PostgreSQL) |
| Framework | Examples |
|---|---|
| React ecosystem | React, CRA, Vite + React, Gatsby, Docusaurus |
| Vue ecosystem | Vue, Nuxt (static export), VitePress |
| Angular | Angular |
| Svelte ecosystem | Svelte, SvelteKit (static export) |
| SSR with static export | Next.js, Nuxt, Astro, SvelteKit |
| Other modern frameworks | Astro, Solid, Preact, Lit, Eleventy |
| Vite (generic) | Any Vite-based app |
Other frameworks may also work. If the user's app doesn't match these, see Unsupported Application Handling below.
Lovable / Bolt.new apps (Supabase-backed):
| Component | What happens |
|---|---|
| Frontend & hosting | Migrated to AWS (S3 + CloudFront + Lambda) |
| Edge functions / server functions | Migrated to AWS Lambda |
| AI calls (e.g. Lovable AI Gateway) | Migrated to Amazon Bedrock |
| Database (Supabase DB) | Stays on Supabase — not migrated |
| Auth (Supabase Auth) | Stays on Supabase — not migrated |
| Storage & Realtime | Stays on Supabase — not migrated |
The app continues to call Supabase for database, auth, storage, and realtime from the AWS-hosted application.
Replit apps (Express.js + PostgreSQL):
| Component | What happens |
|---|---|
| Frontend & hosting | Migrated to AWS (S3 + CloudFront + Lambda) |
| Server logic (Express.js) | Migrated to AWS Lambda (API Gateway) |
| Database (PostgreSQL) | Schema and code migrated to AWS (Aurora Serverless / DynamoDB). Existing data is NOT migrated — customers must export and import their data separately. |
| Auth (Replit Auth) | Code migrated to AWS (Cognito). Existing user accounts are NOT migrated — customers must re-create or invite users in Cognito. |
| Realtime (WebSockets) | Migrated to AWS (API Gateway WebSocket) |
| File storage | Migrated to AWS (S3). Existing files are NOT migrated. |
Replit app infrastructure and code are migrated to AWS-native services, but existing data, user accounts, and files must be migrated separately by the customer.
Resolve the user's input to a local directory path or GitHub URL:
Run the script commands in order, surfacing results to the user at each step:
python3 scripts/launch_with_aws.py auth-start
Always run first. Returns immediately with JSON:
{"authenticated": true, "reusedCachedSession": true, "baseUrl": "..."}{"authenticated": true, "reusedCachedSession": false, "baseUrl": "..."}{"authenticated": false, "signInUrl": "https://...", "pid": 12345, "port": 54321, "baseUrl": "..."}When authenticated is false, immediately display the signInUrl to the user (so they can open it in their browser) and call auth-wait in the same response:
python3 scripts/launch_with_aws.py auth-wait <pid>
where <pid> is the pid value from the auth-start response. This blocks until the user completes browser sign-in (or times out after 600s). Returns {"authenticated": true, "baseUrl": "..."} on success.
Sessions are capped at 90 days even if the identity provider does not set an expiration; after that the interactive flow is required again.
To check the current session without authenticating, or to sign out:
python3 scripts/launch_with_aws.py session-status
python3 scripts/launch_with_aws.py sign-out
session-status reports whether a session exists and how long until the token and overall session expire. sign-out best-effort revokes the refresh token and deletes the local ~/.launch-with-aws/session.json. On shared or untrusted workstations, run sign-out when finished.
For a local directory, present this confirmation and wait for explicit approval:
Your source code will be uploaded to the Launch with AWS service to analyze your application and generate a migration plan. If you later approve execution, an AWS-hosted agent will modify a copy of your source code according to the plan and produce a migrated snapshot for you to download. Your uploaded source code and associated launch data are encrypted in transit and at rest and retained for up to 48 hours for recovery. Your data is never used to train AI models. We exclude Git history, Git-ignored files, and files matching common sensitive-file patterns. Sensitive-file filtering is best effort; review your project for secrets. Continue?
Do NOT call create-launch for a local directory until the user explicitly confirms. A missing or ambiguous response means no.
python3 scripts/launch_with_aws.py create-launch <source-path-or-github-url> [name]
Creates a launch from a local directory (zips, uploads, then creates) or a GitHub URL (passes directly). Returns JSON with the full launch object including launch.launchId.
The launch starts in analyzing status and automatically progresses through analysis and planning.
python3 scripts/launch_with_aws.py get-launch-status <launch-id>
Poll until status is planned (ready for execution), awaiting_input (needs context answers — see step 4), or failed. Key status progression:
analyzing → detecting app type and dependenciesawaiting_input → needs context answers (see refine-plan)planning → generating migration planplanned → ready for executionexecuting → deployment in progresscompleted → donefailed → check failureReasonIf status is awaiting_input, check contextInputs for the questions that need answering. Inputs with required: true must be answered before the launch can proceed; others are optional enrichment.
python3 scripts/launch_with_aws.py refine-plan <launch-id> key1=value1 key2=value2
Provide context answers to refine the plan. Triggers re-planning.
python3 scripts/launch_with_aws.py get-launch <launch-id> plan,cost_estimate
Get full launch details. Optional second argument is a comma-separated include list: analysis, plan, execution, cost_estimate, download_url.
Present the cost estimate and plan to the user. The costEstimate field in the response contains estimatedMonthlyCost, region, and a services breakdown with per-service costs.
Confirmation Gate — present and wait for explicit approval:
Migration Summary
- App type: [detected type from analysis]
- Architecture: [target architecture from plan]
- Estimated monthly cost: $X.XX/month
- Region: us-east-1
Ready to proceed? This will execute the migration in an AWS-managed environment (no cost to you) and produce the migrated snapshot for you to download.
Do NOT call start-launch-execution until the user explicitly confirms.
python3 scripts/launch_with_aws.py start-launch-execution <launch-id>
Starts deployment. Then poll with get-launch-status until status is completed or failed. Sleep at least 30 seconds between polls.
python3 scripts/launch_with_aws.py get-launch-download-url <launch-id>
Always present the full download URL to the user — they may need it to download the migrated snapshot directly or for reference.
python3 scripts/launch_with_aws.py list-launches
python3 scripts/launch_with_aws.py delete-launch <launch-id>
After obtaining the download URL (adapt commands for the user's platform if not POSIX):
curl -L -o /tmp/migration-snapshot.zip "<download_url>"
mkdir -p /tmp/migration-output
unzip -o /tmp/migration-snapshot.zip -d /tmp/migration-output
Ensure the user's working directory is clean:
cd <user-app-directory>
git status
If there are uncommitted changes, ask the user to commit or stash first. Do NOT proceed with a dirty working tree.
Create a migration branch and overlay the migrated files:
cd <user-app-directory>
git checkout -b aws-migration
rsync -a /tmp/migration-output/ .
git status
git diff --stat
Review the changes with the user. Key additions to highlight:
aws-blocks/ — AWS Blocks infrastructure definitionDEPLOY.md — deployment instructionsIf there are conflicts with the user's existing files, present them and ask how to resolve.
Read the DEPLOY.md file in the project root and follow its instructions to deploy the app to the user's AWS account. Typical steps:
aws login --profile aws-migrate --region us-east-1)npm install && npx cdk bootstrapnpx cdk deploy --all --progress eventsImportant: Always read DEPLOY.md from the migrated output — it is generated specifically for this app and architecture. Do not assume deployment steps from memory.
If a launch fails during analysis with a failureReason indicating an unsupported app type (or the user's stack doesn't match the supported list):
Tell the user: "This app type isn't directly supported by Launch with AWS yet. Let me search for other skills that can help deploy this kind of application."
Search for relevant skills based on the app type (e.g. aws-serverless, aws-containers, databases-on-aws, deploy-on-aws, aws-cdk, sagemaker-ai).
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。