Looks like my approach is as old school as it gets. For complex piece of work, the only way to be in flow for me is when I'm driving the engagement. I start with a high level requirement and a high level design plan to achieve it. I also provide constraints that needs to be satisfied (efficiency, performance, cost, scale etc) and write it all into a markdown document and ask LLMs to review it, find blindspots and refine it until I can get a detailed design for that phase.
Then I pass that to another LLM provider to review and check for any bloat that can be cut or blindspots that need to be addressed.
Finally I get a test plan to help me test different components directly and in debug mode. I then ask LLMs to implement in stages where I can test them in small components as possible.
I think I end up spending more time (easily 2x) than hand rolling. But the upside is the design is more thought out compared to hand rolled code. It has fewer accidental complexities and I have a clear mental model of the entire design that can also be shared to others through the document