Skip to content
Back to skills

Growth Engineering

ASecurity

A/B testing infrastructure, feature flags (LaunchDarkly, Unleash), experimentation platforms, PLG patterns, and funnel optimization. Use when building experimentation systems, implementing feature toggles, or optimizing conversion funnels.

  • 100 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 27, 2026
data-aitypescriptgonodetestingdebuggingapi

Works with

  • api

Security analysis

A100/100

Scanned September 30, 2026

npx -y skills add travisjneuman/.claude --skill growth-engineering --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Growth Engineering?

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

Security grade badge for Growth Engineering
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/travisjneuman-growth-engineering/badge)](https://www.skillsdirectory.com/skills/travisjneuman-growth-engineering)

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: growth-engineering
description: >-
  A/B testing infrastructure, feature flags (LaunchDarkly, Unleash), experimentation platforms, PLG patterns, and funnel optimization. Use when building experimentation systems, implementing feature toggles, or optimizing conversion funnels.
---

# Growth Engineering Skill

Infrastructure and patterns for product-led growth, experimentation, and conversion optimization.

---

## Feature Flag Systems

### Implementation Pattern

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

const posthog = new PostHog(process.env.POSTHOG_API_KEY!);

interface FeatureFlags {
  'new-onboarding-flow': boolean;
  'pricing-experiment': 'control' | 'variant-a' | 'variant-b';
  'ai-suggestions': boolean;
}

export async function getFlag<K extends keyof FeatureFlags>(
  key: K,
  userId: string,
): Promise<FeatureFlags[K]> {
  const value = await posthog.getFeatureFlag(key, userId);
  return value as FeatureFlags[K];
}

// Usage in component
const showNewOnboarding = await getFlag('new-onboarding-flow', user.id);
```

### Feature Flag Best Practices

- Short-lived flags: Remove after experiment concludes (< 2 weeks)
- Long-lived flags: Ops toggles for gradual rollouts, kill switches
- Never nest feature flags (creates exponential complexity)
- Clean up stale flags monthly
- Log flag evaluations for debugging

---

## A/B Testing Infrastructure

### Experiment Design

```typescript
// lib/experiments.ts
interface Experiment {
  id: string;
  name: string;
  variants: {
    id: string;
    weight: number; // 0-100, must sum to 100
  }[];
  targetAudience: {
    percentage: number; // % of users included
    filters?: Record<string, unknown>;
  };
  primaryMetric: string;
  secondaryMetrics: string[];
  minimumSampleSize: number;
  startDate: Date;
  endDate?: Date;
}

// Track experiment exposure
function trackExposure(experimentId: string, variantId: string, userId: string) {
  analytics.capture({
    event: '$experiment_started',
    distinctId: userId,
    properties: {
      $experiment_id: experimentId,
      $variant_id: variantId,
    },
  });
}
```

### Statistical Significance

- Minimum sample size: Calculate before starting (use Evan Miller calculator)
- Don't peek: Set duration upfront, don't stop early on promising results
- Sequential testing: Use if you must check early (adjusts p-values)
- Minimum detectable effect: Define what improvement matters (e.g., 5% lift)

---

## Product-Led Growth Patterns

### Activation Metrics

| Stage | Metric | Example |
|-------|--------|---------|
| Sign up | Registration complete | User creates account |
| Setup | Profile complete | Fills required fields |
| Aha moment | Core value experienced | Creates first project |
| Habit | Repeated engagement | 3 sessions in first week |
| Revenue | Conversion to paid | Subscribes to plan |

### Viral Loops

```typescript
// Referral system pattern
interface Referral {
  referrerId: string;
  referredEmail: string;
  status: 'pending' | 'signed_up' | 'activated' | 'converted';
  rewardGranted: boolean;
}

// Track referral funnel
function trackReferralStep(referralId: string, step: Referral['status']) {
  analytics.capture({
    event: 'referral_step',
    properties: { referralId, step },
  });
}
```

### Conversion Optimization

- Reduce friction: Minimize form fields, enable social login
- Social proof: Show user counts, testimonials, logos
- Urgency: Trial countdown, limited-time offers (use sparingly)
- Value demonstration: Interactive demos, free tier with clear upgrade path
- Personalization: Onboarding flow based on use case selection

---

## Growth Metrics

| Metric | Formula | Target |
|--------|---------|--------|
| Activation rate | Activated / Signed up | > 40% |
| Trial-to-paid | Paid / Trial started | > 15% |
| Net revenue retention | (Start MRR + Expansion - Contraction - Churn) / Start MRR | > 110% |
| Viral coefficient | Invites sent * Conversion rate | > 0.5 |
| Time to value | Median time from signup to aha moment | < 5 min |
| DAU/MAU ratio | Daily active / Monthly active | > 20% |

---

## Experimentation Platforms

| Platform | Type | Best For |
|----------|------|----------|
| PostHog | Self-hosted/cloud | Full-stack, open source |
| LaunchDarkly | Cloud | Feature flags at scale |
| Statsig | Cloud | Auto-stats, warehouse-native |
| Growthbook | Self-hosted/cloud | Open source, Bayesian stats |
| Optimizely | Cloud | Enterprise, multi-channel |

---

## Related Resources

- `~/.claude/skills/product-analytics/SKILL.md` - Analytics and tracking
- `agent-product-analytics-specialist` skill - Analytics specialist
- `~/.claude/skills/authentication-patterns/SKILL.md` - Auth for PLG

---

_Measure everything. Experiment constantly. Remove what doesn't work._

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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.