{"id":"3855af8f-30c4-430b-b92c-15189904b970","slug":"zircote-workflows-plugin","kind":"skill","name":"workflows-plugin","summary":"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","owner":"zircote","repoUrl":"https://github.com/zircote/workflows-plugin","license":"MIT","licenseTier":"permissive","trust":"community","stars":3,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-07-19T00:53:44.000Z","addedAt":"2026-10-14T05:13:10.476Z","logoUrl":"https://avatars.githubusercontent.com/u/307960?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["developer-tools","productivity","design-media"],"tags":[],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-14T22:41:22.142Z","sample":false,"url":"https://conduits.dev/tools/zircote-workflows-plugin","language":"JavaScript","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# dynamic-workflows\n\nA **standalone Claude Code plugin** that ships one skill,\n[`dynamic-workflows`](skills/dynamic-workflows/SKILL.md), teaching a\nconsistent set of orchestration patterns for Claude Code's **`Workflow`**\ntool — the primitive that lets Claude write and run a JavaScript script\ncoordinating dozens to hundreds of subagents in the background\n(`agent()` / `parallel()` / `pipeline()` / `phase()` / `log()` /\n`workflow()`, plus the `args` / `budget` globals).\n\n## Two sources, two jobs\n\nThe skill deliberately separates **what the tool does** from **what to call\nthe shapes you build with it**:\n\n| Layer | Source | Role |\n| --- | --- | --- |\n| **Mechanics** (`reference/api.md`) | Anthropic's own [dynamic-workflows docs](https://code.claude.com/docs/en/workflows) 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. |\n| **Vocabulary** (`reference/patterns.md`) | zircote field note, [*Dynamic Workflow Design Patterns*](https://zircote.com/field-notes/dynamic-workflow-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. |\n\nBoth are vendored verbatim under [`vendor/`](vendor/), with\n[`vendor/VENDOR.lock`](vendor/VENDOR.lock) recording the source URL, sha256,\nand fetch timestamp for each — the same cache-never-authority pattern\n[`mif-docs-plugin`](https://github.com/modeled-information-format/mif-docs-plugin)\nuses for its schema.\n\n## Install\n\nFrom this repo's self-hosting marketplace:\n\n```bash\nclaude plugin marketplace add zircote/workflows-plugin\nclaude plugin install dynamic-workflows@dynamic-workflows\n```\n\n## Keeping the vendored sources current\n\nTwo of the three vendored files are fetched from stable public doc URLs and\ncan be refreshed automatically; the third — the `Workflow` tool's own option\nspec — is runtime-injected tool metadata with no stable public URL as of this\nwriting, so it's refreshed by hand.\n\n```bash\nnpm ci\nnpm run hydrate-vendor          # re-fetch refreshable sources, update vendor/VENDOR.lock\nnpm run hydrate-vendor:check    # report drift only, exit 1 if stale, write nothing (CI-friendly)\nnpm run validate-plugin         # plugin.json + marketplace.json + SKILL.md + evals + VENDOR.lock shape\nnpm test                        # node --test over tests/\n```\n\nWhen `hydrate-vendor` reports drift, read the diff before deciding whether\n`skills/dynamic-workflows/reference/api.md` or `reference/patterns.md` (the\ncurated distillations the skill actually reads) need updating too — the raw\nvendor files are a cache of the source, not the skill's own content.\n\nTo refresh the manual `vendor/anthropic-workflow-tool-spec.md`: open a live\nClaude Code session, find the `Workflow` tool's `description` field in its\nsystem tool list, and paste the current text back into that file, updating\nits capture-date header and the `fetchedAt` field for that source in\n`vendor/VENDOR.lock`.\n\n## What's inside\n\n| Path | Purpose |\n| --- | --- |\n| `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 |\n| `skills/dynamic-workflows/reference/api.md` | Distilled, authoritative mechanics — constraints, the seven core constructs, `pipeline()` vs `parallel()`, approval/cost/resume |\n| `skills/dynamic-workflows/reference/patterns.md` | Distilled pattern catalog — 20 patterns in 4 families, 8 anti-patterns, a decision guide |\n| `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) |\n| `vendor/` | Raw vendored copies of both source documents + `VENDOR.lock` |\n| `scripts/hydrate-vendor.mjs` | Refreshes vendor sources / detects drift |\n| `scripts/validate-plugin.mjs` | Structural validation gate |\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n"}