Claude-initial-setup automated-review-setup
install
source · Clone the upstream repo
git clone https://github.com/VersoXBT/claude-initial-setup
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/VersoXBT/claude-initial-setup "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/code-review/automated-review-setup" ~/.claude/skills/versoxbt-claude-initial-setup-automated-review-setup && rm -rf "$T"
manifest:
skills/code-review/automated-review-setup/SKILL.mdsource content
Automated Code Review Setup
Automate code quality enforcement with linters, formatters, pre-commit hooks, and CI checks. Catch issues before human review so reviewers can focus on logic and design.
When to Use
- Setting up a new JavaScript/TypeScript project
- Adding linting or formatting to an existing project
- Configuring Git pre-commit hooks
- Setting up CI/CD quality gates
- Establishing CODEOWNERS for automatic reviewer assignment
Core Patterns
ESLint Configuration
Modern flat config for TypeScript projects.
// eslint.config.js import eslint from '@eslint/js'; import tseslint from 'typescript-eslint'; import eslintPluginImport from 'eslint-plugin-import'; export default tseslint.config( eslint.configs.recommended, ...tseslint.configs.recommended, { rules: { // Prevent common bugs 'no-console': 'warn', 'no-debugger': 'error', 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', }], // Enforce code quality '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/no-explicit-any': 'warn', '@typescript-eslint/no-non-null-assertion': 'warn', // Import organization 'import/order': ['error', { groups: ['builtin', 'external', 'internal', 'parent', 'sibling'], 'newlines-between': 'always', alphabetize: { order: 'asc' }, }], }, }, { ignores: ['dist/', 'node_modules/', 'coverage/'], } );
Prettier Configuration
Set up Prettier for consistent formatting.
// .prettierrc { "semi": true, "singleQuote": true, "trailingComma": "all", "printWidth": 100, "tabWidth": 2, "arrowParens": "avoid", "endOfLine": "lf" }
// .prettierignore dist node_modules coverage pnpm-lock.yaml package-lock.json
// package.json scripts { "scripts": { "lint": "eslint .", "lint:fix": "eslint . --fix", "format": "prettier --write .", "format:check": "prettier --check ." } }
Pre-Commit Hooks with Husky and lint-staged
Run linters only on staged files for fast feedback.
# Install npm install -D husky lint-staged npx husky init
// package.json { "lint-staged": { "*.{ts,tsx,js,jsx}": [ "eslint --fix", "prettier --write" ], "*.{json,md,yml,yaml}": [ "prettier --write" ], "*.{css,scss}": [ "prettier --write" ] } }
# .husky/pre-commit npx lint-staged
# .husky/commit-msg (optional: enforce conventional commits) npx --no -- commitlint --edit "$1"
Python Pre-Commit Hooks
Use the pre-commit framework with Ruff for Python projects.
# .pre-commit-config.yaml repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.5.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-added-large-files args: ['--maxkb=500'] - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.3.0 hooks: - id: ruff args: [--fix] - id: ruff-format
pip install pre-commit && pre-commit install
CODEOWNERS
Automatically assign reviewers based on file ownership.
# .github/CODEOWNERS # Default owners for everything * @team-lead # Frontend team owns UI code /src/components/ @frontend-team /src/hooks/ @frontend-team /src/styles/ @frontend-team # Backend team owns API and database /src/api/ @backend-team /src/db/ @backend-team /src/middleware/ @backend-team # Security-sensitive files require security review /src/auth/ @security-team @backend-team
CI Linting Pipeline
Run quality checks in CI to block merging of non-conforming code.
# .github/workflows/quality.yml name: Code Quality on: pull_request: branches: [main, develop] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' - run: npm ci - run: npm run lint - run: npm run format:check - run: npx tsc --noEmit
Anti-Patterns
- Configuring rules as errors during initial adoption (use warnings first, tighten later)
- Running linters on the entire codebase in pre-commit hooks instead of only staged files
- Having linter and formatter conflict (ESLint style rules vs Prettier)
- Skipping hooks with
as a habit instead of fixing the issue--no-verify - Over-configuring ESLint with hundreds of rules instead of extending a standard config
- Not including a
causing inconsistent formatting across editors.prettierrc - Setting up CODEOWNERS without matching your team structure
Quick Reference
| Tool | Purpose | Config File |
|---|---|---|
| ESLint | Catch bugs and enforce patterns | |
| Prettier | Consistent formatting | |
| Husky | Git hook management | |
| lint-staged | Run tools on staged files only | or |
| commitlint | Enforce commit message format | |
| CODEOWNERS | Auto-assign reviewers | |
| Ruff | Python linting + formatting | |
| pre-commit | Python/polyglot hook framework | |
| Setup Order |
|---|
| 1. Prettier (formatting baseline) |
| 2. ESLint (bug catching, disable style rules handled by Prettier) |
| 3. Husky + lint-staged (pre-commit enforcement) |
| 4. CI pipeline (final gate) |
| 5. CODEOWNERS (reviewer assignment) |