원클릭으로
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)