Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
6bcf4a5
feat(migrate): add vercel-to-aws migration assessment skill Adds a ne…
Jul 15, 2026
683b8a2
chore: remove .kiro/specs/vercel-to-aws (local working scratch, not s…
Jul 15, 2026
88eedca
feat(vercel-to-aws): add estimate phase + promote scaffold to full ge…
Jul 15, 2026
d9338a5
fix(vercel-to-aws): complete generate-phase integration (SKILL.md, re…
Jul 15, 2026
1c23375
Merge remote-tracking branch 'origin/main' into feat/vercel-to-aws-ge…
Jul 15, 2026
f9b1d82
Merge remote-tracking branch 'origin/main' into feat/vercel-to-aws-mi…
Jul 15, 2026
8bc4db8
fix(vercel-to-aws): capture/parse split — align prescan/discover with…
Jul 19, 2026
f9d60a0
fix(vercel-to-aws): verify capture whitelist against Vercel REST API …
Jul 19, 2026
dd5b642
fix(vercel-to-aws): sync fixture manifest endpoints with the doc-veri…
Jul 19, 2026
10124f4
Merge remote-tracking branch 'origin/main' into feat/vercel-to-aws-mi…
Jul 19, 2026
d1fa2ab
Merge branch 'feat/vercel-to-aws-migration-skill' into feat/vercel-to…
Jul 19, 2026
21f91bc
chore(vercel-to-aws): sync vendored aws-infra-pricing.json from canon…
Jul 19, 2026
bee0465
style: dprint formatting after merge
Jul 19, 2026
1c1ceaa
fix(vercel-to-aws): constrain the OpenAPI-discovered capture rows Rev…
Jul 19, 2026
f60df37
Merge branch 'feat/vercel-to-aws-migration-skill' into feat/vercel-to…
Jul 19, 2026
dfe017b
feat(vercel-to-aws): best-effort terraform validate in the Generate a…
Jul 19, 2026
7653b0e
fix(vercel-to-aws): commit the missing capture/build manifest fixture…
Jul 19, 2026
192d035
fix(vercel-to-aws): un-ignore the fixture capture/build manifests The…
Jul 19, 2026
26ff9b5
Merge branch 'feat/vercel-to-aws-migration-skill' (capture/build mani…
Jul 19, 2026
5f3bd50
fix(vercel-to-aws): routes-manifest arrays classify path shape, not r…
Jul 19, 2026
ef2c5a8
Merge branch 'feat/vercel-to-aws-migration-skill' (manifest classific…
Jul 19, 2026
c8f8996
test(vercel-to-aws): estimate+generate replay fixtures; price both ti…
Jul 19, 2026
d11db7b
fix(vercel-to-aws): seed phase list includes the declared scaffold ph…
Jul 19, 2026
94e0743
Merge branch 'feat/vercel-to-aws-migration-skill' (scaffold seed fix)…
Jul 19, 2026
8cd312e
fix(vercel-to-aws): Q7 confirms the discovered DB size; estimated run…
Jul 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
{
"name": "migration-to-aws",
"source": "./migrate/plugins/migration-to-aws",
"version": "1.5.0",
"description": "Migrate from GCP or Heroku to AWS — including your entire AI stack. Moves infrastructure (Cloud Run → Fargate, Heroku Dynos → Fargate, databases → RDS/Aurora), OpenAI/Gemini workloads to Amazon Bedrock, and agentic systems (LangChain, CrewAI, AutoGen, OpenAI Agents SDK) to AWS-native frameworks. Generates runnable Terraform, migration scripts, provider adapters, and deployment artifacts. Gives honest model-by-model pricing comparisons so you know exactly when Bedrock saves money and when it doesn't. The bundled llm-to-bedrock skill executes AI/LLM migrations automatically (rewrite, evaluate, deliver a branch)."
"version": "1.6.0",
"description": "Migrate from GCP, Heroku, or Vercel to AWS — including your entire AI stack. Moves infrastructure (Cloud Run → Fargate, Heroku Dynos → Fargate, databases → RDS/Aurora), OpenAI/Gemini workloads to Amazon Bedrock, and agentic systems (LangChain, CrewAI, AutoGen, OpenAI Agents SDK) to AWS-native frameworks. For Vercel: computes a Coupling Score and 10 Pre-Flight Checks, then recommends OpenNext/SST, ECS Fargate, or a Vercel+AWS Hybrid via a fixed, auditable decision order. Generates runnable Terraform, migration scripts, provider adapters, and deployment artifacts. Gives honest model-by-model pricing comparisons so you know exactly when Bedrock saves money and when it doesn't. The bundled llm-to-bedrock skill executes AI/LLM migrations automatically (rewrite, evaluate, deliver a branch)."
},
{
"name": "aws-startup-advisor",
Expand Down
33 changes: 33 additions & 0 deletions migrate/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Point this plugin at your Terraform files, application code, or billing data. It

- **GCP → AWS** — Cloud Run, Cloud SQL, GKE, Cloud Functions, Pub/Sub, Cloud Storage, VPC, and AI/agentic workloads
- **Heroku → AWS** — Dynos (→ Elastic Beanstalk by default; Fargate or EKS overrides), Postgres, Redis, Kafka, Private Spaces, Pipelines, and 13+ common add-ons
- **Vercel → AWS** — a full migration pipeline for Next.js apps: discovery, Coupling Score, Pre-Flight Checks, a three-outcome recommendation, cost estimation (Vercel vs. AWS comparison), and production-ready Terraform generation with `baseline.tf`, migration scripts, and documentation

**For infrastructure migrations:**

Expand All @@ -26,6 +27,16 @@ Point this plugin at your Terraform files, application code, or billing data. It
- **Gives honest pricing comparisons** — finds the best Bedrock option for your workload with current pricing data, including side-by-side estimated monthly cost comparisons against your existing OpenAI/Gemini spend
- **Generates runnable AI artifacts** — `harness.json`, provider adapters, deployment scripts, incremental migration scripts — tailored to your specific models, tools, and architecture

**For Vercel migrations:**

- **Derives what it can't export** — Vercel's infrastructure (CloudFront-equivalent behaviors, function tuning, edge routing) isn't directly readable, so discovery works from your build output, source configs (`next.config.js`, `middleware.ts`, `vercel.json`), and the Vercel API instead
- **Computes a Coupling Score** — ISR, edge middleware, edge runtime routes, image optimization, streaming SSR, preview deployments, and Vercel-managed stores (KV/Postgres/Blob/Edge Config/Cron), each with a detection method and why it matters
- **Runs 10 named Pre-Flight Checks** — including a flagship check for cached routes that intersect with middleware (a behavior change on every AWS target, not just one), computed unconditionally and filtered to whatever outcome fits you
- **Recommends one of three honest outcomes** — OpenNext/SST (serverless), ECS Fargate (containerized), or a Vercel+AWS Hybrid (your backend moves, your Next.js app and PR previews stay on Vercel) — via a fixed, auditable decision order, never a guess
- **Tells you what you'd lose** — PR preview deployments first, always — and says plainly when this tooling isn't a fit for you (a low-traffic app with no AWS credits is often better served by a VPS)
- **Estimates costs with Vercel comparison** — three-tier AWS projection (Premium/Balanced/Optimized) compared against your current Vercel spend, using cached AWS pricing data with live MCP fallback
- **Generates production-ready Terraform** — `baseline.tf` (GuardDuty, CloudTrail, IMDSv2, budget alerts), VPC, compute (Fargate/Lambda/SST per outcome), peripherals (RDS, ElastiCache, S3, EventBridge), and numbered migration scripts with dry-run defaults

## Plugins

| Plugin | Description | Status |
Expand Down Expand Up @@ -88,6 +99,14 @@ After installation, just describe what you want to migrate:
- "Estimate AWS costs for my Heroku workload"
- "Migrate my Heroku Private Space to AWS"

**Vercel assessments:**

- "Migrate my Next.js app off Vercel"
- "Assess my Vercel migration"
- "Should I migrate off Vercel"
- "Vercel to Fargate"
- "Vercel coupling score"

The skill creates a `.migration/<session>/` directory in the current working directory with all artifacts.

## What It Detects
Expand Down Expand Up @@ -122,6 +141,18 @@ The skill creates a `.migration/<session>/` directory in the current working dir
| Secrets | Config vars → AWS Secrets Manager or SSM Parameter Store |
| Load Balancing | Web dynos → ALB; non-web → no ALB |

### Vercel → AWS

| Category | Vercel → AWS |
| ------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Compute (Outcome A) | Next.js app → OpenNext/SST (server functions, CloudFront, ISR tag cache + revalidation queue, image optimization) |
| Compute (Outcome B) | Next.js app → ECS Fargate (`next start` behind ALB + CloudFront) |
| Compute (Outcome C) | Backend/API routes → API Gateway + Lambda or Fargate (Terraform); Next.js app + PR previews stay on Vercel |
| Storage | Blob → S3, Postgres → RDS/Aurora (Neon often correct to keep), KV → ElastiCache (Upstash often correct to keep) |
| Config/Secrets | Edge Config → Parameter Store/AppConfig, env vars → Secrets Manager/SSM |
| Scheduling | Cron → EventBridge Scheduler |
| Detect-only | Preview deployments (no AWS equivalent — this drives the Hybrid outcome and is the top "what you lose" item) |

## What You Get That a Base LLM Can't

**Infrastructure:**
Expand Down Expand Up @@ -152,6 +183,7 @@ The skill creates a `.migration/<session>/` directory in the current working dir
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **gcp-to-aws** | "migrate GCP to AWS", "move from GCP", "GCP migration plan", "migrate Cloud SQL to RDS or Aurora", "move Cloud Run to Fargate", "estimate AWS costs for my GCP infrastructure", "migrate my OpenAI app to Bedrock", "migrate my LangChain agents to AWS" |
| **heroku-to-aws** | "migrate from Heroku", "Heroku to AWS", "move off Heroku", "migrate Heroku Postgres to RDS", "migrate dynos to Elastic Beanstalk", "migrate dynos to Fargate", "migrate Heroku Private Space", "leave Heroku", "estimate AWS costs for my Heroku app" |
| **vercel-to-aws** | "migrate from Vercel", "Vercel to AWS", "move off Vercel", "migrate Next.js off Vercel", "assess my Vercel migration", "leave Vercel", "Vercel to Fargate", "Vercel to OpenNext", "should I migrate off Vercel" |

## MCP Servers

Expand All @@ -167,6 +199,7 @@ The skill creates a `.migration/<session>/` directory in the current working dir
- At least one input source: Terraform files, application code, or billing data
- **For GCP AI/agentic migration:** Application source code is required (billing/IaC alone cannot detect agent architecture)
- **For Heroku migration:** Terraform files with `heroku_*` resources are required (Procfile/app.json supplements but cannot stand alone)
- **For Vercel migration:** repo access with a locally-runnable `next build`, plus a Vercel API token, are both required — the assessment does not run on partial Tier 1 inputs. Vercel tokens can't be permission-scoped to read-only, so scope by resource instead (project-scoped when one project is in scope), pick a short expiration, and revoke after the assessment; the skill only ever issues read (GET) requests, enforced by its capture-step endpoint whitelist

## Structure

Expand Down
9 changes: 7 additions & 2 deletions migrate/plugins/migration-to-aws/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "migration-to-aws",
"version": "1.5.0",
"description": "This no-cost tool assesses your current cloud provider's usage, geography, and billing data to estimate and compare AWS services and pricing, and recommends migration or continued use of your current provider. Supports GCP and Heroku migrations. AWS pricing is based on current published pricing and may vary over time. The tool may generate a .migration folder containing comparison and migration execution data, which you may delete upon completion or use to migrate to AWS.",
"description": "This no-cost tool assesses your current cloud provider's usage, geography, and billing data to estimate and compare AWS services and pricing, and recommends migration or continued use of your current provider. Supports GCP, Heroku, and Vercel migrations. AWS pricing is based on current published pricing and may vary over time. The tool may generate a .migration folder containing comparison and migration execution data, which you may delete upon completion or use to migrate to AWS.",
"author": {
"name": "Amazon Web Services"
},
Expand Down Expand Up @@ -56,6 +56,11 @@
"temporal-cloud",
"temporal-workers",
"temporal-to-aws",
"durable-execution"
"durable-execution",
"vercel",
"vercel-to-aws",
"next-js",
"nextjs",
"opennext"
]
}
12 changes: 9 additions & 3 deletions migrate/plugins/migration-to-aws/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "migration-to-aws",
"version": "1.5.0",
"description": "Migrate from GCP or Heroku to AWS — including your entire AI stack. Moves infrastructure (Cloud Run → Fargate, Heroku Dynos → Fargate, databases → RDS/Aurora), OpenAI/Gemini workloads to Amazon Bedrock, and agentic systems (LangChain, CrewAI, AutoGen, OpenAI Agents SDK) to AWS-native frameworks. Generates runnable Terraform, migration scripts, provider adapters, and deployment artifacts. Gives honest model-by-model pricing comparisons so you know exactly when Bedrock saves money and when it doesn't.",
"description": "Migrate from GCP, Heroku, or Vercel to AWS — including your entire AI stack. Moves infrastructure (Cloud Run → Fargate, Heroku Dynos → Fargate, databases → RDS/Aurora), OpenAI/Gemini workloads to Amazon Bedrock, and agentic systems (LangChain, CrewAI, AutoGen, OpenAI Agents SDK) to AWS-native frameworks. Generates runnable Terraform, migration scripts, provider adapters, and deployment artifacts. Gives honest model-by-model pricing comparisons so you know exactly when Bedrock saves money and when it doesn't.",
"author": {
"name": "Amazon Web Services",
"url": "https://aws.amazon.com"
Expand Down Expand Up @@ -59,7 +59,12 @@
"temporal-cloud",
"temporal-workers",
"temporal-to-aws",
"durable-execution"
"durable-execution",
"vercel",
"vercel-to-aws",
"next-js",
"nextjs",
"opennext"
],
"skills": "./skills/",
"mcpServers": "./.mcp.json",
Expand All @@ -79,7 +84,8 @@
"Migrate my OpenAI app to Amazon Bedrock",
"Estimate AWS costs for my GCP workload",
"Generate Terraform for my GCP to AWS migration",
"Migrate my LangChain app from OpenAI to Bedrock"
"Migrate my LangChain app from OpenAI to Bedrock",
"Assess my Vercel migration"
]
}
}
9 changes: 7 additions & 2 deletions migrate/plugins/migration-to-aws/.cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "migration-to-aws",
"displayName": "Migration to AWS",
"version": "1.5.0",
"description": "Migrate from GCP or Heroku to AWS — including your entire AI stack. Moves infrastructure (Cloud Run → Fargate, Heroku Dynos → Fargate, databases → RDS/Aurora), OpenAI/Gemini workloads to Amazon Bedrock, and agentic systems (LangChain, CrewAI, AutoGen, OpenAI Agents SDK) to AWS-native frameworks. Generates runnable Terraform, migration scripts, provider adapters, and deployment artifacts. Gives honest model-by-model pricing comparisons so you know exactly when Bedrock saves money and when it doesnt.",
"description": "Migrate from GCP, Heroku, or Vercel to AWS — including your entire AI stack. Moves infrastructure (Cloud Run → Fargate, Heroku Dynos → Fargate, databases → RDS/Aurora), OpenAI/Gemini workloads to Amazon Bedrock, and agentic systems (LangChain, CrewAI, AutoGen, OpenAI Agents SDK) to AWS-native frameworks. Generates runnable Terraform, migration scripts, provider adapters, and deployment artifacts. Gives honest model-by-model pricing comparisons so you know exactly when Bedrock saves money and when it doesn't.",
"author": {
"name": "Amazon Web Services"
},
Expand Down Expand Up @@ -57,6 +57,11 @@
"temporal-cloud",
"temporal-workers",
"temporal-to-aws",
"durable-execution"
"durable-execution",
"vercel",
"vercel-to-aws",
"next-js",
"nextjs",
"opennext"
]
}
Loading