workflow-builder — Claude Code skill: what it does, how to install
Creates deterministic multi-agent workflow scripts in JavaScript for Claude Code. Useful for coordinating sub-agents in fresh contexts with budget limits and resume support.
/plugin marketplace add alirezarezvani/claude-skills
/plugin install workflow-builder@claude-code-skillsWhat workflow-builder does
This skill authors orchestration scripts (.js) under .claude/workflows/ for the Claude Code Workflow tool. Instead of packing everything into a single prompt session, it splits steps across fresh-context sub-agents. Only individual agent() calls spend tokens, keeping the main context clean and runs resumable.
Three helper scripts handle the lifecycle. workflow_intake.py recommends a topology (pipeline, fan-out, loop, judge panel), scaffold_workflow.py generates starter code, and validate_workflow.py lints the output. The validator enforces strict constraints: the meta block must be a pure literal at the top, Node APIs like fs and non-deterministic calls like Math.random() are forbidden, and open-ended loops must check budget limits before hitting the 1000-agent ceiling.
For simple one-off tasks, a standard Claude session is enough. Choose this workflow approach when a multi-stage task repeats often and needs reproducibility after partial failures.
What it helps with
- Scaffold multi-agent workflow files for the Claude Code Workflow engine
- Verify workflow scripts against parsing and determinism rules
- Configure isolated sub-agent pipelines with token budget controls
- Structure fan-out and judge-panel patterns across fresh context windows
Example prompts for the agent
- Build a pipeline workflow to triage and summarize open PRs
- Create a fan-out workflow script in .claude/workflows/ for parallel linting
- Run the validator on .claude/workflows/pr-triage.js
How to install workflow-builder
1Plugin marketplace
/plugin marketplace add alirezarezvani/claude-skills/plugin install workflow-builder@claude-code-skillsThis installs the whole workflow-builder plugin with all its skills
2Skills CLI (Vercel)
npx skills add alirezarezvani/claude-skills --skill workflow-builder -a claude-code3Manually: put the files in place
~/.claude/skills/workflow-builder/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/workflow-builder/
Manually: put the files in place
.agents/skills/workflow-builder/SKILL.mdFor all projects use ~/.agents/skills/
Manually: put the files in place
.cursor/skills/workflow-builder/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install alirezarezvani/claude-skills workflow-builder2Manually: put the files in place
.github/skills/workflow-builder/SKILL.mdPlatform CLI
gemini skills install https://github.com/alirezarezvani/claude-skills --path engineering/workflow-builder/skills/workflow-builderManually: put the files in place
.devin/skills/workflow-builder/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set349
The whole set →Similar
Questions about workflow-builder
How do I install workflow-builder in Claude Code?
Add the repository via /plugin marketplace add alirezarezvani/claude-skills and install it with /plugin install workflow-builder@claude-code-skills. Alternatively, run npx skills add alirezarezvani/claude-skills --skill workflow-builder -a claude-code.
What does workflow-builder do?
It creates and validates JavaScript workflow scripts for Claude Code's /workflows command. It coordinates sub-agents using patterns like fan-out, pipeline, or loops while isolating token consumption.
What rules does validate_workflow.py enforce?
It requires meta to be a pure literal at the start of the script and bans Node APIs like fs or require. It also blocks non-deterministic calls like Date.now() and requires bounds on loops to avoid the 1000-agent limit.
Source text
SKILL.md · MIT
---
name: workflow-builder
description: Design and write deterministic multi-agent workflow scripts (.js files in .claude/workflows/) for Claude Code's Workflow tool. Use when a user wants to build, create, author, scaffold, or run a custom Claude Code workflow, orchestrate sub-agents (fan-out, pipeline, loop, judge-panel), or automate a repeatable multi-step task across fresh-context agents.
license: MIT
metadata:
inspired_by: "https://github.com/ray-amjad/claude-code-workflow-creator (Ray Amjad)"
targets: "Claude Code Workflow tool (CLAUDE_CODE_WORKFLOWS=1, /workflows)"
version: 1.0.0
---
# Workflow Builder
Author runnable workflow scripts for Claude Code's Workflow tool: deterministic multi-agent orchestration files (`.js`) that fan work out to fresh-context sub-agents under plain JavaScript control flow. Only leaf `agent()` calls spend tokens, so the main session stays clean and the whole run is resumable.
## ALWAYS start every session with intake (non-negotiable)
Before proposing or writing any workflow, run the intake. Do not skip to code.
1. **Ask what kind of workflow they want.** Use this opening question set:
- What repeatable, multi-step task do you want to automate?
- What is the one unit of work a single sub-agent does once?
- How many units — a known list, or discovered by looping?
- Do later steps need *all* prior results at once, or can each item flow on its own?
- Does any step need structured data back (a verdict, a list, scores)?
- Roughly how many tokens / how deep should it go?
2. **If the user is vague, do NOT stall.** Run the recommendation engine to turn whatever you have into 1-2 concrete proposals, then present them *with the reasoning*:
```bash
python scripts/workflow_intake.py --task "their description" \
--units unknown --stages unknown --needs-all unknown --structured unknown
```
The engine returns a recommended topology (fan-out / pipeline / loop / barrier / judge-panel), model picks, a budget guard, and a one-line rationale per choice. Present those as "Here's what I'd build and why" — never ask the user to re-answer questions they already half-answered.
3. **Confirm the shape with the user** (topology + phases + parallel-vs-pipeline) before writing the file. This is the only approval gate.
See [references/decision_and_intake_guide.md](references/decision_and_intake_guide.md) for the full question framework, the vague-input playbook, and worked recommendation examples.
## Decide if a workflow is even the right tool
| Scenario | Use |
|----------|-----|
| Single sub-agent, one task | plain Agent tool |
| Reusable procedure, Claude picks steps dynamically | a Skill |
| Many sub-agents in a fixed topology, deterministic + resumable | **Workflow** ✓ |
Workflows earn their cost when work is parallel or multi-stage, must be reproducible, long enough to fail halfway (so resume matters), or benefits from isolating each step in its own context window. For one-off tasks, just use Claude directly.
## Build → validate → run loop
1. **Scaffold** a starter from the confirmed topology:
```bash
python scripts/scaffold_workflow.py --topology pipeline --name pr-triage \
--description "Triage open PRs" > .claude/workflows/pr-triage.js
```
2. **Edit** the file: `meta` block first (pure literal, first statement), then the async body using the injected globals — `agent()`, `pipeline()`, `parallel()`, `phase()`, `log()`, `budget`, `args`, `workflow()`. Full surface in [references/api_reference.md](references/api_reference.md); copy-paste shapes in [references/orchestration_patterns.md](references/orchestration_patterns.md).
3. **Validate** before running — catches the parser-fatal mistakes:
```bash
python scripts/validate_workflow.py .claude/workflows/pr-triage.js
```
4. **Run** it: enable the feature with `export CLAUDE_CODE_WORKFLOWS=1`, save the file under `.claude/workflows/`, then use `/workflows` to launch and watch it live. Press **P** to pause/resume, **X** to skip a sub-agent. Failed agents retry automatically.
## Hard rules (validator enforces these)
- `meta` is a **pure literal** and the **first statement** — no variables, spreads, template strings, or function calls inside it.
- **No non-determinism:** `Date.now()`, `Math.random()`, argless `new Date()` break resume — pass timestamps via `args`.
- **No filesystem / Node APIs** (`require`, `fs`, `process`, network) in the orchestrator — that work belongs *inside* `agent()` prompts.
- `parallel()` takes **thunks** (`() => agent(...)`), not bare promises. Default to `pipeline()` unless a stage needs the whole prior result set.
- **Guard every open-ended loop** with a counter or `budget.remaining()` check — unguarded loops hit the 1000-agent cap.
- Filter skipped/failed agents: `results.filter(Boolean)`.
## Tooling
- `scripts/workflow_intake.py` — intake recommendation engine (topology + model + budget + rationale from vague input).
- `scripts/validate_workflow.py` — stdlib linter for the rules above; PASS / WARN / FAIL with line numbers.
- `scripts/scaffold_workflow.py` — generate a starter `.js` for any topology.
- `assets/templates/` — fan-out, pipeline, loop-until-budget starters. `assets/examples/` — a complete runnable workflow.
All scripts run with `--sample` (no args) and `--help`.
© Alireza Rezvani · MIT · alirezarezvani/claude-skills