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-autofixReview the files below or copy the command above to add this skill to your agents.
---
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
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.
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.
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.