Encode Multi-Step Work as a Recipe

A conversation is a trace of what happened once — a recipe is a specification that can be replayed, inspected, versioned, and recovered from.

What it is

Multi-step work expressed as ad-hoc conversation — "now do X, now do Y, now do Z" — is inherently fragile: it cannot be replayed from a checkpoint, it has no schema to validate, it accumulates context silently until something breaks, and its state is invisible to anyone who wasn't present for the conversation. A recipe encodes the same work as a declarative specification: each step is named, its inputs and outputs are defined, its dependencies are explicit, and its execution can be resumed after interruption. Recipes are checkpointed, auditable, and version-controlled. They transform a one-time conversation into a reproducible workflow that a different agent, on a different day, can execute with the same result.

A chat is a convenient way for a human to express intent, but it is a poor representation of long-running work — it is a trace of what happened once, not a structure you can replay, inspect, or recover from. The recipe in its mature form is a workflow graph, and the graph is the operating system the work runs on. Its nodes are discrete work units — plan, implement, review, test, deploy, ask-human, inspect-logs — each with its own context and success condition. Its edges are the conditions to advance, retry, branch, escalate, or stop. Around the nodes sit the durable artifacts that carry state between them, the models assigned to roles, the deterministic tools that check the model's work, and the humans who own the consequential decisions. Seeing the work this way is what lets you reason about it as a system rather than re-deriving it from a transcript every time.

The opposing anti-pattern is the giant prompt as operating system: cramming all of that structure into one enormous instruction block. A giant prompt can work temporarily, but it hides the phases, makes evaluation hard because there is no boundary to evaluate at, and turns context into a junk drawer where every concern competes for the model's attention at once. The fix is to move repeated behavior out of the prompt and into named skills, scripts, files, or graph nodes — give each phase a name, a boundary, and an artifact, and the prompt stops being the whole machine and becomes one node in it.

When to reach for it

When NOT to

Exemplars

Related