关于 megalinter-fix
面向编码 Agent 的 MegaLinter 修复技能,根据检查输出处理错误,并通过各 Linter 的指南指导自动或手动修复。
主要功能
- 01按 Linter 和优先级归类错误
- 02仅加载失败 Linter 的指南
- 03运行或应用支持的自动修复
- 04指导手动修复与验证
- 05禁用规则前须获确认
适用场景
- 01修复报告中的 MegaLinter 错误
- 02通过定向复查验证修复
- 03处理不确定错误或拟议的抑制
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ oxsecurity/ megalinter --skill megalinter-fix安装后在 Claude Code 中输入/megalinter-fix确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
linters/action_actionlint.mdaction_zizmor.mdansible_ansible_lint.mdapi_spectral.mdarm_arm_ttk.mdbash_exec.mdbash_shellcheck.mdbash_shfmt.mdbicep_bicep_linter.mdc_clang_format.mdc_cppcheck.mdc_cpplint.mdclojure_clj_kondo.mdclojure_cljstyle.mdcloudformation_cfn_lint.mdcopypaste_jscpd.mdcpp_clang_format.mdcpp_cppcheck.mdcpp_cpplint.mdcsharp_csharpier.mdcsharp_dotnet_format.mdcsharp_roslynator.mdcss_biome.mdcss_stylelint.mddart_dartanalyzer.mddockerfile_hadolint.mdeditorconfig_editorconfig_checker.mdenv_dotenv_linter.mdgherkin_gherkin_lint.mdgo_golangci_lint.md详细介绍
MegaLinter 修复
修复收到的 MegaLinter 错误(megalinter-check 的输出约定:检查器键、错误数量、文件、错误示例行)。
1. 准备
- 如果当前分支是默认分支(
main/master),请先创建一个分支:git checkout -b megalinter/fix-<topic>。 - 按检查器键对错误分组。先处理阻塞检查器(❌);将非阻塞检查器(⚠️)告知用户,但除非用户要求,否则不要修复。
2. 按需加载修复指南
对于每个报错的检查器,只读取此技能目录中的修复指南:linters/<linter_key_lower>.md(例如 linters/python_ruff.md)。索引位于 linters/README.md。
每份指南都包含一个生成的区块(自动修复支持、配置/忽略文件、规则文档 URL、调整变量、已知的非 lint 失败模式)以及经过调研的修复说明。不要加载没有错误的检查器的指南。
3. 修复
按以下顺序处理:
- 可自动修复的检查器(指南说明支持自动修复):如果有可用的容器引擎,请运行
npx mega-linter-runner --linter <KEY> --fix [failing files...](使用 podman 时添加--container-engine podman;如果.mega-linter.yml固定使用MEGALINTER_VERSION: beta,则使用npx mega-linter-runner@beta——参见megalinter-check中的版本规则)。否则,按照底层工具文档中的修复方法手动处理。如果没有安装或运行容器引擎,先询问用户,然后遵循megalinter-check技能目录中的container-engine.md。 - 手动修复:遵循指南,逐个文件修复剩余错误。如不确定规则的含义,请查阅规则文档 URL。
- 指南未涵盖的错误(未知规则、指南缺失或过时):在决定如何修复前先浏览网页——从指南生成区块中的 URL 开始,获取规则的官方文档,或搜索确切的错误消息。切勿猜测修复方法或抑制语法。
- 有歧义的情况(修复会改变行为、存在多种有效方案、怀疑是误报):询问用户并说明可选方案——按此方式修复、添加带理由的行内禁用,或忽略。
4. 禁用(始终先征得用户确认)
当修复并不适用时(误报、规则与项目风格冲突、检查器不适用):
- 从范围最小的方式开始:在该行添加行内禁用注释 → 在检查器配置文件中排除规则 →
<KEY>_FILTER_REGEX_EXCLUDE→<KEY>_DISABLE_ERRORS: true(设为非阻塞)→DISABLE_LINTERS(最后手段)。 - 指南提供每个级别的确切语法。未经用户明确确认,绝不禁用任何内容。
- 如果项目模式检查器因排除项或配置解析而报告意外结果,请查看其控制台日志中的
[Excluded directories]行:MegaLinter 会通过额外 CLI 参数或生成的忽略/配置文件自动转发排除目录。对该检查器禁用此转发(<LINTER_KEY>_FORWARD_EXCLUDED_DIRECTORIES: false)可恢复工具的原生行为——当仓库自带的忽略/配置文件已完整时,这种方法很有用。
5. 验证并完成
- 使用
megalinter-check技能重新检查(定向复查模式:仅检查已修复的检查器/文件)。总共最多迭代 3 次。 - 向用户展示摘要:已修复 / 已禁用(附理由)/ 剩余问题。
- 在工作分支上以清晰的提交消息创建提交。推送前先询问;绝不要推送到默认分支。
- 如果推送触发 CI 运行,且仓库会自动应用修复(
APPLY_FIXES_MODE: commit),MegaLinter 可能会在你的提交之上推送一个[MegaLinter] Apply linters fixes提交:使用megalinter-check监控运行,该技能会处理此类提交(参见其中的 “MegaLinter auto-fix commits” 部分)——继续编辑前务必先拉取。
优化:子 Agent(Claude Code 和兼容的 Agent)
如果可用子 Agent,且已安装 megalinter-fixer(参见 megalinter-setup),则为每个未通过的 linter 并行分派一个 megalinter-fixer,并向每个 fixer 提供:linter 键、错误列表和修复指南内容。每个 fixer 会返回修复数量、已修改的文件和 unresolved 列表(其中可能包含 proposed_disable 抑制项——fixer 不会自行应用禁用设置)。汇总结果,就每个未解决项和建议禁用项逐一询问用户,并自行应用用户确认的项目,然后运行针对性复查(如果有可用的 megalinter-runner Agent,则通过这些 Agent 运行)。
将 MegaLinter 安装为 Agent 插件时,定义会带有命名空间(megalinter:megalinter-watcher、megalinter:megalinter-runner、megalinter:megalinter-fixer);安装为技能时则保留原有名称。使用平台列出的形式。
如果没有子 Agent,则按顺序逐个在线修复 linter。