This is a very fundamental tool – if you get it right it becomes a fundamental backbone for your pipeline.
Where it gets a bit complicated is the fact that your list of do’s and don’ts will evolve over time, so you want to design it in a way which makes it easy to expand over time… you’ll want to set it up so that the tests are independent of each other and that adding or removing the tests is easy.
A really good pattern for this kind of thing is set up up like a checklist. At export time you run through the whole list, showing users what worked and what didn’t, like a checklist. It helps if your GUI adds some explanatory text telling artist what the problem is and suggesting how to fix it – you can also add links to tools that help with the problems you’ve seen. It’s generally NOT a good idea to automatic fixups without user permission because that risks the user losing work if something goes wrong.
Usually what I’d do is a gui which only appears when one or more checklist items fail: showing the whole list helps to educate users about the right behaviors. Don’t make it optional, just make it part of the export process proper. Stop the export before it starts rather than expecting the user to make two separate choices (to check and then to export, potentially after they skipped the warning from the checker).
I’d recommend learning a bit about how to use Python decorators to auto-register new checks – that makes it easy to add new checks when you discover new needs. Keep that separate from the GUI so adding a new check is just popping a decorator on a function which returns a true or false, and maybe putting the help text into a docstring that can be used to populate the description in your GUI.
If you are thinking about making this opt-in, i’d reconsider. If you make it mandatory the pressure on you to make it bulletproof will be intense – but if you make it optional, artists will naturally tend to skip it any time they don’t think it’ behaving and after a few months your exports will be just as bad as if you had not written the system at all.
related; Dcc Kit package Critiques: some Python3 modules for clunky 3D asset pipeline - #11 by Il_Berna