coding.sh workflows
Capture, measure and A/B-test multi-agent workflow runs. Every option of coding.sh workflows and its subcommands, from its own --help.
Alias: workflow, wf.
coding.sh workflows <action> Capture, measure and A/B-test multi-agent workflow runs Commands list Runs with status, wall time, cost and agent count import Import Claude Code workflow runs from disk show Run tree with per-node time, cost and status stats Critical path, concurrency, barrier idle, failures, cache hits, cost score Grade a run's output against a case's truth run A/B workflow variants over cases; prints the experiment id compare Paired comparison of two variants of an experiment replay Re-run an edited script from a run's journal (cached prefix) Notes Workflow runs are stored under ~/.coding.sh/workflows/ until the index stores them. Aliases workflow, wf
coding.sh workflows list
Runs with status, wall time, cost and agent count.
coding.sh workflows list [options]
Runs with status, wall time, cost and agent count
Options
--framework <FRAMEWORK> Only runs from this framework
--name <NAME> Only runs of this workflow
--since <WHEN> Only after this time: 7d, 12h, 30m or a date
--experiment <ID> Only runs of this experiment
-n, --limit <N> Maximum rows (default: 20)
--import Import new or changed Claude Code workflow runs first (--no-import to skip) (default: true)
Examples
coding.sh workflows list --since 7d
coding.sh workflows list --framework langgraph --json coding.sh workflows import
Import Claude Code workflow runs from disk.
coding.sh workflows import [path] [options] Import Claude Code workflow runs from disk Arguments path Projects, project, session or run directory (default: Claude Code's projects dir) Options --force Re-import run directories that did not change
coding.sh workflows show
Run tree with per-node time, cost and status.
coding.sh workflows show <RUN> [options] Run tree with per-node time, cost and status Arguments run Workflow run id Options --tree Include subagent, tool and model-call nodes --gantt Print the timeline as TSV instead
coding.sh workflows stats
Critical path, concurrency, barrier idle, failures, cache hits, cost.
coding.sh workflows stats <RUN> Critical path, concurrency, barrier idle, failures, cache hits, cost Arguments run Workflow run id
coding.sh workflows score
Grade a run's output against a case's truth.
coding.sh workflows score <RUN> [options] Grade a run's output against a case's truth Arguments run Workflow run id Options --case <ID> Case id (default: the run's case) --cases <DIR> Cases directory (default: evals/workflows/<workflow>/cases) --slack <LINES> Line distance that still matches a seeded bug (default: 5)
coding.sh workflows run
A/B workflow variants over cases; prints the experiment id.
coding.sh workflows run <WORKFLOW> [options]
A/B workflow variants over cases; prints the experiment id
Arguments
workflow Workflow name (cases live under evals/workflows/<workflow>/cases)
Options
--variant <NAME=SCRIPT|JSON> Variant: name=script path (claude), name=command (command), or JSON (repeatable)
--cases <DIR> Cases directory (default: evals/workflows/<workflow>/cases)
-k, --k <N> Attempts per case and variant (default: 3)
--split <SPLIT> Only cases in this split
--driver <DRIVER> How a variant runs (default: claude)
-j, --concurrency <N> Jobs at once (a workflow already fans out) (default: 1)
--validate Check seeded bugs on each case's snapshot first: each bug's test fails, and passes with the bug reverted (--no-validate to skip) (default: true)
--resume [<ID>] Continue an interrupted workflow experiment: finished trials are kept, only the rest run (no ID: the newest unfinished one with the same config)
--retries <N> Retries per trial after a rate limit, 5xx or network error, with backoff; a failed setup step is retried once and a refused login never (failures are never retried) (default: 3)
--stop-after-infra <N> Stop once N trials in a row fail on infrastructure after their retries (a refused login, a failed setup, rate limits, 5xx, network): no new trial starts and the run is no quality verdict; 0 never stops (default: 5)
--trial-timeout <SEC> Time limit per trial, retries included; a trial over it fails
--bin <PATH> claude binary for the claude-code-workflow driver (default: claude on PATH)
-y, --yes Run without asking when the estimated cost is above the confirm threshold
Examples
coding.sh workflows run coding-sh-improve -v base=wf/improve.js -v cand=wf/improve-v2.js -k 3 --split dev
coding.sh workflows run coding-sh-improve -v base=wf/improve.js -v cand=wf/improve-v2.js -k 3 --resume coding.sh workflows compare
Paired comparison of two variants of an experiment.
coding.sh workflows compare <EXPERIMENT> [options] Paired comparison of two variants of an experiment Arguments experiment Experiment id Options --baseline <VARIANT> Baseline variant (required) --candidate <VARIANT> Candidate variant (required) --threshold <SCORE> Score that counts as a pass (default: the case's, else 0.5) --seed <N> Bootstrap seed for the intervals and P(front) --select <RULE> Pick a variant to deploy: cheapest above a quality floor, best quality − λ·cost, or the front's extremes --q-min <SCORE> min-cost: quality lower bound to reach --q-drop <PP> min-cost: quality points below the baseline's mean allowed (default 10) --lambda <λ> weighted: quality given up per USD (per second when no run records cost) Examples coding.sh workflows compare wfx_01 --baseline base --candidate cand --select min-cost --q-drop 10 coding.sh workflows compare wfx_01 --baseline base --candidate cand --select pareto --json
coding.sh workflows replay
Re-run an edited script from a run's journal (cached prefix).
coding.sh workflows replay <RUN> [options]
Re-run an edited script from a run's journal (cached prefix)
Arguments
run Base workflow run id
Options
--script <PATH> Edited workflow script (required)
--base-script <PATH> Script the base run used, when it was not captured
--args <JSON> Workflow args (JSON or a .json path)
--dry-run Print the predicted cache hits without running
--bin <PATH> claude binary for the claude-code-workflow driver (default: claude on PATH)
-y, --yes Run without asking when the estimated cost is above the confirm threshold