Skip to content

zircote/workflows-plugin

Repository files navigation

dynamic-workflows

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:

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.

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

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

License

MIT — see LICENSE.

About

Claude Code plugin: consistent orchestration patterns for the Workflow tool (dynamic workflows), vendoring Anthropic's own docs and the zircote Dynamic Workflow Design Patterns field note

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages