code-quality-management

Code Quality Management

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "code-quality-management" with this command: npx skills add d-oit/do-novelist-ai/d-oit-do-novelist-ai-code-quality-management

Code Quality Management

You enforce code quality standards through automated checks: Biome for formatting/linting, ESLint for React rules, TypeScript for type safety, Vitest for unit tests, and Playwright for E2E tests.

Quality Gates Workflow

Copy this checklist and track your progress:

Quality Gates Sequence:

  • Step 1: Format code (Biome)
  • Step 2: Lint code (ESLint + TypeScript)
  • Step 3: Type check (TypeScript)
  • Step 4: Run unit tests (Vitest)
  • Step 5: Run E2E tests (Playwright)

All-in-one quality check:

npm run lint && npm run type-check && npm run test

Quick Start

Install dependencies

npm install -D @biomejs/biome eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin npm install -D eslint-plugin-react-hooks eslint-plugin-react-refresh npm install -D husky lint-staged vitest @playwright/test

Configure package.json scripts

{ "scripts": { "build": "vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "lint:fix": "eslint . --ext ts,tsx --fix", "lint:ci": "eslint . --ext ts,tsx --max-warnings 0", "format": "biome format --write .", "format:check": "biome format --write --dry-run .", "type-check": "tsc --noEmit", "test": "vitest run", "test:coverage": "vitest run --coverage", "test:e2e": "playwright test", "test:e2e:ui": "playwright test --ui", "prepare": "husky" } }

Setup Biome

Create biome.json :

{ "$schema": "https://biomejs.dev/schemas/1.9.0/schema.json", "organizeImports": { "enabled": true }, "linter": { "enabled": true, "rules": { "recommended": true, "style": { "useImportType": "error", "useConst": "error" }, "suspicious": { "noExplicitAny": "warn" }, "correctness": { "noUnusedVariables": "error", "noUnusedImports": "error" } } }, "formatter": { "enabled": true } }

See BIOME.md for advanced configuration and import organization.

Setup ESLint

Create .eslintrc.cjs :

module.exports = { root: true, env: { browser: true, es2020: true }, extends: [ 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:react-hooks/recommended', ], ignorePatterns: ['dist', '.eslintrc.cjs'], parser: '@typescript-eslint/parser', plugins: ['react-refresh'], rules: { 'react-refresh/only-export-components': [ 'warn', { allowConstantExport: true }, ], '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], '@typescript-eslint/no-explicit-any': 'warn', 'react-hooks/rules-of-hook': 'error', 'react-hooks/exhaustive-deps': 'warn', }, };

See ESLINT.md for React-specific rules and customization.

Setup TypeScript

Use strict mode in tsconfig.json :

{ "compilerOptions": { "target": "ES2022", "lib": ["ES2022", "DOM", "DOM.Iterable"], "module": "ESNext", "skipLibCheck": true, "moduleResolution": "bundler", "allowImportingTsExtensions": true, "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", "strict": true, "noUncheckedIndexedAccess": true, "noImplicitOverride": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, "forceConsistentCasingInFileNames": true, "types": ["vite/client"] }, "include": ["src"] }

See TYPESCRIPT.md for advanced configuration and optimization.

Setup Pre-commit Hooks

npx husky init

Update .husky/pre-commit :

#!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" npm run lint:ci

Create .lintstagedrc.json :

{ ".{ts,tsx}": [ "biome check --write --no-errors-on-unmatched", "eslint --ext .ts,.tsx --fix --no-error-on-unmatched" ], ".{js,jsx}": [ "biome check --write --no-errors-on-unmatched", "eslint --fix --no-error-on-unmatched" ], "*.json": ["biome check --write"], "package.json": ["prettier --write"] }

See PRE-COMMIT.md for advanced hook configuration and commit message linting.

Setup Testing

Vitest (vitest.config.ts ):

import { defineConfig } from 'vitest/config'; import path from 'path'; export default defineConfig({ test: { globals: true, environment: 'jsdom', coverage: { provider: 'v8', reporter: ['text', 'html', 'lcov'] }, }, resolve: { alias: { '@': path.resolve(__dirname, './src') } }, });

Playwright (playwright.config.ts ):

import { defineConfig, devices } from '@playwright/test'; export default defineConfig({ testDir: './tests', fullyParallel: true, reporter: 'html', use: { baseURL: 'http://localhost:4173', trace: 'on-first-retry' }, projects: [{ name: 'chromium', use: { ...devices['Desktop Chrome'] } }], webServer: { command: 'npm run dev', url: 'http://localhost:4173', timeout: 120000, }, });

See TESTING.md for comprehensive test setup, coverage configuration, and E2E best practices.

Daily Workflow

Copy and track this checklist:

Daily Development:

  • Format during development: npm run format
  • Fix lint issues: npm run lint:fix
  • Run unit tests: npm run test:watch
  • Before committing: npm run lint:ci && npm run type-check && npm run test
  • Run E2E tests: npm run test:e2e

Fixing Issues

Quick fixes:

npm run format # Fix formatting npm run lint:fix # Fix linting npm run type-check # Check types npm run test # Run unit tests npm run test:e2e # Run E2E tests

Full quality check:

npm run lint && npm run type-check && npm run test

See TROUBLESHOOTING.md for common issues and solutions.

CI/CD Integration

GitHub Actions workflow (.github/workflows/quality.yml ):

name: Quality Checks on: [push, pull_request] jobs: quality: 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 format:check - run: npm run lint:ci - run: npm run type-check - run: npm run test:coverage - run: npx playwright install --with-deps - run: npm run test:e2e env: { CI: true }

Quality Standards

ALWAYS enforce:

  • No any types (use unknown with type guards)

  • Strict TypeScript configuration

  • Test coverage > 70%

  • Pre-commit validation

  • E2E testing for critical flows

NEVER:

  • Skip quality gates before committing

  • Commit with TypeScript/lint errors

  • Use any type without justification

  • Run Prettier on TS/JS files (use Biome instead)

Reference Files

For detailed configuration, see:

  • BIOME.md - Advanced Biome configuration, import organization, rules

  • ESLINT.md - ESLint setup, React rules, customization

  • TYPESCRIPT.md - TypeScript strict mode, advanced options

  • PRE-COMMIT.md - Husky setup, lint-staged, commit hooks

  • TESTING.md - Vitest and Playwright configuration

  • TROUBLESHOOTING.md - Common issues and solutions

Common Patterns

Running Tests

npm run test # Unit tests npm run test:watch # Watch mode npm run test:coverage # Coverage report npm run test:e2e # E2E tests npx playwright show-report # View test report

Quality Gate Sequence

During development

npm run format && npm run lint:fix

Before commit

npm run lint:ci && npm run type-check && npm run test

Full check (includes E2E)

npm run lint && npm run type-check && npm run test && npm run test:e2e

Remember: Code quality is not optional. Automated quality gates ensure consistency and catch errors early.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

typescript-guardian

No summary provided by upstream source.

Repository SourceNeeds Review
General

iterative-refinement

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

agent-coordination

No summary provided by upstream source.

Repository SourceNeeds Review
Research

web-search-researcher

No summary provided by upstream source.

Repository SourceNeeds Review