<< All versions

Skill v1.0.1

currentLLM-judged scan90/100
onekeyhq/app-monorepo/1k-analytics

+1 new

──Details
PublishedOctober 23, 2026 at 02:36 AM
Content Hashsha256:51ceb82703672da4...
Git SHA8c06d1f5a0b5
Bump Typepatch
Compare with v1.0.0
──Files
Files (1 file, 3.2 KB)
SKILL.md3.2 KBactive
SKILL.md · 79 lines · 3.2 KB

version: "1.0.1" name: 1k-analytics description: OneKey analytics and server event tracking with LogToServer, logger scopes/scenes, and business metrics. Use for 埋点, analytics, or tracking events. allowed-tools: Read, Grep, Glob


Analytics Event Tracking

OneKey uses a decorator-based logger system to track user behavior events. Events are routed to the analytics server (Mixpanel) via @LogToServer() decorator on scene methods. NEVER call analytics.trackEvent() directly.

Quick Reference

TopicGuideKey Files
Adding eventsadding-events.mdpackages/shared/src/logger/scopes/
Architecturearchitecture.mdpackages/shared/src/logger/base/
Common pitfallspitfalls.md—

Critical Rules

  1. MUST use `@LogToServer()` decorator — never call analytics.trackEvent() directly
  2. Event method names use camelCase — the method name becomes the event name sent to Mixpanel
  3. Methods MUST return params synchronously — never return a Promise
  4. Deduplicate high-frequency events — prevent Mixpanel usage spikes (e.g., use in-memory Set for per-session dedup)
  5. Add events to existing scopes when possible — only create new scopes for entirely new feature domains

Adding a Server Event (Quick Steps)

1. Create or update a Scene class

typescript
// packages/shared/src/logger/scopes/{scope}/scenes/{scene}.ts
import { BaseScene } from '../../../base/baseScene';
import { LogToServer } from '../../../base/decorators';
export class MyScene extends BaseScene {
@LogToServer()
public myEventName(params: { key: string; value: string }) {
return params;
}
}

2. Register scene in scope index

typescript
// packages/shared/src/logger/scopes/{scope}/index.ts
import { MyScene } from './scenes/myScene';
export class MyScope extends BaseScope {
protected override scopeName = EScopeName.myScope;
myScene = this.createScene('myScene', MyScene);
}

3. Call from business code

typescript
import { defaultLogger } from '@onekeyhq/shared/src/logger/logger';
defaultLogger.myScope.myScene.myEventName({ key: 'foo', value: 'bar' });

Decorator Types

DecoratorDestinationUse Case
@LogToServer()Mixpanel analytics serverUser behavior tracking, business metrics
@LogToLocal()Device local log (React Native logger)Debugging, device-side diagnostics
@LogToConsole()Console onlyDev-time debugging

Stack decorators for dual logging: @LogToServer() + @LogToLocal().

Related Skills

  • /1k-architecture — Import hierarchy rules (logger is in @onekeyhq/shared)
  • /1k-coding-patterns — TypeScript and React conventions
← v1.0.0All versions