From magic-powers
Create, validate, audit, and govern Amplitude event taxonomy across a product. Uses mcp__Amplitude__get_event_properties, mcp__Amplitude__get_project_context, mcp__Amplitude__query_amplitude_data.
npx claudepluginhub kienbui1995/magic-powers --plugin magic-powersThis skill uses the workspace's default tool permissions.
- Auditing an existing Amplitude project for naming inconsistencies, duplicates, and orphaned events
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.
Every product needs exactly one naming convention. Enforce it ruthlessly.
Standard convention: verb_noun in snake_case
page_viewed ✓
button_clicked ✓
form_submitted ✓
PageViewed ✗ → rename to page_viewed
buttonClick ✗ → rename to button_clicked
form-submit ✗ → rename to form_submitted
FormWasSubmitted ✗ → rename to form_submitted
Common verb vocabulary (use these, don't invent synonyms):
viewed, rendered, displayedclicked, tapped, submitted, applied, selected, toggledstarted, completed, abandoned, cancelled, failednavigated, redirected, scrolledRule: If two events describe the same action, they must use the same verb. button_clicked and cta_pressed are synonyms — eliminate one.
Define a set of shared properties that appear on every event. Call these "global context properties."
Required global properties:
| Property | Type | Source | Notes |
|---|---|---|---|
user_id | string | auth system | null for anonymous users |
session_id | string | SDK | auto-populated by Amplitude |
platform | string | app config | web, ios, android |
app_version | string | build system | 1.4.2 |
environment | string | env var | production, staging |
Prohibited property anti-patterns:
userId — use user_id (consistent snake_case)ts — use timestamp (readable)v — use app_version (no abbreviations)flag — too generic; name what the flag isUse mcp__Amplitude__get_event_properties to audit actual property names across events.
Identify events that track the same user action under different names:
Detection signals:
checkout_complete vs checkout_completed vs purchase_completedResolution process:
Every event has a lifecycle: proposed → active → deprecated → removed.
Lifecycle states:
| State | Description | Action Required |
|---|---|---|
proposed | Defined but not yet implemented | Implement or discard |
active | Currently firing in production | Monitor volume |
stale | Volume declining but still active | Review if still needed |
deprecated | Replaced by new event, still firing | Set end date, update code |
removed | No longer firing | Archive in taxonomy doc |
Orphaned event detection (events potentially abandoned):
Use mcp__Amplitude__query_amplitude_data to check event volumes and last-seen dates.
Every active event must have:
Template:
event: checkout_confirmation_viewed
description: "Fires when a user successfully reaches the order confirmation screen after completing payment"
trigger: "Page component mounts after order API returns 200 with valid order_id"
owner: "growth-team"
funnel: ["purchase-funnel", "first-purchase-funnel"]
properties:
order_id: {type: string, required: true, example: "ord_abc123"}
order_total: {type: number, required: true, unit: "USD", example: 49.99}
status: active
created: "2024-01-15"
last_modified: "2024-11-03"
Define how new events get approved and who can add/change events:
Approval tiers:
Taxonomy changelog: Every change to the taxonomy is logged with date, change type, rationale, and owner.
mcp__Amplitude__get_event_propertiesmcp__Amplitude__query_amplitude_data to get volume per event for last 30 daysmcp__Amplitude__get_event_properties — pull the full event and property schema for the projectmcp__Amplitude__get_project_context — get project metadata and configurationmcp__Amplitude__query_amplitude_data — check event volumes, last-seen dates, and trend data to detect orphaned or duplicate eventsTaxonomy audit report:
## Taxonomy Health Score: <score>/100
### Issues by Severity
CRITICAL:
- 3 funnel events missing (cannot compute purchase conversion rate)
HIGH:
- 7 events violate naming convention (camelCase instead of snake_case)
- 2 duplicate event pairs: checkout_complete / checkout_completed
MEDIUM:
- 12 events have no owner assigned
- 5 events have no trigger documentation
LOW:
- 8 events with volume < 100/day (possible orphans)
### Remediation Plan (priority ordered)
1. Add missing funnel events (week 1) — unblocks conversion analysis
2. Rename 7 non-convention events (week 2) — coordinate with all clients
3. Merge duplicate pairs (week 3) — 90-day overlap period
4. Assign owners to undocumented events (ongoing)
### Migration Plan
<event rename mapping table with sunset dates>