Skip to content
Back to skills

Aws Ops

BSecurity

Reads-first AWS helper for the user's personal or consulting accounts. Access keys (local profiles, IAM, retiring one), unexpected S3 bills (Cost Explorer, bucket metrics, CloudTrail), least-privilege IAM for a named task, Bedrock model and quota checks on the inference profile that works for the account, Bedrock Mantle endpoints, and the runbook prompt for an agent holding AWS credentials. Use when the user says "from where to delete access keys?", "what access keys do we have saved in aws h...

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 21, 2026
ai-agentsgoshellawsterraformapisecurity

Works with

  • claude code
  • terminal
  • cli
  • api
  • mcp

Security analysis

B75/100
  • criticalAccesses sensitive system or user directories

Pro shows the line behind each finding and how to fix it

Scanned October 21, 2026

npx -y skills add Sagargupta16/agent-brain --skill aws-ops --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Aws Ops?

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

Security grade badge for Aws Ops
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/sagargupta16-aws-ops/badge)](https://www.skillsdirectory.com/skills/sagargupta16-aws-ops)

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-ops
description: >-
  Reads-first AWS helper for the user's personal or consulting accounts.
  Access keys (local profiles, IAM, retiring one), unexpected S3 bills (Cost
  Explorer, bucket metrics, CloudTrail), least-privilege IAM for a named
  task, Bedrock model and quota checks on the inference profile that works
  for the account, Bedrock Mantle endpoints, and the runbook prompt for an
  agent holding AWS credentials. Use when the user says "from where to
  delete access keys?", "what access keys do we have saved in aws here?",
  "if I give you a temporary access key can you find out?", or "also include
  bedrock mantle". Never asks for or echoes a key or token, creates or
  deletes a resource without an explicit ask, or uses an inference profile
  recorded as broken for the account.
---

# aws-ops

Asks about AWS itself, apart from any repo: "from where to delete access
keys?", "what access keys do we have saved here?", someone's surprise S3 bill,
and "give the exact prompt for what needs to be done" for an agent that holds
the credentials. Reads run freely; anything that creates, changes or deletes
waits for an explicit ask naming the resource.

## Read first

- Your always-on rules, if you keep them. Secrets: keys and tokens by
  variable name only; a pasted credential is flagged for rotation, never used
- Account facts in the brain (`brain recall bedrock`, `brain recall aws`):
  auth method (bearer token vs SigV4 vs profile), which inference profile
  prefix works (`us.`, `eu.`, `global.`) and which is known-broken, the region
  per model family, and any data-retention setting a gateway must preserve.
  Record new ones with `brain remember`.
- Lessons for any account: confirm the auth method before any integration
  step; probe reasoning models with `maxTokens >= 200` (a 500 is a fault,
  empty text with usage is token starvation); real Bedrock spend lives in AWS,
  not a vendor dashboard; Bedrock Mantle (OpenAI-compatible gateway) paths
  differ per region and model family, so verify live, and never route Claude
  through it if it drops a retention setting the account needs

## Procedure

1. Identity first, always: `aws sts get-caller-identity` and `aws configure
   list` (key id masked, its source, the region). Say which account and
   identity the session is in; a work or client account is never touched from
   a personal identity.
2. Access keys, local: `aws configure list-profiles`; `ls ~/.aws` for which
   files exist; `env | grep -oE '^AWS_[A-Z_]+'` for variable names. Never open
   `~/.aws/credentials` or an `.env`; the profile name is the answer.
3. Access keys, IAM: `aws iam list-access-keys --user-name <user>` and
   `aws iam get-access-key-last-used --access-key-id <id>`. Retire in two
   steps and only on ask: `aws iam update-access-key --status Inactive
   --access-key-id <id> --user-name <user>`, wait for the user to confirm
   nothing broke, then `aws iam delete-access-key` with the same arguments.
   Root keys are console only (account menu, Security credentials). Verify:
   `list-access-keys` no longer shows the id.
4. "If I give you a temporary access key can you find out?": yes, without
   pasting it. The user runs `aws configure --profile temp` in their own
   terminal and types the values there, says done, and every read below runs
   with `--profile temp`. The key never enters the transcript; the user
   deletes it after.
5. Unexpected S3 bill: `aws ce get-cost-and-usage --time-period
   Start=<first of month>,End=<today> --granularity MONTHLY --metrics
   UnblendedCost --group-by Type=DIMENSION,Key=SERVICE`, then filtered to S3
   with `--group-by Type=DIMENSION,Key=USAGE_TYPE` (storage vs requests vs data
   transfer); `aws s3api list-buckets`; per bucket `get-bucket-location` and
   `get-bucket-policy-status`; CloudWatch `AWS/S3` `BucketSizeBytes` daily;
   `aws cloudtrail lookup-events --lookup-attributes
   AttributeKey=EventSource,AttributeValue=s3.amazonaws.com` for who created
   what. On a "nothing created" account the usual causes, in order: a leaked
   key used by someone else (`iam list-users`, recent `list-access-keys`), a
   public bucket serving requests, CloudTrail data events writing to S3. Cost
   Explorer needs enabling once and lags about 24 hours; say so.
6. Least privilege: list the exact API calls the task makes, write
   `policy.json` with those actions and resource ARNs, run `aws accessanalyzer
   validate-policy --policy-document file://policy.json --policy-type
   IDENTITY_POLICY`, and stop. `aws iam create-policy` only on "do it".
7. Bedrock: `aws bedrock list-inference-profiles --region <region>` filtered
   on the model name, `aws bedrock list-foundation-models --by-provider
   anthropic`, `aws service-quotas list-service-quotas --service-code bedrock`.
   Liveness: `aws bedrock-runtime converse --model-id <profile>.anthropic.<model>
   --messages '[{"role":"user","content":[{"text":"reply ALIVE"}]}]'
   --inference-config maxTokens=300 --region <region>` with the account's
   auth (for example `AWS_BEARER_TOKEN_BEDROCK`) set in the shell. Spend: Cost
   Explorer filtered to Amazon Bedrock plus CloudWatch `AWS/Bedrock`
   `InputTokenCount` and `OutputTokenCount` by ModelId; `cost = in / 1e6 *
   in_price + out / 1e6 * out_price` with prices fetched live (the
   `claude-api` skill or the pricing page), never from memory.
8. Runbook prompt for an agent with the user's credentials: identity check
   first, region stated, read phase with exact commands, a stop-and-report
   gate before any create or delete, the output table below, and the Mantle
   endpoint table when asked to include Bedrock Mantle. Credentials are named
   (`AWS_PROFILE`, `AWS_BEARER_TOKEN_BEDROCK`, `OPENAI_API_KEY`), never pasted
   into the prompt.
9. Console-only steps (root keys, billing preferences, budgets) are printed as
   numbered clicks; the user does them and says done, then step 1 or 3
   re-verifies.

## Output

```
identity: <arn from sts, account id masked to last 4> | region <r> | profile <p>

| question | evidence (command) | result | next step (yours or mine) |
| keys in use | aws iam list-access-keys | 2 keys, one unused since <YYYY-MM-DD> | yours: confirm, then I run update-access-key Inactive |

console steps for you: <numbered, or "none">
unverified: <what could not be read and why>
```

## Must not

- Never ask for, accept in chat, or echo an access key, secret, session token
  or bearer token; if one is pasted, say so, name what to rotate, and proceed
  through a profile the user configures themselves.
- Never `cat ~/.aws/credentials`, `.env`, or a desktop app config env block;
  bearer tokens surface there in plaintext.
- Never create, modify or delete an AWS resource, policy, key or budget
  without an explicit ask naming it; reads are always fine.
- Never use an inference profile or gateway the brain records as broken for
  this account.
- Never touch a work or client account from a personal identity, or store
  its details in the brain.
- Never quote model pricing or IDs from memory.
- Never chain commands with `&&`; one command per call.

## Non-goals

Terraform in the user's IaC repos (normal coding there), Vercel, Neon and
Render checks (`prod-check`), Claude Code settings and model switching
(`update-config`, if available), Bedrock image and video generation (a
Bedrock MCP server, if installed).

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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.