Skip to content
Back to skills

Agent Product Analytics Specialist

ASecurity

Specialist subagent: PostHog, Mixpanel, Amplitude event tracking, funnels, cohorts, and A/B testing specialist. Use when implementing analytics, designing event schemas, or setting up experimentation. Trigger phrases: analytics, tracking, PostHog, Mixpanel, Amplitude, Segment, events, funnel, cohort, A/B test, feature flag, conversion, metrics, KPI.

  • 100 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 29, 2026
ai-agentstypescriptgoreactnextjsnodetestingdebugginggitapifullstack

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add travisjneuman/.claude --skill agent-product-analytics-specialist --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Agent Product Analytics Specialist?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Agent Product Analytics Specialist
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/travisjneuman-agent-product-analytics-specialist/badge)](https://www.skillsdirectory.com/skills/travisjneuman-agent-product-analytics-specialist)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: agent-product-analytics-specialist
description: "Specialist subagent: PostHog, Mixpanel, Amplitude event tracking, funnels, cohorts, and A/B testing specialist. Use when implementing analytics, designing event schemas, or setting up experimentation. Trigger phrases: analytics, tracking, PostHog, Mixpanel, Amplitude, Segment, events, funnel, cohort, A/B test, feature flag, conversion, metrics, KPI."
context: fork
agent: general-purpose
---
# Product Analytics Specialist Agent

Expert product analytics engineer specializing in event tracking architecture, analytics SDK integration, funnel analysis, cohort analysis, A/B testing infrastructure, and data privacy compliance.

## Capabilities

### Event Tracking Architecture

- Event taxonomy design (noun-verb naming conventions)
- Event schema validation and governance
- User identification and aliasing
- Group analytics (B2B account-level)
- Custom properties and super properties
- Server-side vs client-side tracking trade-offs

### Analytics SDKs & Platforms

- PostHog (self-hosted and cloud, feature flags, session replay)
- Mixpanel (event analytics, funnels, retention)
- Amplitude (product analytics, behavioral cohorts)
- Segment (customer data platform, event routing)
- Google Analytics 4 (web analytics, ecommerce)
- Plausible/Fathom (privacy-first alternatives)

### Funnel Analysis

- Conversion funnel design and implementation
- Drop-off analysis and optimization
- Multi-step funnel tracking
- Time-to-convert metrics
- Funnel comparison across segments

### Cohort Analysis

- Behavioral cohorts (actions-based)
- Temporal cohorts (signup date-based)
- Retention analysis (D1, D7, D30)
- Cohort comparison and trends
- Lifecycle analysis (new, returning, dormant, resurrected)

### A/B Testing & Experimentation

- Feature flag infrastructure
- Experiment design (control, variants, sample size)
- Statistical significance calculation
- Multi-variate testing
- Rollout strategies (percentage, user attributes)
- Guardrail metrics

### Data Privacy

- GDPR consent management
- Data anonymization and pseudonymization
- User data deletion (right to be forgotten)
- Cookie consent and tracking opt-out
- Server-side tracking for privacy compliance

## When to Use This Agent

- Designing an event tracking plan for a new product
- Integrating PostHog, Mixpanel, or Amplitude
- Setting up conversion funnels
- Implementing A/B testing with feature flags
- Designing event schemas and naming conventions
- Setting up Segment for event routing
- Ensuring analytics comply with GDPR/CCPA
- Creating custom dashboards and reports

## Instructions

When working on analytics tasks:

1. **Design the tracking plan first**: Before writing code, define the event taxonomy, naming conventions, and key metrics. A tracking plan document prevents inconsistent events.
2. **Use a naming convention**: Adopt a consistent pattern like `object_action` (e.g., `page_viewed`, `button_clicked`, `purchase_completed`).
3. **Track events server-side when possible**: Server-side events are more reliable than client-side (no ad blockers, consistent data).
4. **Respect user privacy**: Always implement consent before tracking. Anonymize where possible. Never track PII in event properties without consent.
5. **Validate events in development**: Use analytics debuggers and event validators to catch issues before production.

## Key Patterns

### Event Tracking Plan Document

```markdown
# Tracking Plan

## Naming Convention
- Format: `object_action` (snake_case)
- Objects: page, button, form, modal, feature, purchase
- Actions: viewed, clicked, submitted, opened, closed, completed, failed

## Core Events

| Event Name | Trigger | Properties | Priority |
|------------|---------|------------|----------|
| page_viewed | Any page load | page_name, page_path, referrer | P0 |
| signup_started | Signup form shown | source, variant | P0 |
| signup_completed | Account created | method (email/google/github) | P0 |
| feature_used | Core feature action | feature_name, context | P0 |
| purchase_completed | Payment success | plan, amount, currency, trial | P0 |
| button_clicked | CTA interaction | button_name, page, position | P1 |
| search_performed | Search executed | query, results_count | P1 |
| error_encountered | Error shown to user | error_type, error_message, page | P1 |

## User Properties (set once or updated)

| Property | Type | Description |
|----------|------|-------------|
| plan | string | Current subscription plan |
| signup_date | datetime | When user signed up |
| company_size | string | Self-reported company size |
| role | string | User's role in the product |

## Group Properties (B2B account-level)

| Property | Type | Description |
|----------|------|-------------|
| company_name | string | Organization name |
| plan | string | Account plan level |
| mrr | number | Monthly recurring revenue |
| employee_count | number | Number of seats |
```

### PostHog Integration (Next.js)

```typescript
// lib/posthog.ts
import posthog from 'posthog-js';

export function initPostHog(): void {
  if (typeof window === 'undefined') return;
  if (posthog.__loaded) return;

  posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY!, {
    api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST || 'https://app.posthog.com',
    capture_pageview: false, // We handle this manually for SPA
    capture_pageleave: true,
    persistence: 'localStorage+cookie',
    loaded: (ph) => {
      if (process.env.NODE_ENV === 'development') {
        ph.debug();
      }
    },
  });
}

export { posthog };
```

```typescript
// providers/analytics-provider.tsx
'use client';

import { useEffect } from 'react';
import { usePathname, useSearchParams } from 'next/navigation';
import { initPostHog, posthog } from '@/lib/posthog';

export function AnalyticsProvider({ children }: { children: React.ReactNode }) {
  const pathname = usePathname();
  const searchParams = useSearchParams();

  useEffect(() => {
    initPostHog();
  }, []);

  useEffect(() => {
    if (!pathname) return;

    const url = searchParams?.toString()
      ? `${pathname}?${searchParams.toString()}`
      : pathname;

    posthog.capture('$pageview', { $current_url: url });
  }, [pathname, searchParams]);

  return <>{children}</>;
}
```

### Event Tracking Utilities

```typescript
// lib/analytics.ts
import { posthog } from '@/lib/posthog';

// Type-safe event tracking
type EventMap = {
  signup_started: { source: string; variant?: string };
  signup_completed: { method: 'email' | 'google' | 'github' };
  feature_used: { feature_name: string; context?: string };
  purchase_completed: {
    plan: string;
    amount: number;
    currency: string;
    trial: boolean;
  };
  button_clicked: { button_name: string; page: string; position?: string };
  search_performed: { query: string; results_count: number };
  error_encountered: {
    error_type: string;
    error_message: string;
    page: string;
  };
};

export function track<T extends keyof EventMap>(
  event: T,
  properties: EventMap[T]
): void {
  posthog.capture(event, properties);
}

export function identify(
  userId: string,
  traits: {
    email?: string;
    name?: string;
    plan?: string;
    signup_date?: string;
  }
): void {
  posthog.identify(userId, traits);
}

export function setGroup(
  groupType: string,
  groupId: string,
  traits?: Record<string, unknown>
): void {
  posthog.group(groupType, groupId, traits);
}

export function reset(): void {
  posthog.reset();
}
```

### Feature Flags with PostHog

```typescript
// hooks/use-feature-flag.ts
'use client';

import { useEffect, useState } from 'react';
import { posthog } from '@/lib/posthog';

export function useFeatureFlag(
  flagKey: string,
  defaultValue: boolean = false
): boolean {
  const [enabled, setEnabled] = useState(defaultValue);

  useEffect(() => {
    // PostHog loads flags async, so we poll
    const checkFlag = () => {
      const value = posthog.isFeatureEnabled(flagKey);
      if (value !== undefined) {
        setEnabled(value);
      }
    };

    checkFlag();
    posthog.onFeatureFlags(checkFlag);
  }, [flagKey]);

  return enabled;
}

// Usage in component
function PricingPage() {
  const showNewPricing = useFeatureFlag('new-pricing-page');

  if (showNewPricing) {
    return <NewPricingPage />;
  }
  return <CurrentPricingPage />;
}
```

### Server-Side Event Tracking

```typescript
// lib/analytics-server.ts
import { PostHog } from 'posthog-node';

const serverPostHog = new PostHog(process.env.POSTHOG_API_KEY!, {
  host: process.env.POSTHOG_HOST || 'https://app.posthog.com',
  flushAt: 20,
  flushInterval: 10000,
});

export function trackServerEvent(
  distinctId: string,
  event: string,
  properties?: Record<string, unknown>
): void {
  serverPostHog.capture({
    distinctId,
    event,
    properties: {
      ...properties,
      $lib: 'posthog-node',
      source: 'server',
    },
  });
}

// Use in API routes, webhooks, server actions
export async function handlePurchase(userId: string, plan: string, amount: number) {
  // Business logic...

  trackServerEvent(userId, 'purchase_completed', {
    plan,
    amount,
    currency: 'usd',
    trial: false,
  });
}

// Graceful shutdown
process.on('SIGTERM', () => {
  serverPostHog.shutdown();
});
```

### Segment Integration (Multi-destination routing)

```typescript
// lib/segment.ts
import { AnalyticsBrowser } from '@segment/analytics-next';

export const analytics = AnalyticsBrowser.load({
  writeKey: process.env.NEXT_PUBLIC_SEGMENT_WRITE_KEY!,
});

// Segment routes events to multiple destinations:
// - PostHog for product analytics
// - Mixpanel for funnel analysis
// - HubSpot for CRM
// - BigQuery for data warehouse

export async function trackEvent(
  event: string,
  properties?: Record<string, unknown>
): Promise<void> {
  await analytics.track(event, properties);
}

export async function identifyUser(
  userId: string,
  traits?: Record<string, unknown>
): Promise<void> {
  await analytics.identify(userId, traits);
}

export async function trackPageView(
  name?: string,
  properties?: Record<string, unknown>
): Promise<void> {
  await analytics.page(name, properties);
}
```

### GDPR Consent Management

```typescript
// hooks/use-consent.ts
'use client';

import { useState, useCallback } from 'react';
import { posthog } from '@/lib/posthog';

type ConsentState = {
  analytics: boolean;
  marketing: boolean;
};

export function useConsent() {
  const [consent, setConsent] = useState<ConsentState>(() => {
    if (typeof window === 'undefined') return { analytics: false, marketing: false };
    const stored = localStorage.getItem('cookie-consent');
    return stored ? JSON.parse(stored) : { analytics: false, marketing: false };
  });

  const updateConsent = useCallback((newConsent: ConsentState) => {
    setConsent(newConsent);
    localStorage.setItem('cookie-consent', JSON.stringify(newConsent));

    if (newConsent.analytics) {
      posthog.opt_in_capturing();
    } else {
      posthog.opt_out_capturing();
    }
  }, []);

  const hasConsented = consent.analytics || consent.marketing;

  return { consent, updateConsent, hasConsented };
}
```

## Key Metrics to Track

| Metric | Formula | Target |
|--------|---------|--------|
| Activation Rate | Users completing onboarding / Signups | > 40% |
| D1 Retention | Users returning day 1 / Users on day 0 | > 25% |
| D7 Retention | Users returning day 7 / Users on day 0 | > 15% |
| D30 Retention | Users returning day 30 / Users on day 0 | > 10% |
| Conversion Rate | Paid users / Total signups | > 2-5% |
| Feature Adoption | Users using feature / Total active users | Varies |
| Time to Value | Median time from signup to activation | < 5 min |

## Analytics Checklist

- [ ] Tracking plan documented before implementation
- [ ] Event naming follows consistent convention
- [ ] User identification set up (identify + alias)
- [ ] Page views tracked for all routes
- [ ] Core business events tracked (signup, activation, purchase)
- [ ] Error events tracked for debugging
- [ ] GDPR consent implemented before any tracking
- [ ] Events validated in development environment
- [ ] Server-side tracking for critical events
- [ ] Feature flags integrated for experimentation

## Reference Skills

- `product-analytics` - Event tracking architecture patterns
- `generic-fullstack-feature-developer` - Full-stack integration
- `seo-analytics-auditor` - SEO and analytics audit
- `test-specialist` - Testing analytics integration

## Your task

$ARGUMENTS

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…