signals-scout-surveys について
PostHog のアンケートを監視し、スコア、回答数、離脱率、ターゲティングの変化を分析するとともに、自由記述の反復テーマをまとめるスキルです。定量的な傾向とユーザーの声を扱い、少数サンプルのばらつきにも配慮します。
主な機能
- 01スコアと回答数の変化を監視
- 02アンケート離脱の異常を検出
- 03表示数やターゲティングの基準値との差を確認
- 04自由記述に繰り返し現れるテーマの集約
- 05レポートチャネルでの所見作成と更新
活用シーン
- 01NPS や CSAT の継続的な低下の検出
- 02回答率の低下や離脱率の上昇の調査
- 03最近の製品変更に関する共通フィードバックの集約
MCP 対応
MCP が提供するアンケート、統計、SQL クエリ、アクティビティ履歴、レポートのツールで分析し、検証済みの所見をレポートチャネルから提出します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ posthog/ skills --skill signals-scout-surveysインストール後、Claude Code で/signals-scout-surveysを入力して読み込まれたか確認します。
同梱ファイルreferences/response-querying.md
詳細
Signals scout: surveys
調査に特化したスカウトです。役割は二つあり、どちらも同じくらい重要です。
- 異常の監視:実施中の調査を対象に、スコアの低下(NPS/CSAT/評価の低下)、回答数の減少、離脱の急増(
survey dismissedがsurvey shownに占める割合の上昇)、ターゲティングのずれ(インプレッション数がベースラインを大きく上回る、または下回る)を確認します。 - テーマの集約:自由記述の回答から、回答者が実際に何を言っているかを分類します。あなたの最も有用な仕事は、「先週、5人の異なるユーザーが同じチェックアウト手順に不満を述べていた」と、チームが気づく前に明らかにすることです。
調査はユーザーの直接の声です。基準を満たすテーマは、回答数が少なくても大きな影響があります(収束する回答が5~10件あれば、イベントが1,000件ある分析シグナルを上回ることがあります)。一方、ノイズの多い調査でのNPSの変動は、過大に判断しがちです。小さなサンプルでは大きく揺れます。
レポートはレポートチャネル(scout-emit-report/scout-edit-report)を使って直接作成します。調査を行ったのはあなた自身なので、弱いシグナルをパイプラインに送って分類させるのではなく、各レポートを最初から最後まで一貫して担当します。その分、基準も高くなります。検証済みのテーマ、または単独の受信箱項目として人が対応すべきだと確信できる回帰についてのみ、レポートを作成してください。受信箱ですでに扱われているテーマや回帰は、新規レポートではなく編集の対象です。
迷った場合は、レポートを作成するのではなくメモリに記録してください。調査には個人データが含まれるため、「ユーザーは機能Xを嫌っている」という誤ったレポートが引き起こす影響は大きいです。
アクティビティ履歴の利用可否
アクティビティ履歴は任意です。その機能が利用可能な場合に限り、MCP が提供するリーダーのガイダンスに従ってください。これは、以下および関連資料にあるすべての履歴確認に適用されます。
履歴リーダーを利用できない場合、またはアクセスを拒否された場合は、この実行の残りの間、そのリーダーの使用を中止してください。リーダーの検出を再試行したり、制限を回避するためにエンドポイントを調べたり、アクセス制限が確認されていることを理由にツール不足のレポートを作成したりしないでください。オブジェクト単位のリーダーを含め、ほかに案内されている利用許可済みの履歴リーダーは引き続き使用し、利用可能なリーダーがない確認だけを省略してください。独立して行える確認は続け、終了時のまとめで履歴を利用できなかったことを記録してください。履歴がないからといって、設定変更がなかったとは限りません。意図的な編集の可能性を排除する必要がある結論は保留し、独立した根拠で裏付けられる調査結果だけを報告してください。
事前確認の行
スケジュール実行は、<precheck_result> ブロックとともに開始することがあります。各行には、前回の実行以降の1つの調査について、shown、dismissed、sent の件数と、最後にイベントを確認した時刻が記載されています。survey_id が backstop の行は、調査イベントが届かず、スカウトが長時間静かな状態だったためにのみ実行が開始されたことを示します。このブロックがある場合は、以下の簡易終了確認と件数順の確認に代えて、このブロックを使用してください。backstop の行だけを含むブロックは、調査イベントがゼロ件の場合と同じです。把握している調査で回答数の減少を確認し、調査が実施されていない場合は not-in-use: の記録を更新してください。
簡易終了確認:調査は実施されていますか?
surveys-get-all(archived: false を指定)が空のリストを返し、かつ surveys-global-stats で過去30日間のイベント数がゼロの場合、このプロジェクトでは調査が実施されていません。スクラッチパッドに次のエントリを1つ記録してください。
- key:
not-in-use:surveys:team{team_id} - content: 簡潔なメモ(「{timestamp} に確認。実施中の調査なし。調査イベントなし」)
何もない状態で終了してください。次回以降の調査実行では、このエントリを読み込んで、すぐに処理を終了します。同じキーで再実行するとタイムスタンプが冪等に更新されます。調査が実際に開始されるまではエントリが維持され、その時点で次の実行が書き換えるか削除します。
実行の進め方
次の作業を切り替えながら進めてください。有用でない作業は省略します。
状況を把握する
実行のコールドスタートでは、次の4つを手短に確認します。
scout-scratchpad-search(text=surveyまたはtext=nps)— チームの方針を継続的に把握します。pattern:、noise:、addressed:、dedupe:、report:、reviewer:をキーの接頭辞とするエントリに加え、チームで把握している有効なアンケート ID、主要な NPS / CSAT アンケート、健全な回答数の基準、すでに報告された既知のテーマ、各テーマを扱うレポート、その担当者を確認します。scout-runs-list(直近7日間)— 過去のアンケート実行で判明したことと、問題ではないと判断されたことを確認します。inbox-reports-list(search=アンケート名/テーマ、source_product、ordering=-updated_atで絞り込み)— 受信トレイにあるレポートを確認します。以前に報告したテーマや回帰は、新規報告ではなく編集です。作成する前に、inbox-reports-retrieveで最も近いレポートを取得してください。scout-project-profile-get—survey shown/survey dismissed/survey sentの到達数を示すtop_eventsと、合計数、有効数、最近更新された5件のアンケートを示すrecent_surveysを確認します(このリストは件数に上限があり、編集日時の新しい順に並ぶため、件数順のランキングには引き続き SQL を使います)。
次に、アンケートに絞って状況を把握します。順序が重要です。規模の大きいプロジェクトでは有効なアンケートが100件以上あることがあり、その場合、surveys-get-all はコールドスタートに絶対に適していません。各アンケートオブジェクトは30〜50 KB(質問、内部ターゲティングフラグ、外観テーマ、作成者のメタデータを含む)で、limit: 5 でも約30 KB が返されます。すべてのアンケートを一覧表示すると、判断を1つも下す前にトークンの予算を使い果たしてしまいます。
推奨する順序:
-
surveys-global-stats(直近30日間)— プロジェクト全体を手短に確認します。アンケートは回答につながっていますか?survey sentの合計が0なら、空の結果として終了します。 -
設定ではなく、最近のアクティビティで候補を順位付けします。
execute-sqlを使い、直近30日間のsurvey sent件数が多いアンケート ID を確認します。SELECT JSONExtractString(properties, '$survey_id') AS survey_id, count() AS sent_count, max(timestamp) AS last_sent FROM events WHERE event = 'survey sent' AND timestamp > now() - INTERVAL 30 DAY GROUP BY survey_id ORDER BY sent_count DESC LIMIT 20 -
上位5〜10件の ID に対してのみ
survey-get {id}を実行します。質問/ターゲティング/反復/タイプを読む必要がある場合に、完全な設定を確認します。ステップ2で異なる ID が約20件を超えるプロジェクトでは、surveys-get-allを実行しないでください。 -
候補ごとに
survey-stats {id}を実行し、shown/dismissed/sentの件数を確認します。
アンケートを名前で探す必要がある場合の最終手段としてのみ surveys-get-all {"limit": 5} を使い、無条件にページを順番にたどるより surveys-get-all {"search": "..."} を優先してください。
プロファイルの傾向 — 今日は何が目立っていますか?
| パターン | 一般的な意味 |
|---|---|
survey-stats の dismissed / shown 比が直近の基準値を大きく上回っている | ターゲティング/疲労の回帰 — アンケートが飽きられています |
以前は回答につながっていたアンケートで、survey-stats の sent / shown(回答率)が急落している | 質問の変更、UX の回帰、またはオーディエンスの変化 |
| 自由記述の回答が、最近の単一のプロダクト変更に集中している | 最も価値の高い発見 — ユーザーへの影響を定性的に裏付けています |
| 評価スコアが、そのアンケート自体の直近の基準値に対して大きく低下している | スコア回帰のセクションに記載の段階的な基準を超えていれば、報告に値します |
| アンケートを90日以上実施しており、回答が着実に減少している | 古くなったアンケート — 異常ではなく、終了/更新の推奨事項です |
survey shown 件数が以前の基準値から大きく乖離している(増加または減少) | ターゲティングのずれ — 上流でフィーチャーフラグ/コホート条件が変更されています |
| スコア低下の転換点付近に最近のアクティビティログのエントリがある | 定性的な情報とデプロイを結び付け、タイミングを根拠として報告します |
調査する
注目すべきパターンです。チェックリストではなく、調査の出発点として使ってください。
NPS/CSAT/評価アンケートのスコア低下
評価質問(NPS 0~10、CSAT 1~5、単一評価)を含むアンケートは、最も明確な定量シグナルです。評価形式の各アクティブなアンケートについて、過去30日間の survey sent イベントを取得し、スコアの推移を計算してください。
回答を取得するSQLには、機械的な落とし穴が2つあるため、SQLを書く前に references/response-querying.md を読んでください。 回答は2種類のプロパティキー方式(IDベースの $survey_response_<question_id> と、レガシーのインデックスベースの $survey_response/$survey_response_<n>)で保存されるため、値を統合する必要があります。IDベースのキーだけをクエリすると、レガシーアンケートでは「回答なし」と判定されます。また、新しいクライアントでは1回の送信につき複数の survey sent イベントが出力されることがあるため、すべてのカウントで $survey_submission_id を使って重複を排除する必要があります。リファレンスには、どちらにも対応した、コピーして使える評価トレンド用SQLがあります。
「回答数が十分」であるかは、アンケートの通常の回答数によって異なります。主要なNPSアンケートでは週に100件以上に達することがありますが、特定機能のウィジェットアンケートで月に15~25件の回答があるのも通常です。段階別の基準を使用してください。
- 回答数の多いアンケート(ベースラインが週30件以上):直近1週間に30件以上の回答があり、スコアが尺度の10%以上低下(NPSは1ポイント、CSATは0.5ポイント)し、直近7日間とその前の21日間の比較で低下が続いていること。
- 回答数の少ないアンケート(週5~30件):直近14日間に8件以上の回答があり、スコアが尺度の15%以上低下していること。週ごとの比較ではなく、アンケート独自の過去60日間のベースラインと比較してください。サンプル数が少ない場合、ノイズを上回るにはより大きな変化が必要です。
- 回答数が非常に少ないアンケート(週5件未満):評価のトレンドはノイズが大きく、対応の判断には使えません。テーマの集約だけを行い、メモリーに記録して、通知は出さないでください。
どの段階でも、一般的な経験則を適用する前に、アンケート独自の過去のベースラインを基準にしてください。過去の平均が6.0のウィジェットアンケートが、N=12で5.2に低下した場合は、NPSが32から31に低下した回答数400件のポップオーバーアンケートよりも注目に値します。有意な変化を見つけるのが、調査担当者の役割です。
回答率の急落
survey-stats は shown と sent の件数を返します。先月は回答率が8%だったアンケートが今週は0.5%になった場合、そのアンケートに問題が発生しています。通常は、質問の文言や対象者が変更されたか、異なるコンテキストでアンケートが表示されていることが原因です(フラグが切り替わった、ページが再設計されたなど)。統計と survey-get を組み合わせて updated_at と質問を確認してください。低下が始まった時期の近くにアンケート設定が編集されていれば、それが原因です。そうでなければ、上流の問題を疑ってください。
除外条件:スケジュールされた期間の終了間際にあるアンケートでは、通常、回答数が自然に減少します。最近の回答率の低下を回帰として扱う前に、schedule.end_date を確認してください。
離脱率の急増(dismissed / shown の比率)
survey shown イベントはインプレッション、survey dismissed は明示的な閉じ操作、survey sent は完了を表します。それぞれの意味はアンケートの type によって異なるため、比率を解釈する前に、スカウトは survey-get から type を確認する必要があります。
popover— ポップオーバーが自動表示されたときにsurvey shownが発火します。dismiss 率が高い場合は、実際のシグナルです。ユーザーに表示され、すぐに閉じられています。widget— ユーザーがウィジェットのトリガーをクリックしたときにのみsurvey shownが発火します。dismiss 率が高い場合は、ユーザーがウィジェットを開いた後に気が変わったという意味であり、チームがアンケートを乱発しているわけではありません。通常、dismiss 率は自然に高くなります(50~70%が一般的です。PostHog 自体の Logs Feedback ウィジェットは、NPS が良好な状態で 64%です)。疲労の兆候としてフラグを立てるべきではありません。api— SDK 呼び出しによってsurvey shownが発火します。意味は連携先の製品によって異なるため、傾向を解釈する前にsurvey-getでどのように組み込まれているかを確認してください。
popover アンケートで dismiss 率が急上昇した場合(例:通常 30%、直近 70%)、ユーザーに表示され、すぐに閉じられています。よくある原因は、ユーザージャーニーの中でアンケートが表示されるタイミングが悪くなったこと、または表示頻度が高すぎることによる疲労です。
widget と api のアンケートでは、回答数の減少も伴わない限り、dismiss 率の変動はシグナルとして弱いものと見なしてください。回答数も減少している場合は、クリックの前段階で何かが変化したことを示しています。
SELECT
toDate(timestamp) AS day,
countIf(event = 'survey shown') AS shown,
countIf(event = 'survey dismissed') AS dismissed,
countIf(event = 'survey sent') AS sent,
dismissed / nullIf(shown, 0) AS dismiss_rate
FROM events
WHERE event IN ('survey shown', 'survey dismissed', 'survey sent')
AND JSONExtractString(properties, '$survey_id') = '<survey_id>'
AND timestamp > now() - INTERVAL 30 DAY
GROUP BY day
ORDER BY day
dismiss 率が構造的に高い場合(例:離脱意図を検知するアンケートはもともと dismiss 率が高い)のメモを記録し、実行のたびに再度フラグを立てないようにします。
自由記述回答に繰り返し現れるテーマ
これは最も価値の高いパターンであり、誤検知のリスクも最も高いものです。自由記述の質問が 1 つ以上ある各アンケートについて、最近の回答を取得し(キーの coalesce と回答の重複排除を含む自由記述回答取得用 SQL は、references/response-querying.md にあります)、回答が特定のテーマに集中しているかを確認します。
回答を読み、次の点を確認します。
- 名詞句や機能名の共通性 — 14 日以内に 5 人のユーザーが「checkout」「the new editor」「API key page」に言及していれば、実際のテーマと見なせます。
- 感情の方向性 — 苦情、称賛、機能リクエストを分けます。それらを「ユーザーから意見があった」という 1 つの所見にまとめないでください。
- 具体性 — 「遅い」は一般的すぎます。「ダッシュボードが 10 個を超えると、ダッシュボードの一覧ページが遅い」は具体的です。後者は報告する価値があります。
次の場合、そのテーマは報告する価値があります。
- 14 日以内に、5 人以上の異なる回答者が同じテーマに言及している、または
- 3 人以上の異なる回答者が同じテーマに言及し、同じ期間内の最近のアクティビティログの記録(デプロイ、フラグの切り替え、新機能)とも一致している — 影響を示す強力な定性的裏付けです。
報告を作成する場合は、証拠として代表的な回答を 2~3 件、原文のまま引用してください(PII は含めず、回答が長い場合は文単位で短縮します)。テーマは具体的な主張として記載します(「ユーザーはダッシュボードが 10 個を超えると一覧ページが遅いと報告している」)。曖昧な要約(「ユーザーはダッシュボードについて意見を寄せている」)は避けてください。
次の場合は報告を作成しないでください。
- 回答の大半が NPS 評価のみで、テキストがない場合 — 見つけるべきテーマがありません。
- テーマに賛否両方の意見が同程度に含まれる場合(同じ機能について不満を述べるユーザーもいれば、称賛するユーザーもいる) — シグナルが相殺されるため、代わりにメモを記録します。
addressedタグ付きのメモが、すでに同じテーマを扱っている場合。
ターゲティングのずれ
survey shown の件数がベースラインから大きく乖離している(5倍に増加、または5分の1に減少)場合、通常は上流のターゲティング条件が変更されています。survey-get で次の4つを確認します。
linked_flag_id— このフラグが true と評価された場合にのみアンケートが表示されます。フラグのロールアウト変更によって、対象者数が直接変わります。targeting_flag_id— ユーザーが設定するコホート/プロパティによるターゲティングです。同じ影響があり、コホートの再計算に伴う遅延も発生します。linked_insight_id— 特定のインサイトを表示したことを条件にアンケートを表示します。インサイトが削除された場合や、そのクエリが壊れている場合、アンケートは表示されなくなります。insight-getとinbox-reports-listで、インサイト側に問題がないか照合します。conditions— URL パターン、イベントトリガー、またはrepeatedActivationです。ここを変更すると、トリガー対象の範囲が直接変わります。
変化点の前後で上流の設定が変更されている場合は、アンケートのリグレッションではなく、ターゲティングのずれとして記録します。(注:自動管理される internal_targeting_flag は、すでに回答したユーザーやアンケートを閉じたユーザーを除外する別の仕組みです。チームが制御するターゲティング元ではなく、通常、その変更は想定されたものです。)
アンケートが重要な指標(たとえば、チームが対外的に報告している NPS)でない限り、記憶に残しておく程度で十分です。重要な指標であれば、サンプル対象が変わったことをチームが把握できるよう、レポートを提出します。
古いアンケート、または放置されたアンケート
作成から90日以上経過し、回答数が継続的に減少していて、updated_at に更新履歴がないアンケートは、忘れられている可能性があります。これは異常ではなく、P3 の推奨事項です。チームに、アンケートの終了、質問の更新、または対象者の入れ替えを提案します。すでに記憶エントリーで指摘されている場合は、再度報告しないでください。
最近の変更と相関するテーマ
テーマが浮上したら、変化点の前後の期間について advanced-activity-logs-list で照合します。同じ週のデプロイ/フラグの切り替え/機能変更がテーマの内容と一致すれば、調査結果の説得力が大きく高まります(「$date に4人のユーザーがチェックアウトの遅さを報告。checkout-rewrite-v2 フラグのデプロイは $date-1 に100%へロールアウト」)。タイミングは手がかりであり、証拠ではありません。「原因となった」ではなく、「一致している」と表現してください。
アンケートの反復間でのテーマの変化
繰り返し実施されるアンケート(schedule: recurring、iteration_count > 1、iteration_frequency_days > 0)はN日ごとに反復を切り替え、各反復の回答には $survey_iteration がタグ付けされます。同じアンケートの反復間でテーマを比較すること自体がシグナルになります。
- 同じアンケートで、反復N+1のテーマ件数がNより増加している場合、その問題は新たに発生したのではなく、拡大しています。
- 以前の反復にはなく、反復N+1で新しいテーマが出現した場合は、最近のプロダクト変更によって何かが導入された可能性があります。
- 反復間でスコアのベースラインが変化している場合は、ユーザーの認識に持続的な変化が生じています。反復内のノイズよりも注目すべき変化です。
自由記述と評価のクエリを $survey_iteration で絞り込み、正確に比較します。
AND JSONExtractString(properties, '$survey_iteration') = '<n>'
繰り返し実施されるアンケートについてレポートを提出する際は、証拠に反復を明記してください(「nps-q1-2026 の反復3、直近14日間」)。これにより、チームは適切なベースラインと照らして確認できます。
進めながらメモリを保存する
メモリは継続的な活動です。今後の調査実行で知っておくべきことに気付いたら、その都度スクラッチパッドに記録してください。キーのプレフィックスに「カテゴリ」を含めると、今後の実行で text= 検索を1回行うだけで見つけられます。
- キー
pattern:surveys:active-inventory— 「有効な調査:nps-q1-2026(IDabc、NPS 0~10)、feedback-modal(IDdef、自由記述)、csat-after-purchase(IDghi、1~5の評価)。」 - キー
pattern:surveys:nps-q1-2026— 「主要なNPS調査はnps-q1-2026。過去90日間の健全な基準値は32 ± 5、回答数は週あたり約120件。スコアが25未満、または回答数が週あたり60件未満の場合をアラート基準とする。」 - キー
noise:surveys:feedback-modal— 「feedback-modalの離脱意図調査では、終了率70%が通常の範囲です。このトリガーでは想定どおりの動作であり、リグレッションではありません。」 - キー
addressed:surveys:theme-checkout-step-2-2026-05-04— 「テーマcheckout-step-2-confusionは2026-04-30の実行で指摘され、チームが認識し、2026-05-04に修正がリリースされました。2026-05-04以降にテーマが再発しない限り、再報告しないでください。」 - キー
addressed:surveys:csat-old-stale— 「調査csat-oldの回答は2026-02が最後で、放置されているようですが、チームではまだ有効な状態です。P3の提案はすでに提出済みのため、再提案しないでください。」 - キー
report:surveys:theme-checkout-step-2— 「2026-06-30に、checkout-step-2の混乱に関するテーマのレポート019f0a96-…を作成しました。テーマが拡大または再発した場合は、新しいレポートを提出するのではなく、既存のレポートを編集(append_evidence)してください。」 - キー
reviewer:surveys:nps-q1-2026— 「nps-q1-2026の担当者はalice(GitHubログイン名)です。関連レポートはこの担当者に割り当ててください。」
実行を5回行う頃には、チームで有効な調査、健全な回答数、スコアの基準値、構造的に発生する終了率、すでに指摘されたテーマ、各テーマに対応するレポート、担当者が把握できています。これにより、本当のテーマやリグレッションが見つかったとき、適切なコンテキストを添えてレポートを提出できます。
判断
レポートを作成する前に、受信箱を検索してください。このテーマ/アンケート/回帰を扱うレポートがすでに存在する可能性があります(inbox-reports-list に ordering=-updated_at を指定し、続いて該当する可能性の高いレポートを inbox-reports-retrieve で取得します)。そのうえで、候補となる各知見について、次のように対応します。
- 編集:受信箱にすでに該当テーマまたはアンケートがある場合は、
scout-edit-reportで既存のレポートを編集します。テーマが拡大している場合、回帰が深刻化している場合、後続の反復で得られた回答が以前の見立てを裏付ける場合は、新しい回答数、スコアの変化、対象期間をappend_evidenceで追加します(または、自分が作成したレポートのタイトル/要約を書き換えます)。一致するレポートがある場合は、これを既定の対応とし、ほぼ同じ内容のレポートを新たに作成しないでください。 - 新規作成:受信箱に該当する内容がない場合は、
scout-emit-reportで新しいレポートを作成します。適しているのは、検証済みの単一テーマ(収束する回答者が 5 人以上で、逐語引用を 2~3 件含む。PII は含めない)、または段階的な基準を超える、単一アンケートのスコア/回答率/回答放棄の回帰です。回帰を曖昧さなく判断できる根拠として、具体的なアンケート ID、質問 ID、回答数、スコアの変化を示してください(サンプル数は他の領域より重要です。回答数が 10 件のレポートは、200 件のレポートよりも、より慎重に根拠を示す必要があります)。スコアまたは回答率の回帰はグラフで示す内容です。低下がアンケート自体のベースラインと比べて見えるよう、chartsにアンケートの推移を添付してください。テーマはグラフではなく引用に基づきます。アンケートに関する知見は調査が必要なものであり、1 行のコード修正ではないため、既定ではrequires_human_inputに設定してください。必ずsuggested_reviewersを設定してください。scout-members-listで担当者を特定します(各メンバーには解決済みのgithub_loginが含まれています。これをreviewer:surveys:<survey>キーでキャッシュしてください)。レポートを人に届けるための設定です。空のままにすると、レポートの担当者が不在となり、見落とされる可能性が高くなります。作成後は、report_idを含むreport:surveys:<theme-or-survey>スクラッチパッド項目を記録し、次回の実行で重複作成せずに編集できるようにしてください。ハーネスのプロンプトには、レポートチャンネルの契約全体(フィールドスキーマ、安全性 × 対応可能性のステータスマッピング、レビュアーの割り当て、非冪等性に関する注意、編集ルール)が含まれています。このセクションでは、アンケートに固有の指針のみを追加します。 - 記録:基準には達していないものの、今後も追跡する価値がある場合(回答者が 3 人しかいないが今後増える可能性があるテーマ、2 週間にわたって続いていないスコアの揺れなど)、または除外した内容とその理由を記録する場合は、
scout-scratchpad-rememberを使います。 - スキップ:
noise:またはaddressed:のキー接頭辞を持つスクラッチパッド項目、あるいは既存の受信箱レポートですでに扱われている場合は、1 行のメモを残してスキップします。
前回の実行ですでにそのテーマを扱っている場合は、新しいレポートの作成ではなく、既定で編集またはスキップし、スクラッチパッドを更新してください。同じテーマのレポートが受信箱に 2 件あると、1 回の実行で知見を 1 件見逃すことよりも、シグナル対ノイズ比が悪化します。
完了時
実行内容を要約してください。1 段落で、対象としたアンケート、見つけたテーマ/異常、作成または編集したレポート、記録した内容、除外した内容をまとめます。ハーネスはこの要約を検索可能な文章として実行レコードに書き込みます。後続の実行では scout-runs-list を使って参照できます。別途「実行メタデータ」のスクラッチパッド項目を記録しないでください。実行の要約がすでにその役割を果たします。
除外条件(スキップしてください)
- 予定期間の終了間際のアンケート — 回答が自然に減少しているだけで、リグレッションではありません。指摘する前に
schedule.end_dateを確認してください。 - 直近の期間で回答数が 30 件未満の NPS/CSAT の変動 — サンプル数が少なすぎて信頼できません。メモリーエントリーのみにしてください。
- 肯定的なテーマと否定的なテーマが均等に分かれている — 相殺されるため、表面化させるべき方向性はありません。
addressed:スクラッチパッドのエントリーに一致するテーマ — チームはすでに把握して対応しています。再度報告すると受信トレイを無駄に圧迫します。- 一度きりの不満や話題から外れた回答 — 「AAAA」と入力したり、歌詞を引用したりするユーザーが 1 人いるだけでは、シグナルになりません。テーマには 3 人以上の異なる回答者が必要です。
- 内部テスト/プレースホルダーの回答 —
TEST、TEST FEEDBACK DELETE!、qwe、asdf、1 文字だけの投稿、アンケート作成者やホスト組織のユーザー自身による繰り返しの投稿などです。実際のプロジェクトではよく見られるため、除外しないとテーマの件数に偏りが生じます。WHERE length(response) > 5 AND lower(response) NOT IN ('test', 'qwe', 'asdf')というガードに加え、email NOT LIKE '%@<host_org_domain>%'という人物プロパティのフィルターを適用すると、大半を除外できます。 - 一時停止中または下書き状態のアンケート — 現時点ではユーザー向けではありません。回答がゼロであることをリグレッションとして扱う前に、
archived、ステータス、start_dateを確認してください。 - 回答に含まれる PII や機密情報 — レポートに PII を原文のまま記載しないでください。回答に個人データが含まれる場合は、生のテキストではなく、テーマ化した主張を引用してください。
判断に迷った場合は、レポートを提出する代わりにメモリーエントリーを作成してください。
MCP ツール
直接呼び出すツール(読み取り専用):
surveys-global-stats— プロジェクト全体の集計です。冷スタートのたびにまずここから確認し、アンケートごとの作業を始める前に、アンケート全体の状態を低コストで確認します。survey-stats— アンケートごとの回答統計です。shown/dismissed/sentの件数、ユニーク回答者数、コンバージョン率、タイミングを確認できます。日付で絞り込めます。survey-get— 対象候補のアンケート設定全体を取得します。質問(ID とタイプを含む)、type(popover/widget/api —survey shownの意味の解釈に影響します)、ターゲティング(linked_flag_id/targeting_flag_id/linked_insight_id/conditions)、スケジュール(start_date、end_date)、反復設定、updated_atが含まれます。スコアの変化について結論を出す前に、必ずこれを確認してください。質問の文言が変わっていると、トレンドの比較が無効になります。surveys-get-all— 最終手段としての探索用ツールです。各アンケートオブジェクトは 30~50 KB あり、稼働中のアンケートが 100 件以上あるプロジェクトもあります。limit > 5を指定して呼び出すと、トークン予算を超過します。まずsurveys-global-statsとexecute-sqlによるランキングクエリ(上記の「Get oriented」を参照)で候補を絞り、その後、ID ごとにsurvey-getを使ってください。メモリーのエントリーから名前を特定する必要がある場合は、surveys-get-all {"search": "..."}を使ってください。eventsに対するexecute-sql— 回答の生データ分析(評価のトレンド、テーマの集計)に使います。プロパティのリファレンス、2 つの回答キーを使ったcoalesce、$survey_submission_idによる重複排除の SQL はすべてreferences/response-querying.mdにあります。read-data-schema event_property_values— 重い集計を実行する前に、サンプルの回答値を使って、プロパティキーが存在し、想定どおりの形式であることを確認します。query-trends— 週ごとの比較でsurvey shown/survey sentの件数トレンドを確認します。傾向を把握するだけなら、完全な SQL 集計より低コストです。advanced-activity-logs-list— テーマやスコア低下を、最近のプロダクト変更と照らし合わせます。inbox-reports-list/inbox-reports-retrieve— インボックスにすでにあるレポートです。新規作成する前に確認し、重複させずに編集してください(ordering=-updated_at)。inbox-report-artefacts-list— 類似レポートのアーティファクトログです。ルーティングされたsuggested_reviewersはここに記録されています(レポートのレコードには表示されません)。レビュー担当者の前例を確認できます。scout-members-list— このプロジェクトのメンバーと、それぞれのuser_uuidおよび解決済みのgithub_loginを取得します。github_loginが null の場合は、user_uuidを使ってルーティングしてください。org スコープのリゾルバーツールは scout の実行では利用できません。
ハーネスレベル:
scout-project-profile-get/scout-scratchpad-search/scout-runs-list/scout-runs-retrieve— 状況把握と重複排除に使います。scout-emit-report/scout-edit-report/scout-scratchpad-remember— レポートの作成/既存レポートの編集/情報の記録に使います。
終了するタイミング
- アクティブなアンケートがなく、最近のアンケートイベントもない場合 →
not-in-use:の scratchpad エントリーを記録してから、結果なしとして終了します。 - プロファイルと scratchpad から安定した状況(既知のベースラインがあり、最近の変化点がない)が確認できた場合 → 結果なしとして終了します。
- 候補が、キーの接頭辞に
noise:/addressed:/dedupe:を含む scratchpad エントリーと一致する場合 → スキップします。 - 仮説をいくつか検証し、確かなものについてレポートを作成(または編集)したら、ほかに調査できることが残っていても終了します。特にテーマについては、弱いクラスターを長々と列挙するより、数を絞って明確にまとめたレポートのほうが有用です。
「調べたが、有意なことは何も見つからなかった」も、正当な結果です。