shwldshwlda month ago

AI専用hookから標準git hookに移行する

AIエージェント向けに PreToolUse / PostToolUse / Stop といったベンダー固有のhookで品質ゲートを実装していたが、lefthook(標準的なgit hook管理ツール)に統合した。

Before(手動 / AI固有hook):

AIエージェントのライフサイクルイベントごとにスクリプトを設定していた。エージェント経由でしかチェックが走らず、手動コミットではゲートをすり抜ける。設定ファイルもAIツール固有の形式に依存。

After(lefthook):

# lefthook.yml
pre-commit:
  commands:
    config-guard:
      run: bash scripts/config-guard.sh {staged_files}
    format:
      run: npx biome format --write {staged_files}
pre-push:
  commands:
    lint:
      run: npm run lint
    typecheck:
      run: npm run typecheck
    test:
      run: npm run test

ポイント:

  • git hookに統一することで、AIエージェント経由でも手動でも同じチェックが走る
  • lefthookの {staged_files} プレースホルダーで対象ファイルを自然に渡せる
  • pre-commitは高速なチェック(format, config guard)、pre-pushは重いチェック(lint, typecheck, test)と分けると開発体験がよい
  • 移行時はスクリプト名からもベンダー固有の接頭辞(pretooluse-等)を除去して、汎用的な命名にしておく