Hooks don't just have to be blockers
I think there's a lot of depth in the way you can actually set up sophisticated workflows using hooks. This reaches from simple, human-centered improvements to fully automated, keyword-controlled agentic pipelines.
One of the more core issues about agent workflows is that it's hard to programmatically enforce behaviour in an environment where you're not sure what the output is. A colleague of mine set up an in-depth keyword system, forcing claude to end his turns starting with a keyword. These keywords mapped to certain stages or actions that took part in the flow - such as "PLANNED", "IMPLEMENTED", "DONE" etc. - If that keyword was missing, clooks would throw an error reminding the agent to stick to the keywords. And if that keyword was present, more complex logic could be run. "DONE" could lead into a hook starting normal and E2E tests, confirming that what was just implemented passed all existing and new tests.