plugins/cli-scripting/skills/aws-cli/SKILL.md
AWS CLI v2 command syntax and scripting: authentication (profiles, SSO, assume-role, instance profiles), output formats and JMESPath queries, pagination and waiters, IAM, S3, Lambda, RDS, CloudFormation, ECS, EKS, CloudWatch, SSM, Route 53, STS, and VPC networking. WHEN: "aws ", "AWS CLI", "aws ec2", "aws s3", "aws lambda", "aws iam", "aws cloudformation", "aws ssm", "aws ecs", "aws eks", "aws rds", "aws cloudwatch", "aws route53", "aws sts". Do NOT use for AWS architecture, service selection, multi-account strategy, or FinOps — that's the `cloud-platforms` plugin. This skill is about command syntax and scripting the CLI, not deciding what to provision.
npx skillsauth add chrishuffman5/domain-expert aws-cliInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill covers the AWS CLI v2 for managing AWS resources from the command line. It has deep coverage of:
aws s3 and low-level aws s3api, versioning, lifecycle, encryption)When you receive a request:
Classify the request type:
references/core.mdreferences/commands.mdreferences/patterns.mdreferences/core.mdVerify identity -- Remind user to check aws sts get-caller-identity before operations.
Use waiters -- Replace sleep loops with aws <service> wait <condition> commands.
Use --query for extraction -- Combine --query with --output text for scripting variables.
Provide complete commands -- Include all required parameters. Show region and profile flags when relevant.
aws configure # interactive setup
aws configure --profile prod # named profile
export AWS_PROFILE=prod # set default profile
aws sts get-caller-identity # verify current identity
# SSO
aws configure sso
aws sso login --profile my-sso-profile
# Assume role
creds=$(aws sts assume-role --role-arn arn:aws:iam::123456789012:role/DeployRole \
--role-session-name deploy --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' -o text)
export AWS_ACCESS_KEY_ID=$(echo "$creds" | awk '{print $1}')
export AWS_SECRET_ACCESS_KEY=$(echo "$creds" | awk '{print $2}')
export AWS_SESSION_TOKEN=$(echo "$creds" | awk '{print $3}')
# Formats: json, table, text, yaml
aws iam list-users --output table
# JMESPath
aws ec2 describe-instances --query 'Reservations[].Instances[].{ID:InstanceId,Type:InstanceType,State:State.Name}' -o table
aws ec2 describe-instances --query 'Reservations[].Instances[?State.Name==`running`].InstanceId' -o text
aws lambda list-functions --query 'Functions[?Runtime==`python3.12`].{Name:FunctionName,Memory:MemorySize}' -o table
# Capture for scripting
ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' -o text)
VPC_ID=$(aws ec2 create-vpc --cidr-block 10.0.0.0/16 --query 'Vpc.VpcId' -o text)
aws ec2 wait instance-running --instance-ids i-0123456789abcdef0
aws rds wait db-instance-available --db-instance-identifier my-db
aws cloudformation wait stack-create-complete --stack-name my-stack
aws ecs wait services-stable --cluster my-cluster --services my-svc
aws lambda wait function-active --function-name my-func
# IAM
aws iam create-role --role-name my-role --assume-role-policy-document file://trust.json
aws iam attach-role-policy --role-name my-role --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess
# S3
aws s3 sync ./dist s3://my-bucket/static/ --delete
aws s3 cp s3://my-bucket/file.txt ./file.txt
aws s3api put-bucket-versioning --bucket my-bucket --versioning-configuration Status=Enabled
# Lambda
aws lambda create-function --function-name my-func --runtime python3.12 --handler index.handler \
--role arn:aws:iam::123456789012:role/lambda-role --zip-file fileb://function.zip
# CloudFormation
aws cloudformation deploy --stack-name my-stack --template-file template.yaml \
--parameter-overrides Env=prod --capabilities CAPABILITY_NAMED_IAM --no-fail-on-empty-changeset
1. Not using --output text for scripting
JSON output adds quotes and formatting. Use --output text with --query for clean variable capture.
2. Ignoring pagination
CLI v2 auto-paginates by default, but --max-items limits total results. Use --no-paginate only when you want one page.
3. Using sleep instead of waiters
aws <service> wait commands poll the API correctly. Sleep loops are fragile and wasteful.
4. Not using --cli-binary-format raw-in-base64-out for Lambda
Lambda invoke --payload expects base64 by default in CLI v2. Add this flag for raw JSON.
5. Forgetting --region when working cross-region
Region defaults to profile config. Always pass --region when operating on resources in non-default regions.
6. Hardcoding account IDs
Use aws sts get-caller-identity --query Account --output text to dynamically get the account ID.
7. Not versioning S3 buckets Enable versioning before storing important data. Without it, overwrites and deletes are permanent.
8. Missing --capabilities CAPABILITY_NAMED_IAM on CloudFormation
Stacks that create IAM resources require this capability flag.
9. Not blocking public S3 access
Always add put-public-access-block after bucket creation.
10. Storing secrets in plain SSM parameters
Use --type SecureString for passwords and API keys in SSM Parameter Store.
references/core.md -- Auth, output formats, JMESPath patterns, pagination, waiters. Read for CLI configuration and query questions.references/commands.md -- Complete command reference by service: IAM, S3, Lambda, RDS, CloudFormation, ECS, EKS, CloudWatch, SSM, Route 53, STS, VPC. Read for specific service commands.references/patterns.md -- Scripting patterns: idempotent create, batch operations, infrastructure provisioning. Read for automation scripts.scripts/01-aws-provision.sh -- Complete VPC/subnet/security group/EC2 provisioningtools
kubectl command-line usage and scripting: kubeconfig and context management, output formats (jsonpath, custom-columns, go-template), all major verbs (get, describe, apply, delete, exec, logs, port-forward, rollout, scale, drain), workload resources, config/storage, networking, RBAC, node management, debugging (CrashLoopBackOff, ImagePullBackOff, OOMKilled), and scripting patterns (dry-run, diff, wait, jq, kustomize). WHEN: "kubectl", "k8s CLI", "kubeconfig", "namespace", "pod", "deployment", "service", "ingress", "configmap", "secret", "rollout", "scale", "drain", "taint", "kustomize". Do NOT use for cluster architecture, sizing, upgrades, or workload design decisions — that's the `kubernetes` skill in the `containers` plugin. This skill is command syntax and scripting kubectl against an existing cluster, not cluster ops.
tools
Bash 5.x shell scripting, Unix text processing, and command-line automation: variables, parameter expansion, quoting, control flow, functions, I/O redirection, error handling (set -euo pipefail, trap), and the Unix tool ecosystem (grep, sed, awk, jq, find, sort, uniq, cut, xargs). Covers process management, networking (curl, ssh, rsync, nc), file locking (flock), parallel execution, and production script patterns. WHEN: "Bash", "bash", "shell", "sh", ".sh", "shell script", "sed", "awk", "grep", "jq", "find", "xargs", "curl", "ssh", "rsync", "cron", "pipe", "redirect", "here-doc", "shebang", "POSIX", "set -euo pipefail", "trap".
tools
Azure CLI (az) command syntax and scripting: authentication (interactive, service principal, managed identity, SSO), output formats and JMESPath queries, resource groups, VMs, storage accounts/blobs, networking (VNets, NSGs, load balancers, DNS), Entra ID, AKS, App Service, Functions, databases (SQL, Cosmos DB, MySQL, PostgreSQL), Key Vault, Monitor/alerting, and infrastructure scripting patterns. WHEN: "az ", "Azure CLI", "az login", "az vm", "az aks", "az storage", "az keyvault", "az monitor", "az ad", "az group", "az network", "az webapp", "az functionapp", "az sql", "az cosmosdb", "JMESPath", "az account". Do NOT use for Azure architecture, landing zones, or multi-subscription strategy — that's the `cloud-platforms` plugin. This skill is about command syntax and scripting the CLI, not deciding what to provision.
development
Expert skill for Spring Boot across all supported versions (3.x and 4.0). Provides deep expertise in IoC/DI, auto-configuration, Spring MVC, WebFlux, Spring Data, Spring Security, Actuator, configuration management, testing, and embedded servers. WHEN: "Spring Boot", "Spring MVC", "WebFlux", "Spring Data", "Spring Security", "auto-configuration", "@SpringBootApplication", "Actuator", "Spring JPA", "Spring REST", "DispatcherServlet", "@RestController", "@ConfigurationProperties", "Spring profiles", "Spring testing".