megalinter-fix について
MegaLinter のチェック出力に基づいてエラーを修正する、コーディングエージェント向けスキルです。リンター別ガイドを使い、自動修正と手動修正を案内します。
主な機能
- 01リンターと優先度ごとのエラー分類
- 02失敗したリンターのガイドのみ読み込み
- 03対応する自動修正の実行
- 04手動修正と検証の案内
- 05ルール無効化前の確認
活用シーン
- 01MegaLinter が報告したエラーの修正
- 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、調整用変数、既知のリンター以外の失敗パターン)と、調査済みの修正手順が含まれています。エラーのないリンターのガイドは読み込まないでください。
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」セクションを参照)。以降の編集を行う前に、必ずプルしてください。
最適化:サブエージェント(Claude Code および互換エージェント)
サブエージェントを利用でき、megalinter-fixer がインストールされている場合(megalinter-setup を参照)、失敗したリンターごとに megalinter-fixer を1つずつ並列で実行し、それぞれにリンターのキー、エラー一覧、修正ガイドの内容を渡します。各フィクサーは、修正件数、変更したファイル、unresolved リストを返します(proposed_disable による抑制が含まれる場合がありますが、フィクサー自身が無効化を適用することはありません)。結果をまとめ、未解決の項目と無効化の提案についてユーザーにすべて確認したうえで、承認されたものを自分で適用し、対象を絞った再チェックを実行します(利用可能な場合は megalinter-runner エージェントを使用します)。
MegaLinter がエージェントプラグインとしてインストールされている場合、定義は名前空間付きになります(megalinter:megalinter-watcher、megalinter:megalinter-runner、megalinter:megalinter-fixer)。スキルとしてインストールされている場合は、名前空間なしのままです。お使いのプラットフォームに表示される形式を使用してください。
サブエージェントを利用できない場合は、リンターを順番にインラインで修正してください。