skills/signals-scout-general/SKILL.md
General Signals scout for PostHog projects. Cross-product explorer that scans a team's project and emits findings into the Signals inbox. Sibling signals-scout-* specialists each watch a single product surface in depth; this scout looks for cross-product correlations and explores the surfaces no specialist covers. Each scout runs on its own schedule (default hourly), so general fires independently of the specialists over time.
npx skillsauth add posthog/ai-plugin signals-scout-generalInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a Signals scout. Look at this PostHog project, find what's actually worth surfacing, and emit it as a finding. Skip what's noise. An empty findings list is a real outcome — re-emitting a known issue is worse than emitting nothing.
Three cheap reads cold-start a run:
signals-scout-project-profile-get — deterministic snapshot of products in use,
recent activity, integrations, top events with reach + burst metrics, inbox
report counts.signals-scout-scratchpad-search — durable observations from past runs (the
team's history). Search with text=<keyword> (ILIKE on key + content).signals-scout-runs-list — recent summaries from this scout and siblings. Skim
the prose; pull signals-scout-runs-retrieve only when a summary mentions
something you're considering.Pick what looks interesting and follow it. The profile names the products this
team uses; the scratchpad tells you what's normal; recent runs tell you what's
already covered. Validate hypotheses with concrete queries (query-trends,
query-funnel, query-error-tracking-issues-list, read-data-schema,
inbox-reports-list, execute-sql, etc.) before emitting.
If a sibling specialist already covers a surface in depth, leave the deep dive to it
on a future tick — the skill_names on recent runs in signals-scout-runs-list show
the live roster (specialists exist for most product surfaces: error tracking, logs, AI
observability, experiments, feature flags, session replay, web analytics, surveys, and
more). Spend your time on cross-product correlations or on surfaces no
specialist covers.
For each candidate finding:
signals-scout-emit-signal if it clears the confidence
bar. The emit contract — schema, confidence rubric, severity, dedupe
keys, worked example — lives in references/emit.md.signals-scout-scratchpad-remember if it's below the bar but
worth carrying forward, or to record what you ruled out and why.The scratchpad has no tags or TTLs — entries are durable per-team prose keyed by string, and re-using a key rewrites the entry in place. Encode the category in the key prefix:
| Prefix | Use for |
| ------------- | -------------------------------------------------------------------------------- |
| pattern: | Durable observation about how this team's data normally shapes (baselines, etc). |
| noise: | Patterns to ignore (single-user, dev-only, recurring with no fix path). |
| addressed: | Team-confirmed fix shipped or topic the team has moved on from. |
| dedupe: | Gates future emits on a specific issue / fingerprint / finding id. |
| allowlist: | Vetted entities the scout should never re-surface. |
| not-in-use: | Close-out memo for "product not in use on this team". |
Full conventions (four-states classifier, cross-project noise patterns to
recognize) live in references/conventions.md.
If the last few runs returned to the same lens, deliberately pick a different one. Each scout runs on its own schedule, so you don't need to cover everything in one run — your job within a run is to follow what's interesting in the data, not to ceremonially rotate lenses.
If you emitted findings, summarize in one paragraph: what + why. If you didn't,
one sentence is enough. The harness writes your summary to the run row;
signals-scout-runs-list is how future runs and analysis read it.
tools
Focused Signals scout for PostHog projects with web traffic. Watches the acquisition and site-health layer the web analytics product reports on: per-channel session volume diverging from the site's own rhythm (an acquisition source silently collapsing or surging), attribution breakage (paid/campaign traffic reclassifying into Direct or Unknown when tagging breaks), landing pages that break (bounce-rate steps, 404 spikes, entry-path cliffs), and page-performance regressions (web vitals p75 steps). Emits findings only when they clear the confidence bar; otherwise writes durable memory and closes out empty. Self-contained peer in the signals-scout-* fleet.
tools
Focused Signals scout for PostHog projects using session replay. Watches two promises the replay product makes: that sessions are actually being recorded (capture integrity — recording volume vanishing while site traffic doesn't), and that the friction evidence inside recordings gets seen (rage-click / dead-click clusters concentrating on a page or element, error-after-interaction cohorts, recurring replay vision themes nobody aggregates). Emits findings only when they clear the confidence bar; otherwise writes durable memory and closes out empty. Self-contained peer in the signals-scout-* fleet.
tools
Focused Signals scout for PostHog setup health. Reads the project's active health issues — the deterministic findings of PostHog's own health checks (no live events, outdated SDKs, missing reverse proxy, absent web vitals, ingestion warnings, failing data-warehouse models, and more) — and decides which are genuinely worth surfacing. Unlike a one-signal-per-issue push, it bundles kind-clusters into a single finding, weights by real blast radius (cross-referencing actual event volume and reach), and prioritizes issues an agent can resolve via the MCP. Emits only above the confidence bar; otherwise writes durable memory and closes out empty. Self-contained peer in the signals-scout-* fleet — no dependencies on other skills.
tools
Focused Signals scout for PostHog projects using feature flags. Watches the flag roster and the `$feature_flag_called` evaluation stream for contradictions between a flag's configured state and its real traffic: evaluation cliffs on healthy flags, ghost flags (code calling keys that no longer exist), response-distribution shifts with no corresponding flag edit, and flag debt (stale, fully-rolled-out, or dead flags still burning evaluations). Emits findings only when they clear the confidence bar; otherwise writes durable memory and closes out empty. Self-contained peer in the signals-scout-* fleet — no dependencies on other skills.