Oharu-commands-skills-gems bedrock-ops
Bedrock KB + S3 data pipeline management with safety guardrails. S3 sync (with force-upload for content-only changes), KB ingestion status polling, cost monitoring. Enforces identity verification, dry-run, and confirmation for all write operations.
install
source · Clone the upstream repo
git clone https://github.com/oharu121/oharu-commands-skills-gems
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/oharu121/oharu-commands-skills-gems "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/bedrock-ops" ~/.claude/skills/oharu121-oharu-commands-skills-gems-bedrock-ops && rm -rf "$T"
manifest:
skills/bedrock-ops/SKILL.mdsource content
Bedrock Ops Skill
Safely manage the RAG data pipeline: S3 uploads, Bedrock KB ingestion, session management.
Setup
First time per project
# 1. Generate aws-project.json (lists available profiles, generates config) uv run python SKILLS_DIR/scripts/setup_project.py <profile-name> [s3-bucket] # 2. Create aws-project.local.json with your TOTP secret echo '{"totp_secret": "YOUR_BASE32_SECRET", "mfa_serial": "YOUR_MFA_ARN"}' > aws-project.local.json
Verify setup
# Check session and identity uv run --with pyotp,boto3 python SKILLS_DIR/scripts/session.py ensure
Commands
All commands are handled by Claude interpreting the user's intent and routing to the appropriate script.
Identity & Session
| Intent | Implementation |
|---|---|
| Run to list profiles, then generate config |
| Run |
| Run |
S3 Operations
| Intent | Implementation |
|---|---|
| Run |
| Run (dry-run first, add for real) |
| Use instead of sync — required when only file content changed but byte count is the same (e.g. after adding chunk anchors). Run (dry-run first, add for real) |
| Run |
| Run |
Cost & Resources
| Intent | Implementation |
|---|---|
| Run |
| Run Name`].Value |
| Run |
| Run |
Bedrock Knowledge Bases
| Intent | Implementation |
|---|---|
| Run |
| Auto-detect data source ID, then run |
| Poll ingestion job status. Run . Repeat every 15 seconds until status is or . Print elapsed time. |
Arbitrary Command
| Intent | Implementation |
|---|---|
| Run |
Safety Rules (ALWAYS enforced by aws_safe.py)
- Identity check: Before any write operation,
must matchsts get-caller-identity
inaccount_id
. Abort on mismatch.aws-project.json - Explicit profile: Every command uses
from config. Never rely on env vars or default.--profile - Dry-run first: For s3 sync/cp/mv, always
first. Show output. User must confirm with--dryrun
.--execute - No silent deletes:
and destructive operations blocked unless--delete
is passed.--i-understand-this-deletes - Service blocklist: Respect
in aws-project.json (default: iam, organizations).safety.denied_services - Confirmation banner: Before write ops, display profile, account ID, command, and mode (dry-run/live).
- Session auto-refresh: If session expired, auto-regenerate using TOTP from aws-project.local.json.
Config Files
(project root, committed) — profile, account_id, safety rules, defaultsaws-project.json
(project root, gitignored) — totp_secret, mfa_serial, personal overridesaws-project.local.json
Path Variables
=SKILLS_DIR.claude/skills/bedrock-ops