Provides structured AWS cost optimization guidance using five pillars (right-sizing, elasticity, pricing models, storage optimization, monitoring) and twelve actionable best practices with executable AWS CLI examples. Use when optimizing AWS costs, reviewing AWS spending, finding unused AWS resources, implementing FinOps practices, reducing EC2/EBS/S3 bills, configuring AWS Budgets, or performing AWS Well-Architected cost reviews.
63
79%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./plugins/developer-kit-aws/skills/aws/aws-cost-optimization/SKILL.mdThe canonical home for this skill is giuseppe-trisciuoglio/developer-kit
Guide a structured AWS cost review covering right-sizing, elasticity, pricing models, storage optimization, and continuous monitoring. References AWS native tools (Cost Explorer, Budgets, Compute Optimizer, Trusted Advisor, Cost Anomaly Detection) and delivers twelve prioritized best practices organized under five optimization pillars. All examples use the AWS CLI.
Trigger: "Optimize my AWS costs", "Review AWS spending", "Find unused AWS resources", "Help me with FinOps", "Reduce my EC2 bill", "Clean up unused EBS volumes", "Set up AWS Budgets"
Work through each pillar in order during a cost review.
Match provisioned resources to actual workload needs.
Schedule instance stop/start and leverage Auto Scaling Groups.
Choose the optimal mix of On-Demand, Spot, Reserved Instances, and Savings Plans.
Eliminate waste in EBS, S3, and snapshots.
available state) and recommend deletion after backup reviewEstablish continuous cost governance.
Environment, Team, Project, CostCenter)Follow this structured flow when the user asks for a cost review:
User: "Find unused EBS volumes in my account."
CLI commands to include in the response:
# List all EBS volumes in available (unattached) state
aws ec2 describe-volumes \
--filters Name=status,Values=available \
--query 'Volumes[*].{VolumeId:VolumeId,Size:Size,Type:VolumeType,Zone:AvailabilityZone,CreateTime:CreateTime}' \
--output table
# Get monthly cost estimate for unused volumes (approx $0.08/GB/mo for gp3)
aws ec2 describe-volumes \
--filters Name=status,Values=available \
--query 'length(Volumes[*].[VolumeId,Size])' \
--output text
# List orphaned snapshots (not linked to any AMI)
aws ec2 describe-snapshots \
--owner-ids self \
--query 'Snapshots[?!contains(Description, `ami-`)].[SnapshotId,VolumeId,StartTime,Size]'User: "How can I reduce my EC2 bill?"
CLI commands to include in the response:
# Get Compute Optimizer right-sizing recommendations for EC2
aws compute-optimizer get-ec2-instance-recommendations \
--query 'instanceRecommendations[*].{InstanceArn:instanceArn,CurrentInstanceType:currentInstanceType,RecommendedInstanceType:recommendations[0].instanceType,MonthlySaving:recommendations[0].estimatedMonthlySavings.value}' \
--output table
# Pull average CPU utilization for an instance over 14 days
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
--start-time 2026-03-09T00:00:00Z \
--end-time 2026-03-23T00:00:00Z \
--period 86400 \
--statistics Average \
--output table
# List all running instances by type for baseline analysis
aws ec2 describe-instances \
--filters Name=instance-state-name,Values=running \
--query 'Reservations[].Instances[].[InstanceId,InstanceType,Tags[?Key==`Name`].Value|[0],State.Name]' \
--output tableUser: "Set up AWS Budgets and monitor my spend."
CLI commands to include in the response:
# Create a monthly cost budget with alert thresholds at 50%, 80%, 100%
aws budgets create-budget \
--account-id 123456789012 \
--budget '{
"BudgetName": "Monthly-Cost-Budget",
"BudgetLimit": {"Amount": "5000", "Unit": "USD"},
"TimeUnit": "MONTHLY",
"BudgetType": "COST"
}' \
--notifications-with-subscribers '[{"Notification": {"ComparisonOperator": "GREATER_THAN", "NotificationType": "ACTUAL", "Threshold": 80},"Subscribers": [{"Address": "email@example.com","SubscriptionType": "EMAIL"}]}]'
# Get top-5 cost drivers from Cost Explorer (last 30 days)
aws ce get-cost-and-usage \
--time-period Start=2026-02-23,End=2026-03-23 \
--granularity MONTHLY \
--metrics "BlendedCost" "UnblendedCost" \
--group-by Type=DIMENSION,Key=SERVICE \
--query 'ResultsByTime[0].Groups[*].{Service:Keys[0],BlendedCost:Metrics.BlendedCost.Amount}' \
--output table
# Enable Cost Anomaly Detection alert
aws ce create-anomaly-monitor \
--monitor-name "Daily-Cost-Anomaly" \
--monitor-arn "arn:aws:ce::123456789012:anomaly-monitor/cost-explorer"User: "Optimize my S3 storage costs."
CLI commands to include in the response:
# List S3 buckets with size and storage class distribution
aws s3api list-buckets --query 'Buckets[*].Name'
aws s3api get-bucket-storage-type-aggregation --bucket YOUR-BUCKET-NAME
# Apply S3 Intelligent-Tiering lifecycle rule for objects older than 90 days
aws s3api put-bucket-lifecycle-configuration \
--bucket YOUR-BUCKET-NAME \
--lifecycle-configuration '{
"Rules": [{
"ID": "MoveToIntelligentTiering",
"Status": "Enabled",
"Filter": {},
"Transitions": [
{"Days": 30, "StorageClass": "INTELLIGENT_TIERING"},
{"Days": 90, "StorageClass": "GLACIER_IR"}
]
}]
}'User: "Should I use Spot Instances or Savings Plans?"
CLI commands to include in the response:
# Check current RI and Savings Plans coverage
aws ce get-savings-plans-coverage \
--time-period Start=2026-01-01,End=2026-03-23 \
--granularity MONTHLY
# List available Spot price history for an instance type
aws ec2 describe-spot-price-history \
--instance-types t3.medium \
--product-description "Linux/UNIX" \
--availability-zone us-east-1a \
--query 'SpotPriceHistory[*].{Price:SpotPrice,Date:Timestamp}' \
--output table
# Estimate savings with Savings Plans vs On-Demand
aws savingsplans describe-savings-plans-rates \
--savings-plan-arn arn:aws:savingsplans::123456789012:savings-plan/SP-EXAMPLE| Tool | Use Case |
|---|---|
| Cost Explorer | Visualize and filter AWS spend by service, account, or tag |
| AWS Budgets | Set custom spend budgets with threshold alerts |
| AWS Pricing Calculator | Model pricing for new or changed workloads |
| Compute Optimizer | ML-driven right-sizing recommendations for EC2, EBS, Lambda |
| Trusted Advisor | Automated cost optimization, security, performance checks |
| Data Lifecycle Manager | Automate EBS snapshot creation and retention |
| Cost Anomaly Detection | ML-powered spend anomaly alerts with root-cause analysis |
| # | Practice | Pillar |
|---|---|---|
| 1 | Choose appropriate AWS region (cost, latency, data sovereignty) | Right-Size |
| 2 | Schedule start/stop for non-production instances | Elasticity |
| 3 | Identify under-utilized EC2 instances | Right-Size |
| 4 | Reduce EC2 costs with Spot Instances | Pricing Model |
| 5 | Optimize Auto Scaling Group policies | Elasticity |
| 6 | Use or resell under-utilized Reserved Instances | Pricing Model |
| 7 | Leverage Compute Savings Plans | Pricing Model |
| 8 | Monitor and delete unused EBS volumes | Storage |
| 9 | Identify and clean up orphaned EBS snapshots | Storage |
| 10 | Remove idle load balancers; use CloudFront | Right-Size |
| 11 | Implement cost allocation tagging | Monitoring |
| 12 | Automate anomaly detection | Monitoring |
giuseppe-trisciuoglio/developer-kit
fe73fb3
Canonical home
since Mar 15, 2026
Also appears in
last in sync Mar 15, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.