agentsclimarketplace

Aws cli

Skill georgekhananaev/claude-skills-vault/.claude/skills/aws-cli

A curated collection of high impact skills for Claude Code designed to supercharge the senior full stack workflow. This vault automates the repetitive parts of development like architectural reviews, TDD cycles, and PR management so you can stay in flow. It is a force multiplier for shipping clean, production ready code at scale. πŸš€βš‘οΈ

Install
npx -y skills add georgekhananaev/claude-skills-vault --skill aws-cli

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

Safety-first AWS CLI v2 skill for full control of AWS from the terminal β€” EC2, S3, IAM, Lambda, RDS, DynamoDB, CloudFormation, Route 53, EKS/ECS, logs, billing & 300+ services. Classifies every command by risk tier via a deterministic classifier script and gates destructive/breaking/cost-incurring ops behind AskUserQuestion confirmation. Account/region/profile preflight prevents wrong-account accidents. Use when running, planning, or debugging any `aws` command.

SKILL.md

10.3 KB, as published. Nobody here has run it

AWS CLI

Safety-first wrapper for AWS CLI v2 (aws). Every command is classified by risk tier BEFORE execution β€” full AWS control, w/ anything irreversible, breaking, or cost-incurring gated behind explicit AskUserQuestion confirmation. Blast radius on AWS is an entire company's infra: wrong account/region/flag can destroy data, break prod, or spend real money.

When to Use

  • Run/inspect any AWS service: EC2, S3, IAM, Lambda, RDS, DynamoDB, CloudFormation, Route 53, ECS/EKS, CloudFront, SQS/SNS, CloudWatch, KMS, Secrets Manager, …
  • Audit resources, costs, security posture; tail logs; query w/ --query (JMESPath)
  • Deploy/update infra, manage env config, rotate creds, debug failing calls
  • Set up auth: profiles, IAM Identity Center (SSO), assume-role, MFA

Prerequisites (run once per session)

bash scripts/aws_preflight.sh [profile]

Reports version, profiles, region, and the active identity (sts get-caller-identity). NEVER run a write op w/o knowing which account+region you're pointed at. No profiles configured β†’ guide setup via references/patterns.md (keys vs SSO).

Safety Model

TierAction RequiredExamples
SafeExecute immediatelydescribe-*, get-*, list-*, s3 ls, sts get-caller-identity, logs tail, any --dry-run
WriteInform user, then executecreate-*, put-*, tag-*, lambda update-function-code, s3 cp/sync
DestructiveAskUserQuestion BEFORE executingdelete-*, terminate-instances, stop-*, run-instances (cost), modify-db-instance (downtime), change-resource-record-sets (live DNS), sg rules w/ 0.0.0.0/0
ForbiddenTriple typed confirmation, NEVER auto-confirmclose-account, IAM user/role deletion, kms schedule-key-deletion, delete-stack, s3 rb --force, delete-db-instance --skip-final-snapshot, snapshot/backup deletion, disabling CloudTrail/GuardDuty, purchases (RIs, Savings Plans, domains)

Full classification + per-service rules: references/safety-rules.md.

Decision Flow

Command received
  β†’ bash scripts/aws_preflight.sh        (once per session β€” identity/region)
  β†’ python3 scripts/aws_risk.py "<cmd>"  (deterministic tier + reason)
  β†’ Safe?        Execute immediately
  β†’ Write?       State target account/region + what changes β†’ execute
  β†’ Destructive? AskUserQuestion (incl. account, region, resource, blast radius) β†’ execute or cancel
  β†’ Forbidden?   Warn β†’ typed confirmation β†’ final confirm β†’ execute or cancel
On failure β†’ Self-Healing (aws <svc> <op> help β†’ docs URI)

The classifier is advisory β€” apply judgment on top (a "write" against prod during business hours may still deserve a question). When the user's request implies a breaking change (engine upgrade, version bump, policy change, capacity change, anything w/ downtime or no rollback), ALWAYS AskUserQuestion first even if the verb looks mild.

Risk Classifier

python3 scripts/aws_risk.py "aws ec2 terminate-instances --instance-ids i-0abc"
# DESTRUCTIVE: Terminates instances β€” instance-store data is gone [ec2 terminate-instances]
# exit codes: 0=safe 10=write 20=destructive 30=forbidden

Verb-pattern based (describe/get/list→safe, create/put/update→write, delete/terminate/stop→destructive) + ~80 explicit overrides for cost, breaking, security & account-level ops. Escalation-only: overrides never lower a tier (sole exception: a 3-entry audited list of read-only ops w/ scary verbs, e.g. logs start-query).

Also catches:

  • Compound commands: splits on &&, ;, |, $() β€” EVERY aws invocation classified, highest tier wins (quoted JMESPath pipes survive intact)
  • Bulk loops: xargs/for/while + destructive op β†’ forbidden; + write op β†’ destructive
  • Public exposure: 0.0.0.0/0, --acl public-read, "Principal": "*", weakening put-public-access-block
  • Admin grants: AdministratorAccess/IAMFullAccess ARNs, inline "Action":"*" + "Resource":"*" policies
  • Hidden cost/impact: restore-* into new billable stores, --desired-count 0 (scale-to-zero), s3 sync --delete
  • Extracts --profile/--region into the output for the confirmation prompt

Forbidden Ops (never auto-confirm)

CommandWhy
aws account close-account / organizations leave-organizationAccount-level β€” catastrophic
iam delete-user/role/group, deactivate-mfa-deviceIdentity destruction, lockout risk
kms schedule-key-deletion / disable-keyAll data encrypted under the key β†’ unrecoverable
cloudformation delete-stackDeletes EVERY resource the stack manages
s3 rb --force / s3api delete-bucket, dynamodb delete-tableBulk permanent data loss
rds delete-db-instance --skip-final-snapshotDB gone w/ NO backup
ec2 delete-snapshot, rds delete-db-snapshot, backup delete-*Deletes the backups themselves
cloudtrail delete-trail/stop-logging, guardduty delete-detectorRemoves audit/security monitoring
RI/Savings-Plan purchases, route53domains register-domainSpends real money, multi-year commitments
Bulk destructive loops (xargs … delete)Multiplies blast radius

AskUserQuestion Integration

For Destructive ops, always show account, region & resource; include a "Cancel" option:

Q: "Terminate i-0abc123 (prod-api, account 1234…, eu-west-1)?"
  - "Terminate it" β€” aws ec2 terminate-instances --instance-ids i-0abc123
  - "Stop instead (reversible)" β€” aws ec2 stop-instances --instance-ids i-0abc123
  - "Cancel"

Q: "Upgrade RDS prod-db to engine 16.4? Causes downtime; downgrade NOT possible."
  - "Upgrade now" / "Upgrade in maintenance window (--no-apply-immediately)" / "Cancel"

Also ask (not just for deletes) when: choosing between profiles/accounts, picking a region for new resources, anything creating ongoing cost, IAM policy changes, version upgrades, or ambiguous resource matches (multiple instances match a name). Forbidden ops β†’ triple-confirmation protocol in references/safety-rules.md.

Wrong-Account/Region Guard

#1 real-world AWS accident. Before EVERY Write+ op:

  1. aws sts get-caller-identity (or trust session preflight) β€” confirm account
  2. Confirm region: explicit --region beats env beats profile default. New resources default to the profile region β€” state it
  3. Multi-profile setups: prefer explicit --profile X --region Y on mutating commands over ambient env

Dry-Run & Preview

Prefer previews before mutating: EC2/VPC support --dry-run (returns DryRunOperation on success); CloudFormation β†’ deploy --no-execute-changeset / create-change-set then review; IAM β†’ simulate-principal-policy; S3 sync/rm β†’ --dryrun; any command β†’ --generate-cli-skeleton to inspect shape w/o executing.

Self-Healing

CLI surface is huge & evolves; on any error: read the message β†’ aws <service> <op> help (offline, authoritative for the installed version) β†’ if still unclear, WebFetch the v2 reference:

Service/command map + doc URIs: references/services.md.

Output & Querying

NeedFlag
Machine-readable--output json (pipe to jq or use --query)
Human table--output table
Filter server-side--filters Name=…,Values=… (cheaper than client-side)
Filter client-side--query '<JMESPath>' e.g. 'Reservations[].Instances[].InstanceId'
No pager--no-cli-pager (ALWAYS append for non-interactive runs)
Big listsauto-paginated; tune w/ --max-items, --page-size

JMESPath cookbook + pagination details: references/patterns.md.

Error Handling

ErrorCauseFix
Unable to locate credentialsNo profile/env credsaws configure / aws configure sso, or export AWS_PROFILE=x
Token has expired / ExpiredTokenSSO/STS session endedaws sso login --profile x
AccessDenied / UnauthorizedOperationMissing IAM permissionDecode w/ sts decode-authorization-message if encoded; check policy
InvalidClientTokenIdDeactivated/wrong keysRotate keys in IAM
Could not connect to the endpoint URLWrong/missing regionSet --region; verify service exists in that region
ThrottlingException / Rate exceededAPI rate limitsRetry w/ backoff; CLI retries automatically (AWS_MAX_ATTEMPTS)
ValidationError/InvalidParameterValueBad arg shapeaws <svc> <op> help; --generate-cli-skeleton for the schema

Shell Safety

  • ALWAYS --no-cli-pager (or pipe | cat) β€” aws v2 invokes a pager by default
  • Quote JSON args in single quotes; for complex JSON prefer file://params.json
  • NEVER echo secrets: secretsmanager get-secret-value, ssm get-parameter --with-decryption β†’ redirect to file/var, never display unless asked
  • NEVER put access keys on the command line; use profiles/env
  • No --force-style skip flags on Destructive/Forbidden tiers w/o the confirmation flow
  • Bulk ops: print the resource list FIRST, confirm once w/ exact count, only then loop

Integration

Pairs w/: terraform (IaC instead of imperative changes β€” prefer for repeatable infra), github-cli (CI/CD wiring), mongodb-atlas-cli / supabase-cli (other data planes), owasp-security / trailofbits-security (security audits of what the CLI finds), file-converter (transform exported JSON/CSV).

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.