.claude/skills/aws-boto3/SKILL.md
AWS SDK boto3 の操作パターン集。Lambda 関数から Firehose・Athena・SSM を呼び出す実装をするとき、boto3 クライアント初期化・Athena ポーリング・エラーハンドリングが必要なときに自動適用する。
npx skillsauth add rikunisikawa/health-logger aws-boto3Install 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.
Lambda 関数から Firehose・Athena・DynamoDB・SSM などの AWS サービスを boto3 で安全・効率的に操作するための共通パターン集。
import boto3
import os
# Lambda コンテナ再利用のため、関数外で初期化する
firehose = boto3.client("firehose", region_name="ap-northeast-1")
athena = boto3.client("athena", region_name="ap-northeast-1")
ssm = boto3.client("ssm", region_name="ap-northeast-1")
STREAM_NAME = os.environ["FIREHOSE_STREAM_NAME"]
DATABASE = os.environ["ATHENA_DATABASE"]
S3_OUTPUT = os.environ["ATHENA_OUTPUT_LOCATION"]
import json
def put_record(data: dict) -> None:
record = json.dumps(data, ensure_ascii=False) + "\n" # JSON Lines
firehose.put_record(
DeliveryStreamName=STREAM_NAME,
Record={"Data": record.encode("utf-8")},
)
import time
def run_athena_query(sql: str) -> list[dict]:
res = athena.start_query_execution(
QueryString=sql,
QueryExecutionContext={"Database": DATABASE},
ResultConfiguration={"OutputLocation": S3_OUTPUT},
)
execution_id = res["QueryExecutionId"]
for _ in range(20): # 0.5s × 20 = 最大 10 秒
time.sleep(0.5)
state = athena.get_query_execution(
QueryExecutionId=execution_id
)["QueryExecution"]["Status"]["State"]
if state == "SUCCEEDED":
break
if state in ("FAILED", "CANCELLED"):
raise RuntimeError(f"Athena query {state}: {execution_id}")
rows = athena.get_query_results(
QueryExecutionId=execution_id
)["ResultSet"]["Rows"]
headers = [c["VarCharValue"] for c in rows[0]["Data"]]
return [
{headers[i]: col.get("VarCharValue", "") for i, col in enumerate(row["Data"])}
for row in rows[1:]
]
def get_secret(name: str) -> str:
return ssm.get_parameter(Name=name, WithDecryption=True)["Parameter"]["Value"]
import json
def _json(status: int, body: dict) -> dict:
return {
"statusCode": status,
"headers": {"Content-Type": "application/json"},
"body": json.dumps(body, ensure_ascii=False),
}
\n を付けるos.environ["KEY"] で参照(.get() で隠蔽しない)ClientError を適切にキャッチしてユーザー向けエラーメッセージを返すdocumentation
実装変更を検知し、対応するドキュメントの更新が必要な箇所を特定する PM スキル。変更ファイルと既存ドキュメントを照合し、更新候補と更新案を提示する。PR 作成時や documentation エージェントがドキュメントを更新するときに自動参照される。
development
React 18 + TypeScript strict + Amplify Auth v6 のフロントエンド実装パターン集。コンポーネント・カスタムフック・API クライアント・オフラインキューの実装を含む。frontend/ ディレクトリを変更するときに自動適用する。
testing
Terraform による AWS インフラ定義のパターン集。モジュール構造・variables.tf・outputs.tf の設計、terraform plan/validate の実行、IAM ポリシー定義など、Terraform コードを書く・修正するときに自動適用する。
data-ai
大きな Issue をサブタスクに分解し、子 Issue として作成する PM スキル。要件を実装単位(S/M/L)に分割し、依存関係を整理する。pm-agent がエピックを分割するときや実装着手前の分解フェーズで自動参照される。