Re requirements:
1) Keep them fuzzy until the last responsible moment--literally just before implementation.
2) In a conversation with your user (ideally) or product person (better than nothing, probably), flush out just enough to be able to START building.
3) As you're working, get microfeedback from users ("Fred, could you come over here and have a look at this" or equivalent). Use those conversations to solidify enough additional requirements to build a bit more.
4) Repeat until the user is happy.

Source: x.com/allenholub/status/1821251200697954453