エージェントが書くファイルを pre-commit フックで「5,000トークン以内」に抑える
ステージされたファイルのうちエージェントが書いたものだけを対象に、バイト数 ÷ 4 で概算したトークン数が上限を超えたらコミットを止め、分割方法をエラーメッセージで指示する。
巨大ファイルはエージェントが読むたびにコンテキストを食い、編集の精度も落ちる。ルールに「小さく分けて」と書くより、コミット時に機械的に止めるほうが確実に守られる(Claude Code: 「〜したら〜して」はルールではなく hooks(settings.json)に書く と同じ考え方)。
手順
エージェントにそのまま頼めるプロンプト(@mattpocockuk の「今日のプロンプト」を日本語化):
text
5,000トークンを超えるファイルを防ぐ pre-commit フックを作って。
トークン数 = バイト数 / 4 で概算する。
ステージされたファイルだけを対象にする。
lockfile やコード生成物など、エージェントが書いていないファイルは除外する。
エラーメッセージには、ファイルをどう分割すればよいかの具体的な指示を入れる。作られたフックで確認すること:
- 対象は
git diff --cached --name-only --diff-filter=ACMのようにステージ済みだけになっているか - 除外リスト(
*.lock、package-lock.json、生成ディレクトリ、スナップショットなど)が入っているか - エラー文が「どこで切るか」(責務ごと、型定義と実装を分ける、テストを分ける等)を示しているか。エージェントはこの文を読んで自分で直す
注意点
バイト ÷ 4は英語寄りの概算。日本語のコメントや文字列が多いファイルは実際のトークン数が多めに出ることがある。上限は運用しながら調整する- 既存の巨大ファイルが一斉に引っかかる場合は、まず新規・変更ファイルだけに適用し、既存分は別タスクで分割する