Rob’s “Don’t repeat yourself” is a great piece of advice, and you should take it beyond individual projects.
Consider scenes like level select, options, in-app currency store or credits.
What’s the one thing that they all have in common? People don’t really care about any of them. Often not even the developers! 
Level select is only a means of getting to the actual game and so it needs to be as smooth and as effortless as possible for the player, so that it doesn’t annoy them. If a player goes to the options or credits scene, they’ll probably do so only once or perhaps they are just lost, etc.
The point in all of this is that you should reuse as much code as you can.
For instance, we at Spyric have several custom scenes and overlays scenes that we just copy from one project to another. One such overlay scene is our “store.lua” file. The overlay scene itself doesn’t contain any hardcoded values, but it gets its information from two associated files: translations.lua and settings.lua. The first file simply contains the strings for all text, buttons, etc. and the second file contains all display object specifications, such as how many buttons, what graphics do they use, where they are, their functions and id’s, etc. The scene also contains special functions like watching ads to get currency or checking time from our server to get a daily reward.
When we started, we used to create the iap and store systems from the ground up for every project, which always took a few days and some more to squash all the bugs and test everything as well as set up all integration, etc. but these days we just copy this file from one project to another, change a few lines of code in the settings.lua file and call a custom scene. To be completely honest, the reason why programming these IAPs/stores always took us to long is because no one wanted to do them as they were so boring. So, now we can just cut a few days of boring work and possible bugs by calling just calling a scene that we know works.
Since we’ve got similar modules/scenes for options, credits, some types of level selects, etc. we are able to cut down a lot of development time and keep everyone working on more interesting tasks that actually matter.