General Signals scout for PostHog projects. Cross-product explorer that scans a team's project and emits findings into the Signals inbox. Sibling specialists (signals-scout-llm-analytics, -logs, -error-tracking, -revenue-analytics, -surveys, -observability-gaps, -csp-violations) cover individual product surfaces; this scout looks for cross-product correlations and explores what specialists don't cover. Each scout runs on its own schedule (default daily), so general fires independently of the ...
Scanned 6/5/2026
Install via CLI
openskills install PostHog/posthog---
name: signals-scout-general
description: >
General Signals scout for PostHog projects. Cross-product explorer that scans a
team's project and emits findings into the Signals inbox. Sibling specialists
(signals-scout-llm-analytics, -logs, -error-tracking, -revenue-analytics, -surveys,
-observability-gaps, -csp-violations) cover individual product surfaces; this
scout looks for cross-product correlations and explores what specialists don't
cover. Each scout runs on its own schedule (default daily), so general fires
independently of the specialists over time.
compatibility: >
Runs as the PostHog Signals scout in a Claude sandbox with PostHog MCP scopes: signal_scout:read + signal_scout_internal:write (for
scratchpad-remember/forget and emit-signal), llm_skill:read, plus standard analytics reads. Uses the
signals-scout MCP family: project-profile-get, runs-list, runs-retrieve,
scratchpad-search, scratchpad-remember, scratchpad-forget, emit-signal.
metadata:
owner_team: signals
---
# Signals scout
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.
## Orient
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.
## Explore
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 (LLM analytics, logs,
error tracking, revenue, surveys, observability gaps, CSP), leave the deep dive
to it on a future tick. Spend your time on **cross-product correlations** or on
**surfaces no specialist covers**.
## Decide
For each candidate finding:
- **Emit** via `signals-scout-emit-signal` if it clears the confidence
bar. The emit contract — schema, weight/confidence rubrics, severity, dedupe
keys, worked example — lives in [`references/emit.md`](references/emit.md).
- **Remember** via `signals-scout-scratchpad-remember` if it's below the bar but
worth carrying forward, or to record what you ruled out and why.
- **Skip** if the scratchpad already covers it.
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`](references/conventions.md).
## Avoid lens-lock
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.
## Close out
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.
No comments yet. Be the first to comment!