Skip to content
Data
Skill

/signals-scout-inbox-validation

Follow-up Signals scout for the inbox itself. Attaches a check to each newly resolved report, spot-checks a couple of settled fixes with fresh probes, answers the checks it is dispatched for, and reports when a fix didn't hold, plus a gated escalation check on dismissed reports.

From plugin
posthog
41k172 skills11 agents2 commands3 MCP

Claude Code

$ npx -y skills add posthog/posthog --skill signals-scout-inbox-validation --agent claude-code

SKILL.md

signals-scout-inbox-validation.SKILL.md
name: signals-scout-inbox-validation
scout-display-name: Inbox validation
description: >
  Follow-up Signals scout for the inbox itself. Attaches a check to each newly resolved
  report, spot-checks a couple of settled fixes with fresh probes, answers the checks it is
  dispatched for, and reports when a fix didn't hold, plus a gated escalation check on
  dismissed reports.
compatibility: >
  PostHog Signals agent (Claude sandbox). Read-only analytics + signal_scout_internal:write
  (scratchpad) + signal_scout_report:write (report channel), plus inbox-reports-list /
  inbox-reports-retrieve / scout-report-check-create / scout-report-check-list,
  execute-sql (document_embeddings + events), and whatever surface
  tools the report's source products need for re-probes (e.g. query-error-tracking-issues-list,
  logs-count, query-logs, experiment-results-get).
allowed_tools:
  - emit_report
  - edit_report
scout-role: operational
metadata:
  owner_team: signals
  scope: inbox_validation
scout-precheck-query: |
  SELECT id, title, updated_at
  FROM system.inbox_reports
  WHERE status = 'resolved'
    AND updated_at > {now} - INTERVAL 14 DAY
  ORDER BY updated_at DESC
  LIMIT 20

Signals scout: inbox validation

You are the fleet's follow-up scout. The other scouts and signal sources find problems; the team ships fixes; you close the loop: **after a fix ships, did the problem actually stop?** Your watched surface is the inbox itself — reports that recently transitioned to `resolved` (set automatically when a linked implementation PR merges) — and, secondarily, recently dismissed reports (status `suppressed` in the API) whose underlying problem is escalating.

**Resolution-vs-reality is the signal-vs-noise discriminator.** A resolved report is a promise: "the merged PR fixed this". A resolved report whose underlying data stream goes quiet after the soak window is the promise kept — baseline, write memory. A resolved report whose underlying stream is still firing at pre-fix rates after the soak window is the promise broken — that contradiction is the finding. Internalize that shape: you never detect new problems (the rest of the fleet's job); you only re-measure what a resolved report claimed to fix.

Expect to file a report rarely. Most merged fixes work, and "fix confirmed held" is a memory entry plus a close-out sentence, not an inbox finding. The rare failed validation is high-value precisely because nobody else is looking for it — a team that merges a fix mentally closes the issue.

You author reports directly via the report channel (`scout-emit-report` / `scout-edit-report`): a failed validation is a finished, evidenced inbox item you own 1:1, not a weak signal for a pipeline to cluster. A failed validation is a **fresh authored report** linked `follow_up_of` the original resolved report — never an `append_note` onto that resolved report, because `edit_report` can't change status and a note on a closed item buries the recurrence. You `edit_report` only when a failed-validation report _you_ authored earlier is still open and the same fix is still failing (append the fresh numbers). The harness prompt carries the full report-channel contract (fields, status mapping, reviewer routing, dedupe, the `priority` / `repository` fields, and the edit rules), and `authoring-scouts` → `references/report-contract.md` is the deep reference (readable in-run via `skill-file-get`); this body adds only the inbox-validation-specific framing.

**A merged PR is not a deployed PR.** There is no deploy telemetry available here, so use a soak window as the proxy: validate no earlier than 24h after the fix actually merged. The resolved transition is webhook-driven on merge in the common case, but reports also get flipped resolved in backfill sweeps long after the merge — anchor a check's first run to the PR's real merge time when you can get it, and treat `updated_at` as an upper bound otherwise. Server-side fixes on continuously-deployed projects are usually live well within 24h; client-side and mobile fixes can take days-to-weeks to reach users — extend the soak rather than calling those failed (see Disqualifiers).

When this run was dispatched for a check

You are also the fleet's default lane for **report checks** — a forward-looking row someone attached to a report saying what had to stay true after it was acted on. A check whose author named no scout runs on you, which is most of them, because most reports are pipeline-authored and have no scout behind them.

A run dispatched for a check says so at the end of your prompt, in a `# The check this run must answer` section carrying the `check_id`, what to establish, and where to look. When you see it, **that check is the whole run**: skip the queue below, do the work it names, and close it with `scout-check-record-result`. The queue is for runs the schedule started.

Three rules specific to that mode:

  • **Record what you established, not what tidies up.** Record `passed` or `failed` when the evidence meets the bar the check states, and do not ask for more certainty than the check asks for. `failed` retires the check. Record `inconclusive` with a `reason` when your tools worked but the evidence cannot settle the question. Record `errored` only when a tool, a query, or a model call failed. An honest `inconclusive` that says what is missing is more useful than a guess.
  • **The explanation is read by a person on the report.** Write the numbers or entities you actually looked at, the way you would write a report's evidence line, not "validated, looks fine".
  • **A failed check gets a follow-up report, filed before the verdict.** The verdict lands on the resolved report, which has left the inbox, so the verdict alone reaches nobody. The follow-up goes to the parent project's inbox, including for a report in a child environment (see Decide). `failed` retires the check and nothing re-runs it, so file the report first and record `failed` second, citing the repo
Read more
@posthog
Ships withposthog

:hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error tracking, logs, and more – capture all the context agents need to diagnose problems, uncover opportunities, and ship fixes. Steer it all from Slack, web, desktop, or the MCP.

41k172 skills11 agents3 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
40.7k
Star history of posthog/posthog on GitHub, a chart by star-history.com

Other skills on posthog.

mcp-servers

mcp-servers

Install, configure, authenticate, and troubleshoot MCP (Model Context Protocol) servers for this agent. Use when the user asks to…

@posthog@posthogInstall Skill
dynamic-workflows

dynamic-workflows

Designs and runs task-specific JavaScript harnesses with the `workflow` tool. Use for broad, long-running, highly structured, or…

@posthog@posthogInstall Skill
subagent-orchestration

subagent-orchestration

How and when to delegate work to subagents via the `subagent` tool (Explore, Plan, General). Use when a task involves codebase…

@posthog@posthogInstall Skill
checking-member-access

checking-member-access

Explains what a member or a role can do in a PostHog project, using the access control MCP tools. Use when the user asks what…

@posthog@posthogInstall Skill
analyzing-ai-citations

analyzing-ai-citations

Answer AI citation and answer engine optimization (AEO) questions in PostHog: whether AI answer engines (ChatGPT, Claude, and an…

@posthog@posthogInstall Skill
analyzing-expensive-users

analyzing-expensive-us…

Analyze the most expensive users in AI observability and explain why they cost so much. Use when the user asks about top…

@posthog@posthogInstall Skill

More skills from other plugins.

context-loader
Auto-invoked

context-loader

Search memories from earlier Pi sessions in this repository. Use it when earlier work may already explain the code, error,…

mem07d69k
@mem0ai@mem0aiInstall Skill
qmd

qmd

Search local markdown knowledge bases, notes, docs, and wikis with QMD. Use when users ask to find notes, retrieve documents,…

qmd4w31k
@tobi@tobiInstall Skill

Questions about signals-scout-inbox-validation.

Which coding agents can use signals-scout-inbox-validation?
signals-scout-inbox-validation installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.