Claude-skill-registry Linter Autofix Patterns
Cross-language linter autofix commands and common fix patterns for biome, ruff, clippy, shellcheck, and more.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/linter-autofix" ~/.claude/skills/majiayu000-claude-skill-registry-linter-autofix-patterns && rm -rf "$T"
manifest:
skills/data/linter-autofix/SKILL.mdsource content
Linter Autofix Patterns
Quick reference for running linter autofixes across languages.
Autofix Commands
| Language | Linter | Autofix Command |
|---|---|---|
| TypeScript/JS | biome | |
| TypeScript/JS | biome format | |
| Python | ruff | |
| Python | ruff format | |
| Rust | clippy | |
| Rust | rustfmt | |
| Go | gofmt | |
| Go | go mod | |
| 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