dynamic-workflows

July 19, 2026 · View on GitHub

A standalone Claude Code plugin that ships one skill, dynamic-workflows, teaching a consistent set of orchestration patterns for Claude Code's Workflow tool — the primitive that lets Claude write and run a JavaScript script coordinating dozens to hundreds of subagents in the background (agent() / parallel() / pipeline() / phase() / log() / workflow(), plus the args / budget globals).

Two sources, two jobs

The skill deliberately separates what the tool does from what to call the shapes you build with it:

LayerSourceRole
Mechanics (reference/api.md)Anthropic's own dynamic-workflows docs and the Workflow tool's own specAuthoritative. Runtime limits, option shapes, approval/cost/resume behavior. When anything conflicts with the pattern catalog, this wins.
Vocabulary (reference/patterns.md)zircote field note, Dynamic Workflow Design Patterns (July 2026)A semantic framework, not a second spec: 20 named orchestration patterns across four families (Structural, Behavioral, Verification, Contract) plus 8 named anti-patterns, GoF-style. Gives shapes names so they can be discussed and reused instead of reinvented per task.

Both are vendored verbatim under vendor/, with vendor/VENDOR.lock recording the source URL, sha256, and fetch timestamp for each — the same cache-never-authority pattern mif-docs-plugin uses for its schema.

Install

From this repo's self-hosting marketplace:

claude plugin marketplace add zircote/workflows-plugin
claude plugin install dynamic-workflows@dynamic-workflows

Keeping the vendored sources current

Two of the three vendored files are fetched from stable public doc URLs and can be refreshed automatically; the third — the Workflow tool's own option spec — is runtime-injected tool metadata with no stable public URL as of this writing, so it's refreshed by hand.

npm ci
npm run hydrate-vendor          # re-fetch refreshable sources, update vendor/VENDOR.lock
npm run hydrate-vendor:check    # report drift only, exit 1 if stale, write nothing (CI-friendly)
npm run validate-plugin         # plugin.json + marketplace.json + SKILL.md + evals + VENDOR.lock shape
npm test                        # node --test over tests/

When hydrate-vendor reports drift, read the diff before deciding whether skills/dynamic-workflows/reference/api.md or reference/patterns.md (the curated distillations the skill actually reads) need updating too — the raw vendor files are a cache of the source, not the skill's own content.

To refresh the manual vendor/anthropic-workflow-tool-spec.md: open a live Claude Code session, find the Workflow tool's description field in its system tool list, and paste the current text back into that file, updating its capture-date header and the fetchedAt field for that source in vendor/VENDOR.lock.

What's inside

PathPurpose
skills/dynamic-workflows/SKILL.mdThe skill itself: an opt-in checklist for authoring a workflow script, a checklist for reviewing an existing one, and a quick pattern index
skills/dynamic-workflows/reference/api.mdDistilled, authoritative mechanics — constraints, the seven core constructs, pipeline() vs parallel(), approval/cost/resume
skills/dynamic-workflows/reference/patterns.mdDistilled pattern catalog — 20 patterns in 4 families, 8 anti-patterns, a decision guide
skills/dynamic-workflows/evals/evals.json6 eval cases checking the skill picks the right pattern (pipeline over parallel, schema binding, adversarial verify, loop-until-dry, phase-gated staging, anti-pattern review)
vendor/Raw vendored copies of both source documents + VENDOR.lock
scripts/hydrate-vendor.mjsRefreshes vendor sources / detects drift
scripts/validate-plugin.mjsStructural validation gate

License

MIT — see LICENSE.