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).
The skill deliberately separates what the tool does from what to call the shapes you build with it:
| Layer | Source | Role |
|---|---|---|
Mechanics (reference/api.md) |
Anthropic's own dynamic-workflows docs and the Workflow tool's own spec |
Authoritative. 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.
From this repo's self-hosting marketplace:
claude plugin marketplace add zircote/workflows-plugin
claude plugin install dynamic-workflows@dynamic-workflowsTwo 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.
| Path | Purpose |
|---|---|
skills/dynamic-workflows/SKILL.md |
The 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.md |
Distilled, authoritative mechanics — constraints, the seven core constructs, pipeline() vs parallel(), approval/cost/resume |
skills/dynamic-workflows/reference/patterns.md |
Distilled pattern catalog — 20 patterns in 4 families, 8 anti-patterns, a decision guide |
skills/dynamic-workflows/evals/evals.json |
6 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.mjs |
Refreshes vendor sources / detects drift |
scripts/validate-plugin.mjs |
Structural validation gate |
MIT — see LICENSE.