协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
fix-lint【开发与工程】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.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
This skill helps fix ESLint warnings in the OneKey app-monorepo codebase.
Use this skill when:
yarn lint and encountering warningsNODE_OPTIONS="--max-old-space-size=8192" yarn lint:only 2>&1 | tail -100
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 |
@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:
chunkhash, minimizer, rspacklovelace, Kusama, workchain, feebumpVirtualized, overscan, overscrollingnacl, Bech32, secp256k1@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();
@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;
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 />;
}
NODE_OPTIONS="--max-old-space-size=8192" yarn lint:only 2>&1 | tail -50
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
Methods like openInMobileApp that throw NotImplemented() often have unused parameters:
public async openInMobileApp(
_request: IJsBridgeMessagePayload,
_params: ISignMessagePayload,
): Promise<void> {
throw new NotImplemented();
}
When destructuring from hooks but not using all values:
const { used, unused: _unused } = usePromiseResult(...);
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
development/spellCheckerSkipWords.txt - Add technical terms and known typos (one word per line, use # for comments).ts and .tsx files - Fix unused variables and imports