configure-linting
/configure:linting
Check and configure linting tools against modern best practices.
When to Use This Skill
| Use this skill when... | Use another approach when... |
|---|---|
| Setting up modern linting (Biome, Ruff, Clippy) | Just running linter (use /lint:check skill) |
| Migrating from ESLint/Prettier to Biome | Linters already properly configured |
| Validating linter configuration | Fixing specific lint errors (run linter and fix) |
| Ensuring language-specific best practices | Simple script with no linting needs |
| Configuring pre-commit lint integration | Debugging linter issues (check linter logs) |
Context
- Project root: !
pwd - Biome config: !
find . -maxdepth 1 -name 'biome.json' -o -name 'biome.jsonc' - Ruff config: !
grep -l 'tool.ruff' pyproject.toml - Clippy config: !
grep -l 'lints.clippy' Cargo.toml - Legacy linters: !
find . -maxdepth 1 \( -name '.eslintrc*' -o -name '.flake8' -o -name '.pylintrc' \) - Package files: !
find . -maxdepth 1 \( -name 'package.json' -o -name 'pyproject.toml' -o -name 'Cargo.toml' \) - Pre-commit config: !
find . -maxdepth 1 -name '.pre-commit-config.yaml' - CI workflows: !
find .github/workflows -maxdepth 1 -name '*.yml'
Parameters
Parse from $ARGUMENTS:
--check-only: Report linting compliance status without modifications--fix: Apply all fixes automatically without prompting--linter <biome|ruff|clippy>: Override auto-detection and force specific linter
Modern linting preferences:
- JavaScript/TypeScript: Biome (unified linter + formatter, fast)
- Python: Ruff (replaces flake8, isort, pyupgrade)
- Rust: Clippy with workspace lints
Execution
Execute this linting configuration check:
Step 1: Detect project language and existing linters
Read the context values above and determine:
| Indicator | Language | Detected Linter |
|---|---|---|
biome.json |
JavaScript/TypeScript | Biome |
pyproject.toml [tool.ruff] |
Python | Ruff |
.flake8 |
Python | Flake8 (legacy) |
Cargo.toml [lints.clippy] |
Rust | Clippy |
If --linter flag is set, use that linter regardless of detection.
Step 2: Verify latest tool versions
Use WebSearch or WebFetch to check current versions:
- Biome: Check biomejs.dev or GitHub releases
- Ruff: Check docs.astral.sh/ruff or GitHub releases
- Clippy: Check Rust releases
Step 3: Analyze current linter configuration
For each detected linter, check configuration completeness:
Biome (for JS/TS):
- Config file exists with linter rules
- Formatter configured
- File patterns and ignores set
- Recommended rules enabled
Ruff (for Python):
pyproject.tomlhas[tool.ruff]section- Rules selected (E, F, I, N, etc.)
- Line length and target Python version set
Clippy:
Cargo.tomlhas[lints.clippy]section- Pedantic lints enabled
- Workspace-level lints if applicable
Step 4: Generate compliance report
Print a compliance report covering:
- Config file status (exists / missing)
- Linter enabled status
- Rules configuration (recommended / minimal / missing)
- Formatter integration
- Ignore patterns
- Lint scripts in package.json / Makefile
- Pre-commit hook integration
- CI/CD check integration
End with overall issue count and recommendations.
If --check-only is set, stop here.
Step 5: Configure linting (if --fix or user confirms)
Apply configuration using templates from REFERENCE.md.
For Biome (JS/TS):
- Install Biome as dev dependency
- Create
biome.jsonwith recommended rules - Add npm scripts (
lint,lint:fix,format,check)
For Ruff (Python):
- Install Ruff via
uv add --group dev ruff - Add
[tool.ruff]section topyproject.toml - Configure rules, line length, target version
For Clippy (Rust):
- Add
[lints.clippy]section toCargo.toml - Enable pedantic lints
- Configure workspace-level lints if applicable
If legacy linters are detected (ESLint, Flake8, etc.), offer migration. See migration guides in REFERENCE.md.
Step 6: Configure pre-commit and CI integration
- Add linter pre-commit hook to
.pre-commit-config.yaml - Add linter CI check to GitHub Actions workflow
- Use templates from REFERENCE.md
Step 7: Update standards tracking
Update .project-standards.yaml:
components:
linting: "2025.1"
linting_tool: "[biome|ruff|clippy]"
linting_pre_commit: true
linting_ci: true
Step 8: Print final compliance report
Print a summary of all changes applied, scripts added, integrations configured, and next steps for the user.
For detailed configuration templates, migration guides, and CI integration patterns, see REFERENCE.md.
Agentic Optimizations
| Context | Command |
|---|---|
| Detect linter config | find . -maxdepth 1 \( -name 'biome.json' -o -name 'ruff.toml' -o -name '.eslintrc*' \) 2>/dev/null |
| Check Biome config | test -f biome.json && jq -c '.linter' biome.json 2>/dev/null |
| Check Ruff in pyproject | grep -A5 '\[tool.ruff\]' pyproject.toml 2>/dev/null |
| List lint scripts | jq -r '.scripts | to_entries[] | select(.key | contains("lint")) | "\\(.key): \\(.value)"' package.json 2>/dev/null |
| Quick compliance check | /configure:linting --check-only |
| Auto-fix configuration | /configure:linting --fix |
Flags
| Flag | Description |
|---|---|
--check-only |
Report status without offering fixes |
--fix |
Apply all fixes automatically without prompting |
--linter <linter> |
Override linter detection (biome, ruff, clippy) |
Examples
# Check compliance and offer fixes
/configure:linting
# Check only, no modifications
/configure:linting --check-only
# Auto-fix and migrate to Biome
/configure:linting --fix --linter biome
Error Handling
- Multiple linters detected: Warn about conflict, suggest migration
- No package manager found: Cannot install linter, error
- Invalid configuration: Report parse error, offer to replace with template
- Missing dependencies: Offer to install required packages
See Also
/configure:formatting- Configure code formatting/configure:pre-commit- Pre-commit hook configuration/configure:all- Run all compliance checks- Biome documentation: https://biomejs.dev
- Ruff documentation: https://docs.astral.sh/ruff
- Clippy documentation: https://doc.rust-lang.org/clippy