Most people who try to build a multi-step agent end up with a straight line. Step one, step two, step three — each one waiting politely for the last to finish before it starts. Half of those steps usually never needed to wait at all.

This isn't a prompting problem. It's a shape problem. A prompt is a sentence. A loop is a cycle. But the actual shape of the work — what runs before what, what can run at the same time, what genuinely has to wait — is a graph. Nodes do the thinking. Edges carry the results.

Claude Code's dynamic workflows give you the tooling to build that shape directly. Instead of narrating steps to a model one at a time, Claude writes a plain JavaScript orchestration script and spawns a coordinated fleet of subagents to run it — and the coordination itself costs zero model tokens, because at that layer it's code, not conversation.

Below are the first two steps of the fourteen it takes to get there.

Step 1: Nodes Are Jobs, Edges Are What Flows

A graph has exactly two things in it, and getting them straight resolves most of the confusion people carry into their first attempt. A node is a unit of work: one agent, one bounded job, one input in and one output out. An edge is a dependency — a promise that this node's output feeds that node's input, nothing more.

Diagram showing two nodes with edges feeding a synthesize node, and a disconnected node with no edge
The two building blocks: nodes do the work, edges carry what one node hands to the next.

The mistake almost everyone makes at first is treating "and then" as an edge. "Summarize this file, then tell me the weather" has no edge between the two steps — the weather doesn't consume the summary. That's two disconnected nodes that a linear script chains together for no reason. An edge only exists when data actually moves across it.

For every "and then" in an agent you're building, ask whether the next step actually reads the last step's output. If not, there's no edge — and whatever wait you built in is pure cost with no benefit.

Step 2: Your Linear Script Is a Degenerate Graph

Writing an agent as "do A, then B, then C, then D" is still a graph — just a single unbranching chain where every node has exactly one edge in and one edge out. It runs correctly. It also runs slowly and breaks easily, because a chain carries no redundancy: if C stalls, D never happens, and whatever A already finished sits trapped upstream with nowhere to go.

Diagram comparing a linear chain of four steps against a graph where independent nodes fan into a single merge node
The same work, redrawn: a chain collapses into independent nodes feeding one merge point.

The first real skill of graph engineering is redrawing that chain. Take a linear agent and, for every arrow in it, apply the Step 1 test. Most chains turn out to have two or three arrows that never carried data in the first place. Cut those, and the chain collapses into something wider: a handful of independent nodes that can all run at once, feeding a single node that needs all of them.

Where the Other Twelve Steps Go

From here, the roadmap covers the patterns that make graphs production-grade rather than just faster:

The full guide also includes six ready-to-build graphs — a security sweep, a cited research report, a file-by-file module port, adversarial diff review, a scheduled ecosystem scan, and open-ended bug discovery — plus a working code example for every core pattern.

Fourteen steps, six graphs, and the shift from writing prompts to designing systems.