[fix] add precommit and test