--- title: Claude Code Skill description: Deploy any web app to AWS by asking Claude. The /aws-deploy skill auto-installs with Thunder and guides Claude through framework detection, cost estimation, and stack generation. --- import { Aside } from '@astrojs/starlight/components'; The `aws-deploy` skill is a [Claude Code](https://claude.ai/code) skill that ships with Thunder. When you add `@thunder-so/thunder` to your project, the skill is automatically registered — no manual setup required. From that point on, you can ask Claude to deploy your app to AWS and it will handle the rest. ## How It Works When you invoke `/aws-deploy` (or simply ask Claude to deploy), the skill runs a structured 5-step workflow: 1. **Scans your project** — reads `package.json`, framework config files (`next.config.ts`, `nuxt.config.ts`, `astro.config.mjs`, `svelte.config.js`, `app.config.ts`, `vite.config.ts`, `Dockerfile`, etc.) without asking you first 2. **Detects your framework** — identifies the framework, adapter, and output mode from the scanned files 3. **Asks clarifying questions** — at most 2, only when something is genuinely ambiguous (e.g. monorepo root, SSR vs static, WebSocket requirement) 4. **Presents a recommendation** — the right Thunder construct with a cost estimate and explanation 5. **Generates everything** — a complete `stack/dev.ts` file, a Dockerfile if needed, and deploy scripts in `package.json` ## Installation Thunder uses a `postinstall` script to register the skill. Bun blocks postinstall scripts by default — run this once to allow it: ```bash bun pm untrusted ``` Then install Thunder: ```bash bun add @thunder-so/thunder --development ``` The skill is now available in any Claude Code session inside your project. Invoke it with: ``` /aws-deploy ``` Or just tell Claude: _"Deploy this to AWS"_. ## What Gets Detected The skill uses a decision matrix to map your project to the right [Thunder construct](/docs/patterns): | Framework | Possible constructs | | --- | --- | | Next.js (`output: 'export'`) | `Static` | | Next.js (`output: 'standalone'`) | `Fargate` | | Nuxt, Astro, SvelteKit, TanStack Start, Solid Start, AnalogJS | `Static`, `Serverless`, or `Fargate` | | Hono, Express, Fastify | `Lambda` or `Fargate` | | Any app with a Dockerfile | `Fargate` | | Pure Vite SPA | `Static` | When multiple patterns are valid, Claude presents the tradeoffs and asks which you prefer. ## AWS MCP Servers The skill integrates with [AWS MCP servers](https://awslabs.github.io/mcp/) when they are connected to your Claude Code session. These are optional but unlock real-time data that makes the skill significantly more useful. ### AWS Pricing MCP Server Used during the recommendation step to fetch live pricing data for Lambda, Fargate, CloudFront, S3, and API Gateway — instead of relying on static estimates. - Docs: [awslabs.github.io/mcp/servers/aws-pricing-mcp-server](https://awslabs.github.io/mcp/servers/aws-pricing-mcp-server) - Source: [github.com/awslabs/mcp — aws-pricing-mcp-server](https://github.com/awslabs/mcp/tree/main/src/aws-pricing-mcp-server) ### AWS Billing and Cost Management MCP Server Gives Claude visibility into your actual AWS spend and budget alerts. Useful for reviewing costs after deployment or setting up budget guardrails. - Source: [github.com/awslabs/mcp — billing-cost-management-mcp-server](https://github.com/awslabs/mcp/tree/main/src/billing-cost-management-mcp-server) ### CloudWatch MCP Server Used after deployment to help Claude debug issues — querying [CloudWatch Logs](https://aws.amazon.com/cloudwatch/), reading Lambda error traces, and checking ECS task health without leaving your editor. - Docs: [awslabs.github.io/mcp/servers/cloudwatch-mcp-server](https://awslabs.github.io/mcp/servers/cloudwatch-mcp-server) - Source: [github.com/awslabs/mcp — cloudwatch-mcp-server](https://github.com/awslabs/mcp/tree/main/src/cloudwatch-mcp-server)