From xonovex-skill-android-analytics
Use when adding or reviewing analytics / event tracking in an Android app — tracking screen views and user-intent events, deciding where tracking belongs (ViewModel vs UI), typed events and screen names, user properties and identity, consent-gated and privacy-safe tracking, A/B experiments, and testing tracking with a fake tracker. Triggers on an injected analytics tracker, trackScreen / trackEvent / setUserProperties, screen-view or button-click events, user properties, cookie consent or PII in events, or asserting tracked events in tests — even when the user doesn't say "analytics".
How this skill is triggered — by the user, by Claude, or both
Slash command
/xonovex-skill-android-analytics:android-analytics-guideThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
SDK-agnostic patterns for event tracking in an Android app: depend on a typed tracker abstraction, own tracking in the presentation layer, and keep it typed, consent-aware, and tested. A concrete tracking-plan codegen tool and destination are layered on top in their own skill.
SDK-agnostic patterns for event tracking in an Android app: depend on a typed tracker abstraction, own tracking in the presentation layer, and keep it typed, consent-aware, and tested. A concrete tracking-plan codegen tool and destination are layered on top in their own skill.
AnalyticsTracker, never the SDK directly, see references/architecture.mdScreenName and typed events, see references/events-and-screens.mdAnalyticsUserProperty, login / session state, see references/user-properties-and-identity.mdLaunchedEffect without a stable key) re-fires on recomposition / config change — own it in the ViewModel and key it to state.AnalyticsTracker belongs in an api module; the SDK lives only in impl. Features depend on api, so tests use a fake and the SDK never leaks into feature modules.class CartViewModel(
private val analytics: AnalyticsTracker,
) : ViewModel() {
init { analytics.trackScreen(ScreenName.CART) } // once, on entry
fun onCheckoutClicked() {
analytics.trackEvent(ButtonClickEvent(uniqueName = "cart_checkout"))
}
}
// Test — inject the fake, assert the event; no real SDK
@Test
fun checkout_click_is_tracked() = runTest {
val analytics = FakeAnalyticsTracker()
CartViewModel(analytics).onCheckoutClicked()
analytics.assertEvent(ButtonClickEvent(uniqueName = "cart_checkout"))
}
Each reference is a trigger — read it only when the user's intent matches; do not preload everything.
npx claudepluginhub xonovex/platform --plugin xonovex-skill-android-analyticsGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Resolves in-progress git merge or rebase conflicts by analyzing history, understanding intent, and preserving both changes where possible. Runs automated checks after resolution.