Tend to adopt RFC standards for specs, works pretty well. My general rule of thumb is describe scope/concerns/interfaces at a high level, details at any wanted depth. That makes the LLM generated code reasonably stable and bounds it to a clearly defined boundary. Whatever ambiguity is left in details is then treated "expectedly unstable".