Currently, axiomatic project generates a project with a sample model, view, offering, and a plugin to hook these things up to the tab UI. (Well, actually, it doesn't, but if it worked it would.) This creates a single, impenetrable mass for a new developer to wade through.
While it's helpful to provide a command that will spit out a fully working project, it's not very helpful to provide dummy models and views, especially when there's only one of each and there's no explanation of how to create more. A more discoverable, friendly UI would have subcommands to do things like generate a new model, generate a view that displays a current model, generate a new offering, or add a powerup to add a tab to the navbar.
It's important, however, not to get carried away with too much code generation fanciness; we shouldn't do any AST walking, although it might be acceptable to have a few *very* simple "magic" comments to allow generation tools to regenerate e.g. an offering with new powerups. I would prefer to avoid even that, however; ideally, especially for the first revision, each tool would generate an entirely new module and to be explicit you would have to delete the old module.
I expect these tools to be primarily used as a way to introduce new developers to the idioms involved in writing "pretty" Mantissa code; for example, anything that generates a class should generate a paired (failing) unit test, and there should be no option to turn that off :).
Similarly, for all generated code, we need to have unit tests. This is marked a defect since the current project subcommand doesn't work any more (#2530) and never had any unit tests (#911).
Related tickets: