Discover Analytics Patterns
Published by kienbui1995 in magic-powers
What this skill does
Map existing analytics SDK implementations in a codebase to understand naming conventions and instrumentation patterns. Uses mcp__Amplitude__get_event_properties.
Add Discover Analytics Patterns to your agent
Review the source and files first. When you are ready, copy the prompt instruction or use the CLI command supported by your environment.
Install with a prompt
Paste this into a compatible coding agent:
add this skill "discover-analytics-patterns" from https://github.com/kienbui1995/magic-powersInstall with the CLI
Run this command in a controlled environment after reviewing the repository:
npx skills add https://github.com/kienbui1995/magic-powers --skill discover-analytics-patternsSkill instructions
Discover Analytics Patterns
When to Use
- Before adding new analytics instrumentation to an unfamiliar codebase
- When onboarding to a project that has existing analytics — understand what's there before adding more
- When
instrument-eventsneeds to know the project's SDK style and naming convention - When auditing whether analytics calls are consistent across the codebase
- When migrating from one analytics SDK to another (need to catalog current state)
- When a new engineer asks "how do we send analytics events here?"
Core Jobs
1. Search for Analytics SDK Imports and Initialization
Scan the codebase for analytics SDK usage:
Common SDKs to look for:
- Amplitude:
@amplitude/analytics-browser,amplitude-js,@amplitude/node - Mixpanel:
mixpanel-browser,mixpanel - Segment:
@segment/analytics-next,analytics.js - PostHog:
posthog-js - Custom wrappers: look for files named
analytics.ts,tracking.ts,events.ts,telemetry.ts
Search patterns:
import.*amplitude
import.*mixpanel
import.*segment
import.*analytics
require.*analytics
Find the initialization file: where is init() or load() called? What API key pattern is used? What default properties are set at init time?
2. Find All Track / LogEvent / Identify Calls
Search for every place analytics events are sent:
Amplitude patterns:
amplitude.track('event_name', { prop: value })
amplitude.logEvent('event_name', { prop: value })
client.track({ event_type: 'event_name', event_properties: {} })
Generic patterns:
analytics.track('event_name', properties)
trackEvent('event_name', properties)
logEvent('event_name', properties)
sendEvent('event_name', properties)
Collect: file path, line number, event name, properties passed. Build a full inventory.
3. Extract Event Names and Property Patterns
From the collected tracking calls, catalog:
Event names:
- List all unique event names found
- Identify the naming convention:
camelCase,snake_case,Title Case,kebab-case, or mixed - Flag inconsistencies: events that don't follow the dominant pattern
Property patterns:
- What properties appear most frequently? (These are likely "super properties" or universal context)
- What properties are event-specific?
- Are properties passed as inline objects or imported from a separate constants file?
- Are there TypeScript interfaces or types defined for event properties?
4. Identify Naming Convention
Determine the single authoritative naming convention:
Dominant pattern: snake_case (found in 47/52 events)
Exceptions: 5 events use camelCase (legacy, pre-2024)
Recommendation: use snake_case for all new events
Document any caveats: some properties use camelCase even when event names use snake_case (common in mixed teams).
5. Map Universal vs. Event-Specific Properties
Universal properties (appear in >80% of events) — likely set via super properties or middleware:
// These are probably set once at init or login:
{
user_id: string,
platform: 'web' | 'ios' | 'android',
app_version: string,
environment: 'production' | 'staging'
}
Event-specific properties — only relevant for particular events. Catalog by category:
- Page events:
page_name,referrer_url,page_section - Action events:
button_label,element_id,interaction_type - Commerce events:
item_id,price,currency,quantity
6. Identify Helper Functions or Wrappers
Most codebases wrap the raw SDK. Find:
- Analytics service class or singleton
- Event constants file (exported event name strings)
- Property builder utilities
- Type-safe wrappers with TypeScript interfaces
Document the wrapper API so new instrumentation uses the same pattern, not the raw SDK.
Example finding:
// src/analytics/index.ts — use this, not amplitude directly
import { track } from '@/analytics';
track('checkout_completed', { order_id, total });
7. Document the Pattern for Use in instrument-events
Produce an instrumentation guide:
instrumentation_guide:
sdk: "Amplitude Browser SDK v2"
entry_point: "src/analytics/index.ts"
naming_convention: snake_case
event_constants_file: "src/analytics/events.ts"
universal_properties:
set_at_init: [user_id, platform, app_version]
set_at_login: [user_plan, user_role, account_id]
example_call: |
import { track } from '@/analytics';
import { Events } from '@/analytics/events';
track(Events.CHECKOUT_COMPLETED, {
order_id: order.id,
total: order.totalAmount,
payment_method: order.paymentMethod,
});
type_definitions_file: "src/analytics/types.ts"
naming_inconsistencies:
- "legacy_click_event uses camelCase — do not follow this pattern"
MCP Tools
mcp__Amplitude__get_event_properties— cross-reference discovered event names with Amplitude's recorded schema to verify events are actually reaching Amplitude and what properties Amplitude has recorded
Key Concepts
- SDK entry point: The file where analytics is initialized — often wraps the raw SDK with project-specific config
- Super properties: Properties set once (at init or login) that are automatically included in every event
- Event constants: A file or object exporting all event name strings — prevents typos and enables type-safety
- Naming convention: The canonical pattern for event names in this codebase — new instrumentation must match it
- Wrapper pattern: A custom function/class around the raw SDK — almost always exists in mature codebases; always prefer it over raw SDK calls
Output Format
A YAML instrumentation guide with:
instrumentation_guide:
sdk: <SDK name and version>
entry_point: <file path to analytics module>
naming_convention: <snake_case|camelCase|Title Case>
event_constants_file: <file path or null>
universal_properties: {set_at_init: [...], set_at_login: [...]}
example_call: <code snippet showing correct usage>
type_definitions_file: <file path or null>
naming_inconsistencies: <list of exceptions to document>
total_events_found: <count>
After output, state: "Pattern documented. This guide is the style reference for instrument-events."
Files included
- SKILL.md
More skills
Discover Analytics Patterns
amplitude/mcp-marketplace
No summary provided.
Audit unavailable39k installsDiscover Analytics Patterns
amplitude/amplitude-copilot-plugin
No summary provided.
Audit unavailable1 installsImprove Codebase Architecture
mattpocock/skills
No summary provided.
Audit unavailable1.1m installs

