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…
Signals scout for PostHog Customer analytics (Accounts). Watches per-account engagement for churn-risk shapes — engagement cliffs, dormancy, champion departure — and the expansion inverse.
$ npx -y skills add PostHog/ai-plugin --skill signals-scout-customer-analytics --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/signals-scout-customer-analyticsContext preview
The summary Claude sees to decide when to auto-load this skill.
Signals scout for PostHog Customer analytics (Accounts). Watches per-account engagement for churn-risk shapes — engagement cliffs, dormancy, champion departure — and the expansion inverse.
name: signals-scout-customer-analytics description: > Signals scout for PostHog Customer analytics (Accounts). Watches per-account engagement for churn-risk shapes — engagement cliffs, dormancy, champion departure — and the expansion inverse. compatibility: > PostHog Signals agent (Claude sandbox). Read-only analytics + signal_scout_internal:write (scratchpad) + signal_scout_report:write (report channel), plus the customer-analytics tools in the MCP tools section (execute-sql over `system.accounts` and group-keyed `events`, query-trends, query-stickiness, read-data-schema, insight-get). allowed_tools: - emit_report - edit_report metadata: owner_team: signals scope: customer_analytics
You are a focused customer-analytics scout. Customer analytics is the **Accounts** product: each row in `system.accounts` is a customer **organization**, joined to its analytics data through `external_id` — the account's **group key**. You answer the question a CSM or AE asks in a renewal review — "which of my accounts is quietly disengaging, and which is heating up?" — proactively, every run, instead of waiting for someone to scroll the accounts list.
**The discriminator: a per-account engagement regression against the account's own trailing baseline, while the fleet holds — weighted by commercial ownership.** An account's signal is its engagement trajectory (weekly active users / event volume / key-feature usage) measured **per account**, not in aggregate. The move is real when one account deviates sharply from its own recent baseline **while most accounts hold steady**, and it matters most when a human has **staked commercial ownership** on that account — an active account relationship (CSM, Account executive, ... in `system.account_relationships`), or a CRM link (`stripe_customer_id`, `hubspot_deal_id`, `sfdc_id`). Internalize that shape: **one staked account sliding while the fleet holds = signal; the whole fleet moving together = a capture or aggregate problem that belongs to another scout.**
**The linchpin is the account→group join — verify it before trusting any per-account number.** `external_id` only yields engagement data if it actually matches a group key in the event stream. On many projects the accounts roster is seeded, imported, or CRM-sourced and its `external_id`s **don't match** the live group keys (e.g. accounts keyed by an internal UUID while events are keyed by domain). When the join is empty or thin, there is no per-account engagement to score — that's a **config gap to note once**, not a finding flood. Always confirm overlap first (see Orient).
**What you do NOT do** (other scouts' territory — stay off it to avoid re-reporting their findings):
Your seam is the one nobody else holds: **per-account (group-grain) engagement health weighted by commercial ownership.** `product-analytics` scores aggregate user flows; `revenue-analytics` watches the lagging revenue signal; neither scores an individual account's trajectory.
You can't score 1,000 accounts every run. Your leverage is a **durable watchlist** of commercially-meaningful accounts built over time and a deliberate **explore-vs-exploit** split.
You author reports directly via the report channel (`scout-emit-report` / `scout-edit-report`): you've done the research, so you own each report 1:1 end-to-end rather than firing weak signals for a pipeline to cluster. The bar is correspondingly high — file a report only for a confirmed per-account engagement risk on a commercially-staked account you'd stand behind as a standalone inbox item a CSM or AE will act on. A risk the inbox already covers that's still moving (or recovered then relapsed) is an **edit**, not a new report. 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 customer-analytics-specific framing — do not restate the generic mechanics.
Close out empty (after one scratchpad entry) if any of these hold:
Re-running with the same key idempotently refreshes the timestamp.
Cycle between these moves; skip what's not useful. Spend the bulk of a run on **exploit** (re-scoring due watchlist accounts) and a smaller slice on **explore** (finding new ones), so coverage compounds across runs instead of restarting cold.
Four cheap reads plus the join check cold-start every run:
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…