Worth adding the operational half to this: a prompt is a production artifact, so it needs the same handling as code. Version it in the repo rather than editing it in a console, and keep a small fixed set of examples you rerun after every edit - otherwise the only way anyone discovers a prompt change was bad is a user complaint two weeks later. The smart-contract example makes another point implicitly. When the output feeds code rather than a person, the highest-leverage instruction is usually the output contract: give it a schema and validate against it, so a malformed response fails loudly at the boundary instead of flowing downstream as a plausible-looking value.