بنقرة واحدة
aws-logs-investigate
CloudWatch Logs の調査・分析。ログの検索、フィルタリング、Insights クエリの実行を行い、結果を要約して返す。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
CloudWatch Logs の調査・分析。ログの検索、フィルタリング、Insights クエリの実行を行い、結果を要約して返す。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
日本語の技術文書・書籍原稿の文章規範。整形(一文一行、引用ブロック、脚注、コラム記法)、段落と論証の構成(パラグラフライティング)、論証の厳密さ(ツッコミどころの除去)、読み手の負荷の管理、視点と語り、演出の抑制、LLM っぽい空句の禁止、冗長の排除を定める。日本語で技術書の章、草稿、記事、解説文を書くとき、または推敲・リライトするときに使用する。
プルリクエスト作成
画像・ビジュアル素材を新規生成したいあらゆる依頼で発動する。Codex CLI 組み込みの image_gen(gpt-image-2)を呼び、API キー無しで ChatGPT サブスクから PNG をカレントディレクトリに吐き出す、Claude Code 唯一の画像生成手段。対象例: ロゴ・アイコン・ファビコン・SVG 用ラフ、スライドや登壇資料の表紙/ヘッダー/章扉、ブログやドキュメントのアイキャッチ・OGP・サムネ、バナー・ヒーロー画像・背景イラスト、抽象的な「テック感」「ビジネス感」のイメージビジュアル、キャラ絵・コンセプトアート、SNS 投稿画像、モックアップ用ダミー写真など。「画像/イラスト/絵/ビジュアル/写真/イメージを作って・生成して・描いて・出して」「ロゴ/アイコン/サムネ/バナー/表紙/カバー/ヘッダーを作って」「1920x1080 で」「正方形で」のようなサイズ指定や、「Codex/OpenAI/gpt-image/DALL-E で」など特定エンジン指定も全部拾う。ユーザーが画像を新しく作ってほしそうな意図を見せたら、スキル名や Codex への言及が無くても積極的に発動。既存画像の編集・解析・トリミング・OCR は対象外。
Git Commit
localStorage を別オリジンにコピーする手順を表示する
海外ITニュースの調査・ダイジェスト作成。Hacker News / TechCrunch / The Verge に加え、Anthropic / Cloudflare / Tailscale 等のテックブログから最新記事を取得し、日本語で要約する。
| name | aws-logs-investigate |
| description | CloudWatch Logs の調査・分析。ログの検索、フィルタリング、Insights クエリの実行を行い、結果を要約して返す。 |
| context | fork |
| agent | general-purpose |
| argument-hint | <profile> |
全ての AWS CLI コマンドに --query (JMESPath) オプションを付与し、出力を最小限に絞ること。
これはコンテキストウィンドウの溢れを防ぐための必須ルールである。
--query を使わずに全フィールドを取得することは禁止。必ず必要なフィールドのみを抽出する。
また、--max-items や --limit が使えるコマンドでは積極的に使用し、取得件数を制限する。
全ての aws コマンドは 必ず aws-vault exec <profile> -- を前置して実行すること。
# 正しい例
aws-vault exec <profile> -- aws logs describe-log-groups ...
# 間違った例(直接実行は禁止)
aws logs describe-log-groups ...
$ARGUMENTS として AWS プロファイル名が渡される。
プロファイル名が未指定の場合は、~/dotfiles/home-manager/programs/agent/scripts/parse-aws-config.ts を実行してプロファイル一覧を取得し、AskUserQuestion でユーザーにプロファイルを選択させる。
aws-vault exec <profile> -- aws sts get-caller-identity --query '{Account:Account,Arn:Arn}' --output table
認証エラーの場合は、/aws:vault-exec でセッションを確立する必要がある旨を案内して終了する。
ロググループ一覧を取得する:
aws-vault exec <profile> -- aws logs describe-log-groups \
--query 'logGroups[].{name:logGroupName,storedBytes:storedBytes,retentionDays:retentionInDays}' \
--output table \
--max-items 30
取得したロググループ名を AskUserQuestion で提示し、ユーザーにどのロググループを調査するか選択させる。
ロググループが多い場合はプレフィックスを聞いて --log-group-name-prefix で絞り込む。
AskUserQuestion で調査方法を選択させる:
filter-log-events): 特定の文字列やパターンでログを検索start-query): 集計・統計が必要な複雑な分析tail): 直近のログをリアルタイムに確認get-log-events): 特定のログストリームの詳細確認選択後、必要に応じて検索パターンや時間範囲を AskUserQuestion で確認する。
選択された方法で調査を実行する。
aws-vault exec <profile> -- aws logs filter-log-events \
--log-group-name "<log-group>" \
--filter-pattern "<pattern>" \
--start-time <epoch-ms> \
--end-time <epoch-ms> \
--query 'events[:20].{timestamp:timestamp,message:message}' \
--output table \
--max-items 20
フィルタパターンの構文:
"ERROR" / "Exception"{ $.level = "ERROR" }{ $.statusCode = 500 && $.duration > 1000 }# クエリ開始
QUERY_ID=$(aws-vault exec <profile> -- aws logs start-query \
--log-group-name "<log-group>" \
--start-time <epoch> \
--end-time <epoch> \
--query-string 'fields @timestamp, @message | filter @message like /ERROR/ | sort @timestamp desc | limit 20' \
--query 'queryId' \
--output text)
# 数秒待機
sleep 3
# 結果取得
aws-vault exec <profile> -- aws logs get-query-results \
--query-id "$QUERY_ID" \
--query '{status:status,results:results[:20]}'
よく使う Insights クエリ:
stats count(*) by @message | filter @message like /ERROR/ | sort count desc | limit 10stats avg(duration), max(duration), p99(duration) by bin(5m)stats count(*) as total, sum(@message like /ERROR/) as errors by bin(1h)aws-vault exec <profile> -- aws logs tail "<log-group>" \
--since 5m \
--format short
注意: --follow フラグは使用しないこと(プロセスが終了しないため)。
まずストリーム一覧を取得:
aws-vault exec <profile> -- aws logs describe-log-streams \
--log-group-name "<log-group>" \
--order-by LastEventTime \
--descending \
--query 'logStreams[:10].{name:logStreamName,lastEvent:lastEventTimestamp}' \
--output table \
--max-items 10
AskUserQuestion でストリームを選択させた後:
aws-vault exec <profile> -- aws logs get-log-events \
--log-group-name "<log-group>" \
--log-stream-name "<stream>" \
--start-time <epoch-ms> \
--query 'events[:20].{timestamp:timestamp,message:message}' \
--output table \
--limit 20
調査が完了したら、以下の形式で要約を返すこと:
要約は簡潔に、メインコンテキストで理解できる粒度で記述する。
追加の調査が必要な場合は、AskUserQuestion でユーザーに確認してからステップ 3 に戻る。
--query JMESPath パターン集'logGroups[].{name:logGroupName,stored:storedBytes,retention:retentionInDays}'
'logGroups[?contains(logGroupName,`keyword`)].logGroupName'
'logStreams[:N].{name:logStreamName,lastEvent:lastEventTimestamp}'
'logStreams[?lastEventTimestamp>`EPOCH`].logStreamName'
'events[:N].{ts:timestamp,msg:message}'
'events[?contains(message,`ERROR`)].message'
'length(events[])'
'{status:status,count:length(results),results:results[:N]}'
'results[].[field, value]'
多くのコマンドで epoch ミリ秒が必要。以下で変換:
# 現在から1時間前(ミリ秒)
echo $(($(date +%s) * 1000 - 3600000))
# 現在時刻(ミリ秒)
echo $(($(date +%s) * 1000))
# 特定日時を epoch 秒に変換(macOS)
date -j -f "%Y-%m-%d %H:%M:%S" "2025-01-15 10:00:00" +%s
# start-query 用の epoch 秒(ミリ秒ではない)
echo $(date +%s)