shwldshwlda month ago

コーディングエージェントのフックを汎用フックランナーに移行する

AIエージェントツール固有のフック機構に品質ゲートを載せていたが、標準的なGitフックランナー(lefthook)に統一した。ツール依存を減らし、チーム全員が同じルールで開発できるようにする。

Before(手動 / ツール固有):

エージェントツールの設定ファイル(settings.json)にフックを定義。エージェント経由の操作にしか品質ゲートが効かず、通常の git commit や CI では素通りしていた。

After(自動 / lefthook):

# lefthook.yml
pre-commit:
  commands:
    lint:
      run: npx biome check --write . && git add -u
    type-check:
      run: npx tsc --noEmit
pre-push:
  commands:
    test:
      run: npx vitest run

ポイント:

  1. 段階的に移行する — 一度に全フックを切り替えず、pre-commit → pre-push の順に移行し、各段階でCIと挙動が一致することを確認する

  2. 既存のガードスクリプトを再利用する — フックランナー側からシェルスクリプトを呼ぶだけにして、ロジックの重複を避ける

  3. エージェント固有フックは参照専用に残す — 完全削除ではなく、エージェントが特別な事前チェック(設定ファイル保護等)を行う場合のみ残す