Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/giuseppe-trisciuoglio-aws-cost-optimization/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-18 | ✗→✓ | ▲ Improved | 68% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 149% | 0% |
| case-21 | ✓→✗ | ▼ Worse | 61% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 269% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 93% | 0% |
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:
bash# 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:
bash# 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 table
User: "Set up AWS Budgets and monitor my spend."
CLI commands to include in the response:
bash# 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:
bash# 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:
bash# 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 |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 35,021 | 20,486 | -42% | 1 | 1 | 0% | 6,239 | 6,665 | +7% | 0 | 0 | — |
case-02 | fail→fail | 33,043 | 18,336 | -45% | 1 | 1 | 0% | 5,682 | 6,639 | +17% | 0 | 0 | — |
case-03 | fail→fail | 36,721 | 15,289 | -58% | 1 | 1 | 0% | 6,224 | 5,937 | -5% | 0 | 0 | — |
case-04 | pass→pass | 6,227 | 5,520 | -11% | 1 | 1 | 0% | 1,119 | 4,134 | +269% | 0 | 0 | — |
case-05 | pass→pass | 14,223 | 8,893 | -37% | 1 | 1 | 0% | 2,379 | 4,588 | +93% | 0 | 0 | — |
case-06 | pass→pass | 13,826 | 6,005 | -57% | 1 | 1 | 0% | 2,272 | 4,222 | +86% | 0 | 0 | — |
case-07 | pass→pass | 14,506 | 11,142 | -23% | 1 | 1 | 0% | 2,268 | 4,896 | +116% | 0 | 0 | — |
case-08 | pass→pass | 6,418 | 5,282 | -18% | 1 | 1 | 0% | 1,079 | 3,992 | +270% | 0 | 0 | — |
case-09 | pass→pass | 6,111 | 4,793 | -22% | 1 | 1 | 0% | 1,277 | 4,006 | +214% | 0 | 0 | — |
case-10 | pass→pass | 11,477 | 12,272 | +7% | 1 | 1 | 0% | 1,968 | 5,446 | +177% | 0 | 0 | — |
case-11 | pass→pass | 7,844 | 6,553 | -16% | 1 | 1 | 0% | 1,574 | 4,453 | +183% | 0 | 0 | — |
case-12 | pass→pass | 8,136 | 5,033 | -38% | 1 | 1 | 0% | 1,339 | 4,043 | +202% | 0 | 0 | — |
case-13 | pass→pass | 14,727 | 12,936 | -12% | 1 | 1 | 0% | 2,289 | 5,342 | +133% | 0 | 0 | — |
case-14 | pass→pass | 7,000 | 7,121 | +2% | 1 | 1 | 0% | 1,067 | 4,395 | +312% | 0 | 0 | — |
case-15 | pass→pass | 12,809 | 11,015 | -14% | 1 | 1 | 0% | 1,989 | 4,991 | +151% | 0 | 0 | — |
case-16 | pass→pass | 10,028 | 6,407 | -36% | 1 | 1 | 0% | 1,607 | 4,113 | +156% | 0 | 0 | — |
case-17 | pass→pass | 9,448 | 8,081 | -14% | 1 | 1 | 0% | 1,734 | 4,592 | +165% | 0 | 0 | — |
case-18 | fail→pass | 15,517 | 6,356 | -59% | 1 | 1 | 0% | 2,422 | 4,058 | +68% | 0 | 0 | — |
case-19 | fail→pass | 10,018 | 4,619 | -54% | 1 | 1 | 0% | 1,497 | 3,728 | +149% | 0 | 0 | — |
case-20 | pass→pass | 11,909 | 11,637 | -2% | 1 | 1 | 0% | 2,385 | 5,305 | +122% | 0 | 0 | — |
case-21 | pass→fail | 15,573 | 13,122 | -16% | 1 | 1 | 0% | 3,695 | 5,947 | +61% | 0 | 0 | — |
case-22 | pass→pass | 18,346 | 15,454 | -16% | 1 | 1 | 0% | 2,884 | 5,595 | +94% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +5 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.