Table of contents
Tap an item to jump to that section.
4 sections 01 なぜpush前に止めるのか ↓ 02 pre-commitで見るもの ↓ 03 pre-pushで見るもの ↓ 04 Clawpatchの位置づけ ↓ このブログCMSでは、変更をコミットしてpushする前に、最低限の品質チェックが走るようにしています。手元の環境は Nix dev shell 前提なので、hook からも corepack pnpm@11.1.1 を呼び、同じ pnpm バージョンで検証します。
なぜpush前に止めるのか ブログCMSは、記事、管理画面、認証、広告、検索、デプロイ設定が同じリポジトリに入ります。小さな文言修正でも、型やビルド、秘密情報の混入、AIレビューの未確認が崩れることがあります。push前に自動で止めると、本番反映前の事故を減らせます。
pre-commitで見るもの pre-commit では、まず軽い検証を走らせます。
bash ⧉
corepack pnpm@11.1.1 run format:check corepack pnpm@11.1.1 run typecheck corepack pnpm@11.1.1 run test corepack pnpm@11.1.1 run secrets:staged corepack pnpm@11.1.1 run clawpatch:precommit
Biomeで表面的な崩れを見て、TypeScriptで型を確認し、Node testで機能面の回帰を拾います。Gitleaksはstaged差分の秘密情報を検査します。
pre-pushで見るもの pre-push では、push直前にもう一段強いチェックをかけます。
bash ⧉
corepack pnpm@11.1.1 run verify:push corepack pnpm@11.1.1 run secrets:history
verify:push は format:check、 typecheck、 test、 clawpatch:precommit をまとめたものです。 secrets:history はGitleaksでGit履歴側も確認します。
Clawpatchの位置づけ Clawpatchは、変更中のブランチに対してAIレビュー/差分レビューの状態を持たせるためのゲートです。このブログでは .clawpatch/ を初期化し、 clawpatch status --json をhookから実行します。現状の openFindings は0で、未解決指摘が残っていない状態を確認してからpushする運用にします。
hookは万能ではありません。 --no-verify で飛ばせるので、重要な変更ではCI側にも同じ検証を置くのが理想です。それでも手元で毎回同じコマンドが走るだけで、push前の見落としはかなり減らせます。