

I’d be a bit careful with the assumption that a good enough overarching doc stops the create feature getting rewritten when bulk-edit turns up. In my experience it usually doesn’t. Trying to design the whole thing up front so the later feature drops in cleanly is the old big-design-up-front problem, you end up guessing about the part you haven’t built. souperk and doo are right that it’s cheaper to expect the refactor and keep the steps small.
What the doc is genuinely useful for is the boundaries. Write down what the create part is allowed to depend on and hold it to that. If create only ever goes through a repo abstraction and never reaches into provisioning internals it doesn’t need, then bulk-edit comes in as a new module against the same boundary instead of a rewrite. When you do find the second feature forcing changes deep in the first, that’s nearly always the first one having coupled to something it never needed, and no amount of spec detail up front would have caught it. So I’d keep the design phase you’re after, just spend it on those boundaries rather than trying to predict the features you haven’t specced.
I wrote the boundaries idea up here if it’s any use: https://prickles.org/tenet/bounded-contexts/A6

Claude Code, mostly, but I’m with Scipitie that the tool matters less than the process around it. What’s helped most is writing the project’s rules and conventions into files the agent reads each session, then putting the non-negotiable ones behind a linter or a test so it can’t quietly skip them. Treated that way it behaves a lot like the junior who’s read all the books and understood half of them. Left to its own judgement it drifts, which is the part the guardrails are there to catch.