Design event taxonomy, tracking plans, funnels, dashboards, and privacy/consent flows
npx claudepluginhub cure-consulting-group/productengineeringskillsThis skill uses the workspace's default tool permissions.
Before starting, gather project context silently:
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Before starting, gather project context silently:
PORTFOLIO.md if it exists in the project root or parent directories for product/team contextcat package.json 2>/dev/null || cat build.gradle.kts 2>/dev/null || cat Podfile 2>/dev/null to detect stackgit log --oneline -5 2>/dev/null for recent changesls src/ app/ lib/ functions/ 2>/dev/null to understand project structureInstrument event tracking, funnels, and dashboards across mobile and web. Measure what matters, not everything.
| Need | Output |
|---|---|
| Event taxonomy | Structured event naming + properties |
| Tracking plan | Full event spec for engineering implementation |
| Funnel analysis | Conversion funnel definition + instrumentation |
| Dashboard design | KPI dashboard layout + data sources |
| A/B test setup | Experiment design + tracking instrumentation |
| Attribution | Channel attribution model + UTM strategy |
Format: object_action
Case: snake_case
Tense: past tense for completed actions
Examples:
account_created (not: create_account, userSignedUp)
item_added_to_cart (not: addToCart, cart_add)
payment_completed (not: pay, purchase_made)
search_performed (not: search, user_searched)
screen_viewed (not: pageView, open_screen)
Lifecycle: app_opened, session_started, app_backgrounded
Auth: account_created, login_completed, logout_completed
Navigation: screen_viewed, tab_selected, deep_link_opened
Engagement: feature_used, item_viewed, content_shared
Conversion: trial_started, subscription_created, payment_completed
Error: error_occurred, crash_detected, api_error
Every event includes:
timestamp — ISO 8601 (auto-captured by most SDKs)
user_id — authenticated user ID (if logged in)
session_id — auto-generated per session
platform — android / ios / web
app_version — semantic version
Event-specific properties:
screen_viewed: { screen_name: "home", previous_screen: "login" }
item_viewed: { item_id: "123", item_type: "product", source: "search" }
payment_completed:{ amount: 29.99, currency: "USD", method: "card" }
error_occurred: { error_code: "AUTH_EXPIRED", screen: "checkout" }
Rules:
- Property names: snake_case, no abbreviations
- String values: lowercase (no "Home" vs "home" inconsistency)
- Numbers: raw numbers, not strings ("amount": 29.99, not "29.99")
- No PII in event properties (no email, name, phone, IP)
## Tracking Plan — [Product Name]
| Event | Trigger | Properties | Priority |
|-------|---------|-----------|----------|
| screen_viewed | Every screen load | screen_name, previous_screen | P0 |
| account_created | After successful signup | method (email/google/apple) | P0 |
| feature_used | Core action completed | feature_name, duration_ms | P0 |
| payment_completed | Successful charge | amount, currency, plan_id | P0 |
| error_occurred | Unhandled error | error_code, screen, stack_hash | P0 |
| search_performed | Search submitted | query_length, results_count | P1 |
| item_shared | Share button tapped | item_id, share_method | P2 |
Priority: P0 = must ship with feature, P1 = next sprint, P2 = nice to have
1. Visitor → screen_viewed (landing page)
2. Signed Up → account_created
3. Activated → [core_action]_completed (define per product)
4. Engaged → session_started (day 2-7 return)
5. Converted → subscription_created / payment_completed
6. Retained → session_started (day 30+)
7. Referred → referral_sent
1. Browse → item_viewed
2. Add to Cart → item_added_to_cart
3. Begin Checkout → checkout_started
4. Payment → payment_completed
5. Repeat → second payment_completed (within 90 days)
Define activation metric per product — the single action that predicts retention.
// Android
analytics.logEvent("payment_completed") {
param("amount", 29.99)
param("currency", "USD")
param("plan_id", "pro_monthly")
}
// iOS
Analytics.logEvent("payment_completed", parameters: [
"amount": 29.99,
"currency": "USD",
"plan_id": "pro_monthly"
])
// Wrapper function — swap provider without changing call sites
export function trackEvent(name: string, properties?: Record<string, unknown>) {
// Firebase Analytics
if (typeof window !== 'undefined' && window.gtag) {
window.gtag('event', name, properties);
}
// Add other providers here (Mixpanel, Amplitude, etc.)
}
Required UTM params for all marketing links:
utm_source — where traffic comes from (google, linkedin, email)
utm_medium — marketing medium (cpc, social, email, referral)
utm_campaign — campaign name (spring_launch, black_friday)
Capture UTMs on first visit, persist in cookie/localStorage, attach to account_created event.
GDPR (EU users):
- Show consent banner before any tracking
- No analytics fired until consent given
- Respect "decline all" — zero tracking, not degraded tracking
- Provide data deletion on request
CCPA (California):
- "Do Not Sell My Personal Information" link
- Honor Global Privacy Control (GPC) signal
Implementation:
- Consent state stored in cookie/localStorage
- Analytics wrapper checks consent before firing
- Firebase: Analytics.setAnalyticsCollectionEnabled(userConsented)
Before defining tracking plan, scan existing implementation:
trackEvent|logEvent|analytics.track|posthog.capture|mixpanel.trackGenerate analytics infrastructure using Write:
src/analytics/events.ts — TypeScript enum/const of all event namessrc/analytics/tracker.ts — type-safe wrapper with platform detectiondocs/tracking-plan.md — complete event documentationExecutive Dashboard (weekly review):
- Active users (DAU, WAU, MAU)
- Activation rate (% of signups completing core action)
- Conversion rate (% of active → paid)
- Revenue (MRR, new MRR, churned MRR)
- Retention curve (day 1, 7, 30)
Engineering Dashboard (daily monitoring):
- Error rate by screen
- API latency (p50, p95, p99)
- Crash-free user rate
- App load time
- Feature adoption (% of users using new feature)