mcpField
L
lint-fix

lint-fix

github.com/rshade测试与质量392 次安装2 周前更新
代码仓库

关于 lint-fix

lint-fix 技能会检测项目中的格式化、lint 和验证工具,并组织成有序流水线,供开发者逐步执行和修复问题。它采用单项修复后立即重跑的流程,并在末尾重新验证整个流水线。

主要功能

  1. 01扫描配置与脚本以识别工具
  2. 02按生成、格式化、lint 等排序
  3. 03逐项执行并在失败时停止
  4. 04一次修复一个问题并重跑
  5. 05最终端到端验证

适用场景

  1. 01为现有项目整理验证步骤
  2. 02定位并修复 lint 或测试失败
  3. 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 目标 和包管理器脚本,以识别可用工具。

按以下顺序检查:

  1. Makefile — 查找目标:lint、test、validate、format、 gen、build、check、vet
  2. package.json — 查找脚本:lint、test、format、 prettier、eslint、build、typecheck
  3. go.mod — 检查 golangci-lint、gofmt、go vet、go test
  4. pyproject.toml / setup.py — 检查 ruff、black、flake8、 mypy、pytest
  5. .csproj / .sln — 检查 dotnet format、build、test
  6. Cargo.toml — 检查 cargo clippy、fmt、test
  7. 独立配置文件 — .eslintrc*、.prettierrc*、biome.json、 .golangci.yml、.markdownlint*

有关各生态系统的详细检测命令,请参阅 references/tool-detection.md。

如果未检测到任何工具,请告知用户并提出帮助设置 lint 工具。 请勿继续执行空流水线。

步骤 2:检查代码生成

如果检测到 make gen、make generate 或等效的代码生成 命令,请在任何 lint 操作之前运行它。

生成的代码可能会覆盖手动修复。务必先生成。

make gen 2>&1

如果生成失败,请停止并先修复生成问题, 再继续执行 lint。

步骤 3:构建有序流水线

按以下执行顺序排列检测到的工具:

  1. 生成(make gen、代码生成器)
  2. 格式化(prettier、black、gofmt、rustfmt、dotnet format)
  3. Lint(eslint、golangci-lint、ruff、clippy、markdownlint)
  4. 类型检查(tsc --noEmit、mypy)
  5. 验证(make validate、架构检查)
  6. 测试(go test、pytest、jest、cargo test、dotnet test)
  7. 构建(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:原子修复流程

一次修复失败命令中的一个问题。这样可以避免级联失败, 即修复一个问题却引入其他问题。

对于每个问题:

  1. 只修复一个问题(尽量少改动)
  2. 立即重新运行失败的命令
  3. 验证:问题已解决,且未出现新问题
  4. 如果修复引入了新问题:撤销并尝试其他方法
  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。

类型错误:这类问题通常需要修改代码,不能自动修复。 请仔细阅读错误信息并修复根本原因。

测试失败:调查失败原因——这是由你的更改引入的实际错误, 还是之前就存在的不稳定测试?

评论

支持 Markdown