Agent skill
1k-analytics
Analytics event tracking for OneKey. Use when adding tracking events, logging to server, user behavior tracking, or business metrics. Covers the @LogToServer decorator pattern, logger scope/scene architecture, and common pitfalls. Triggers on "埋点", "统计", "打点", "数据追踪", "日志", "analytics", "tracking event", "Mixpanel", "LogToServer", "trackEvent", "defaultLogger".
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/1k-analytics
SKILL.md
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
| Topic | Guide | Key Files |
|---|---|---|
| Adding events | adding-events.md | packages/shared/src/logger/scopes/ |
| Architecture | architecture.md | packages/shared/src/logger/base/ |
| Common pitfalls | pitfalls.md | — |
Critical Rules
- MUST use
@LogToServer()decorator — never callanalytics.trackEvent()directly - Event method names use camelCase — the method name becomes the event name sent to Mixpanel
- Methods MUST return params synchronously — never return a Promise
- Deduplicate high-frequency events — prevent Mixpanel usage spikes (e.g., use in-memory Set for per-session dedup)
- 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
// 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
// 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
import { defaultLogger } from '@onekeyhq/shared/src/logger/logger';
defaultLogger.myScope.myScene.myEventName({ key: 'foo', value: 'bar' });
Decorator Types
| Decorator | Destination | Use Case |
|---|---|---|
@LogToServer() |
Mixpanel analytics server | User behavior tracking, business metrics |
@LogToLocal() |
Device local log (React Native logger) | Debugging, device-side diagnostics |
@LogToConsole() |
Console only | Dev-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
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?