Skip to content
Back to skills

Aws Cli 1

ASecurity

Use when interacting with AWS - managing S3, EC2, Lambda, IAM, CloudFormation, ECS/EKS, RDS, DynamoDB, CloudWatch, or any AWS service

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
devopsgobashawsterraformtestingdebuggingdocumentation

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 27, 2026

npx -y skills add David-Li0406/meta-skill-evloving --skill aws-cli-1 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Aws Cli 1?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Aws Cli 1
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/david-li0406-aws-cli-1/badge)](https://www.skillsdirectory.com/skills/david-li0406-aws-cli-1)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: aws-cli
description: Use when interacting with AWS - managing S3, EC2, Lambda, IAM, CloudFormation, ECS/EKS, RDS, DynamoDB, CloudWatch, or any AWS service
---

# AWS CLI

> **MANDATORY: All AWS CLI commands MUST run in subagents.**
>
> Use Task tool with `subagent_type: "general"`. Never run `aws` directly in your session.
> AWS operations can be long-running, may require investigation, and must be isolated from your main context.
> **No exceptions.**

## CLI Structure

```
aws <service> <command> [options]
```

## Investigation Pattern (for subagents)

You are running in a subagent. Use built-in help to discover commands and options:

1. `aws help` - List all services
2. `aws <service> help` - List commands for a service
3. `aws <service> <command> help` - Full command documentation with all flags

This is the preferred way to learn command syntax rather than guessing.

## Essential Flags

| Flag | Purpose |
|------|---------|
| `--output json` | Scriptable output (also: `text`, `table`) |
| `--query <expr>` | JMESPath filtering |
| `--profile <name>` | Use named profile |
| `--region <r>` | Specify region |
| `--no-cli-pager` | Disable pager (critical for scripts) |

> **REQUIRED: Always specify `--profile` and `--region`**: Do not rely on defaults or environment variables. Every command must include `--profile <name> --region <region>` for predictable, explicit behavior.

## Profile Discovery

**Before running ANY AWS command, discover available profiles:**

```bash
aws configure list-profiles
```

**Profile selection logic:**

1. **User specified profile**: Use it exactly as given
2. **Single profile exists**: Use it (no ambiguity)
3. **Multiple profiles - infer from context**:
   - Task mentions "production/prod" → look for profile containing `prod`
   - Task mentions "qa" → look for profile containing `qa`
   - Task mentions "development/dev" → look for profile containing `dev`
   - Task mentions specific account/environment → match by name
4. **Cannot infer confidently**: **ASK the user** - list available profiles and request selection

**Example inference:**
```
Available: default, mycompany-dev, mycompany-prod, mycompany-qa
Task: "Check production EC2 instances"
→ Infer: mycompany-prod (contains "prod", matches "production" in task)
```

**When to ask (use Question tool):**
- Multiple profiles match (e.g., `prod-us`, `prod-eu` when task says "production")
- No profile matches task context
- Task is destructive (delete, terminate, modify) and you want confirmation
- Profile names are ambiguous or don't follow conventions

## When NOT to Use

- **AWS CDK/SDK**: For programmatic access (boto3, JS SDK), use those libraries' docs
- **Terraform/Pulumi**: Infrastructure-as-code tools have their own patterns
- **AWS Console**: This skill is CLI-specific
- **LocalStack**: Different endpoints and behavior

## Quick Examples

> All commands require `--profile <p> --region <r>` (omitted below for brevity)

| Task | Command |
|------|---------|
| Caller identity | `aws sts get-caller-identity` |
| List S3 buckets | `aws s3 ls` |
| Describe instances | `aws ec2 describe-instances` |
| List functions | `aws lambda list-functions` |
| Deploy stack | `aws cloudformation deploy --template-file t.yaml --stack-name s` |
| Get secret | `aws secretsmanager get-secret-value --secret-id name` |

## JMESPath Query Patterns

```bash
# Filter by tag
--query 'Reservations[].Instances[?Tags[?Key==`Name`].Value|[0]==`web`]'

# Extract specific fields
--query 'Reservations[].Instances[].[InstanceId,State.Name]' --output table

# Get first matching item
--query 'Buckets[?starts_with(Name,`prod`)].Name | [0]' --output text
```

## Common Mistakes

- **Missing `--profile` or `--region`**: Commands may target wrong account/region silently
- **Running `aws` directly**: Always delegate to subagent via Task tool
- **Guessing syntax**: Use `aws <service> <command> help` instead of guessing flags
- **Ignoring pager**: Scripts hang without `--no-cli-pager` or `AWS_PAGER=""`

## Rationalization Table

| Excuse | Reality |
|--------|---------|
| "I'll just run this one command quickly" | AWS commands can hang on pager, trigger rate limits, or need retries. Context isolation protects your main session. |
| "The default profile/region is fine" | Defaults change, env vars get misconfigured. One wrong-account command can cause outages. |
| "I remember this syntax" | AWS CLI has 200+ services with dozens of commands each. Memory errors are guaranteed. Use `aws help`. |
| "This is a read-only command, it's safe" | Safety isn't the issue—context isolation is. Even `describe` can reveal you need 5 more commands. |
| "Subagent overhead is unnecessary" | Subagent launch takes seconds; debugging context pollution takes minutes. |
| "I can guess which profile to use" | Profile names vary wildly. Run `aws configure list-profiles` - takes 1 second, prevents wrong-account disasters. |
| "There's probably only one profile" | Many systems have 5+ profiles. Discovery is cheap; wrong-account commands are expensive. |
| "Asking the user slows things down" | Running against wrong account is slower. When in doubt, ask. |

**All of these mean: Delegate to subagent. No exceptions.**

## Dispatching Subagents

When delegating AWS tasks, include in your subagent prompt:

1. Load the aws-cli skill and review ./gotchas.md (relative to this skill) before running commands
2. Run `aws configure list-profiles` first to discover available profiles
3. If user didn't specify profile: infer from context or ask using Question tool
4. Always use `--profile <name> --region <region>` explicitly
5. Use `aws <service> <command> help` to verify syntax
6. Report findings back

**Example dispatch prompt (profile specified):**
> Check the status of EC2 instance i-0abc123 in us-east-1 using profile 'prod'.
> Load the aws-cli skill first and check ./gotchas.md. Use explicit --profile
> and --region flags. Report instance state and any relevant details.

**Example dispatch prompt (profile NOT specified):**
> Check if our production Lambda functions are healthy.
> Load the aws-cli skill first. Run `aws configure list-profiles` to discover
> available profiles. Infer the correct profile from context (look for 'prod'
> in profile names). If multiple profiles match or none match, ask the user
> which profile to use. Check ./gotchas.md, use explicit --profile and --region.

## Cross-Service Gotchas

See: `./gotchas.md` (in this skill's directory) for non-obvious behaviors that cause common errors.

## Testing Status

> **TODO**: This skill needs TDD validation per writing-skills guidelines.
>
> **Required tests:**
> 1. Pressure scenario: "Urgently check if EC2 instance is running" - verify subagent delegation
> 2. Pressure scenario: "Quick S3 bucket check" - verify --profile/--region compliance
> 3. Document baseline rationalizations agents use without skill loaded
> 4. Verify skill changes agent behavior under pressure

Files in this skill

  • SKILL.md6.8 KB
  • gotchas.md3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…