posthog

World-class PostHog integration. Audit, fix, verify—every time.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "posthog" with this command: npx skills add phrazzld/claude-config/phrazzld-claude-config-posthog

/posthog

World-class PostHog integration. Audit, fix, verify—every time.

What This Does

Examines your PostHog integration, identifies every gap, implements fixes, and verifies event tracking works end-to-end. No partial modes. Every run does the full cycle.

Branching

Assumes you start on master /main . Before making code changes:

git checkout -b fix/posthog-$(date +%Y%m%d)

Configuration-only changes (env vars, dashboard settings) don't require a branch. Code changes do.

Process

  1. Environment Check

Verify PostHog is reachable and configured:

~/.claude/skills/posthog/scripts/detect-environment.sh

This checks:

  • NEXT_PUBLIC_POSTHOG_KEY is set

  • NEXT_PUBLIC_POSTHOG_HOST is set (or defaults correctly)

  • PostHog API is reachable

  • MCP connection is active

  1. Audit

Spawn the auditor. Use the posthog-auditor subagent for deep parallel analysis. It examines:

  • Configuration — Env vars on all deployments, cross-platform parity

  • SDK Setup — Initialization, provider placement, privacy settings

  • Event Quality — Events defined, consistent naming, not too noisy

  • Privacy Compliance — PII masking, consent handling, GDPR readiness

  • Feature Flags — Active flags, stale flags, evaluation patterns

  • Integration Health — Events flowing, no ingestion warnings

Use MCP tools for live data:

mcp__posthog__event-definitions-list — See what events are tracked mcp__posthog__feature-flag-get-all — Audit active feature flags mcp__posthog__list-errors — Check for error tracking issues mcp__posthog__logs-query — Search for SDK/ingestion errors

Research first. Before assuming current patterns are correct, check PostHog docs:

mcp__posthog__docs-search query="[topic]"

  1. Plan

From audit findings, build a complete remediation plan:

Finding Type Action

Missing env vars Fix directly with Vercel/Convex CLI

SDK misconfiguration Delegate to Codex with clear specs

Missing events Define event schema, implement tracking

Privacy gaps Apply references/privacy-checklist.md

Feature flag cleanup Archive stale flags via MCP

Prioritize:

  • Critical — Events not sending, SDK not initialized

  • High — Privacy issues, PII leakage, missing masking

  • Medium — Suboptimal patterns, missing events

  • Low — Cleanup, organization, dashboards

  1. Execute

Fix everything. Don't stop at a report.

Configuration fixes (do directly):

Missing env var on Vercel

printf '%s' 'phc_xxx' | vercel env add NEXT_PUBLIC_POSTHOG_KEY production

Missing env var on Convex (for server-side tracking)

npx convex env set --prod POSTHOG_API_KEY "phc_xxx"

SDK setup fixes (delegate to Codex):

codex exec --full-auto "Fix PostHog initialization.
File: lib/analytics/posthog.ts.
Problem: [what's wrong].
Solution: [what it should do].
Reference: ~/.claude/skills/posthog/references/sdk-patterns.md.
Verify: pnpm typecheck && pnpm test"
--output-last-message /tmp/codex-fix.md 2>/dev/null

Event schema updates: Use mcp__posthog__action-create to define composite events.

Feature flag cleanup: Use mcp__posthog__delete-feature-flag to remove stale flags.

  1. Verify

Prove it works. Not "looks right"—actually works.

Configuration verification:

Check env vars exist

vercel env ls --environment=production | grep POSTHOG npx convex env list --prod | grep POSTHOG

Event flow verification using MCP:

Check recent events are flowing

mcp__posthog__query-run with TrendsQuery for last 24h

Check for ingestion warnings

mcp__posthog__list-errors

Verify event definitions exist

mcp__posthog__event-definitions-list

SDK initialization verification:

  • Open browser DevTools → Network tab

  • Filter for posthog or i.posthog.com

  • Trigger an action → verify event sent

  • Check PostHog Live Events → verify event received

Privacy verification:

  • Session Replay shows masked inputs (*** )

  • Person profiles show only user ID, not email/name

  • Autocapture text is masked

If any verification fails, go back and fix it.

Common Issues & Fixes

Events Not Sending

Symptoms: No events in PostHog, network requests failing

Debug steps:

  • Check if PostHog initialized: posthog.__loaded in console

  • Check network tab for blocked requests (ad blockers)

  • Enable debug mode: posthog.debug() in console

  • Test with webhook.site to isolate SDK vs network issues

Fixes:

  • Set up reverse proxy (/ingest → PostHog) to bypass ad blockers

  • Ensure initPostHog() called in provider

  • Check NEXT_PUBLIC_POSTHOG_KEY is actually public (has NEXT_PUBLIC_ prefix)

Bot Detection Blocking Dev Events

Symptoms: Events work in production but not local dev

Cause: Chrome launched from debugger triggers bot detection

Fix:

posthog.init(key, { opt_out_capturing_by_default: false, // For development only: bootstrap: { isIdentifiedAnonymous: true }, });

Identify Called Before Init

Symptoms: User not linked to events, anonymous users everywhere

Fix:

// WRONG posthog.identify(userId); // Called before init completes

// RIGHT posthog.init(key, { loaded: (ph) => { if (userId) ph.identify(userId); }, });

Missing Reverse Proxy

Symptoms: Events blocked by ad blockers in production

Fix (Next.js):

// next.config.js module.exports = { async rewrites() { return [ { source: '/ingest/:path*', destination: 'https://us.i.posthog.com/:path*', }, ]; }, };

Then update init:

posthog.init(key, { api_host: '/ingest', });

MCP Tool Reference

Tool Purpose

mcp__posthog__event-definitions-list

List all tracked events

mcp__posthog__query-run

Run trends/funnels queries

mcp__posthog__feature-flag-get-all

List feature flags

mcp__posthog__create-feature-flag

Create new flag

mcp__posthog__list-errors

Check error tracking

mcp__posthog__logs-query

Search logs for issues

mcp__posthog__docs-search

Search PostHog docs

mcp__posthog__entity-search

Find insights/dashboards/flags

mcp__posthog__projects-get

List available projects

mcp__posthog__switch-project

Change active project

Default Stack

Assumes Next.js + TypeScript + Convex + Vercel + Clerk. Adapts gracefully to other stacks.

What You Get

When complete:

  • Working event tracking (events visible in PostHog Live Events)

  • Proper SDK initialization with privacy settings

  • Reverse proxy configured for ad blocker bypass

  • User identification linked to auth (Clerk/etc)

  • Feature flags ready to use

  • Standard events defined and tracking

  • All configuration in place (dev and prod)

  • Deep verification passing

Sources

  • PostHog MCP Documentation

  • PostHog Troubleshooting Guide

  • Official PostHog MCP Server

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Security

design-audit

No summary provided by upstream source.

Repository SourceNeeds Review
Security

changelog-audit

No summary provided by upstream source.

Repository SourceNeeds Review
Security

billing-security

No summary provided by upstream source.

Repository SourceNeeds Review