Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
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
0 views
Added 9/29/2026
ai-agentstypescriptgoreactnextjsnodetestingdebugginggitapifullstack

Works with

cliapi

Security Analysis

A100/100

Scanned 9/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 automatically 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
Files
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

travisjneumantravisjneuman
View sourceSee grades on GitHubMore from travisjneuman →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

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 (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698431 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →