Helps fix ESLint errors and warnings in the OneKey codebase. Use when running yarn lint and encountering warnings, cleaning up code before committing, or fixing spellcheck, unused variable, or other ESLint warnings.
Installation
Details
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
skills listSkill Instructions
name: fix-lint description: Helps fix ESLint errors and warnings in the OneKey codebase. Use when running yarn lint and encountering warnings, cleaning up code before committing, or fixing spellcheck, unused variable, or other ESLint warnings.
Fix Lint Skill
This skill helps fix ESLint warnings in the OneKey app-monorepo codebase.
Usage
Use this skill when:
- Running
yarn lintand encountering warnings - Cleaning up code before committing
- Fixing spellcheck, unused variable, or other ESLint warnings
Workflow
Step 1: Run Lint and Analyze Warnings
NODE_OPTIONS="--max-old-space-size=8192" yarn lint:only 2>&1 | tail -100
Step 2: Categorize Warnings
Warnings typically fall into these categories:
| Category | Rule | Fix Strategy |
|---|---|---|
| Spellcheck | @cspell/spellchecker | Add to skip list or fix typo |
| Unused vars | @typescript-eslint/no-unused-vars | Remove import or prefix with _ |
| Non-null assertion | @typescript-eslint/no-non-null-assertion | Add type guard or cast |
| Nested components | react/no-unstable-nested-components | Extract component |
| Import order | import/order | Fix import ordering |
Step 3: Fix Each Category
Spellcheck Warnings (@cspell/spellchecker)
-
Evaluate the word: Is it a legitimate technical term or a typo?
-
For legitimate technical terms, add to skip list:
# File: development/spellCheckerSkipWords.txt # Add the word on a new line at the end of the file newTechnicalTerm -
For known typos that can't be fixed (e.g., in translation keys), add with a comment above:
# Known typo - exsited -> existed (ETranslations.some_key) exsited -
Common legitimate terms to add:
- Build tools:
chunkhash,minimizer,rspack - Blockchain:
lovelace,Kusama,workchain,feebump - UI:
Virtualized,overscan,overscrolling - Crypto:
nacl,Bech32,secp256k1
- Build tools:
Unused Variable Warnings (@typescript-eslint/no-unused-vars)
-
Unused imports - Remove the import:
// Before import { Used, Unused } from 'package'; // After import { Used } from 'package'; -
Unused function parameters - Prefix with underscore:
// Before function foo(used: string, unused: number) { return used; } // After function foo(used: string, _unused: number) { return used; } -
Unused destructured variables - Prefix with underscore:
// Before const { used, unused } = obj; // After const { used, unused: _unused } = obj; -
Unused assigned variables - Prefix with underscore:
// Before const unused = getValue(); // After const _unused = getValue();
Non-null Assertion Warnings (@typescript-eslint/no-non-null-assertion)
Add type assertions or guards:
// Before
const value = obj.prop!.name;
// After
const value = (obj.prop as { name: string } | undefined)?.name;
Nested Component Warnings (react/no-unstable-nested-components)
Extract the component outside the parent:
// Before
function Parent() {
const NestedComponent = () => <div />;
return <NestedComponent />;
}
// After
const ExtractedComponent = () => <div />;
function Parent() {
return <ExtractedComponent />;
}
Step 4: Verify Fixes
NODE_OPTIONS="--max-old-space-size=8192" yarn lint:only 2>&1 | tail -50
Common Patterns in This Codebase
Translation Key Typos
Translation enum keys (e.g., ETranslations.perp_invaild_tp_sl) cannot be easily renamed as they're managed externally. Add to skip list with a comment:
# Known typo in translation key - invaild -> invalid
invaild
Provider API Methods
Methods like openInMobileApp that throw NotImplemented() often have unused parameters:
public async openInMobileApp(
_request: IJsBridgeMessagePayload,
_params: ISignMessagePayload,
): Promise<void> {
throw new NotImplemented();
}
Destructuring from Hooks
When destructuring from hooks but not using all values:
const { used, unused: _unused } = usePromiseResult(...);
Tips
-
Run lint with increased memory for large codebases:
NODE_OPTIONS="--max-old-space-size=8192" yarn lint:only -
Check if word is in skip list before adding:
grep -i "wordToCheck" development/spellCheckerSkipWords.txt -
For bulk fixes, use Task agents to parallelize work across multiple files
-
Verify no regressions after fixes:
yarn tsc:only
Files Modified During Lint Fixes
development/spellCheckerSkipWords.txt- Add technical terms and known typos (one word per line, use#for comments)- Various
.tsand.tsxfiles - Fix unused variables and imports
More by OneKeyHQ
View allFilters specific errors from Sentry reporting in this OneKey monorepo. Use when needing to ignore/suppress/filter Sentry errors, add error exclusions, or stop certain errors from being reported. Handles platform-specific filtering (desktop/mobile/web/extension).
Guide for adding new blockchain chains to OneKey. Use when implementing new chain support, adding blockchain protocols, or understanding chain architecture. Triggers on chain, blockchain, protocol, network, coin, token, add chain, new chain.
Cross-platform development patterns for OneKey. Use when writing platform-specific code, handling platform differences, or understanding platform extensions. Triggers on platform, native, web, desktop, extension, mobile, ios, android, electron, react native.
Creates test version branches for testing app upgrade functionality. Use when preparing upgrade test builds, testing version migration, or when the user mentions test version, 9005.x.x version numbers, upgrade testing, or version upgrade QA. Automates branch creation, version bumping, and build number hardcoding for upgrade flow verification.
