Claude-skill-registry eslint-config

Generates ESLint 9+ configuration using flat config format. Creates eslint.config.cjs with Vue and TypeScript linting rules for code quality enforcement.

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/eslint-config" ~/.claude/skills/majiayu000-claude-skill-registry-eslint-config && rm -rf "$T"
manifest: skills/data/eslint-config/SKILL.md
source content

ESLint Config Skill

Purpose

Generate ESLint configuration file for code linting with Vue and TypeScript support using ESLint 9+ flat config format.

🚨 MANDATORY FILE COUNT

This skill MUST create exactly 1 file:

  • eslint.config.cjs
    (preferred format)

🔍 BEFORE GENERATING - CRITICAL RESEARCH REQUIRED

⚠️ HIGH PRIORITY: Verify current ESLint standards to prevent outdated code generation

Required Research Steps:

  1. ESLint Version: Verify current ESLint version supports flat config (9.0+)
  2. Plugin Compatibility: Check all plugins are compatible with current ESLint version:
    • eslint-plugin-vue
      - Verify latest version and Vue 3 support
    • @typescript-eslint/eslint-plugin
      - Verify compatibility with TypeScript version
    • eslint-plugin-prettier
      - Check if still recommended or if Prettier should run separately
  3. Flat Config Format: Verify flat config is still the recommended format (not legacy
    .eslintrc.*
    )
  4. Parser Configuration: Verify
    vue-eslint-parser
    and
    @typescript-eslint/parser
    configuration syntax
  5. Test Framework Detection:
    • Check
      package.json
      for test framework dependencies
    • If
      vitest
      found: Use
      globals.vitest
      or
      globals.node
    • If
      jest
      found: Use
      globals.jest
    • If both or neither: Prompt user which test framework to use
  6. Deprecated Rules: Check if any rules have been deprecated or renamed
  7. Module Format: Verify project's module system from
    package.json
    "type" field for file format selection

Output

Create the file:

eslint.config.cjs

Supported Formats (in order of preference):

  1. eslint.config.cjs
    (preferred - CommonJS format, works with any package.json type)
  2. eslint.config.mjs
    (ES Module format, explicit ESM)
  3. eslint.config.js
    (follows package.json "type" field)

Format Selection Logic:

  • Default: Use
    eslint.config.cjs
    (most compatible)
  • If package.json has
    "type": "module"
    and user prefers ESM: Consider
    .mjs
  • .js
    format requires package.json type to match module system

Example File

See:

examples.md
in this directory for complete examples and detailed explanations.

⚠️ IMPORTANT: The examples.md file contains December 2025 configurations. Always verify current standards before using.

Execution Checklist

  • Research current ESLint version and flat config status (ESLint 9+)
  • Verify all plugin versions and compatibility
  • Check for deprecated rules or configuration options
  • Detect test framework from package.json dependencies
  • If test framework unclear, prompt user
  • Verify parser configuration syntax for Vue and TypeScript
  • Check if legacy
    .eslintrc.*
    migration notes needed
  • Create
    eslint.config.cjs
    with current standards
  • Verify file format matches project module system

🛑 BLOCKING VALIDATION CHECKPOINT

STOP! Before proceeding to the next skill, verify:

Automated Verification

Run this command to verify the file exists:

if [ -f "eslint.config.cjs" ] || [ -f "eslint.config.mjs" ] || [ -f "eslint.config.js" ]; then
  echo "✓ ESLint configuration found"
  if [ -f "eslint.config.cjs" ]; then
    echo "✓ Using eslint.config.cjs (preferred format)"
  elif [ -f "eslint.config.mjs" ]; then
    echo "⚠ Using eslint.config.mjs (ESM format)"
  else
    echo "⚠ Using eslint.config.js (verify package.json type field)"
  fi
  
  # Check for legacy format (should not exist)
  if [ -f ".eslintrc.js" ] || [ -f ".eslintrc.json" ] || [ -f ".eslintrc.yml" ]; then
    echo "✗ Legacy .eslintrc.* file found - remove and use flat config only"
    exit 1
  fi
else
  echo "✗ ESLint configuration missing"
  exit 1
fi

Manual Verification

  1. eslint.config.cjs
    (or
    .mjs
    /
    .js
    ) exists at project root
  2. ✓ File uses ESLint 9+ flat config format (array export, not legacy object)
  3. ✓ File includes Vue, TypeScript, and Prettier plugins
  4. ✓ Test file configuration uses correct globals for detected test framework
  5. ✓ No legacy
    .eslintrc.*
    files exist in project
  6. ✓ All plugin versions are compatible with ESLint version
  7. ✓ Configuration follows current ESLint best practices

If Validation Fails

DO NOT PROCEED to the next skill. Create or fix the missing/incorrect file immediately.

Notes

  • ESLint 9+ Flat Config: Uses modern flat config format (not legacy
    .eslintrc.*
    )
  • Migration from Legacy: If upgrading, remove
    .eslintrc.*
    files and use flat config only
  • Plugin Compatibility: Always verify plugin versions match ESLint version
  • Test Framework Globals: Auto-detected from package.json (Vitest or Jest)
  • Console/Debugger: Allowed in development, warnings in production
  • Special Rules: Separate configurations for test files and TypeScript declaration files
  • Prettier Integration: ESLint runs Prettier as a rule (verify this is current best practice)
  • Module Format:
    .cjs
    preferred for maximum compatibility across all project types
  • Parser Chain: Vue files use
    vue-eslint-parser
    @typescript-eslint/parser
    for TypeScript
  • Always verify current standards - ESLint ecosystem evolves rapidly
  • Breaking Changes: ESLint major versions may change config format or rule behavior