One prompt to "build the dashboard" feels efficient. It isn't. You get a pile of code that almost fits your design system, invents three new button styles, and leaves edge cases for "later", which means never.
Big UI works as planner → executor, not one shot.
Three roles
Planner agent: breaks the screen into regions, lists components from your design system, flags gaps ("no table row variant for error state"), outputs a task graph.
Executor agent: one task at a time, implement the wrapper, wire tokens, add a Storybook story, run a visual check.
You: review the plan, reject bad abstractions, own governance. Adoption always beats output.
How I use this in client work
In Foundations Sprints, structure comes first, code second. Same pattern inside Claude Code or Cursor with skills loaded from the repo: the agent knows your token names, your component boundaries, your contribution rules.
The planner catches missing variants before anyone writes CSS. The executor stays inside guardrails because the tasks are small and scoped.
When one-shot still works
Single components with clear specs, a token-bound button refresh, a docs page from a template, fine. Full surfaces with data tables, empty states, responsive behavior, and governance? Plan first.
What's the last UI you one-shotted and regretted? That's your candidate for planner, executor next time.