1. If these all took a very long time to run, it would create a case to defer to the CI. With Elixir, virtually every check you see runs maximally parallel and the entire precommit stack finishes very quickly. I use this as part of queued, local "/goal" commands because I have built up a level of trust that queuing a dozen goals and then reviewing them in the morning will be correct virtually every time.
2. Since everything finishes quickly, having it setup as a precommit check let's the agent see and correct all of the failures locally before anything goes up to the CI itself. All of these checks are duplicated at the CI layer, but it's extremely rare for anything to fail. As a bonus, the AI learns and adapts to the feedback of these checks so it's correct the first time eventually.