Agent Plugins for AWS
AWS recently released Agent Plugins for AWS, a set of structured skill packs for Claude Code covering serverless, deployment, SageMaker, and more. I wanted to test them. I already have a Kiro Pro subscription, so I used kiro-gateway to route Claude Code through it. No extra API subscription needed. Here's how that worked, and what broke along the way.
The Setup
Claude Code supports a ANTHROPIC_BASE_URL environment variable. Point it at a local kiro-gateway instance and Claude Code thinks it's talking to Anthropic's API. The requests route through your Kiro Pro subscription instead.
Step 1: Install Claude Code
Requires Claude Code version 2.1.29 or later.
npm install -g @anthropic-ai/claude-code
Step 2: Clone and set up kiro-gateway
git clone --depth=1 https://github.com/jwadow/kiro-gateway ~/kiro-gateway
cd ~/kiro-gateway
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
Step 3: Configure kiro-gateway
Create ~/kiro-gateway/.env:
PROXY_API_KEY="kiro-local-proxy-key"
KIRO_CLI_DB_FILE="/Users/<YOUR_USER>/Library/Application Support/kiro-cli/data.sqlite3"
SERVER_HOST="127.0.0.1"
SERVER_PORT="9000"
The KIRO_CLI_DB_FILE path points to your kiro-cli's auth database. On macOS it's under ~/Library/Application Support/kiro-cli/data.sqlite3.
Step 4: Start kiro-gateway
~/kiro-gateway/.venv/bin/python ~/kiro-gateway/main.py --port 9000 &
Step 5: Point Claude Code at it
Create ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:9000",
"ANTHROPIC_API_KEY": "kiro-local-proxy-key",
"ANTHROPIC_MODEL": "claude-sonnet-4-6-20250929"
}
}
Step 6: Run Claude Code
claude
On first run it asks "Do you want to use this API key?" Select Yes. That's the gateway proxy key. Anthropic never sees it.
Step 7. Install Agent Plugins
AWS Agent Plugins package four types of artifacts into a single installable unit:
- Skills: structured workflows that guide Claude through complex tasks step by step. This is the core.
- MCP servers: connections to live data, pricing APIs, documentation, and IaC validators.
- Hooks: automation that runs on developer actions, like validating a SAM template after every edit.
- References: documentation and config defaults that skills consult during execution.
Install them from inside Claude Code:
/plugin marketplace add awslabs/agent-plugins
/plugin install deploy-on-aws@agent-plugins-for-aws
/plugin install aws-serverless@agent-plugins-for-aws
Restart Claude Code after installing. Seven plugins are available in the marketplace: deploy-on-aws, aws-serverless, aws-amplify, databases-on-aws, amazon-location-service, migration-to-aws, and sagemaker-ai.
What each plugin does
aws-serverless ships three skills:
-
aws-lambda: Lambda functions, event sources, API Gateway, EventBridge, and Step Functions -
aws-serverless-deployment: SAM and CDK deployment workflows -
aws-lambda-durable-functions: workflow orchestration, saga patterns, and human-in-the-loop
When you ask Claude to build a serverless API, the relevant skill drives the process. The aws-serverless-mcp server provides live data underneath.
deploy-on-aws ships a single deploy skill with a five-step workflow: Analyze, Recommend, Estimate, Generate, Deploy. Three MCP servers back it: awsknowledge for architecture decisions, awspricing for live cost data, and aws-iac-mcp for CDK and CloudFormation validation. The Generate step produces CDK or CloudFormation code with security defaults applied. The Deploy step executes with your confirmation.
The aws-serverless plugin also ships a hook that runs sam validate automatically after every edit to template.yaml. You don't configure it. It fires on save and surfaces errors immediately.
sagemaker-ai is the newest addition. It ships 12 skills covering the full model customization lifecycle: use case definition, dataset evaluation, fine-tuning, model evaluation, and deployment on Amazon SageMaker AI. It also includes skills for managing SageMaker HyperPod clusters, running remote diagnostics via AWS Systems Manager, and generating issue reports. Install it the same way:
/plugin install sagemaker-ai@agent-plugins-for-aws
Trying it out. Cost estimation
Type this prompt exactly:
Deploy a serverless TODO API with DynamoDB. Estimate the monthly cost at 10,000 requests/day.
The deploy-on-aws skill runs its Analyze and Estimate steps. It calls get_pricing three times against the AWS Price List API: once each for Lambda, API Gateway, and DynamoDB. The cost table uses live numbers pulled at query time.
At 10,000 requests/day (300,000/month), the breakdown looks like this:
| Service | Usage | Monthly Cost |
|---|---|---|
| Lambda requests | 300K (free tier: 1M) | $0.00 |
| Lambda duration | 7,680 GB-sec (free tier: 400K) | $0.00 |
| API Gateway (HTTP) | 300K @ $1.00/million | $0.30 |
| DynamoDB reads | 180K RRUs @ $0.125/million | $0.02 |
| DynamoDB writes | 120K WRUs @ $0.625/million | $0.08 |
| DynamoDB storage | ~1 MB | $0.00 |
Total: ~$0.40/month
This is the screenshot moment. The skill called real AWS pricing APIs to produce that table.
Trying it out. Full plugin-driven deployment
The cost estimation above is the Estimate step. If you continue, the skill runs Generate next. That produces CDK or CloudFormation code with security defaults applied. Then Deploy runs an IaC security scan and asks for your confirmation before executing.
For the SAM path, the aws-serverless plugin takes over. Ask Claude to drive it:
Use SAM to deploy a serverless TODO API with DynamoDB to us-east-1.
Build and deploy it using the SAM tools.
Claude calls sam_init to scaffold the project, sam_build to compile it, and sam_deploy to push it to AWS. The aws-serverless-deployment skill guides each step.
Both paths use the plugins end-to-end. The difference is which skill drives the process.
Troubleshooting kiro-gateway:
kiro-gateway is an open-source project with active development. It works well for personal testing and experimentation, but expect some rough edges. Responses are slightly slower than direct Anthropic API calls because requests route through an extra local hop. Good enough for exploration.
Here are the two issues I hit.
1. Long tool names trigger a 400 error
Once Agent Plugins were installed, I immediately got this:
400 Improperly formed request
MCP servers generate verbose tool names like mcp__GitHub__check_if_a_repository_is_starred_by_the_authenticated_user (71 characters). The Kiro API has a hard 64-character limit. The original kiro-gateway code threw an error on any name over that limit, which broke every MCP server with descriptive tool names.
The fix is a patch to kiro-gateway that transparently shortens names before sending to Kiro and restores the originals in responses. Claude Code and MCP servers see the full names. Kiro sees names that fit its limit. I built this locally with Claude Code's help. It's not yet submitted upstream, so if you hit the same error, the patch is something you'd apply yourself for now.
2. aws-iac-mcp fails to build on Apple Silicon
The aws-iac-mcp server failed to start with:
the `x86_64-apple-darwin` target may not be installed
It depends on guardpycfn, a Rust-based Python package. On Apple Silicon, the build tool tried to cross-compile for x86_64 but the Rust target wasn't installed. One command fixes it:
rustup target add x86_64-apple-darwin
Restart Claude Code after running it.
Usage (again after fix)
Start the gateway:
~/kiro-gateway/.venv/bin/python ~/kiro-gateway/main.py --port 9000 &
Run Claude Code:
claude
Check gateway health:
curl http://127.0.0.1:9000/health
Cost
$0 extra. Your existing Kiro Pro subscription just works for this local experience. Claude Code uses the standard Anthropic API protocol. kiro-gateway translates it to Kiro.



Top comments (0)