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").

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
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"
manifest: skills/data/code-quality-setup/SKILL.md
source content

Code 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
    const
    by default,
    let
    when reassignment needed
  • No
    var
    usage
  • 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
    any
    types (error level)
  • 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
  • npm run lint
    runs without errors
  • npm run format
    formats code
  • 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:

  1. Run
    npm run format
    to format all code
  2. Run
    npm run lint:fix
    to auto-fix issues
  3. Manually fix remaining linting errors
  4. Commit configuration files
  5. 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

  1. Run before committing: Always lint and format before commits
  2. Fix incrementally: Don't disable rules, fix the issues
  3. Team agreement: Discuss and agree on custom rules
  4. CI/CD integration: Add linting to CI pipeline
  5. Regular updates: Keep dependencies updated

Note: This skill sets up code quality tooling. For architectural validation, use

ddd-validator
skill.