adding-warehouse-perso…
Sync columns from a synced data warehouse table onto PostHog person or group properties, so warehouse data becomes usable anywhere person and group properties…
Follow-up Signals scout for the inbox itself. Re-measures the problems behind recently resolved reports after a soak window and reports when a fix didn't hold, plus a gated escalation check on dismissed reports.
$ npx -y skills add PostHog/ai-plugin --skill signals-scout-inbox-validation --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/signals-scout-inbox-validationContext preview
The summary Claude sees to decide when to auto-load this skill.
Follow-up Signals scout for the inbox itself. Re-measures the problems behind recently resolved reports after a soak window and reports when a fix didn't hold, plus a gated escalation check on dismissed reports.
name: signals-scout-inbox-validation description: > Follow-up Signals scout for the inbox itself. Re-measures the problems behind recently resolved reports after a soak window 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, 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 metadata: owner_team: signals scope: 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 almost always a **fresh authored report** that cites 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 to the PR's real merge time when you can get it (Stage 1), 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).
Two cheap reads decide whether this run does any work:
If no report's `updated_at` falls in the last 14 days and no `pending:` entry is due, there is nothing to validate. If the project has no resolved reports at all, write `not-in-use:inbox_validation:team{team_id}` ("checked at {timestamp}, no resolved reports yet — nothing to follow up"); otherwise just refresh `pattern:inbox_validation:queue` with the queue state. Close out empty. Don't sweep cold history: a report resolved more than 14 days before you first saw it is backlog, not a follow-up — leave it alone.
Cycle between these moves; skip what's not useful.
Newest first, and **cap ~5 enqueues per run** — on a busy project (and on your first run, when the whole 14-day window is new) there can be far more; carry the rest and say how many you deferred in the close-out. For each report you enqueue:
1. `inbox-reports-retrieve {id}` — full title, summary, and `implementation_pr_url` (the merged fix; occasionally nu
Official PostHog plugin for AI clients. Access PostHog products directly from your AI coding tool.
Repo: PostHog/ai-plugin
Sync columns from a synced data warehouse table onto PostHog person or group properties, so warehouse data becomes usable anywhere person and group properties…
Analyze the most expensive users in AI observability and explain why they cost so much. Use when the user asks about top spenders, expensive users, per-user…
Analyze session replay patterns across experiment variants to understand user behavior differences. Use when the user wants to see how users interact with…
Split a completed PostHog task run into activity records — what the agent tried, whether it worked, what blocked it — and record each one through the…
Assesses what a page's heatmap is telling you and recommends concrete changes. Pulls click / rageclick / scroll-depth data for a URL, names the hot elements by…
Audit every endpoint in a PostHog project for staleness, failed materialisations, and unused materialised versions. Use when the user asks "what endpoints can…