I prefer letting it loose
On a new product I lock in the core stack in CLAUDE.md (Convex, TanStack on Vercel and Clerk for auth), ask it to keep a memory/ folder of the decisions it makes, and then let the agent loose.
If I give it guidance then it strictly follows it. If I leave things open it generally makes good choices.
The other day I asked it to use the Convex testing framework, and it ended up bastardising what it was doing to fit. So I blew it away, just said "write the test" and it did a way better job.