1k-code-quality
Ensures adherence to strict code quality standards, including linting and type safety.
Install
mkdir -p .claude/skills/1k-code-quality && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3342" && unzip -o skill.zip -d .claude/skills/1k-code-quality && rm skill.zipInstalls to .claude/skills/1k-code-quality
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Code quality standards — lint (eslint/oxlint), type check (tsc), pre-commit hooks, and comment conventions. All comments must be in English.Key capabilities
- →Enforce linting via yarn agent:check
- →Validate TypeScript types with tsc
- →Apply pre-commit hooks for staged files
- →Ensure code comments are written in English
- →Maintain single responsibility principle in functions
How it works
The skill uses yarn commands to trigger linting and type checking tools like oxlint and tsc. It enforces repository-specific quality standards through pre-commit gates.
Inputs & outputs
When to use 1k-code-quality
- →Configuring ESLint or oxlint
- →Setting up pre-commit hooks
- →Running tsc type checks
About this skill
Code Quality
Linting, documentation, and general code quality standards for OneKey.
Lint Commands
# Agent pre-commit gate (fast, only staged files)
yarn agent:check --profile commit
# Agent PR readiness gate (local staged checks + GitHub CI/review summary)
yarn agent:check --profile pr
# CI only (full project check)
yarn lint # Comprehensive: TypeScript, ESLint, folder structure, i18n
yarn lint:only # Quick: oxlint only
yarn tsc:only # Full type check
yarn lint:agent-context # Skill metadata and startup-context budgets
Note: yarn lint is for CI only. For agent workflows, always use
yarn agent:check first; use lower-level commands only when debugging the log
path reported by agent:check.
Pre-Commit Workflow
For fast pre-commit validation:
yarn agent:check --profile commit
Common Lint Fixes
// Unused variable - prefix with underscore
const { used, unused } = obj; // ❌ Error: 'unused' is defined but never used
const { used, unused: _unused } = obj; // ✅ OK
// Unused parameter - prefix with underscore
function foo(used: string, unused: number) {} // ❌ Error
function foo(used: string, _unused: number) {} // ✅ OK
// Floating promise - add void or await
someAsyncFunction(); // ❌ Error: Promises must be awaited
void someAsyncFunction(); // ✅ OK (fire-and-forget)
await someAsyncFunction(); // ✅ OK (wait for result)
Language Requirements
All comments must be written in English:
// ✅ GOOD: English comment
// Calculate the total balance including pending transactions
// ❌ BAD: Chinese comment
// 计算总余额,包括待处理的交易
// ✅ GOOD: JSDoc in English
/**
* Fetches user balance from the blockchain.
* @param address - The wallet address to query
* @returns The balance in native token units
*/
async function fetchBalance(address: string): Promise<bigint> {
// ...
}
When to Comment
// ✅ GOOD: Explain non-obvious logic
// Use 1.5x gas limit to account for estimation variance on this chain
const gasLimit = estimatedGas * 1.5n;
// ✅ GOOD: Explain business logic
// Premium users get 50% discount on transaction fees
const fee = isPremium ? baseFee * 0.5 : baseFee;
// ❌ BAD: Obvious comment
// Set the value to 5
const value = 5;
Development Principles
Single Responsibility
Each function should perform a single, atomic task:
// ✅ GOOD: Single responsibility
async function fetchUserBalance(userId: string): Promise<Balance> {
const user = await getUser(userId);
return await getBalanceForAddress(user.address);
}
// ❌ BAD: Multiple responsibilities
async function fetchUserBalanceAndUpdateUI(userId: string) {
const user = await getUser(userId);
const balance = await getBalanceForAddress(user.address);
setBalanceState(balance);
showNotification('Balance updated');
logAnalytics('balance_fetched');
}
Avoid Over-Abstraction
Don't create helpers for one-time operations:
// ❌ BAD: Over-abstracted
const createUserFetcher = (config: Config) => {
return (userId: string) => {
return fetchWithConfig(config, `/users/${userId}`);
};
};
const fetchUser = createUserFetcher(defaultConfig);
const user = await fetchUser(userId);
// ✅ GOOD: Simple and direct
const user = await fetch(`/api/users/${userId}`).then(r => r.json());
Detailed Guides
Code Quality Standards
See code-quality.md for comprehensive guidelines:
- Linting commands and pre-commit workflow
- Comment and documentation standards
- Language requirements (English only)
- Single responsibility principle
- Avoiding over-abstraction
- Consistent naming conventions
- Code quality checklist
Fixing Lint Warnings
See fix-lint.md for complete lint fix workflow:
- Analyzing lint warnings
- Categorizing lint errors
- Common fix patterns by category
- Spellcheck fixes
- Unused variable/parameter handling
- Automated fix strategies
- Testing after fixes
Spellcheck
If a technical term triggers spellcheck errors:
# Check if word exists
grep -i "yourword" development/spellCheckerSkipWords.txt
# Add if not present (ask team lead first)
echo "yourword" >> development/spellCheckerSkipWords.txt
Agent Context Harness
yarn lint:agent-context enforces repository skill discovery and startup
context budgets. Configuration lives in
development/lint/agent-context.config.json. When adding or restructuring a
skill, keep detailed guidance in references, use Codex explicit policy for
operational workflows, and stay within the configured catalog and instruction
budgets.
Checklist
Pre-commit
-
yarn agent:check --profile commitpasses
Code Quality
- All comments are in English
- No commented-out code committed
- Functions have single responsibility
- No unnecessary abstractions
- Consistent naming conventions
Related Skills
/1k-sentry- Sentry error analysis and fixes/1k-test-version- Test version creation workflow/1k-coding-patterns- General coding patterns
When not to use it
- →When performing full project CI checks (use yarn lint instead)
Prerequisites
Limitations
- →Requires English-only comments
- →Restricts over-abstraction of code
How it compares
Unlike manual linting, this skill provides specific agent-context gates that distinguish between local pre-commit checks and full CI project validation.
Compared to similar skills
1k-code-quality side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| 1k-code-quality (this skill) | 1 | 1mo | Review | Beginner |
| dependency-upgrade | 26 | 5mo | Review | Intermediate |
| validate-typescript | 5 | 9mo | Review | Beginner |
| ts-testing | 6 | 8mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by OneKeyHQ
View all by OneKeyHQ →You might also like
dependency-upgrade
wshobson
Manage major dependency version upgrades with compatibility analysis, staged rollout, and comprehensive testing. Use when upgrading framework versions, updating major dependencies, or managing breaking changes in libraries.
validate-typescript
BerryKuipers
Run TypeScript compiler type-checking (tsc --noEmit) to validate type safety and catch type errors. Works with any TypeScript project. Returns structured output with error counts, categories (type/syntax/import errors), and affected files. Used for quality gates and pre-commit validation.
ts-testing
johnlindquist
Design, implement, and maintain high‑value TypeScript test suites using popular JS/TS testing libraries. Use this skill whenever the user is adding tests, debugging failing tests, or refactoring code that should be covered by tests.
react-best-practices
redpanda-data
Client-side React performance optimization patterns.
feature-flags
Use when feature flag tests fail, flags need updating, understanding @gate pragmas, debugging channel-specific test failures, or adding new flags to React.
typescript-code-review
anyproto
Perform comprehensive code reviews for TypeScript projects, analyzing type safety, best practices, performance, security, and code quality with actionable feedback