Claude-skill-registry code-quality-setup
Setup ESLint with Airbnb TypeScript config and Prettier formatter for code quality enforcement. Use when setting up new project, adding linting/formatting, or configuring code quality tools (e.g., "Setup ESLint and Prettier", "Configure code quality", "Add Airbnb linter").
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/code-quality-setup" ~/.claude/skills/majiayu000-claude-skill-registry-code-quality-setup && rm -rf "$T"
skills/data/code-quality-setup/SKILL.mdCode Quality Setup Skill
Configures ESLint with Airbnb TypeScript style guide and Prettier formatter for automated code quality enforcement.
What This Skill Does
Sets up complete code quality tooling:
- ESLint: JavaScript/TypeScript linter with Airbnb style guide
- Prettier: Opinionated code formatter
- Integration: ESLint + Prettier working together without conflicts
- Scripts: npm/bun scripts for linting and formatting
- Git Hooks: Optional pre-commit hooks for automatic checks
- VS Code: Editor integration settings
When to Use This Skill
Use when you need to:
- Set up linting and formatting for new project
- Add Airbnb style guide to existing project
- Configure ESLint + Prettier integration
- Update code quality configuration
- Add editor integration
Examples:
- "Setup ESLint and Prettier with Airbnb style guide"
- "Configure code quality tools"
- "Add linting to the project"
Tech Stack Requirements
Required:
- Node.js or Bun.js runtime
- TypeScript project
- package.json file
This Skill Installs:
- eslint
- @typescript-eslint/parser
- @typescript-eslint/eslint-plugin
- eslint-config-airbnb-typescript
- eslint-config-airbnb-base
- eslint-plugin-import
- prettier
- eslint-config-prettier
- eslint-plugin-prettier
Configuration Files Generated
1. .eslintrc.json
ESLint configuration with Airbnb TypeScript rules:
{ "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": "latest", "sourceType": "module", "project": "./tsconfig.json" }, "extends": [ "airbnb-base", "airbnb-typescript/base", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended" ], "plugins": ["@typescript-eslint", "import"], "rules": { "import/prefer-default-export": "off", "class-methods-use-this": "off", "no-console": "warn", "@typescript-eslint/no-explicit-any": "error" } }
2. .prettierrc
Prettier formatting rules:
{ "semi": true, "trailingComma": "es5", "singleQuote": true, "printWidth": 100, "tabWidth": 2, "arrowParens": "always" }
3. .prettierignore
Files to ignore:
node_modules dist build coverage *.min.js
4. .eslintignore
Files to ignore:
node_modules dist build coverage
5. package.json scripts
Add these scripts:
{ "scripts": { "lint": "eslint . --ext .ts,.tsx", "lint:fix": "eslint . --ext .ts,.tsx --fix", "format": "prettier --write \"src/**/*.{ts,tsx,json,md}\"", "format:check": "prettier --check \"src/**/*.{ts,tsx,json,md}\"" } }
6. .vscode/settings.json (Optional)
VS Code integration:
{ "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, "eslint.validate": [ "javascript", "typescript" ] }
Airbnb Style Guide Key Rules
This configuration enforces:
Variables:
- Use
by default,const
when reassignment neededlet - No
usagevar - Block-scoped declarations
Functions:
- Arrow functions for anonymous functions
- Function declarations for named functions
- Default parameters over conditional assignment
Objects & Arrays:
- Literal syntax (
,{}
)[] - Object/array spread over
Object.assign() - Destructuring for multiple values
- Shorthand properties and methods
Strings:
- Template literals over concatenation
- Single quotes for strings (Prettier handles this)
Naming:
- camelCase for variables and functions
- PascalCase for classes and types
- UPPER_SNAKE_CASE for constants
TypeScript Specific:
- No
types (error level)any - Explicit return types for exported functions
- Interface over type when possible
- Proper generic naming
Code Style:
- Semicolons required
- 2-space indentation (configurable)
- Trailing commas in multiline
- Consistent spacing
Installation Process
Step 1: Install Dependencies
Using npm:
npm install -D eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-config-airbnb-typescript eslint-config-airbnb-base eslint-plugin-import prettier eslint-config-prettier eslint-plugin-prettier
Using Bun:
bun add -D eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-config-airbnb-typescript eslint-config-airbnb-base eslint-plugin-import prettier eslint-config-prettier eslint-plugin-prettier
Step 2: Create Configuration Files
Generate all configuration files listed above.
Step 3: Update package.json
Add lint and format scripts.
Step 4: Run Initial Format
npm run format npm run lint:fix
Step 5: Verify Setup
npm run lint
Custom Rule Adjustments
Common rules to adjust based on project needs:
{ "rules": { // Disable default export requirement "import/prefer-default-export": "off", // Allow class methods without 'this' "class-methods-use-this": "off", // Warn on console.log (don't error) "no-console": "warn", // Error on any types "@typescript-eslint/no-explicit-any": "error", // Allow unused vars with underscore prefix "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }], // Adjust max line length "max-len": ["warn", { "code": 100, "ignoreComments": true, "ignoreStrings": true }] } }
Git Hooks (Optional)
Using Husky + lint-staged
Install:
npm install -D husky lint-staged npx husky install
Add .husky/pre-commit:
#!/bin/sh . "$(dirname "$0")/_/husky.sh" npx lint-staged
Add to package.json:
{ "lint-staged": { "*.{ts,tsx}": [ "eslint --fix", "prettier --write" ] } }
Editor Integration
VS Code Extensions
Install these extensions:
- ESLint (dbaeumer.vscode-eslint)
- Prettier - Code formatter (esbenp.prettier-vscode)
VS Code Settings
Create
.vscode/settings.json with the configuration above.
Troubleshooting
ESLint Parsing Errors
Issue:
Parsing error: Cannot read file 'tsconfig.json'
Fix: Ensure parserOptions.project points to correct tsconfig.json
Prettier Conflicts
Issue: ESLint and Prettier rules conflict Fix: Ensure
eslint-config-prettier is last in extends array
Import Resolution
Issue: ESLint can't resolve imports with
@/ alias
Fix: Add to .eslintrc.json:
{ "settings": { "import/resolver": { "typescript": { "project": "./tsconfig.json" } } } }
Install:
npm install -D eslint-import-resolver-typescript
Validation Checklist
After setup, verify:
- All dependencies installed
- Configuration files created
- Scripts added to package.json
-
runs without errorsnpm run lint -
formats codenpm run format - VS Code shows linting errors
- Format on save works in editor
- No ESLint/Prettier conflicts
Integration with Project
This skill integrates with project structure:
project-root/ ├── .eslintrc.json # ESLint config ├── .prettierrc # Prettier config ├── .eslintignore # ESLint ignore ├── .prettierignore # Prettier ignore ├── .vscode/ │ └── settings.json # Editor config ├── package.json # With scripts └── src/ # Your code (will be linted)
Post-Setup Actions
After setup:
- Run
to format all codenpm run format - Run
to auto-fix issuesnpm run lint:fix - Manually fix remaining linting errors
- Commit configuration files
- Share with team via git
Related Skills
- ddd-context-generator: Generates code following these rules
- ddd-validator: Can check for code quality violations
- Use this skill BEFORE generating code for best results
Best Practices
- Run before committing: Always lint and format before commits
- Fix incrementally: Don't disable rules, fix the issues
- Team agreement: Discuss and agree on custom rules
- CI/CD integration: Add linting to CI pipeline
- Regular updates: Keep dependencies updated
Note: This skill sets up code quality tooling. For architectural validation, use
ddd-validator skill.