原文(日本語に翻訳)
フォーマッター/リンターコマンドが以前に読み込んだファイルを変更した場合に、陳腐化した編集エラーを防ぐために警告を表示するよう Bash ツールを改善
原文(英語)
Improved Bash tool to warn when a formatter/linter command modifies files you have previously read, preventing stale-edit errors
概要
Bash ツールでフォーマッターやリンターのコマンド(prettier、eslint --fix、gofmt など)を実行した際に、以前に Read や Edit で参照したファイルが変更された場合、Claudeが警告を表示するようになりました。フォーマッター実行後にClaudeのコンテキスト内のファイル情報が古くなり、Edit ツールが誤った箇所を編集してしまう「陳腐化した編集エラー」を防ぎます。
基本的な使い方
フォーマッターを実行すると、変更されたファイルが警告として表示されます:
# フォーマッターを実行
Bash: prettier --write src/
# 警告が表示される(例)
⚠ 警告: 以前に読み込んだファイルがフォーマッターにより変更されました:
- src/components/Button.tsx
- src/utils/helpers.ts
これらのファイルは再度読み込んでください実践例
フォーマッターとEditツールの安全な組み合わせ
bash
# ❌ 問題のあるワークフロー(v2.1.88以前は警告なし)
# 1. ファイルを読み込む
# Read: src/index.ts
# 2. フォーマッターを実行(ファイルが変更される)
# Bash: prettier --write src/index.ts
# 3. 古いコンテンツに基づいてEditを実行(エラーになる可能性があった)
# Edit: src/index.tsbash
# ✓ 正しいワークフロー(v2.1.89で警告が出る)
# 1. ファイルを読み込む
# Read: src/index.ts
# 2. フォーマッターを実行(警告が表示される)
# Bash: prettier --write src/index.ts
# → ⚠ 警告: src/index.ts が変更されました
# 3. ファイルを再度読み込んでから編集
# Read: src/index.ts(再読み込み)
# Edit: src/index.tsよくあるフォーマッターとの注意点
bash
# JavaScriptプロジェクト
Bash: prettier --write . # 全ファイルをフォーマット → 多くのファイルが変更される可能性
Bash: eslint --fix src/ # ESLintの自動修正
# Pythonプロジェクト
Bash: black . # Blackフォーマッター
Bash: isort . # importソート
# Goプロジェクト
Bash: gofmt -w ./... # Go標準フォーマッター
Bash: goimports -w ./...
# Rustプロジェクト
Bash: cargo fmt # Rustフォーマッターpre-commitフックとの統合
bash
# .pre-commit-config.yaml でフォーマッターを設定している場合
# git commitやgit addの前にフォーマッターが実行される可能性があるため、
# コミット前にファイルを再読み込みすることを推奨
# Bash: git add src/
# → ⚠ 警告(pre-commitフックがファイルを変更した場合)
# Read: src/modified-file.ts ← 再読み込み
# Edit: src/modified-file.ts ← 安全に編集注意点
- 警告は参考情報です。警告が表示された場合は、該当ファイルを
Readで再読み込みしてからEditを実行してください - フォーマッターが変更するファイルの検出は、Claudeのコンテキスト内で追跡しているファイルと比較して行われます
prettier --write .のように広範囲のファイルを変更するコマンドでは、多数の警告が表示される場合があります。その場合は変更が必要なファイルのみを再読み込みしてください- v2.1.89 では同時に「
Bashでcatやsed -nで参照したファイルへの直接Edit」も可能になっています