My prompt rule is simple: show me something only when it changes a decision I'm about to make. A prompt that always tells me the git branch, the time, the battery, the phase of the moon and my current AWS profile is just noise with a cursor on the end of it. I have to read all of it to find the one bit that matters, and most of the time none of it does.
So mine is mostly empty. A short path, a $, and that is it for the common case. The interesting parts only appear when they're true. A git branch shows up only inside a repo, and it turns yellow if the tree is dirty, so a clean checkout costs me no visual real estate at all. The hostname only appears over SSH, because on my own laptop I obviously know where I am, but on a remote box that little reminder has saved me from running the wrong destructive command in the wrong place more than once.
The two that have paid for themselves repeatedly are the exit-status indicator and the cloud context. If the last command failed, a small red marker appears with the exit code; if it succeeded, nothing, because success is the default expectation and doesn't need announcing. And if I have a non-default Kubernetes context or AWS profile exported, that gets its own loud segment, because "ran it against prod by accident" is precisely the class of mistake a prompt should be helping me avoid.
I run Starship now, which makes all of this a few lines of TOML rather than an evening of escape codes, and it's fast enough that I never notice it. But the engine matters less than the principle. A good prompt is not a status dashboard you happen to type on. It's a quiet assistant that stays out of the way and clears its throat only when you're about to do something you'd regret.