A hook is a mechanism for adding functionality at a certain point in a program's normal flow. As a simple example, imagine a program that works by doing three things in order. It could have hooks that allow the user to add actions before or after any individual steps. Each possible point in the flow is a separate hook. One way to implement it is with a directory for each hook in the program's configuration directory, where executables can be placed; the hook runs each executable in sorted order.
I didn't look up any of this, so it may not be the best explanation, but I hope it is helpful.
Codeberg is one option. I think they run Forgejo.