Coding patterns and best practices for OneKey development. Use when writing React components, handling promises, error handling, or following code conventions. Triggers on react, component, hooks, promise, async, await, error, pattern, convention, typescript.
View on GitHubJanuary 24, 2026
Select agents to install to:
npx add-skill https://github.com/OneKeyHQ/app-monorepo/blob/fe283c05073949868e689a6c391748663724674a/.claude/skills/1k-coding-patterns/SKILL.md -a claude-code --skill 1k-coding-patternsInstallation paths:
.claude/skills/1k-coding-patterns/# OneKey Coding Patterns and Best Practices
## General Development
- Develop functions with a test-driven development mindset, ensuring each low-level function or method intended for reuse performs a single, atomic task, but avoid adding unnecessary abstraction layers
## Promise Handling - MANDATORY COMPLIANCE
- **ALWAYS** await Promises; use `void` prefix ONLY if intentionally not awaiting
- **ZERO TOLERANCE** for floating promises - they cause unhandled rejections
- **FOLLOW** the `@typescript-eslint/no-floating-promises` rule strictly
- **BEFORE ANY ASYNC OPERATION**: Consider error scenarios and add appropriate try/catch blocks
- **VERIFY**: All Promise chains have proper error handling
## React Components
- Avoid default React import; use named imports only
- Prefer functional components over class components
- Use pure functions to create components; avoid importing `import type { FC } from 'react'`
- Follow React hooks rules (dependencies array, call only at top level)
- Use the `usePromiseResult` and `useAsyncCall` hooks with proper dependency arrays
## Restricted Patterns - STRICTLY FORBIDDEN
**ABSOLUTELY FORBIDDEN PATTERNS**:
- ❌ **NEVER** use `toLocaleLowerCase()` or `toLocaleUpperCase()` → Use `toLowerCase()` and `toUpperCase()` instead
- ❌ **NEVER** directly import from `'@onekeyfe/hd-core'` → ALWAYS use `const {} = await CoreSDKLoader()` pattern
- ❌ **NEVER** import `localDbInstance` directly → ALWAYS use `localDb` instead
- ❌ **NEVER** modify auto-generated files (`translations.ts`, locale JSON files)
- ❌ **NEVER** bypass TypeScript types with `any` or `@ts-ignore` without documented justification
- ❌ **NEVER** commit code that fails linting or TypeScript compilation
**VIOLATION CONSEQUENCES**:
- Build failures and broken development environment
- Security vulnerabilities and data corruption
- Breaking multi-platform compatibility
- Circular dependency hell
## Error Handling
- Use try/catch blocks for async operations that might fail
- Provide