Linter Autofix Patterns
SKILL.md
Linter Autofix Patterns
Quick reference for running linter autofixes across languages.
Autofix Commands
| Language | Linter | Autofix Command |
|---|---|---|
| TypeScript/JS | biome | bunx @biomejs/biome check --write . |
| TypeScript/JS | biome format | bunx @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 | apply shellcheck -f diff suggestions |
Common Fix Patterns
JavaScript/TypeScript (Biome)
Unused imports
// Before
import { useState, useEffect, useMemo } from 'react';
// Only useState used
// After
import { useState } from 'react';
Prefer const
// Before
let x = 5; // Never reassigned
// After
const x = 5;
Python (Ruff)
Import sorting (I001)
# Before
import os
from typing import List
import sys
# After
import os
import sys
from typing import List
Unused imports (F401)
# Before
import os
import sys # unused
# After
import os
Line too long (E501)
# 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
// Before
let s = String::from("hello").clone();
// After
let s = String::from("hello");
Use if let
// Before
match option {
Some(x) => do_something(x),
None => {},
}
// After
if let Some(x) = option {
do_something(x);
}
Shell (ShellCheck)
Quote variables (SC2086)
# Before
echo $variable
# After
echo "$variable"
Use $(...) instead of backticks (SC2006)
# Before
result=`command`
# After
result=$(command)
Quick Autofix (Recommended)
Auto-detect project linters and run all appropriate fixers in one command:
# 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 for details.
Manual Workflow
- Run autofix first:
ruff check --fix . && ruff format . - Check remaining issues:
ruff check . - Manual fixes for complex cases
- 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