Receber por email
← Voltar para o catálogo

ln-741-linter-configurator

Configures ESLint, Prettier, Ruff, mypy, and .NET analyzers. Use when setting up linting and formatting for a project.

497estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add levnikolaevich/claude-code-skills

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/ln-741-linter-configurator/svg)](https://www.skillteca.com.br/skills/ln-741-linter-configurator)

Skills relacionadas

Ver todas de Desenvolvimento →

Alerta por categoria

Receba novas skills de Desenvolvimento toda segunda

1 email curto, só com as skills novas de Desenvolvimento. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa
Paths: File paths (references/, ../ln-*) are relative to this skill directory.

ln-741-linter-configurator

Type: L3 Worker Category: 7XX Project Bootstrap

Configures code linting, formatting, and type checking tools for TypeScript, Python, and .NET 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 (always latest versions, no pinning)
  • Generates unified lint script (scripts/lint.sh)
  • Verifies all linters run without errors

Does NOT:

  • Configure pre-commit hooks (separate worker)
  • Set up test infrastructure (separate worker)
  • Modify source code

Supported Stacks

| 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) |

Phase 1: Check Existing Configuration

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:

  1. If no config exists: CREATE from template
  2. If config exists but incomplete (fewer rules/tools than template): EXTEND to match template
  3. If config matches template: SKIP (inform user)

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 |

Phase 2: Generate Configuration

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

TypeScript:

  1. Copy eslint_template.ts to project root as eslint.config.ts
  2. Copy prettier_template.json as .prettierrc
  3. Add scripts to package.json:
  4. "lint": "eslint ."
  5. "lint:fix": "eslint . --fix"
  6. "format": "prettier --write ."
  7. "format:check": "prettier --check ."
  8. "typecheck": "tsc --noEmit"
  9. "lint:all": "npm run typecheck && npm run lint && npm run format:check"
  10. For React projects: uncomment React sections in template

.NET:

  1. Copy editorconfig_template.ini as .editorconfig
  2. Copy directory_build_props_template.xml as Directory.Build.props
  3. Ensure analyzers are included (SDK 5+ includes them by default)

Python:

  1. Copy ruff_template.toml as ruff.toml
  2. OR merge into existing pyproject.toml under [tool.ruff]
  3. Copy mypy_template.toml as mypy.toml
  4. OR merge into existing pyproject.toml under [tool.mypy]
  5. Update known-first-party in isort config to match project package name
  6. Update files in mypy config to match project source directories
  7. Generate advanced tool configs in pyproject.toml:
  8. [tool.importlinter] from importlinter_template.toml -- adapt root_packages and contracts to project layer structure
  9. [tool.vulture] from vulture_template.toml -- adapt paths to project source directory
  10. [tool.deptry] from deptry_template.toml -- adapt extend_exclude
  11. Generate .editorconfig from editorconfig_template.ini -- adapt max_line_length to match ruff line-length

Phase 3: Install Dependencies

Install 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.ts on Node.js < 22.10. On Node.js 22.10+ TypeScript configs are supported natively.

.NET:

  • Analyzers included in SDK 5+ — no separate install needed

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

Phase 4: Generate Lint Script

Generate scripts/lint.sh from lint_script_template.sh with ALL checks for the detected stack.

  1. Copy lint_script_template.sh to scripts/lint.sh
  2. Uncomment ALL check lines matching detected stack -- both basic AND advanced tools:

| 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 |

  1. Set TOTAL to match active checks count
  2. Uncomment matching auto-fix commands in --fix block
  3. Make executable: chmod +x scripts/lint.sh
  4. For TypeScript: ensure "lint:all" script exists in package.json

Phase 5: Verify Setup

After 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.

Phase 6: Fix Lint Errors

After generating all configs and installing tools, run bash scripts/lint.sh --all to see all violations.

  1. Run bash scripts/lint.sh --fix to auto-fix what ruff can
  2. Fix remaining errors manually (file by file)
  3. For C901 (complexity) on functions that cannot be refactored now: add # noqa: C901
  4. For deptry false positives: add [tool.deptry.per_rule_ignores] entries
  5. Repeat until bash scripts/lint.sh passes with 0 failures

Critical Rules

RULE 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 recommendedTypeChecked as ESLint default, not just recommended. 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).

Definition of Done

  • [ ] Appropriate config files created for detected stack
  • [ ] Dependencies installed (latest versions)
  • [ ] scripts/lint.sh generated with correct checks for stack
  • [ ] Lint command runs without errors on project source
  • [ ] Format command runs without errors
  • [ ] Type che
Compartilhar X LinkedIn