add module generator [ci skip]