signals-scout-workflows について
Signals scout: workflowsは、ワークフローの指標を分析し、改善案を作成するスキルです。提案が有効なワークフローの担当者向けで、十分に成熟したデータから各ワークフローにつき最大1件を提案し、人の承認と公開後に反映されます。
主な機能
- 01改善提案を有効にしたワークフローのみ分析
- 02バージョンと期間別にメール指標を確認
- 03サンプル数、データの成熟度、バウンス指標を確認
- 04ワークフローごとに具体的な変更を最大1件提案
- 05適用前に人の承認を必須化
活用シーン
- 01開封率を使ってメール件名の成果を確認
- 02トラッキング欠落やサンプル不足を特定
- 03成果の低いステップの変更案を作成
MCP 対応
MCPツールでワークフロー、バージョン統計、過去の提案を読み取り、ワークフローへの提案を送信します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ posthog/ ai-plugin --skill signals-scout-workflowsインストール後、Claude Code で/signals-scout-workflowsを入力して読み込まれたか確認します。
詳細
Signals scout:ワークフロー
オーナーから確認を依頼されたワークフローについてのみ変更を提案し、変更を行うことはありません。 提案がドラフトになるのは人が承認したときだけで、誰かに届くのはそのドラフトを公開したときだけです。 このゲートこそがプロダクトです。あなたの役割は、相手の目に触れるものを読む価値のあるものにすることです。
判断の基準は、そのステップ自身の数値が成績不振を示しており、あなたが提案する変更がその数値の示す問題に対応していることです。メールを開封できる人のうち8%しか開封しておらず、件名が90文字に達しているステップはシグナルです。 送信数が12件しかないステップや、送信の半分でトラッキングがオフになっているために開封率が低く見えるステップ、あるいはメールの5分の1がバウンスしていることが本当の問題であるステップは、シグナルではありません。最初のステップにはサンプルがなく、2つ目は測定上のアーティファクトで、3つ目は到達性の問題です。コピーを書き換えると、かえって悪化します。
1回の実行につき、ワークフローごとに提案できるのは最大1件です。 1つのワークフローに対する5件の提案キューなど、誰も読みません。
すぐに確認:誰かが依頼していますか?
optimization_enabled=true を指定して workflows-list を呼び出してください。これは、「改善を提案する」を有効にしたオーナーのワークフロー一覧です。
一覧はページごとに返されるため、指定した件数より少ない行数のページが返るまで offset を進めてください。オプトインしたワークフローが1ページの件数を超えるプロジェクトでは、そうしないと残りが存在しないかのように扱われます。
ワークフローを確認する前に一覧を読み込んでください。オプトインを先に確認することで、誰も依頼していないワークフローに実行コストを費やさずに済みます。
提案エンドポイントから404が返された場合、そのプロジェクトにはこの機能がないため、すぐに終了してください。この後に何をしても反映されません。
一覧が空なら、このプロジェクトで依頼している人はいません。
スクラッチパッドに次のエントリーを1件書き込みます。
- key:
not-in-use:workflow-suggestions - content: 簡単なメモ(「{timestamp} に確認、オプトイン済みのワークフローなし」)
そのまま終了します。
同じキーで再実行すると、タイムスタンプが更新されます。
この一覧にないワークフローには、決して提案してはいけません。API が workflow_not_optimized を返して拒否します。
実行の進め方
状況を把握する
scout-scratchpad-search(text=workflow)— すでに決めたことを確認します。ノイズと判断して除外したステップ、人が却下した提案とその理由、オーナーが何度も断っているワークフローなどです。scout-runs-list(直近7日間)— 直近の実行でどこまで確認したかを把握します。短時間の実行では、同じ対象を繰り返さずにローテーションできます。workflows-list {"optimization_enabled": true}— 作業対象の一覧です。各ワークフローのID、名前、ステータス、バージョンが含まれます。workflows-list-proposals {"id": <workflow>}— ワークフローの分析を始める前に必ず確認してください。 提案がまだsuggestedのワークフローは、あなたではなく人の対応を待っています。 提案がappliedになったステップには、すでに変更が適用されています。再提案する前に、そのバージョンからフィードバックが得られるまで待ち、まず結果を確認してください。 提案がrejectedになったステップは、人が「いいえ」と言ったということです。同じ考えを別の言葉で再提案してはいけません。rejection_reasonがあれば確認してください。却下の理由が記されています。ステップの目的についての理由は、却下された提案だけでなく、そのステップの同じ指標を対象にするすべての変更を除外するものです。 より良い変更を示す理由は例外です。人が承認する変更を教えてくれたことになります。 他の提案と同様に必要な根拠を確認したうえで、その変更を1回だけ提案し、理由を根拠として引用してください。 ワークフローが何度公開されても、却下された提案は却下されたままです。is_staleが参照するのは現在公開中のバージョンであり、人が確認していたバージョンではないため、その案がまだ評価されていないことは判定できません。
数値を読み取る
ワークフローごとに、workflows-version-stats を使い、version=<ワークフローの現在のバージョン>、breakdown_by=name を指定して、読み取るメールステップに instance_id を設定します。
after と before には、読み取る終了済みの日の UTC での開始時刻と終了時刻を設定します。たとえば、after=2026-10-08T00:00:00Z と before=2026-10-15T00:00:00Z のように指定し、after から before の前日までの日数を合計します。
相対指定の after=-7d は、プロジェクトのタイムゾーンで7日前のこの時刻から始まるため、最初の日は一部の時間しか含まれず、報告する期間の数値とは一致しません。
workflows-stats では、そのワークフローのすべてのバージョンがまとめられるため、直近の変更が効果をもたらしたかどうかは判断できません。
重要な指標は次のとおりです。
| 指標 | 読み取り方 |
|---|---|
email_sent | 送信されたすべてのメール。バウンス率と苦情率の分母です |
email_untracked | 開封・クリックのトラッキングがオフの状態で送信されたメール。開封を記録できません |
email_opened | 開封数。email_sent ではなく、email_sent - email_untracked で割ります |
email_link_clicked | クリック数。開封数と同じ分母を使います |
email_bounced, email_blocked | 逆指標です。文面について何か提案する前に確認してください |
フィードバックは送信後に届くため、反応を得るのに十分な時間が経過したバージョンを読み取ってください。 送信数はメールが送信された時点でカウントされますが、開封やバウンスはピクセルまたはプロバイダーから報告された時点でカウントされます。ほとんどの場合は数時間後、一部では数日後になります。 そのため、同じ期間の数値を読み取ると、期間の始まりに近い部分の率がすべて過小評価されます。また、昨日公開されたバージョンは、ほかに理由がなくても文面に問題があるように見えてしまいます。
したがって、現在より前に期間を終了させ、信頼する前にバージョンの経過時間を確認してください。
- 今この時点までではなく、終了済みの丸一日を期間として読み取ります。
- 公開から48時間未満のバージョンは、数値にかかわらず対象から除外します。
workflows-statsを日別に読み取り、送信があった最初の日をバージョンの公開日として扱います。 ワークフローのupdated_atは公開日ではありません。下書きを編集するたびに更新されます。 スクラッチパッドに、バージョンを添えてimmature:<workflow>:<step>と記録し、次に進みます。後続の実行では、同じバージョンをフィードバックが反映された状態で読み取れます。 - あるバージョンの送信が期間の最終日にほぼ集中している場合、バージョン自体が古くても、同じ理由で率が未成熟だと扱います。
- 週刊ダイジェストなど、バッチ単位で送信するワークフローでは、多くのバッチにわたって同じバージョンが使われるため、バージョンの読み取り結果には最新のバッチとそれ以前のバッチが混在します。 日別に読み取り、バッチごとに判断します。48時間以上経過した最新のバッチを選び、その送信日から次のバッチの送信日の前日までを読み取ります。 それ以前のバッチの開封がその期間内に届く割合は、それらのバッチの送信から1週間経っていれば小さいため、率を読み取れます。 すでに古いバッチがある場合は、最新のバッチが落ち着くまで待つ必要はありません。
バージョンごとの読み取りによって、この確認が可能になります。workflows-version-stats に version=<n> を指定すると、そのバージョンから送信されたものだけが返されます。そのため、2週間前に公開されたバージョンは、ワークフロー全体で送信が続いていても、結果が確定したコホートとして扱えます。
正常に送信されているのに開封数がゼロの場合、それは測定上の欠落であり、件名の問題ではありません。 エンゲージメントがバージョンごとに分割されるのは、バージョン管理されたトラッキングコードのリリース後に送信されたメールに限られます。その日付をここから確認することはできません。
そのため、問題があるのではなく読み取り不能として扱います。確認した件数を添えて、スクラッチパッドに noise:<workflow>:<step> と記録し、次に進みます。後続の実行でそのステップの開封が確認できれば、欠落は解消され、数値を利用できます。
プロファイルの形
| パターン | 通常考えられること |
|---|---|
| 追跡対象の送信が20件以上あり、開封率が20%未満で、件名が長い | コピーの問題です。このスカウトが対象とするケースです |
開封率が非常に低く、email_untracked が email_sent の大半を占める | 計測上の誤差です。レポートでその旨を伝え、コピーの変更は提案しないでください |
| バウンス率が約2%を超える、または苦情率が0.1%を超える | コピーではなく、配信到達性の問題です。件名を改善すると、より多くのメールが迷惑メールフォルダーに早く振り分けられます |
| 開封もクリックもゼロで、送信数は十分あり、バージョンがトラッキング導入より古い | 判断材料が不足しており、発見事項ではありません |
| 追跡対象の送信が20件未満 | サンプルがありません。記録しておきますが、報告はしないでください |
| 開封率は健全で、クリック率はほぼゼロ | 問題は件名ではなく、本文または行動喚起です。変更内容を具体的に示せる場合にのみ提案してください |
判断する
次のすべてに当てはまる場合に限り、workflows-suggest を通じて提案を提出してください。
- このワークフローについて、担当者の対応待ちの提案がなく、確認中のステップに適用済みの提案もありません。
- そのステップがサンプルの最低条件を満たしています。確認対象の期間に追跡対象の送信が少なくとも20件あり、開封が届くまでの時間を確保できるよう、そのバージョンが少なくとも48時間送信されています。
- カウンター指標が問題の本質ではありません。 バウンスや苦情が増えている場合、それが発見事項です。コピーの変更ではなく、レポートに記載してください。
- 助言ではなく、具体的な編集内容として変更を示せます。 「件名を短くする」は助言です。 新しい件名は変更内容です。
- 変更が、このステップの対象者に適しています。 トリガーとそれ以前のステップを確認してください。受信者はトリガーイベントに記載された行動をすでに完了しているため、同じ行動を再度促すコピーは不適切です。 トライアル開始をトリガーとするワークフローに「トライアルを開始する」は必要ありません。必要なのは、そのトライアルの次のステップへ進む方法です。
- 新しい行動喚起では、リンク先が何を開くのかを明示します。 ボタンの文言を変更する前に、リンクを確認してください。 リンク先が新しい文言のとおりでなければ、変更は不完全です。リンク先も変更内容に含めるか、提案しないでください。
確認したバージョンを base_version として送信し、actions には変更するステップのみを含めてください。各ステップには id と、変更するフィールドだけを記載します。新しい件名は {"id": "<step>", "config": {"inputs": {"email": {"value": {"subject": "..."}}}}} の形式で、それ以外は含めません。
記載しなかった項目は、ステップ内でもワークフローのほかの部分でも、すべて変更されずに残ります。そのため、提案の承認待ち中に誰かがステップを編集しても、承認によって変更が元に戻ることはありません。
承認が拒否されるのは、変更対象のフィールドが誰かによって移動され、提案内容とは異なる値になっている場合のみです。その場合、提案は実際に古くなっています。
担当者が再計算せずに判断できる証拠を添えてください。指標、その現在値、目標、期間、n(率の算出に用いた追跡対象の送信数)、同じ分母に基づくクリック率、およびそれぞれの分母を示したカウンター指標です。
開封を増やしてもクリックが増えない件名変更は、行動ではなく注目を集めただけです。後から結果を読む人がそれを確認できるようにしてください。
n のない率は作成時に拒否されます。それが正しい動作です。
ワークフローのレビュー担当者ではなく、ワークフローの所有者に向けて根拠を書いてください。
4つの短い文に収めます。ステップの数値が何を示しているか、何を変更するか、その変更によってなぜ数値が改善するのかを説明してください。
エビデンスパネルには率、n、期間、カウンターメトリクスがすでに表示されるため、タイムスタンプを繰り返したり、すべての数値を言い直したりしないでください。
自分の作業上の仕組みには触れないでください。調査役、レビュー対象やサンプル数の下限、スクラッチパッド、ツール名も挙げないでください。
「送信数210件で開封率は8%です。件名からメールのオファーがわかりません。オファーを明記すれば、開封する理由が伝わります。」これだけで根拠として十分です。
パネルはエビデンスをキー名とともに読み返し、APIは読み取れない内容を受け付けません。そのため、次のキーを送信してください。
{
"metric": "email_opened",
"current_value": 0.0865,
"unit": "rate",
"target_value": 0.2,
"n": 208,
"window": "2026-10-08T00:00:00Z/2026-10-15T00:00:00Z",
"click_through": 0.0192,
"guardrails": [
{ "metric": "email_bounced", "value": 0.0, "n": 208, "unit": "rate" },
{ "metric": "email_blocked", "value": 0.0, "n": 208, "unit": "rate" }
]
}
metric、current_value、unit、n、guardrailsは必須であり、すべてのガードレールに個別のunitが必要です。
率は文字列ではなく小数で指定します。"8.65%"ではなく0.0865です。
windowは読み取った期間をUTCのstart/end形式で指定します。数値の集計元と同じ、両端を含む日付にしてください。
登録時にPostHogがこの期間を読み返し、独自の数値をあなたの数値の横に表示します。
-7dのような相対期間は現在までを対象とするため、含めなかった送信もカウントされ、ページには数値が間違っていると表示されます。
unitはrateまたはcountです。単なる飾りではありません。値の1.0は全メッセージを意味する場合も、そのうちの1つを意味する場合もあり、パネルにカウントの1が1と表示されるのは、そう指定した場合だけです。
独自に付けたキー(current_open_rateなど)の下に数値を指定すると拒否されます。そうしないと、十分なエビデンスがある提案が、エビデンスがまったくないかのように受け取られてしまうためです。
あなたが出力するのは提案です。 提案はワークフロー自体に表示され、そこでワークフローの所有者が判断します。 ワークフローを編集したり、承認したりしないでください。設計上、どちらの操作にもツールはありません。
あなたの実行には、workflows-suggestに必要なスコープが含まれています。
ツールの説明にスコープが記載されているのは、そのツールが必要とするものを示しているのであって、あなたのトークンに何が不足しているかを示しているのではありません。見送るのではなく、呼び出してください。
呼び出しがエラーになった場合は、内容を確認してください。検証エラーには修正すべきフィールドが示されるため、再試行する価値があります。一方、登録できないことを示す唯一の根拠は権限エラーです。
登録を試さずに調査結果だけで締めくくると、実行を無駄にしてしまいます。
覚えておくこと
次回の実行内容を変えるべき情報をスクラッチパッドに記録してください。
noise:<workflow>:<step>— 確認したうえで見送ったステップと、その理由(サンプル数、未追跡の割合、到達率)。rejected:<workflow>:<step>— そのステップへの提案が人に却下された場合は、理由が示されていればそれも記録します。 提案した内容と、却下時点でそれが現在のバージョンより後れを取っていたかどうかも含め、後の実行で「却下」と「解消済み」を区別できるようにしてください。baseline:<workflow>:<step>— 確認した開封率を記録し、後の実行で実際の変化とノイズを区別できるようにしてください。
このスカウトがレポートを提出しない理由
このフリートのほかのスカウトはすべて、受信箱にレポートを提出します。 このスカウトは提出しません。それは意図的なものです。
レポートには、モデルが設定し、誰も判断しない実行可能性が含まれます。実行可能性を「すぐに実行可能」に設定し、優先度とレビュー担当者を解決すれば、Signals は顧客自身のリポジトリに対して実装を実行し、プルリクエストを作成できます。これは、Signals が定額料金を請求するタイミングでもあります。ワークフローの件名は PostHog の設定に関するもので、変更するコードはありません。そのため、プルリクエストを作成すれば実際の費用を伴う誤った作業になります。ここからそこまでの間にある唯一の障壁は、モデルが自分のレポートに正しいラベルを付けるのを忘れないことだけです。
したがって、提案そのものが通知になります。 提案を有効にした人のワークフローページに届きます。そして、レポートがモデルの言葉ではなくハーネスによって「実装不可」と指定できるようになるまでは、このスカウトはレポート用チャンネルを使いません。
シグナルについても同様です。
実行を開始するハーネスのプロンプトには、シグナルチャンネル(emit_signal)の説明が含まれています。これは、どちらのチャンネルも使わないスカウトについて説明する文言がないためです。
この説明はあなた向けではありません。何を見つけたとしても、決して emit_signal を呼び出さないでください。
対応する価値のある調査結果は提案にし、そうでないものはスクラッチパッドに記録します。Signals のパイプラインには何も送りません。
対象外とする条件
次の場合は、提案を提出しないでください。
- 同じアイデアが以前に却下されている場合。 その提案が却下された時点で、現在のバージョンより古いものを対象にしていた場合を除き、却下は回答として扱います。
- そのステップが取引関連のもの(領収書、パスワードのリセット、確認コードなど)の場合。 そこでの開封率はキャンペーン指標ではなく、文面は通常、重要な役割を担っています。
- 指標を確認してからワークフローが公開されている場合。 提案にはバージョンが記録されます。古いバージョンに基づいて書かれた提案は、承認時に拒否されます。
- 推測するしかない場合。 人が確認できない提案は、提案がないよりも悪いものです。
終了時のまとめ
どのワークフローを確認し、何を提案し、何をどのような理由で対象外としたかを、1段落の実行サマリーにまとめてください。 何も提案せず、その理由だけを記録する実行も、良い実行です。