AM
И обязательно работоспособный. И обязательно с осмысленным сообщением. И лучше пробежаться глазками.
Коммит локально - да сколько угодно и как угодно. Это просто "save game". Все равно коммиты которые сделал локально можно будет переделать в один фичевый.
Когда и где выполнять линтовку, преттиер, тесты - мнения сильно отличаются. Но бывает что они автоматически прогоняются при коммите.
Мой воркфлоу - преттиер на прекоммит, линтовка при сборке вебпаком, тесты на CI или таску рукой запускать. Но универсально оптимального способа не существует, когда и где удобнее - зависит от проекта