skills-catalog/ln-741-linter-configurator/SKILL.md
Configures ESLint, Prettier, Ruff, mypy, and .NET analyzers. Use when setting up linting and formatting for a project.
npx skillsauth add levnikolaevich/claude-code-skills ln-741-linter-configuratorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Paths: File paths (
shared/,references/,../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root. Ifshared/is missing, fetch files via WebFetch fromhttps://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/skills/{path}.
Type: L3 Worker Category: 7XX Project Bootstrap
Configures code linting, formatting, and type checking tools for TypeScript, Python, and .NET projects.
Does:
scripts/lint.sh)Does NOT:
| Technology | Linter | Type Checker | Formatter | Config Files |
|------------|--------|-------------|-----------|--------------|
| TypeScript | ESLint 9+ (flat config) | TypeScript (tsc) | Prettier | eslint.config.ts, .prettierrc |
| .NET | Roslyn Analyzers | Roslyn | dotnet format | .editorconfig, Directory.Build.props |
| Python | Ruff | mypy | Ruff (built-in) | ruff.toml, mypy.toml (or pyproject.toml) |
Before generating configs, check what already exists.
Files to Check:
| Stack | Config Files | Glob Pattern |
|-------|--------------|--------------|
| TypeScript | ESLint config | eslint.config.*, .eslintrc* |
| TypeScript | Prettier config | .prettierrc*, prettier.config.* |
| .NET | Editor config | .editorconfig |
| .NET | Build props | Directory.Build.props |
| Python | Ruff config | ruff.toml, pyproject.toml |
| Python | mypy config | mypy.toml, mypy.ini, pyproject.toml [tool.mypy] |
Decision Logic:
Completeness Check (Python):
| Aspect | Check | Template Standard |
|--------|-------|-------------------|
| Ruff rules | Count select entries | 23+ categories (see ruff_template.toml) |
| Ruff per-file-ignores | Tests section exists | tests/**/*.py with S101,S105,S106,T201 |
| Ruff advanced | mccabe, flake8-bugbear, isort | All present |
| MyPy | strict = true | Enabled |
| Advanced tools | import-linter, deptry, vulture in dev deps | All installed |
| Lint script | scripts/lint.sh with 7 checks | All 7 active |
| .editorconfig | File exists | Present |
Use templates from references/ folder. Customize placeholders based on project.
TypeScript:
eslint_template.ts to project root as eslint.config.tsprettier_template.json as .prettierrcpackage.json:
"lint": "eslint .""lint:fix": "eslint . --fix""format": "prettier --write .""format:check": "prettier --check .""typecheck": "tsc --noEmit""lint:all": "npm run typecheck && npm run lint && npm run format:check".NET:
editorconfig_template.ini as .editorconfigdirectory_build_props_template.xml as Directory.Build.propsPython:
ruff_template.toml as ruff.toml
pyproject.toml under [tool.ruff]mypy_template.toml as mypy.toml
pyproject.toml under [tool.mypy]known-first-party in isort config to match project package namefiles in mypy config to match project source directoriespyproject.toml:
[tool.importlinter] from importlinter_template.toml -- adapt root_packages and contracts to project layer structure[tool.vulture] from vulture_template.toml -- adapt paths to project source directory[tool.deptry] from deptry_template.toml -- adapt extend_exclude.editorconfig from editorconfig_template.ini -- adapt max_line_length to match ruff line-lengthInstall required packages. Always install latest versions — no version pinning.
TypeScript:
npm install -D eslint @eslint/js typescript-eslint eslint-config-prettier prettier eslint-plugin-unicorn jiti
For React projects, also install:
npm install -D eslint-plugin-react eslint-plugin-react-hooks
Note on jiti: Required for
eslint.config.tson Node.js < 22.10. On Node.js 22.10+ TypeScript configs are supported natively.
.NET:
Python:
uv add --dev ruff mypy import-linter deptry vulture pip-audit
# OR without uv:
pip install ruff mypy import-linter deptry vulture pip-audit
Generate scripts/lint.sh from lint_script_template.sh with ALL checks for the detected stack.
lint_script_template.sh to scripts/lint.sh| Stack | Checks | TOTAL | |-------|--------|-------| | Python | ruff check, ruff format, mypy, lint-imports, deptry, vulture, pip-audit | 7 | | TypeScript | typecheck, eslint, prettier, knip, depcruise | 5 | | .NET | dotnet build, dotnet format | 2 |
TOTAL to match active checks count--fix blockchmod +x scripts/lint.sh"lint:all" script exists in package.jsonAfter configuration, verify everything works.
TypeScript:
npx tsc --noEmit
npx eslint .
npx prettier --check .
.NET:
dotnet format --verify-no-changes
Python:
ruff check .
ruff format --check .
mypy
Unified verification:
bash scripts/lint.sh
Expected: Exit code 0 for all checks.
On Failure: Check error output, adjust config, re-verify.
After generating all configs and installing tools, run bash scripts/lint.sh --all to see all violations.
bash scripts/lint.sh --fix to auto-fix what ruff can# noqa: C901[tool.deptry.per_rule_ignores] entriesbash scripts/lint.sh passes with 0 failuresRULE 1: Always include
eslint-config-prettier(last in config) when using ESLint + Prettier together.
RULE 2: Use ESLint flat config format (
eslint.config.ts), 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.
RULE 5: Always run mypy alongside Ruff for Python projects. Ruff handles style/bugs, mypy handles type safety.
RULE 6: Use
recommendedTypeCheckedas ESLint default, not justrecommended. Downgrade individual rules if needed.
RULE 7: Never pin dependency versions in install commands -- always install latest.
RULE 8: Advanced static analysis tools (import-linter, deptry, vulture, pip-audit) are MANDATORY for Python projects, not optional.
Monitor (2.1.98+): When lint/typecheck verification commands expected >30s, use Monitor. Fallback: Bash(run_in_background=true).
scripts/lint.sh generated with correct checks for stackscripts/lint.sh runs ALL checks (7 for Python) with exit code 0.editorconfig created with settings matching ruff config| File | Purpose | |------|---------| | eslint_template.ts | ESLint flat config template (TypeScript) | | prettier_template.json | Prettier config template | | ruff_template.toml | Python Ruff config template | | mypy_template.toml | Python mypy config template | | lint_script_template.sh | Unified lint script template | | editorconfig_template.ini | .NET editorconfig template | | directory_build_props_template.xml | .NET analyzers template | | importlinter_template.toml | Python import-linter config template | | vulture_template.toml | Python vulture config template | | deptry_template.toml | Python deptry config template | | linter_guide.md | Detailed configuration guide |
| Error | Cause | Resolution |
|-------|-------|------------|
| ESLint/Prettier conflict | Missing eslint-config-prettier | Install and add as last config |
| ESLint projectService error | Config file not in tsconfig | Add to allowDefaultProject list |
| ESLint .ts config fails | Missing jiti | npm install -D jiti |
| TypeScript parse errors | Parser version mismatch | Align typescript-eslint with TS version |
| mypy missing stubs | Third-party library without types | Add [[mypy.overrides]] with ignore_missing_imports |
| mypy strict too strict | Hundreds of errors on first run | Start with relaxed config, enable strict gradually |
| Ruff not found | Not installed | pip install ruff or uv add ruff |
| dotnet format fails | Missing SDK | Install .NET SDK |
Version: 4.0.0 Last Updated: 2026-03-18
testing
Drafts and publishes fact-checked GitHub Discussions announcements. Use for releases, updates, or project news; not for release creation or issue responses.
testing
Prepares and publishes a tagged GitHub release from repository evidence. Use for an explicit release request; not for ordinary commits, packages, or community news.
testing
Validates, commits, pushes, and remotely verifies approved repository changes. Use when publication is requested; not for releases, package publishing, or announcements.
development
Reviews standalone skills and their configured distribution surfaces before publication. Use for skill release readiness; not for product code or implementation-plan review.