Skip to content

原文(日本語に翻訳)

フォーマッター/リンターコマンドが以前に読み込んだファイルを変更した場合に、陳腐化した編集エラーを防ぐために警告を表示するよう Bash ツールを改善

原文(英語)

Improved Bash tool to warn when a formatter/linter command modifies files you have previously read, preventing stale-edit errors

概要

Bash ツールでフォーマッターやリンターのコマンド(prettiereslint --fixgofmt など)を実行した際に、以前に ReadEdit で参照したファイルが変更された場合、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.ts
bash
# ✓ 正しいワークフロー(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 では同時に「Bashcatsed -n で参照したファイルへの直接 Edit」も可能になっています

関連情報