chezmoiの変更をClaude Codeにコミットさせる

chezmoiでdotfilesを管理しています。

chezmoiでは変更に対して自動でコミットを行うことができ、これまではautoCommitをtrueにすることで、自動コミットを起動させ、自分でコミットメッセージを入力していました。

[git]
autoCommit = true
autoPush = false
commitMessageTemplate = "{{ promptString \"Commit message\" }}"

dotfilesは頻繁に変更が入るのでコミットメッセージを書くのが面倒です。また内容もアプリケーション開発よりも自明なものが多く、自分がコミットメッセージを入力する必要はなおのことないと思い、コミットの入力をClaude Codeに移譲することにしました。

chezmoi の Hooks 機能を使って、変更時に事前に登録しておいたコミット処理を起動します。この場合コミット処理は Claude Code に移譲するため autoCommit は不要になります。

[git]
autoCommit = false
autoPush = false
[hooks.add.post]
command = "bash"
args = ["-c", "cd ~/.local/share/chezmoi && claude -p \"/commit\""]
[hooks.edit.post]
command = "bash"
args = ["-c", "cd ~/.local/share/chezmoi && claude -p \"/commit\""]

なお -p は print オプション。これにはスラッシュコマンドも渡せるので、コミットを行うコマンドなりを渡してやれば良いというわけです。

これで変更反映時に自動で Claude Code によるコミットが実行されるようになりました。