fix-posthog
Original:🇺🇸 English
Translated
Run /check-posthog, then fix the highest priority PostHog integration issues. Focuses on one issue at a time for safe, incremental fixes. Invoke for: PostHog not working, events not sending, analytics broken.
1installs
Sourcephrazzld/claude-config
Added on
NPX Install
npx skill4agent add phrazzld/claude-config fix-posthogTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →/fix-posthog
Run , then fix the highest priority issue.
/check-posthogWhat This Does
- Run to identify issues
/check-posthog - Pick the highest priority unfixed issue
- Implement the fix
- Verify the fix works
- Report what was fixed
Fixes one issue per invocation. Run multiple times to fix multiple issues.
Fix Playbook
P0: SDK Not Initialized
Problem: not called or PostHogProvider missing.
initPostHog()Fix:
bash
codex exec --full-auto "Add PostHog initialization. \
Create lib/analytics/posthog.ts with initPostHog(). \
Create PostHogProvider component. \
Add to app/layout.tsx. \
Reference: ~/.claude/skills/posthog/references/sdk-patterns.md. \
Verify: pnpm typecheck" \
--output-last-message /tmp/codex-fix.md 2>/dev/nullP0: API Key Missing
Problem: not set.
NEXT_PUBLIC_POSTHOG_KEYFix:
bash
# Get key from PostHog dashboard
# Add to .env.local
echo "NEXT_PUBLIC_POSTHOG_KEY=phc_xxx" >> .env.local
# Add to Vercel production
printf '%s' 'phc_xxx' | vercel env add NEXT_PUBLIC_POSTHOG_KEY productionP1: No Reverse Proxy
Problem: Direct PostHog host gets blocked by ad blockers.
Fix:
bash
codex exec --full-auto "Add PostHog reverse proxy to next.config. \
Add rewrites for /ingest/* to us.i.posthog.com/*. \
Add rewrites for /ingest/static/* to us-assets.i.posthog.com/static/*. \
Update posthog.init to use api_host: '/ingest'. \
Reference: ~/.claude/skills/posthog/references/sdk-patterns.md section 4. \
Verify: pnpm build" \
--output-last-message /tmp/codex-fix.md 2>/dev/nullP1: Privacy Masking Missing
Problem: and not configured.
mask_all_textmaskAllInputsFix:
bash
codex exec --full-auto "Add privacy settings to PostHog init. \
Add mask_all_text: true. \
Add session_recording.maskAllInputs: true. \
Add person_profiles: 'identified_only'. \
Reference: ~/.claude/skills/posthog/references/privacy-checklist.md. \
Verify: pnpm typecheck" \
--output-last-message /tmp/codex-fix.md 2>/dev/nullP1: PII in identify() Calls
Problem: Email/name passed to .
posthog.identify()Fix:
bash
codex exec --full-auto "Remove PII from posthog.identify calls. \
Only pass user ID, no email/name/phone properties. \
Search: grep -rE 'posthog.identify.*email|identify.*name' --include='*.ts' --include='*.tsx'. \
Verify: pnpm typecheck && grep -rE 'posthog.identify.*email' returns no results" \
--output-last-message /tmp/codex-fix.md 2>/dev/nullP2: No Standard Events
Problem: No typed event schema defined.
Fix:
bash
codex exec --full-auto "Add typed event schema to PostHog analytics. \
Create StandardEvent type with: user_signed_up, user_activated, subscription_started, subscription_cancelled, feature_used. \
Add trackEvent function that enforces type. \
Reference: ~/.claude/skills/posthog/references/sdk-patterns.md section 1. \
Verify: pnpm typecheck" \
--output-last-message /tmp/codex-fix.md 2>/dev/nullVerification
After each fix, verify with MCP:
# Check events are flowing
mcp__posthog__query-run with TrendsQuery for last 1h
# Check for errors
mcp__posthog__list-errorsManual browser verification:
- Open DevTools → Network
- Filter for or
ingestposthog - Trigger action → verify request succeeds
- Check PostHog Live Events → verify event appears
Output
After fixing, report:
- What was fixed
- How it was verified
- What's the next priority issue (if any)
Related
- - Audit only (no fixes)
/check-posthog - - Create GitHub issues
/log-posthog-issues - - Full lifecycle workflow
/posthog