signals-scout-insight-alerts について
プロジェクトで設定された PostHog のインサイトアラートを確認し、見落とされた可能性のある最近の発火を特定する Signals scout スキルです。通知漏れ、影響度、継続性を重視し、既存レポートを更新して重複を避けます。
主な機能
- 01設定済みアラートの発火履歴を確認
- 02通知・影響度・継続性で順位付け
- 03詳細確認の前に候補を絞り込み
- 04受信トレイのレポートを作成・更新
- 05重複排除とアラート情報を記録
活用シーン
- 01通知されなかった重大なアラートを発見
- 02継続中の閾値超過を追跡
- 03監視の盲点となるエラー状態を指摘
- 04再発時のレポート重複を回避
MCP 対応
PostHog のアラート・インサイトツールに加え、scout のスクラッチパッドとレポートチャネルのツールを使います。設定済みアラートの発火を分析し、異常検知そのものは作成しません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ posthog/ ai-plugin --skill signals-scout-insight-alertsインストール後、Claude Code で/signals-scout-insight-alertsを入力して読み込まれたか確認します。
詳細
Signals scout:設定済みインサイトアラートの発火
プロジェクト独自の設定済みインサイトアラート(ユーザーがインサイトに設定したしきい値アラートや異常検知アラート)を対象に、要約とトリアージに特化したスカウトです。各アラートを作成した時点で、チームは何を監視すべきかをすでに決めています。そのため、あなたの仕事は異常を検知することではなく、最近の発火履歴を読み、ノイズを抑え、人間が見逃した可能性が最も高い最近の発火だけを1日1回伝えることです。
レポートはレポートチャンネル(scout-emit-report/scout-edit-report)を通じて直接作成します。発火履歴は自分でトリアージしているため、弱いシグナルをパイプラインに渡してまとめてもらうのではなく、各レポートを最初から最後まで一貫して自分が担当します。その分、基準は高くなります。人間が対応する単独の受信トレイ項目として価値があると確信できる、見逃された重要な発火に限ってレポートを作成してください。すでに報告済みで、まだ未解決の発火は、新規レポートではなく編集の対象です。ハーネスプロンプトには、レポートチャンネルの契約(フィールド、ステータスマッピング、レビュアーへのルーティング、重複排除、編集ルール)がすべて記載されています。この本文では、インサイトアラートに固有の説明のみを追加します。
判別基準。 調査結果とは、_チームが見逃した可能性の高い最近の発火_です。ユーザー自身がしきい値を設定しているため、発火には基本的に意味があるとみなします。あなたの仕事はトリアージであり、再検知ではありません。最近の各発火を、見逃されている度合い × 重要度 × 継続性で順位付けしてください。
- 見逃されている度合い — 実際に誰かに通知されたか?
notification_sent_atがない、targets_notifiedが空、購読ユーザーがいない発火や、notification_suppressed_by_agentが true の発火(調査エージェントが通知を抑制しており、見逃しの可能性があります)は、最も価値の高いシグナルです。通常のアラートパイプラインが通知しなかったためです。購読ユーザーにメールや Slack ですでに通知済みの発火は、すでに認識されているため価値が低くなります。これこそがあなたの存在理由です。通知経路が拾わなかったものを見つけてください。 - 重要度 —
calculated_valueがしきい値の境界をどれだけ超えているか、または異常検知スコアがどれだけ高いかです。境界をわずかに超えたものより、しきい値の3倍に達する発火の方が重要です。 - 継続性 — 連続するチェックで発火が続いている場合(まだ未解決で、
state=Firing)は、2回のチェックの間に自然解消した一度きりの変動より優先されます。
この優先順位を理解してください。これがすべてです。通知されないままエラー状態になっているアラート(評価が停止しています)は、重要度の低い注意喚起に値する盲点ですが、発火では_ありません_。
簡単な確認:発火中のアラートはありますか?
まずは負荷の低い確認として alerts-list を実行します。プロジェクトで有効なアラートが1つもない場合は、not-in-use:insight_alerts エントリを1つ作成して終了します。有効なアラートがすべて Not firing で、期間内に last_notified_at があるアラートもなく、Errored のアラートもない場合は、pattern:insight_alerts:baseline を作成または更新して終了します。設定済みアラートがすべて静かな状態であることも、正当な結果です。(どちらのキーも再利用すれば、冪等に更新されます。)
実行の流れ
以下の手順を繰り返します。有用でない手順は省略してください。
概要を把握する
scout-scratchpad-search(text=insight_alerts、limit=100) — 継続的に参照する指針です。ベースライン、すでに報告したアラート(dedupe:)、既知のフラップ/テスト(noise:)、チームがミュートまたは修正したもの(addressed:/allowlist:)、発火を扱ったレポート(report:)、アラートの担当者(reviewer:)が記録されています。scout-runs-list(直近7日間) — このスカウトの過去の実行で何が報告され、何が対象外と判断されたかを確認できます。昨日のダイジェストを再報告しないために使います。alerts-list— すべてのアラートを一度に確認できる、低コストのトリアージ層です。各行のstate、enabled、snoozed_until、last_notified_at、last_checked_at、last_value、calculation_interval、しきい値/condition/detector_configを確認してください。ここで候補を絞り込みます。すべてのアラートについて、アラートごとの履歴を取得しないでください。inbox-reports-list(ordering=-updated_at、search=対象のアラート名またはインサイト名) — 受信トレイにあるレポートを確認できます。レポートチャンネルに投稿したレポートは、関連するシグナルがsource_product=signals_scoutとして保存されます。そのため、プロダクトで絞り込まないでください。自分が作成したすべてのレポートを見落とすことになります。以前に報告したアラートが発火した場合は、新規レポートではなく編集です。作成する前に、inbox-reports-retrieveで最も関連性の高いレポートを取得してください。
候補を絞り込む(大規模なプロジェクトでは重要です)
活発なプロジェクトでは、アラートが数百件に及ぶことがあります。実行のたびにすべてを詳しく読むことはできません。alerts-listから、有効で、スヌーズされておらず、次のいずれかに該当するアラートだけを残してください。
stateがFiring— 現在しきい値を超えています。stateがErrored— 評価されないままになっています(監視の死角)。last_notified_atまたはlast_checked_atがルックバック期間内(既定では直近約24時間。日次実行では少し長め) — 発火後、すでに解消している可能性があります。
それ以外(Not firingで、期間内に更新がないもの)はベースラインとしてスキップしてください。通常、これで数百件のアラートを数件に絞り込めます。
候補を1件ずつ詳しく確認する
残った候補について、実際の発火エピソードを取得してください。stateやlast_valueだけを信用してはいけません(状態が古い可能性があり、last_valueは最新のチェック値にすぎず、発火の原因となったしきい値超過時の値ではありません)。alert-getをchecks_date_from=-24hで使ってください(継続性や再発性を判断するには-48h/-7dまで期間を広げます。履歴は14日間保持されます)。返されたchecksを確認してください。
checksに見られるパターン | 一般的な意味 |
|---|---|
1件以上のFiringチェックがあり、最新もFiringで、notification_sent_atがない | 通知されていない未解決のしきい値超過 — 最優先です。 発火しており、誰にも通知されないまま、現在も継続中です。 |
Firingチェックの後にNot firingへ戻り、すべて数分/1インターバル以内 | フラップです。インシデントではなく、しきい値の設定が不適切な場合がほとんどです。P1ではなく、運用上の改善対象です。 |
notification_sent_atが設定されたFiringと購読ユーザー | チームには通知済みです。価値は低めです。重要なうえに未解決で未対応の場合に限り、報告してください。 |
notification_suppressed_by_agent=true | 調査エージェントは誤検知と判断していますが、信用する前に確認してください。誤検出の可能性があります。 |
連続する複数のチェックでerrorが繰り返される(state=Errored) | アラートが壊れています(クエリの不備、インサイトの削除、時系列データの欠落など)。通知されない監視の死角です。 |
しきい値超過が実際のものか判断に迷う場合は、アラートのcondition/しきい値の範囲を確認し、発火したチェックのcalculated_valueと比較してください。また、メトリクスの内容を把握するためにinsight-getでインサイトを取得してください。
進めながらメモリを保存する
今後の実行で動作を変える必要がある場合は、スクラッチパッドにエントリを書き込みます。キーの接頭辞でカテゴリを示し、アラートごとのエントリは発火のたびに変わらないアラート IDをキーにします。
pattern:insight_alerts:baseline— 「有効なアラートは約{N}件、1日あたりの発火は約{X}回で、大半は1時間ごとです。担当者は多数です。{timestamp}」dedupe:insight_alerts:{alert_id}— 「{date}に『{name}』の発火(アラート {alert_id}、インサイト {short_id})を報告済み。値は{v}、しきい値は{b}。通知は未送信。次回の実行時も発火中ならレポートを編集し、解決済みで通知済みなら対応済みとして扱う。」noise:insight_alerts:{alert_id}— 「しきい値の設定が厳しすぎるため、数時間ごとに発火と解決を繰り返します。発火自体は有益なシグナルではありません。一度限りのチューニング衛生上の指摘としてのみ報告し、発火のたびには報告しないでください。」addressed:insight_alerts:{alert_id}/allowlist:insight_alerts:{alert_id}— チームが修正または確認済みである、あるいは担当者が意図的に優先度を低く保っていることを示します。スキップしてください。report:insight_alerts:{alert_id}— このアラートの発火について提出したレポートのreport_idです。次回の実行では重複してレポートを作成せず、新たな発火情報を使ってappend_evidenceで既存のレポートを編集します。reviewer:insight_alerts:{alert_id}— アラートまたはそのインサイトの担当者(小文字のGitHubログイン名のみ)です。レポートを人間により早く届けるために使います。
判断する
汎用的なレポートの仕組み — まず受信トレイを検索すること(report:insight_alerts:{alert_id} ポインターを使い、それがなければ対象のアラート名/インサイト名で inbox-reports-list を検索します。alert のような広すぎる語で検索してはいけません)、編集するか新規作成するかの判断、ステータスのルール、レビュー担当者への振り分け、再試行と実行間の重複排除ルール、および priority/repository フィールド — はハーネスのプロンプトと authoring-scouts → references/report-contract.md に記載されています。ここでそれらを再導出しないでください。各候補の発火を過去の実行およびスクラッチパッドと照合して分類し(新規/重要な更新/対応済み/対処済みまたはノイズ)、そのうえでインサイトアラートに関する判断のみを適用します。
-
編集:アラートを追跡する有効なレポートがすでにある場合 — 報告した発火がまだオープンな場合、または同じアラートが再発した場合です。継続的な違反は実行をまたいで1つのレポートにまとめます。日ごとに新しいレポートを作成せず、最新の発火を
append_evidenceで追加します(上限に対するcalculated_value、新たな発火時刻、現在の通知ステータス)。 -
新規作成:発火をカバーする有効なレポートがない場合です。レポートに値する所見とは、期間内に発生した、重大な(上限を大幅に超えている、または異常スコアが高い)発火で、アラートが有効かつスヌーズされておらず、通知が不足していた(通知なし/抑制された)、または未対応のままオープンになっているものです。
evidenceには、アラート ID、インサイトのshort_id、しきい値に対する発火時のcalculated_value、発火時刻、通知ステータスを含めます。これはトリアージの指摘であり、コード修正ではありません →actionability=requires_human_input。優先度:重要な指標に対する重大かつ通知されていない発火は P1、通知されたものの未対応のままオープンになっている重大な発火は P2、エラー状態のアラートによる見落としや、しきい値の頻繁な変動に関する改善項目は P3 です。発火したインサイトをレポートのチャートとして添付します。保存済みの範囲が絶対範囲で発火時点を含む場合に限り、short_idのみを指定したSavedInsightNodeを使います(相対範囲は日が経つと発火時点が範囲外になります)。それ以外の場合は、発火時点を含む日付を固定したアドホックノードを使い、しきい値の数値と並べて違反を確認できるようにします。 -
上限と順位付け。 1回の実行で作成するレポートは約5件までとし、識別基準に基づいて重大なものから優先します。基準を満たしたものがそれを超える場合は、完了時の報告で除外した件数を伝えます。黙って打ち切ってはいけません。個別にはレポートに値しない軽微な発火が複数ある場合は、それらをまとめたダイジェスト形式のレポートで構いません。頻繁な変動やエラー状態のアラートに関する改善項目は、1件ずつレポートにするのではなく、この方法でまとめます。
-
記録する:示唆的ではあるものの基準に満たない場合(わずかな違反や単発の変動)、またはベースラインを更新する場合/除外した理由を記録する場合です。
-
スキップする:
noise:/addressed:/allowlist:/dedupe:のエントリー、または既存の受信トレイレポートですでに対応済みの場合です。
兄弟担当との連携:observability-gaps はアラートの 作成 を推奨し、anomaly-detection はチームが 閲覧する インサイト(アラート設定の有無を問わない)をスコアリングします。あなたの担当は、すでに存在するアラートの発火です。それらの dedupe: エントリーを尊重してください。あなたならではの観点は、発火の見落としに関するトリアージです。
完了報告
1段落で、トリアージしたアラートの件数、作成または編集したレポート(およびその理由)、除外したもの(変動、スヌーズ中、通知済みかつ解決済みなど)、および1回の実行あたりの上限により除外した、基準を満たす候補の件数を報告します。ハーネスはこれを実行サマリーとして保存します。「候補をトリアージした結果、発火したものはすべて通知済みで対応されていました」は正当な結果です。実行メタデータ用のスクラッチパッドエントリーを別途作成しないでください。
対象外(スキップ)
- スヌーズ中または無効化されたアラート —
snoozed_untilが未来の日時である、またはenabled=falseの場合です。オーナーが明示的にミュートしています。スヌーズ中のアラートが発火しても、見逃しではありません。 - フラッピングするアラート — 持続的な違反がないまま、一定の間隔内で発火→解決→発火する場合です。これはインシデントではなく、チューニングの問題です。調整を提案する衛生面の指摘(P3)は最大 1 件にとどめ、
noise:を記録して、個々のフラッピングをそれ以上報告しないでください。 - 通知済みで解決済み — 発火し、登録ユーザーにメールまたは Slack で通知され(
notification_sent_atが設定され)、その後Not firingに戻った場合です。チームは把握済みで、問題も解決しています。数日にわたって実質的に繰り返し発生している場合を除き、スキップしてください。 - 件数が少ない/ノイズの多い時系列での軽微な違反 —
calculated_valueがしきい値とほぼ同じ、または絶対数がごくわずかな場合です。重要度の下限を下回るため、報告しないでください。 - 開発/テスト/内部専用アラート —
$environment/サービスがdev/local/testであるインサイトのアラート、または単一オーナーのサンドボックスアラートです。ユーザー向けではありません。 - 一時的な単発のチェックエラー — 一度エラーになった後、復旧したアラートです。連続したチェックでエラー状態が持続する場合にのみ指摘してください。
迷った場合は、報告を作成するのではなく、メモリを更新してください。
MCP ツール
直接利用(読み取り専用):
alerts-list— すべてのアラートを対象にした、低コストのトリアージ層です(状態、有効/無効、スヌーズ状態、最終通知/チェック日時、最終値、しきい値/検出器)。候補を絞り込むために使用します。alert-get(id、checks_date_from、checks_date_to、checks_limit)— 候補アラートの実際の発火履歴を確認します。チェックごとのstate、calculated_value、targets_notified、notification_sent_at、notification_suppressed_by_agent、error、異常スコアが含まれます。insight-get— アラート対象のメトリクスの実態を確認します(重要度を判断する際に読み取ってください)。
受信トレイとレビュアーの割り当て(仕組みについては authoring-scouts → references/report-contract.md を参照):
inbox-reports-list/inbox-reports-retrieve— 受信トレイにすでにあるレポートです。作成前に確認し、重複させずに編集してください。inbox-report-artefacts-list— 比較対象となるレポートのアーティファクトログです。レビュアーの先例を確認できます。scout-members-list— 実行中のメンバー一覧です。アラート/インサイトのオーナーをsuggested_reviewersに割り当てる際に使用します。
ハーネスレベル:scout-project-profile-get、scout-scratchpad-search、scout-runs-list、scout-runs-retrieve(状況把握+重複排除);scout-emit-report/scout-edit-report(レポートを作成/編集 — レポートチャンネルの仕様はハーネスのプロンプトに記載されています);scout-scratchpad-remember、scout-scratchpad-forget(メモリ)。
終了するタイミング
- 有効なアラートがない、またはすべて静穏 → 簡潔に締めくくります。
- 候補をトリアージして、特に重大なものを報告した → 軽微な発火が残っていても終了します。実行ごとの上限は意図的に設けられています。
- 候補が
noise:/addressed:/allowlist:/dedupe:の項目に該当する → スキップします。
見逃された発火を実際に検出できる、数を絞った精度の高い指摘のほうが、たまたま違反したすべてのアラートを毎日再列挙するよりも有用です。