precommit hooks