I tried both ways. Letting design emerge incrementally adds vibe-coded technical debt.
At minimum prepare project specs with features as .md file. I found claude to be useful for this task.
If you’re using Cursor, pick a template from here. https://cursor.directory/rules