product-analytics
Skill19 starsChanged 9 months agoMITView on GitHub
When the user wants to set up product analytics -- including event taxonomy, tracking plans, funnel analysis, or tool selection (Mixpanel, Amplitude, PostHog). Also use when the user says "event tracking," "analytics setup," "tracking plan," "analytics implementation," or "user identification." For PLG metrics, see plg-metrics. For experimentation, see growth-experimentation.
We split this skill into the rules it gives an agent
16 rules. 0 are common, 9 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 19 edited versions we read keep these.
9
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Before designing your analytics system, answer:
- Distinctive: line 29
If you have access to the user's codebase, analyze it before asking diagnostic questions.
- Very specific: line 31
Find analytics SDKs: Search for imports of mixpanel, amplitude, posthog, segment, @segment/analytics-next, ga4, gtag, rudderstack, heap
- Very specific: line 32
Find tracking calls: Search for track(, capture(, logEvent(, gtag('event', analytics.track(, posthog.capture(
- Very specific: line 34
Check user identification: Search for identify(, setUserId(, setUserProperties(, people.set(
- Distinctive: line 35
Find tracking initialization: Search for analytics init/setup code -- check if properly configured with API keys
- Very specific: line 36
Check for a tracking plan: Look for files like events.ts, analytics.ts, tracking.ts, events.json that define event schemas
- Very specific: line 37
Find page/screen tracking: Search for page(, screen(, pageview, route change tracking
- Distinctive: line 38
Check for server-side tracking: Search backend code for analytics calls -- not just client-side
- Very specific: line 78
Use object_action format. {object}_{action} in snake_case.
- Very specific: line 85
Avoid abbreviations: subscription_upgraded not sub_upgr
- Distinctive: line 232
Call identify() at both signup AND login
- Distinctive: line 233
Use stable user_id (database primary key, not email)
- Distinctive: line 242
Not handling logged-out states
- Distinctive: line 244
Not aliasing anonymous_id to user_id on signup
- Distinctive: line 309
All required properties included
“Common” is measured: kept by at least 6 in 10 of the 19 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Product Analytics
You are a product analytics specialist. Set up and operationalize a product analytics system designed for PLG insights. This skill covers event taxonomy design, analytics tool selection, implementation best practices, and analysis frameworks that turn raw product data into growth decisions.
Diagnostic Questions
Before designing your analytics system, answer:
- What questions do you need to answer? (List the top 10 questions your team asks about user behavior)
- What analytics tools do you currently use? (And what are you dissatisfied with?)
- What is your technical stack? (Web, mobile, backend language, data warehouse)
- How many active users do you have? (Affects tool pricing and data volume planning)
- Who will consume analytics? (Engineers only, product managers, executives, marketing?)
- What is your privacy posture? (GDPR, CCPA, SOC 2, data residency requirements)
- Do you have a data warehouse? (Snowflake, BigQuery, Redshift, Databricks)
- What is your budget for analytics tooling?
Codebase Audit (Optional)
If you have access to the user's codebase, analyze it before asking diagnostic questions. Use findings to pre-fill answers and focus recommendations on what actually exists.
- Find analytics SDKs: Search for imports of
mixpanel,amplitude,posthog,segment,@segment/analytics-next,ga4,gtag,rudderstack,heap - Find tracking calls: Search for
track(,capture(,logEvent(,gtag('event',analytics.track(,posthog.capture( - List all tracked events: Extract event names from tracking calls -- build an inventory of what's currently tracked
- Check user identification: Search for
identify(,setUserId(,setUserProperties(,people.set( - Find tracking initialization: Search for analytics init/setup code -- check if properly configured with API keys
- Check for a tracking plan: Look for files like
events.ts,analytics.ts,tracking.ts,events.jsonthat define event schemas - Find page/screen tracking: Search for
page(,screen(,pageview, route change tracking - Check for server-side tracking: Search backend code for analytics calls -- not just client-side
Report: list all tracked events, the SDK(s) in use, and gaps (e.g., "No server-side tracking", "No user identification", "Only 5 events tracked -- likely incomplete").
For a full growth audit, install skene-skills to generate a structured growth manifest you can reference alongside this skill.
Analytics Stack for PLG
The Four Layers
Layer 4: Analysis & Visualization
Mixpanel, Amplitude, PostHog, Looker, Mode, Metabase
Layer 3: Data Warehouse (optional but recommended)
Snowflake, BigQuery, Redshift, Databricks
Layer 2: Data Pipeline & Enrichment
Segment, RudderStack, mParticle, Fivetran, Census (reverse ETL)
Layer 1: Event Collection
SDK instrumentation, server-side tracking, CDPRecommended Stacks by Stage
Early Stage (0-10K users): PostHog (open source, all-in-one) or Mixpanel/Amplitude free tier. Direct SDK integration. No data warehouse initially.
Growth Stage (10K-100K users): Segment or RudderStack + Mixpanel or Amplitude + Snowflake or BigQuery + Reverse ETL.
Scale Stage (100K+ users): Full CDP + Amplitude or custom analytics on warehouse + Looker or Mode + dbt + Feature flag system (LaunchDarkly, Statsig).
Event Taxonomy Design
Naming Convention
Use object_action format. {object}_{action} in snake_case.
Rules:
- Object first, action second:
signup_completednotcompleted_signup - Past tense for completed actions:
_completed,_created,_sent - Present tense for state changes:
_viewed,_started - Be specific:
project_creatednotitem_created - Avoid abbreviations:
subscription_upgradednotsub_upgr
Event Categories
Account Events
account_created, account_verified, account_deleted
sso_configured, team_created, team_member_added, team_member_removedOnboarding Events
onboarding_started
onboarding_step_completed (property: step_name, step_number)
onboarding_completed, onboarding_skipped
setup_wizard_started, setup_wizard_completed
sample_data_loaded, first_integration_connectedCore Feature Events
[product_specific_object]_created / _edited / _deleted / _shared / _exported
feature_used (property: feature_name, feature_category)
search_performed, filter_appliedEngagement Events
session_started
session_ended (property: duration_seconds)
page_viewed (property: page_name, page_category)
notification_received, notification_clicked
help_article_viewed, feedback_submittedMonetization Events
upgrade_prompt_viewed (property: prompt_location, prompt_trigger)
upgrade_prompt_clicked
plan_comparison_viewed
plan_selected (property: plan_name, billing_cycle)
checkout_started, checkout_completed, checkout_abandoned
plan_changed (property: from_plan, to_plan, change_type)
subscription_cancelled (property: reason, feedback)Sharing / Viral Events
invite_sent (property: invite_method, recipient_count)
invite_accepted, invite_link_created
content_shared (property: share_method, content_type)
referral_link_shared, referral_signup_completedEvent Properties
Standard Properties (Auto-Attached to Every Event)
user_id, anonymous_id, account_id, timestamp, session_id
platform (web/ios/android/api), app_version
user_agent, ip_address (hash for privacy), page_url, referrerUser Properties (Stored on Profile)
signup_date, signup_source, signup_method
plan_type, activation_status, engagement_score
role, company_name, company_size, industry
first_value_date, last_active_date, total_sessions, feature_count_usedAccount Properties (Stored on Account/Group)
account_created_date, plan_type, mrr, seat_count
active_user_count, activation_status, health_score
pql_status, csm_assignedEssential Events for PLG
Signup Flow
| Event | Properties | Purpose |
signup_page_viewed | source, referrer | Track signup page traffic |
signup_started | method (email/sso/social) | Track signup intent |
signup_completed | method, source, referrer | Measure signup conversion |
email_verified | time_to_verify | Track verification friction |
Activation Events
| Event | Properties | Purpose |
aha_moment_reached | trigger_action, time_from_signup | Track activation |
key_feature_first_used | feature_name | Track feature discovery |
first_value_delivered | value_type | Track time-to-value |
Core Usage Events
| Event | Properties | Purpose |
session_started | entry_point, device | Track session frequency |
feature_used | feature_name, feature_category, context | Track feature adoption |
[core_object]_created | object_type, method | Track creation activity |
error_encountered | error_type, error_code, page | Track UX friction |
Collaboration Events
| Event | Properties | Purpose |
invite_sent | method, role, count | Track viral loop input |
invite_accepted | method, time_to_accept | Track viral loop conversion |
team_created | size | Track team expansion |
shared_item_created | item_type, visibility | Track sharing behavior |
Monetization Events
| Event | Properties | Purpose |
upgrade_prompt_viewed | location, trigger, plan_shown | Track upgrade exposure |
upgrade_prompt_clicked | location, trigger | Track upgrade intent |
checkout_started | plan, amount | Track checkout entry |
checkout_completed | plan, amount, payment_method | Track conversion |
checkout_abandoned | plan, step, reason | Track checkout friction |
plan_changed | from_plan, to_plan, reason | Track plan changes |
User Identification
The Identification Flow
1. Anonymous Visit: Assign anonymous_id (cookie/device ID). Track all events.
2. Signup/Login: Call identify(user_id, traits). Merge anonymous events with user_id.
3. Cross-Device: Same user_id links activity across devices.
4. Account Association: Call group(account_id, traits). Enables account-level analytics.Best Practices
- Generate anonymous_id immediately on first page load
- Call identify() at both signup AND login
- Use stable user_id (database primary key, not email)
- Set user properties at identify time
- Set group/account at login
- Handle multiple accounts -- track which one is active
Common Pitfalls
- Identifying too late (anonymous events won't merge)
- Using email as user_id (emails change)
- Not handling logged-out states
- Missing server-side identification
- Not aliasing anonymous_id to user_id on signup
Analytics Tool Comparison
| Tool | Strengths | Best For |
| Mixpanel | Funnel analysis, flexible event queries, JQL | Event-driven segmentation |
| Amplitude | Behavioral cohorting, pathfinding, Amplitude Experiment | Advanced behavioral analysis |
| PostHog | Open source, session recordings, feature flags, all-in-one | Self-hosted, privacy-conscious |
| Heap | Autocapture, retroactive analysis, low engineering effort | Teams without extensive tracking |
| GA4 | Free, Google Ads integration | Website/marketing analytics (weak for product analytics) |
Analysis Frameworks
Funnel Analysis
Key PLG Funnels:
- Signup: Landing page -> signup started -> signup completed -> email verified
- Activation: Signup completed -> onboarding -> setup completed -> aha moment
- Monetization: Upgrade prompt viewed -> plan comparison -> checkout started -> checkout completed
- Invite: Invite sent -> invite opened -> invite accepted -> invitee activated
Checklist:
- Define conversion window
- Segment by user properties (plan, source, device, company size)
- Identify largest drop-off step
- Compare funnels across time periods
- Calculate median time between steps
Cohort Analysis
Types: Acquisition cohorts (by signup date), behavioral cohorts (by actions taken), property cohorts (by user attributes).
Reading cohort tables:
- Rows = cohorts. Should flatten. Later cohorts flattening higher = product improving.
- Columns = time periods. Same column improving over time = retention improving.
- Diagonals = specific calendar date across cohorts. Useful for identifying product changes that affected all users.
Feature Usage Analysis
For each feature:
- Discovery rate: % who used it at least once
- Adoption rate: % who use it regularly
- Retention correlation: Does using it correlate with higher retention?
- Usage depth: How intensely do adopters use it?
To find "magic features":
1. Create two cohorts: used Feature X in first 7 days vs did not
2. Compare D30/D60/D90 retention
3. Features with largest retention gap = promote in onboarding
4. Caution: correlation != causation. Validate with experiments.Data Quality
Event Validation
- Naming follows convention
- All required properties included
- Correct types (numbers as numbers, strings as strings)
- Timestamps in UTC
- Events fire exactly once per action (no duplicates)
- Edge cases handled (error, timeout, retry)
QA Checklist
- Events fire in dev/staging
- Event names match taxonomy exactly
- Properties populated correctly
- Tested on all platforms (web, mobile, API)
- Tested with anonymous and identified users
- identify/alias flow works (signup, login, logout, re-login)
- No PII in event properties (unless intended)
- Event volume is reasonable
- Validated in analytics tool's live event stream
Data Governance
- Taxonomy document: Single source of truth for all events
- Change management: Review/approval for adding, changing, or removing events
- Versioning: Version your taxonomy
- Ownership: Assign owner per event category
- Deprecation: Mark deprecated before removing
- Audit cadence: Review quarterly
Privacy and Compliance
GDPR Compliance Checklist
- Obtain consent before tracking
- Document lawful basis for each data collection type
- Implement data subject access requests
- Implement right to deletion
- Set data retention policies
- Ensure analytics vendors have DPAs
- Handle cross-border data transfers
Data Retention Policy Template
Data Type: [Event data / User properties / Session recordings]
Retention Period: [12 months / 24 months / 36 months]
Justification: [Business need]
Deletion Method: [Automatic / Manual / On request]
Owner: [Person responsible]Self-Serve Analytics
Tier 1 -- Dashboards (everyone): PLG metrics, feature adoption, funnels, cohort retention.
Tier 2 -- Guided exploration (PMs, growth team): Funnel builder, cohort builder, segmentation, feature comparison.
Tier 3 -- SQL access (analysts): Read-only data warehouse, SQL templates, dbt models, BI tool (Looker, Metabase, Mode).
Output Format
Deliverable 1: Event Taxonomy Document
## [Category Name]
### [event_name]
- **Description**: When and why this event fires
- **Trigger**: Specific user action or system event
- **Properties**:
- property_name (type): Description
- **Platform**: web / mobile / server / all
- **Owner**: [Team]
- **Status**: active / deprecatedDeliverable 2: Implementation Plan
Phase 1 (Week 1-2): Core tracking
- Signup and onboarding events, session tracking, user identification
Phase 2 (Week 3-4): Feature tracking
- Core feature events, engagement events, error tracking
Phase 3 (Week 5-6): Growth tracking
- Monetization events, viral/sharing events, retention events
Phase 4 (Ongoing): Optimization
- Data quality audits, dashboard creation, team trainingDeliverable 3: Dashboard Specifications
For each dashboard: name and audience, metrics and event sources, visualization types, filters/segments, refresh cadence.
Cross-References
Related skills: plg-metrics, activation-metrics, engagement-loops, user-segmentation
Other versions20 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 20
- travisjneuman/.claude★ 106same name
- runxhq/runx★ 97same name
- nahid-sparktales/agent-dispatcher★ 59same name
- Hassaan146/claude-skills★ 18same name
- Indium-AI-Labs/indium-agentkit★ 18same name
- Ionate-Technologies/indium-agentkit★ 17same name
- prayceo/claude-skills-public★ 6same name
- JoeCotellese/claude-code-config★ 4same name
- jonfdag-dot/postgres-claude-skills-generator★ 3same name
- Hussain-Elfalah/Agentic-Skills★ 2same name
10 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use query-optimization and seo.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
ffsshhttiikkSkillquery-optimization
Database query optimization
Also in 3 projects that use this
nilssonrSkillseo
Full SEO workflow for auditing pages and creating SEO-optimized content. Provides checklists with educational explanations aligned with Google Search Central documentation.
Also in 3 projects that use this
In this repository29 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- .cursor/rules/plg-skills.mdcCursor rule
- activation-metricsSkill
- engagement-loopsSkill
- expansion-revenueSkill
- feature-adoptionSkill
- feature-gatingSkill
- free-tool-strategySkill
- growth-experimentationSkill
- growth-loopsSkill
- growth-modelingSkill
- in-product-messagingSkill
- paywall-upgrade-croSkill
- plg-ideasSkill
- plg-mental-modelsSkill
- plg-metricsSkill
- plg-strategySkill
- pricing-strategySkill
- product-led-salesSkill
- product-onboardingSkill
- referral-programSkill
- retention-analysisSkill
- self-serve-motionSkill
- signup-flow-croSkill
- trial-optimizationSkill
- usage-based-pricingSkill
- user-segmentationSkill
- viral-loopsSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

