·2 min read

A workflow is a program, not a skill

I've tried most of the ways to get Claude through a big piece of work. Better prompts, skills, written specs, teams of agents it manages itself. They lean on the same thing underneath. The model holds the plan in its head as it works, and on a long run that grip slips and the work drifts.

A dynamic workflow is a different kind of thing. You describe the task, and Claude writes an actual program for it, a JavaScript file, and a runtime runs that program in the background. The program holds the loop, the branching, and every partial result. It spawns a fleet of fresh agents. Claude Code is already a harness, the loop that drives the model and its tools. A workflow is a smaller harness it builds on the spot for one task, a sub-harness that runs the work so the model doesn't have to hold it together.

A skill or a spec is text the model reads and follows, the opinionated way you want a thing done. A workflow is code that runs and gives the orders. The model writes it, and the runtime takes over.

A workflow takes one of a few standard shapes, and Claude picks the one that fits the task.

Classify and acttaskclassifyABC

route each task to the right handler

Fan out and synthesizetasksynth

split wide, merge into one answer

Adversarial verificationworkercheckcheckcheck

separate skeptics check the output

Generate and filterfilterbestdrop

flood with options, keep the best

Tournamentvsvsvswinner

rank by head-to-head comparison

Loop until doneagentdone?doneyes, againno

keep going until a real stop

Most days you won't need one. For a focused job in a single pass, a skill is still the right tool, like running a review checklist over a pull request. A workflow doesn't replace that. You reach for one when the work is wide, or repetitive, or has to be checked by something other than the agent that did it, like auditing a whole codebase or ranking a few hundred applicants. Each item gets a clean context of its own, and the program holds the run from end to end.

This is what I'm building into Contextful, where the routine work runs on structure like this and only the uncertain calls reach a person.