home / skills / laurigates / claude-plugins / linter-autofix

This skill applies cross-language linter autofix patterns with biome, ruff, clippy, shellcheck, and more to streamline code cleanup.

npx playbooks add skill laurigates/claude-plugins --skill linter-autofix

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
3.4 KB
---
model: haiku
name: linter-autofix
description: Cross-language linter autofix commands and common fix patterns for biome, ruff, clippy, shellcheck, and more.
allowed-tools: Bash(ruff *), Bash(eslint *), Bash(biome *), Bash(prettier *), Read, Edit, Grep
created: 2025-12-27
modified: 2026-01-24
reviewed: 2026-02-08
---

# Linter Autofix Patterns

Quick reference for running linter autofixes across languages.

## Autofix Commands

| Language | Linter | Autofix Command |
|----------|--------|-----------------|
| TypeScript/JS | biome | `npx @biomejs/biome check --write .` |
| TypeScript/JS | biome format | `npx @biomejs/biome format --write .` |
| Python | ruff | `ruff check --fix .` |
| Python | ruff format | `ruff format .` |
| Rust | clippy | `cargo clippy --fix --allow-dirty` |
| Rust | rustfmt | `cargo fmt` |
| Go | gofmt | `gofmt -w .` |
| Go | go mod | `go mod tidy` |
| Shell | shellcheck | No autofix (manual only) |

## Common Fix Patterns

### JavaScript/TypeScript (Biome)

**Unused imports**
```typescript
// Before
import { useState, useEffect, useMemo } from 'react';
// Only useState used

// After
import { useState } from 'react';
```

**Prefer const**
```typescript
// Before
let x = 5;  // Never reassigned

// After
const x = 5;
```

### Python (Ruff)

**Import sorting (I001)**
```python
# Before
import os
from typing import List
import sys

# After
import os
import sys
from typing import List
```

**Unused imports (F401)**
```python
# Before
import os
import sys  # unused

# After
import os
```

**Line too long (E501)**
```python
# Before
result = some_function(very_long_argument_one, very_long_argument_two, very_long_argument_three)

# After
result = some_function(
    very_long_argument_one,
    very_long_argument_two,
    very_long_argument_three,
)
```

### Rust (Clippy)

**Redundant clone**
```rust
// Before
let s = String::from("hello").clone();

// After
let s = String::from("hello");
```

**Use if let**
```rust
// Before
match option {
    Some(x) => do_something(x),
    None => {},
}

// After
if let Some(x) = option {
    do_something(x);
}
```

### Shell (ShellCheck)

**Quote variables (SC2086)**
```bash
# Before
echo $variable

# After
echo "$variable"
```

**Use $(...) instead of backticks (SC2006)**
```bash
# Before
result=`command`

# After
result=$(command)
```

## Quick Autofix (Recommended)

Auto-detect project linters and run all appropriate fixers in one command:

```bash
# Fix mode: detect linters and apply all autofixes
bash "${CLAUDE_PLUGIN_ROOT}/skills/linter-autofix/scripts/detect-and-fix.sh"

# Check-only mode: report issues without fixing
bash "${CLAUDE_PLUGIN_ROOT}/skills/linter-autofix/scripts/detect-and-fix.sh" --check-only
```

The script detects biome, eslint, prettier, ruff, black, clippy, rustfmt, gofmt, golangci-lint, and shellcheck. It reports which linters were found, runs them, and shows modified files. See [scripts/detect-and-fix.sh](scripts/detect-and-fix.sh) for details.

## Manual Workflow

1. Run autofix first: `ruff check --fix . && ruff format .`
2. Check remaining issues: `ruff check .`
3. Manual fixes for complex cases
4. Verify: re-run linter to confirm clean

## When to Escalate

Stop and use different approach when:
- Fix requires understanding business logic
- Multiple files need coordinated changes
- Warning indicates potential bug (not just style)
- Security-related linter rule
- Type error requires interface/API changes

Overview

This skill provides cross-language linter autofix commands and common fix patterns for biome, ruff, clippy, shellcheck, and related tools. It bundles quick commands, examples of common fixes, and a recommended detect-and-fix script to apply appropriate fixers across a project.

How this skill works

The skill lists per-language autofix commands and common code transformations that linters perform (e.g., removing unused imports, prefer-const, import sorting, formatting). It includes a detect-and-fix script that auto-detects available linters in a repository, runs their autofix modes, and reports modified files. A check-only mode reports issues without changing files.

When to use it

  • Before submitting a pull request to apply automated style and simple correctness fixes
  • On CI to auto-correct format and trivial linter issues before failing builds
  • When onboarding a new codebase to quickly normalize formatting and imports
  • As the first step in a manual cleanup workflow to reduce trivial review comments
  • When multiple languages are present and a single command should run relevant fixers

Best practices

  • Run autofix commands first, then re-run linters to catch remaining issues
  • Use check-only mode in CI to report issues without altering files automatically
  • Review automated changes for logic-sensitive rules before committing
  • Limit autofixes in large commits; prefer small, reviewable change sets
  • Escalate to manual fixes for security, type errors, or business-logic changes

Example use cases

  • Run 'npx @biomejs/biome check --write .' to fix TS/JS style and unused imports
  • Use 'ruff check --fix .' and 'ruff format .' to auto-correct Python imports and line breaks
  • Run 'cargo clippy --fix --allow-dirty' and 'cargo fmt' to tidy Rust code
  • Execute the detect-and-fix script to automatically run all applicable linters across a mono-repo
  • Use check-only mode in a CI job to fail builds when linter issues are detected

FAQ

Which linters support autofix?

Many linters support autofix: biome, ruff, clippy (with --fix), rustfmt, gofmt, and go mod tidy. ShellCheck does not provide autofix and requires manual changes.

What if autofix introduces incorrect logic?

Stop, review changes, run tests, and apply manual corrections. Escalate when fixes touch business logic, types, or security-sensitive code.