Claude-skill-registry ln-741-linter-configurator

Configures ESLint, Prettier, Ruff, and .NET analyzers

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/ln-741-linter-configurator" ~/.claude/skills/majiayu000-claude-skill-registry-ln-741-linter-configurator-20df8b && rm -rf "$T"
manifest: skills/data/ln-741-linter-configurator/SKILL.md
source content

ln-741-linter-configurator

Type: L3 Worker Category: 7XX Project Bootstrap Parent: ln-740-quality-setup

Configures code linting and formatting tools for TypeScript, .NET, and Python projects.


Purpose & Scope

Does:

  • Detects which linter stack to configure based on project type
  • Checks for existing linter configurations
  • Generates appropriate config files from templates
  • Installs required dependencies
  • Verifies linter runs without errors

Does NOT:

  • Configure pre-commit hooks (ln-742 does this)
  • Set up test infrastructure (ln-743 does this)
  • Modify source code

Supported Stacks

TechnologyLinterFormatterConfig Files
TypeScript/ReactESLint 9+ (flat config)Prettier
eslint.config.mjs
,
.prettierrc
.NETRoslyn Analyzersdotnet format
.editorconfig
,
Directory.Build.props
PythonRuffRuff (built-in)
ruff.toml
or
pyproject.toml

Phase 1: Check Existing Configuration

Before generating configs, check what already exists.

Files to Check:

StackConfig FilesGlob Pattern
TypeScriptESLint config
eslint.config.*
,
.eslintrc*
TypeScriptPrettier config
.prettierrc*
,
prettier.config.*
.NETEditor config
.editorconfig
.NETBuild props
Directory.Build.props
PythonRuff config
ruff.toml
,
pyproject.toml

Decision Logic:

  1. If config exists and is complete: SKIP (inform user)
  2. If config exists but incomplete: ASK user to merge or replace
  3. If no config exists: CREATE from template

Phase 2: Generate Configuration

Use templates from references/ folder. Customize placeholders based on project.

TypeScript/React:

  1. Copy
    eslint_template.mjs
    to project root as
    eslint.config.mjs
  2. Copy
    prettier_template.json
    as
    .prettierrc
  3. Add scripts to
    package.json
    :
    • "lint": "eslint ."
    • "lint:fix": "eslint . --fix"
    • "format": "prettier --write ."
    • "format:check": "prettier --check ."

.NET:

  1. Copy
    editorconfig_template.ini
    as
    .editorconfig
  2. Copy
    directory_build_props_template.xml
    as
    Directory.Build.props
  3. Ensure analyzers package reference included

Python:

  1. Copy
    ruff_template.toml
    as
    ruff.toml
    • OR merge into existing
      pyproject.toml
      under
      [tool.ruff]
  2. Add scripts to
    pyproject.toml
    or document commands

Phase 3: Install Dependencies

Install required packages for each stack.

TypeScript/React:

npm install -D eslint @eslint/js typescript-eslint eslint-plugin-react eslint-plugin-react-hooks eslint-config-prettier prettier

CRITICAL:

eslint-config-prettier
is REQUIRED to prevent ESLint/Prettier conflicts.

.NET:

  • Analyzers configured via Directory.Build.props
  • No separate install needed

Python:

pip install ruff
# OR with uv:
uv add --dev ruff

Phase 4: Verify Setup

After configuration, verify linter works.

TypeScript:

npm run lint
npm run format:check

Expected: Exit code 0

.NET:

dotnet format --verify-no-changes

Expected: Exit code 0

Python:

ruff check .
ruff format --check .

Expected: Exit code 0

On Failure: Check error output, adjust config, re-verify.


Critical Rules

RULE 1: Always include

eslint-config-prettier
when using ESLint + Prettier together.

RULE 2: Use ESLint flat config format (eslint.config.mjs), NOT legacy .eslintrc.

RULE 3: Ruff replaces Black, isort, flake8, and many other Python tools. Do NOT install them separately.

RULE 4: Never disable strict TypeScript rules without documented reason.


Definition of Done

  • Appropriate config files created for detected stack
  • Dependencies installed
  • Lint command runs without errors on project source
  • Format command runs without errors
  • No ESLint/Prettier conflicts (eslint-config-prettier installed)
  • User informed of available lint/format commands

Reference Files

FilePurpose
eslint_template.mjsESLint flat config template
prettier_template.jsonPrettier config template
editorconfig_template.ini.NET editorconfig template
directory_build_props_template.xml.NET analyzers template
ruff_template.tomlPython Ruff config template
linter_guide.mdDetailed configuration guide

Error Handling

ErrorCauseResolution
ESLint/Prettier conflictMissing eslint-config-prettierInstall and add to config
TypeScript parse errorsParser version mismatchAlign typescript-eslint with TS version
Ruff not foundNot installed
pip install ruff
or
uv add ruff
dotnet format failsMissing SDKInstall .NET SDK

Version: 2.0.0 Last Updated: 2026-01-10