关于 lint-fix
lint-fix 技能会检测项目中的格式化、lint 和验证工具,并组织成有序流水线,供开发者逐步执行和修复问题。它采用单项修复后立即重跑的流程,并在末尾重新验证整个流水线。
主要功能
- 01扫描配置与脚本以识别工具
- 02按生成、格式化、lint 等排序
- 03逐项执行并在失败时停止
- 04一次修复一个问题并重跑
- 05最终端到端验证
适用场景
- 01为现有项目整理验证步骤
- 02定位并修复 lint 或测试失败
- 03确认代码生成先于格式化检查
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rshade/ agent-skills --skill lint-fix安装后在 Claude Code 中输入/lint-fix确认已加载。
附带文件references/fix-protocol.mdreferences/tool-detection.md
详细介绍
Lint 与验证流水线
检测项目中的所有 lint、格式化和验证工具, 构建有序的执行流水线,运行所有工具直至零错误, 并以原子方式修复问题。
步骤 1:检测项目工具
扫描项目根目录中的配置文件、Makefile 目标 和包管理器脚本,以识别可用工具。
按以下顺序检查:
- Makefile — 查找目标:lint、test、validate、format、 gen、build、check、vet
- package.json — 查找脚本:lint、test、format、 prettier、eslint、build、typecheck
- go.mod — 检查 golangci-lint、gofmt、go vet、go test
- pyproject.toml / setup.py — 检查 ruff、black、flake8、 mypy、pytest
- .csproj / .sln — 检查 dotnet format、build、test
- Cargo.toml — 检查 cargo clippy、fmt、test
- 独立配置文件 — .eslintrc*、.prettierrc*、biome.json、 .golangci.yml、.markdownlint*
有关各生态系统的详细检测命令,请参阅
references/tool-detection.md。
如果未检测到任何工具,请告知用户并提出帮助设置 lint 工具。 请勿继续执行空流水线。
步骤 2:检查代码生成
如果检测到 make gen、make generate 或等效的代码生成
命令,请在任何 lint 操作之前运行它。
生成的代码可能会覆盖手动修复。务必先生成。
make gen 2>&1
如果生成失败,请停止并先修复生成问题, 再继续执行 lint。
步骤 3:构建有序流水线
按以下执行顺序排列检测到的工具:
- 生成(make gen、代码生成器)
- 格式化(prettier、black、gofmt、rustfmt、dotnet format)
- Lint(eslint、golangci-lint、ruff、clippy、markdownlint)
- 类型检查(tsc --noEmit、mypy)
- 验证(make validate、架构检查)
- 测试(go test、pytest、jest、cargo test、dotnet test)
- 构建(go build、cargo build、dotnet build)
执行前,先向用户展示检测到的流水线:
Detected validation pipeline:
1. make gen
2. gofmt -s -l .
3. golangci-lint run
4. markdownlint '**/*.md'
5. go test ./...
6. go build ./...
Proceed? (y/n)
如果用户希望添加、移除或调整命令顺序,请相应修改流水线。
步骤 4:执行流水线
按顺序运行每条命令。遇到第一个失败时停止。
# Run each command, stop on failure
for cmd in "${PIPELINE[@]}"; do
echo "Running: $cmd"
eval "$cmd" 2>&1
if [ $? -ne 0 ]; then
echo "FAILED: $cmd"
# Proceed to atomic fix protocol for this command
break
fi
echo "PASSED: $cmd"
done
捕获失败命令的完整输出——修复问题需要文件路径、行号、 规则名称和错误消息。
步骤 5:原子修复流程
一次修复失败命令中的一个问题。这样可以避免级联失败, 即修复一个问题却引入其他问题。
对于每个问题:
- 只修复一个问题(尽量少改动)
- 立即重新运行失败的命令
- 验证:问题已解决,且未出现新问题
- 如果修复引入了新问题:撤销并尝试其他方法
- 如果修复无误:继续处理下一个问题
失败命令中的所有问题解决后,从下一条命令继续执行流水线。
有关详细流程、回滚策略和边缘情况,请参阅
references/fix-protocol.md。
步骤 6:最终验证
所有命令分别通过后,将完整流水线作为一个序列 从头到尾运行:
cmd1 && cmd2 && cmd3 && ... && echo "PASS" || echo "FAIL"
所有命令都必须按顺序通过。如果最终运行中有任何命令失败, 请针对该命令返回步骤 5。
展示最终结果:
Validation pipeline: ALL PASSED
1. make gen PASS
2. gofmt -s -l . PASS
3. golangci-lint run PASS
4. markdownlint PASS
5. go test ./... PASS
6. go build ./... PASS
Zero errors across all validation tools.
常见修复模式
格式问题:使用 --write 或 -w 标志运行格式化工具,
而不是使用 --check。大多数格式化工具都有自动修复模式。
导入排序:大多数 linter 都支持自动修复导入排序。
请检查是否有 --fix 标志。
行尾空格 / 文件末尾换行:通过编辑器设置修复,或使用
sed -i 's/[[:space:]]*$//' file。
类型错误:这类问题通常需要修改代码,不能自动修复。 请仔细阅读错误信息并修复根本原因。
测试失败:调查失败原因——这是由你的更改引入的实际错误, 还是之前就存在的不稳定测试?