mcpField
M
megalinter-fix

megalinter-fix

github.com/oxsecurityテスト・品質2.6k87 回インストール今日更新
リポジトリ

megalinter-fix について

MegaLinter のチェック出力に基づいてエラーを修正する、コーディングエージェント向けスキルです。リンター別ガイドを使い、自動修正と手動修正を案内します。

主な機能

  1. 01リンターと優先度ごとのエラー分類
  2. 02失敗したリンターのガイドのみ読み込み
  3. 03対応する自動修正の実行
  4. 04手動修正と検証の案内
  5. 05ルール無効化前の確認

活用シーン

  1. 01MegaLinter が報告したエラーの修正
  2. 02対象を絞った再チェックで修正を検証
  3. 03不確かなエラーや抑制案への対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oxsecurity/megalinter --skill megalinter-fix

インストール後、Claude Code で/megalinter-fixを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

linters/
action_actionlint.md
action_zizmor.md
ansible_ansible_lint.md
api_spectral.md
arm_arm_ttk.md
bash_exec.md
bash_shellcheck.md
bash_shfmt.md
bicep_bicep_linter.md
c_clang_format.md
c_cppcheck.md
c_cpplint.md
clojure_clj_kondo.md
clojure_cljstyle.md
cloudformation_cfn_lint.md
copypaste_jscpd.md
cpp_clang_format.md
cpp_cppcheck.md
cpp_cpplint.md
csharp_csharpier.md
csharp_dotnet_format.md
csharp_roslynator.md
css_biome.md
css_stylelint.md
dart_dartanalyzer.md
dockerfile_hadolint.md
editorconfig_editorconfig_checker.md
env_dotenv_linter.md
gherkin_gherkin_lint.md
go_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. 修正

次の順序で対応します。

  1. 自動修正可能なリンター(ガイドで自動修正に対応している場合):コンテナーエンジンが利用可能なら、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 に従ってください。
  2. 手動修正:残りのエラーを、ガイドの手順に従ってファイルごとに修正します。ルールの意味が不明な場合は、ルールのドキュメント URL を確認します。
  3. ガイドに記載のないエラー(不明なルール、ガイドの欠落/内容の古さ):修正方法を決める前にウェブを参照し、ルールの公式ドキュメントを取得する(ガイドの自動生成ブロックにある URL から確認する)か、エラーメッセージそのものを検索します。修正方法や抑制構文を推測してはいけません。
  4. 判断が難しい場合(修正によって動作が変わる、有効な方法が複数ある、誤検知が疑われる):選択肢(この方法で修正する、理由を添えて該当箇所で無効化する、または無視する)を示してユーザーに確認します。

4. 無効化(必ずユーザーの確認を得る)

修正が適切でない場合(誤検知、ルールとプロジェクトのスタイルが競合する、リンターが該当しない場合)は、次の順で最も範囲の狭い方法から検討します。

  • 該当行にインライン無効化コメントを追加 → リンターの設定ファイルでルールを除外 → <KEY>_FILTER_REGEX_EXCLUDE → <KEY>_DISABLE_ERRORS: true(ブロッキングではない場合)→ DISABLE_LINTERS(最終手段)。
  • 各方法の正確な構文はガイドに記載されています。ユーザーの明示的な確認なしに、何も無効化してはいけません。
  • プロジェクトモードのリンターが、除外設定や設定解決に関係する予想外の結果を報告した場合は、コンソールログで [Excluded directories] の行を確認します。MegaLinter は、追加の CLI 引数または生成された除外/設定ファイルを通じて、除外ディレクトリを自動的に渡します。リンターへのこの引き渡しを無効化すると(<LINTER_KEY>_FORWARD_EXCLUDED_DIRECTORIES: false)、ツール本来の動作に戻ります。リポジトリ独自の除外/設定ファイルがすでに完備している場合に有用です。

5. 検証と完了

  1. megalinter-check スキルを使って再チェックします(対象を絞った再チェックモード:修正したリンター/ファイルのみ)。合計で最大 3 回まで繰り返します。
  2. 修正済み/無効化済み(理由も記載)/未解決の項目をまとめてユーザーに提示します。
  3. 作業ブランチで、わかりやすいメッセージを付けてコミットします。プッシュする前に確認を求めてください。デフォルトブランチには絶対にプッシュしないでください。
  4. プッシュによって 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)。スキルとしてインストールされている場合は、名前空間なしのままです。お使いのプラットフォームに表示される形式を使用してください。

サブエージェントを利用できない場合は、リンターを順番にインラインで修正してください。

コメント