🐺

Claude Codeにlintエラーを段階的に修正してもらう

に公開

はじめに

eslint-seatbeltで管理されたlintエラーをClaude Codeに修正させてみた話です。

モチベーション

個人でメンテナンスしているライブラリや過去プロジェクトで蓄積されたlintエラーを修正したくないという怠惰なお気持ちがありました。
そこでeslint-seatbeltをうまく利用するとAIアシスタントでも期待したlint修正が可能になり、効率的にエラーを解消できるのではないかと考えました。

前提

この記事は、eslint-seatbeltの基本的な概念と使用方法を理解していることを前提としています。

https://zenn.dev/tetoteto/articles/eslint-seatbelt-progressive-linting

環境

- Node.js (24.x)
- pnpm (10.x)
- eslint-seatbelt (0.1.2)
- Claude Code (1.x)

ワークフローの概要

私が実践したワークフローは以下の手順で進めています。

1. eslint.seatbelt.tsvの現状確認
2. エラー数の少ないルールから優先順位を決定
3. 最大3ファイルずつClaude Codeで修正
4. 修正後のlint実行とテスト確認
5. 成功したら次のタスクへ、失敗したら見直し

CLAUDE.mdでのワークフロー定義

Claude Codeに明確な指示を与えるため、以下の内容をCLAUDE.mdファイルに追加しました。

# Bash Commands
- pnpm lint: src下を対象にeslint-seatbeltを実行します。
- pnpm test: jestテストを実行します。

# Workflow
- `pnpm install`を実行して、依存関係をインストールします。
- `eslint.seatbelt.tsv`を確認します。
- エラー数が少ない内容を優先して対応します。
- 実際に起きているエラー内容を`pnpm lint`を使用して確認します。
- 修正対象のファイル数は最大3つまでにします。
- 対応が完了したら`pnpm lint`を実行して、警告内容が減ることを確認します。
- 減らない場合は、修正内容を見直します。
- 対応が完了したら、`pnpm test`を実行して、テストが通ることを確認します。
- テストが通らない場合は、修正内容を見直します。
- 成功したら終了です。

# Notes
- `eslint.seatbelt.tsv`の更新は`pnpm lint`を実行した際に自動で行われるため、手動での更新は禁止です。

eslint-seatbeltが作成するeslint.seatbelt.tsvというratchetファイルを起点にしたいので、eslint-seatbeltのフローを確実に実行してもらうように指示しています。
ファイル数の制限は、登場人物を少なくしコミュニケーションコストを下げたい意図があります。

CLAUDE.mdの詳細な書き方については以下を参考にしています。

https://www.anthropic.com/engineering/claude-code-best-practices#:~:text=Create CLAUDE.md files

自律的に修正を進める

Claude Codeには、上記のワークフローに従って自律的に修正を進めてもらいたいので権限周りの設定を行います。

.claude/settings.jsonの設定

{
  "permissions": {
    "allow": [
      "Bash(pnpm install),Bash(pnpm test),Bash(pnpm lint)"
    ],
    "deny": [],
    "ask": []
  }
}

lint修正に必要なコマンドを許可しています。

https://docs.anthropic.com/ja/docs/claude-code/settings#設定ファイル

所感

eslint-seatbeltを中心としたワークフローをClaude Codeにお願いすることで、lintエラーを段階的かつ効率的に修正できたのでメンテナンスの負担が大幅に軽減される所感を得られました。

CLAUDE.mdに明確なワークフローを定義し、.claude/settings.jsonで必要なコマンドを許可することで、AIアシスタントに自律的にタスクを進めてもらえることも大きなポイントかなと思います。

CI/CDパイプラインで組み込むことも検討していたのですが、現在eslint-seatbelt側でバグがあるようでIssueも記載されており、CI/CDでの運用は見送っています。

Discussion