pir について
pir は、PagerDuty、Datadog、Cloudflare、Rollbar と、任意で Slack からインシデント情報を集め、事後記録を作成するエージェントスキルです。収集データから重大度を判定し、NotebookLM でレポート、インフォグラフィック、スライドを生成します。
主な機能
- 01インシデント情報の並行調査
- 02情報源間で分析期間を統一
- 03重大度の自動判定
- 04コード履歴との関連付け
- 05NotebookLM のレポート、図解、スライド生成
活用シーン
- 01指定期間のインシデント記録の作成
- 02監視情報源を横断した PagerDuty 調査
- 03インシデントの時系列とコード履歴の照合
- 04NotebookLM の資料を使った調査結果の共有
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ delexw/ claude-code-misc --skill pirインストール後、Claude Code で/pirを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/pir-form-fields.mdsteps/step1-gather-date-range.mdstep2a-discover-incidents.mdstep2b-discover-datadog.mdstep2c-discover-cloudflare.mdstep2d-discover-rollbar.mdstep2e-discover-slack.mdstep3a-codebase-analysis.mdstep3b-generate-nlm.mdstep4-present-results.md詳細
インシデント後記録(PIR)
PagerDuty、Datadog、Cloudflare、Rollbar から問題を同時に検出し、重大度を自動判定して、各問題の記入済み PIR フォームを作成します。
入力
生の引数:$ARGUMENTS
引数から次の情報を推定します:
- QUERY:調査する内容です。各サブスキルに直接渡されます。デフォルトは「本日のインシデント」です。
- CF_DOMAIN_ZONE:(任意)
domain:zone_id形式の Cloudflare ドメインとゾーン ID です。cloudflare-traffic-investigator スキルに渡されます。指定されていない場合、cloudflare スキルがユーザーに確認します。
ステップ 1 で解決されます(直接指定されません):
- SINCE:分析期間の開始時刻を示す UTC ISO8601 形式の値です。QUERY に明示された時刻、または PD インシデントのタイムスタンプから自動的に導出されます。
- UNTIL:分析期間の終了時刻を示す UTC ISO8601 形式の値です。QUERY に明示された時刻、または PD インシデントのタイムスタンプから自動的に導出されます。
- PD_INCIDENT:QUERY から検出された PagerDuty インシデント ID です(PD を最初に処理するオーケストレーション経路が開始されます)。
- SERVICE_HINT:PD インシデントから抽出されたサービス名です(Datadog/Rollbar のクエリ範囲を絞り込むために使用します)。
- TITLE_HINT:PD インシデントから抽出されたインシデントのタイトルです(Rollbar のキーワード検索語として使用します)。
- SLACK_CHANNEL:ステップ 2e で解決されます。呼び出し元のコンテキスト、または
$SLACK_INCIDENT_CHANNEL環境変数から取得します。単一のチャンネル、またはカンマ区切りかパイプ区切りのチャンネル一覧を指定できます。
PIR フォームのフィールド
各 PIR は次のフィールドに対応します。形式、例、出力テンプレートについては、PIR フォームのフィールドを参照してください。
| フィールド | 必須 | 情報源 |
|---|---|---|
| 影響の概要 | はい | すべてのスキルの情報を統合 |
| 何が起きたか | はい | PagerDuty インシデント + Datadog + Cloudflare |
| 影響を受けた対象 | はい | Datadog(RUM/エラートラッキング)+ Cloudflare(ユーザー数) |
| 原因 | はい | Cloudflare(JA4、トラフィックソース)+ Datadog(エラートレース)+ Rollbar(スタックトレース、エラーとデプロイの相関)+ PagerDuty(トリガーの詳細)+ Slack(根本原因に関する議論)+ コードベースの分析(原因となったコミット) |
| インシデント発生日 | はい | すべての情報源(PagerDuty、Datadog、Cloudflare)で最も早い検出時刻 |
| 発生時刻 | はい | PagerDuty の作成/解決時刻 + Datadog のタイムライン |
| 修復 | 任意 | PagerDuty のメモ + Datadog のモニター + Slack(インシデント発生中に実施した対応) |
| インシデントコントローラー | 任意 | PagerDuty のエスカレーションポリシーの応答者 + Slack(チャンネル内で対応中の応答者) |
重大度の自動分類
収集したデータから重大度を判定します。ユーザーに質問してはいけません。
| 重大度 | 判定基準 |
|---|---|
| SEV1 | サービス停止、または重要な経路でエラー率が 50% 超。連鎖障害。継続時間が 30 分超。 |
| SEV2 | 部分的な性能低下。エラー率が 10~50%。影響を受けるサービスは 1 つ。継続時間が 10~30 分。 |
| SEV3 | 軽微な影響。エラー率が 10% 未満。短時間の急増(10 分未満)。ユーザーへの影響は限定的。 |
複数の基準に該当する場合は、最も高い重大度を適用します。
実行
ステップ 1:準備 — 対象期間の解決
step1-gather-date-range.mdを参照してください。
QUERY から入力モードを検出し、SINCE/UNTIL を解決します。
- QUERY に PD URL/ID がある場合 → 最初に pagerduty-oncall を実行します(ステップ 1b)。タイムスタンプを抽出し、SINCE、UNTIL、SERVICE_HINT、TITLE_HINT、PD_INCIDENT を設定します。
- QUERY に明示的な時刻がある場合 → UTC ISO8601 形式の SINCE/UNTIL に変換し、4 つのサブスキルをすべて並列実行します。
- QUERY が曖昧または空の場合 → 過去 24 時間をデフォルトとし、4 つのサブスキルをすべて並列実行します。
ステップ 2:検出 — PagerDuty、Datadog、Cloudflare、Rollbar
オーケストレーションの方法は、ステップ 1 で PD_INCIDENT が解決されたかどうかによって異なります。
- PD_INCIDENT が設定されている場合:データはすでに収集済みのため、ステップ 2a はスキップします。2b + 2c + 2d + 2e を並列実行します。
- それ以外の場合:5 つすべて(2a + 2b + 2c + 2d + 2e)を並列実行します。
一貫した分析期間をすべてのデータソースで使用できるよう、利用可能な場合は各サブスキルに SINCE と UNTIL(UTC ISO8601 形式)を渡します。
2a. PagerDuty — インシデント
step2a-discover-incidents.mdを参照してください。
— Skill("pagerduty-oncall")を呼び出します。ステップ 1b で PD_INCIDENT が解決されている場合はスキップします。
2b. Datadog — オブザーバビリティデータ
step2b-discover-datadog.mdを参照してください。
— Skill("datadog-analyser")を呼び出します。利用可能な場合は、SINCE、UNTIL、SERVICE_HINTを渡します。
2c. Cloudflare — トラフィック分析
step2c-discover-cloudflare.mdを参照してください。
— Skill("cloudflare-traffic-investigator")を呼び出します。CF_DOMAIN_ZONEが指定されている場合は、ドメインとゾーンIDを渡します。利用可能な場合は、SINCE、UNTILを渡します。
2d. Rollbar — エラートラッキング
step2d-discover-rollbar.mdを参照してください。
— Skill("rollbar-reader")を呼び出します。利用可能な場合は、SINCE、UNTIL、TITLE_HINTを渡します。
2e. Slack — インシデントチャンネル
step2e-discover-slack.mdを参照してください。
— Skill("slack-explorer")を呼び出します。呼び出し元のコンテキストまたは$SLACK_INCIDENT_CHANNEL環境変数からチャンネルを特定します。チャンネルが見つからない場合は、問題なくスキップします。
ステップ3a:コードベース分析
step3a-codebase-analysis.mdを参照してください。 — 作業ディレクトリ全体のGit履歴を分析し、検出レポートのインシデントタイムラインと関連付けます。
ステップ3b:NotebookLMによるPIRの生成
step3b-generate-nlm.mdを参照してください。 — 3aの後に実行します。NotebookLMのノートブックを作成し、検出レポートとコードベースレポートをすべてアップロードして、レポート、インフォグラフィック、スライドデッキを生成します。ノートブックIDを返します。
ステップ4:結果の提示
step4-present-results.mdを参照してください。 — PIRの概要を表示し、対話的に調査できるノートブックへのリンクを提示します。追加の問い合わせに備え、NotebookLMのノートブックを保持します。