Regarding your third question, you can export your Lips/Eyes/Brow configuration and load it/build it after you rebuild the rig. That’s what we are doing in our studio: our rig builder class does something like this:
if body:
mc.file(new=True, f=True)
model = mc.file(self.asset.model, i=True)
guide_file = self.asset.guide
sh.io.import_guide_template(guide_file)
mc.select('guide')
sh.guide_manager.build_from_selection()
mc.delete('guide')
if face:
face_build = face_builder(self.asset.name)
face_build.build()
# assembling
mc.parentConstraint('neck_C0_head_ctl', 'face_main_root')
if eyes:
# load eyes
try:
for side in ['L', 'R']:
eye.rig_from_file(self.asset.get_rig_source('eye_{}.eyes'.format(side), ''))
except:
pass
if skin:
# skin
core.skin.importSkinPack(self.asset.skin)
Body, eyes and skin are calling mGear. So you should could do the same thing for the lips, for example. That is one of the core ideas on mGear: build, test, destroy, adjust and again.