github.com/PostHog/posthog
| Skill | Added | Review |
|---|---|---|
analyzing-expensive-users products/ai_observability/skills/analyzing-expensive-users/SKILL.md 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 LLM cost, user-level cost drivers, or patterns behind high AI observability spend. | 75 75 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
working-outside-the-console products/agent_platform/backend/kernel_skills/working-outside-the-console/SKILL.md Operating without a UI — MCP / IDE / Slack mode. How to compensate for missing client tools, how to be useful in a text-only chat. Load when the session client kind is NOT `posthog-code`. | 66 66 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 047ca00 | |
using-the-console-ui products/agent_platform/backend/kernel_skills/using-the-console-ui/SKILL.md How to drive PostHog Desktop's read panel as the user works with you — focus_* etiquette, when to call toast, how to handle 'follow mode' being off. Load when the session client kind is `posthog-code`. | 68 68 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 047ca00 | |
safety-and-boundaries products/agent_platform/backend/kernel_skills/safety-and-boundaries/SKILL.md Hard rules — what the Agent Builder MUST NOT do regardless of user request. Load IMMEDIATELY if a request feels like it crosses into raw-secret handling, unprompted promotion, irreversible deletion, or impersonation of another user. | 72 72 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 047ca00 | |
auditing-the-fleet products/agent_platform/backend/kernel_skills/auditing-the-fleet/SKILL.md The fleet-wide audit — sweep every agent, mine recent sessions for failures/anomalies, classify root causes, and branch a DRAFT proposal per fix (never freeze/promote); write a report to memory. Load when asked to audit all agents or what's underperforming. | 72 72 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 047ca00 | |
writing-tests .agents/skills/writing-tests/SKILL.md Gates whether a new test should exist and forces it to be efficient, protecting CI from low-value test bloat. Use before adding or substantially changing any pytest, Jest, or Playwright test — whenever an agent or engineer is about to write tests for a new feature, bugfix, or PR. Front-loads the value bar (every test must catch a realistic regression no existing test already catches; test behavior through the public interface, not implementation details; collapse near-duplicates into parameterized cases) and the efficiency bar (deterministic, isolated, fast; pick the cheapest test level; Django TestCase over TransactionTestCase; no sleeps, no real network). Includes a "don't write it" decision tree. For fixing an existing flaky test use `/fixing-flaky-tests`; after this gate says a Playwright test is warranted, use `/playwright-test` for mechanics. | 73 73 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
writing-skills .agents/skills/writing-skills/SKILL.md Guide for writing PostHog agent skills — job-to-be-done templates that teach agents how to use MCP tools to achieve a goal. Use when adding new product functionality that agents should know how to work with, creating a new skill, or updating existing skills in products/*/skills/. | 68 68 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
writing-kea-logics .agents/skills/writing-kea-logics/SKILL.md Guide for writing or reviewing PostHog kea logic files (`*Logic.ts` / `*Logic.tsx`). Use when creating a new logic, adding actions/reducers/selectors/listeners/loaders/forms/router bindings, choosing between reducer vs selector vs cache, deciding between listeners and `kea-subscriptions`, wiring React with `useValues`/`useActions`/`BindLogic`, or onboarding to kea conventions. Read keajs.org for upstream API; this skill captures PostHog-specific conventions and idioms. | 74 74 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
writing-evals .agents/skills/writing-evals/SKILL.md Teaches how to write and run evals on the `products/posthog_ai/eval_harness/` harness — sandboxed agent suites that execute the real coding agent in a Docker or Modal sandbox against a seeded Hedgebox project, and one-shot suites that score a single in-process model invocation per case. Use when adding or changing eval suites, cases, scorers, seeders, or synthesizers under `products/posthog_ai/evals/` or `products/*/evals/`, when touching the harness under `products/posthog_ai/eval_harness/`, or when running or debugging those evals (`hogli evals`). Covers suite kinds and discovery, case anatomy, the seeder/synthesizer split, the one-branch scorer patterns, and how to read results. Not for `ee/hogai/eval/ci/` pytest evals, and not for the LLM Analytics product's evaluation features. | 69 69 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
writing-clickhouse-queries .agents/skills/writing-clickhouse-queries/SKILL.md Guide for writing performant ClickHouse queries in PostHog product code. Use when writing HogQL query runners, designing a ClickHouse table for a new product, adding materialized columns or skip indexes, or choosing a row ID format. For optimizing an existing query that is already too slow, use `/optimizing-clickhouse-and-hogql-queries` instead. | 68 68 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
warehouse-source-new-version .agents/skills/warehouse-source-new-version/SKILL.md Add support for a new vendor API version to an existing Data warehouse import source, or deprecate an old one. Use when a vendor ships a new API version (Stripe date versions, Shopify quarterly versions, header-pinned revisions, /vN/ URL bumps), when implementing a version-update or deprecation task for a source under products/warehouse_sources/backend/temporal/data_imports/sources, or when repinning an ExternalDataSource to a different version. Covers deciding whether a newly announced version needs supporting at all, version declaration, dispatch, pinning semantics, deprecation metadata, and migration scripts. | 65 65 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
visualizing-change-over-time .agents/skills/visualizing-change-over-time/SKILL.md Helps PostHog engineers and agents pick the right chart when a request is about visualizing change over time, before/after comparisons, or period-over-period movement while building UI with @posthog/quill-charts (dashboards, reports, the mcp_analytics frontend, custom visualizations). Use when a user asks how something "changed", "moved", "grew", "dropped", "improved", or "regressed" between two points or periods, or mentions "before/after", "period over period", "week over week", "delta", "slope graph", "slopegraph", or comparing many series across two snapshots. Surfaces both the `SlopeChart` quill component and the native `ChartDisplayType.SlopeGraph` insight display as options. | 72 72 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
using-kea-disposables .agents/skills/using-kea-disposables/SKILL.md Use when adding timers (`setInterval`, `setTimeout`), event listeners (`window.addEventListener`, `document.addEventListener`, `MediaQueryList.addEventListener`), or any other resource that needs cleanup inside a kea logic. Every logic has `cache.disposables.add(setup, key?, options?)` and `cache.disposables.dispose(key)` available via the globally registered `disposablesPlugin` (`frontend/src/kea-disposables.ts`). Replaces the bare `cache.foo = setInterval(...)` + `beforeUnmount: clearInterval(cache.foo)` pattern and auto-pauses background work when the tab is hidden. | 74 74 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
survey-sdk-audit .agents/skills/survey-sdk-audit/SKILL.md Audit PostHog survey SDK features and version requirements | 56 56 Impact — No eval scenarios have been run Securityby Low Low-risk findings worth noting Version: 6fca5f8 | |
setup-web-tests .agents/skills/setup-web-tests/SKILL.md Set up Python test environment in Claude Code for web where flox is unavailable. Use when you need to run backend tests and `uv sync` fails due to Python version mismatch. | 65 65 Impact — No eval scenarios have been run Securityby Medium Suggest reviewing before use Version: 6fca5f8 | |
setting-up-devbox .agents/skills/setting-up-devbox/SKILL.md Guide a PostHog engineer through spinning up, connecting to, running commands on, and mirroring local code to a remote devbox (a Coder workspace running the full PostHog stack). Use when asked to set up a devbox, start or connect to a devbox, configure remote dev, get gh CLI / Claude Code authed on a devbox, run a command on a devbox, sync a local checkout so you can edit locally while the stack runs remotely (devbox:sync), or diagnose why a devbox command fails. Covers the tailnet prerequisite, hogli devbox commands, Coder user secrets for auth, one-way local->remote sync via mutagen, and verifying with devbox:exec. How each dev personalizes their box is left to them. | 74 74 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
setting-feature-flags-in-storybook .agents/skills/setting-feature-flags-in-storybook/SKILL.md Use when writing a Storybook story for a component gated on a feature flag — boolean flags or multivariate/experiment-arm variants. Covers the `featureFlags` story parameter and why imperatively setting flags renders the flag-off branch in visual-regression snapshots while passing in jest. | 70 70 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
sending-notifications .agents/skills/sending-notifications/SKILL.md How to send real-time in-app notifications from PostHog backend code. Use when integrating notifications into a new feature, wiring up a notification source (alerts, comments, approvals, pipelines, issues), or choosing the right target type and priority for a notification. | 69 69 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
security-audit .agents/skills/security-audit/SKILL.md Focused security audit of code, calibrated to surface real exploitable bugs and suppress theoretical findings. Use when the user asks to "audit", "security-audit", "find vulnerabilities", "check for IDOR/SSRF/XSS/injection", or wants a security review of a file, directory, branch diff, or PR. Covers access control, injection, auth/secrets, sensitive data, business logic, web boundary, and AI agent/LLM trifecta risks. Produces calibrated findings with data flow, exploit request, fix, and confidence — no theoretical or defense-in-depth nits. | 76 76 Impact — No eval scenarios have been run Securityby Low Low-risk findings worth noting Version: 6fca5f8 | |
scene-menu-bar .agents/skills/scene-menu-bar/SKILL.md Conventions for adding or editing the SceneMenuBar above a scene's <SceneTitleSection>. Use when adding new menu items, moving items between menus, gating behind feature flags, building a new scene's menubar, or wiring rich inputs (tags, combobox) into the bar. | 72 72 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
running-ci-preflight .agents/skills/running-ci-preflight/SKILL.md Catch the deterministic CI failures reachable from your diff before pushing, with `hogli ci:preflight`. Use when the pre-push hook blocks a push, before reporting a task done, or after editing Python, serializers, migrations, workflows, or dependency manifests — to avoid burning a CI matrix on a failure you could catch locally (formatting, lint, broken lockfiles, OpenAPI drift, migration conflict, stale branch). Trigger terms: ci:preflight, preflight, pre-push checks, pre-push hook failed, "will this break CI". | 77 77 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
run-posthog .agents/skills/run-posthog/SKILL.md Start, inspect, and drive the PostHog dev stack. Use for /run and /verify on this repo — when asked to launch PostHog, check whether the stack is healthy, inspect a running process, or verify a UI change against the live app. | 73 73 Impact — No eval scenarios have been run Securityby Critical Do not install without reviewing Version: 6fca5f8 | |
react-doctor .agents/skills/react-doctor/SKILL.md Diagnose and fix React codebase health issues. Use when reviewing React code, fixing performance problems, auditing security, or improving code quality. | 69 69 Impact — No eval scenarios have been run Securityby Low Low-risk findings worth noting Version: 6fca5f8 | |
querying-tophog .agents/skills/querying-tophog/SKILL.md Query tophog — the ingestion pipeline's heavy-hitter store in ClickHouse — to identify hot or expensive actors (team_id, distinct_id, session_id, partition) during incident triage. Use when investigating ingestion lag, a hot or lagging Kafka partition, expensive person processing, merge storms, or any "which team or distinct_id is causing this" question. Covers the internal Metabase access path (SSO via hogli), the tophog schema, and the cost-vs-volume query lens. Internal-only: results contain cross-customer identifiers. | 70 70 Impact — No eval scenarios have been run Securityby Passed No findings from the security scan Version: 6fca5f8 | |
querying-local-postgres .agents/skills/querying-local-postgres/SKILL.md Run read-only SQL against the local Postgres app database (SELECT, EXPLAIN, EXPLAIN ANALYZE on SELECT). Default local URL postgres://posthog:posthog@localhost:5432/posthog; else DATABASE_URL. Use when querying the local DB, inspecting tables, debugging data, or analyzing query plans. Mutations are strictly forbidden. | 68 68 Impact — No eval scenarios have been run Securityby High Do not use without reviewing Version: 6fca5f8 |