xiv dev & xiv check
The workflow authoring loop: run a workflow straight from the repo's pack/, or render its graph without executing it.
These two commands exist for working on xiv itself — iterating on a workflow in pack/workflows/*.tsx — rather than running a feature through it. Their defining property is where the workflow is loaded from.
Repo pack vs installed pack
Every other workflow-launching command (implement, ship, the pr family, stack …) loads its workflow from the installed pack in SMITHERS_HOME (default ~/.smithers), put there by xiv init / xiv update. That's what makes runs reproducible: they use the pack as of the last install.
xiv dev and xiv check instead load from the repo's own pack/ — the source of truth — with no install round-trip. Edit pack/workflows/<name>.tsx, re-run, repeat: one command per iteration. They don't require xiv init; what they do require is the pack's own dependencies:
cd pack && bun install # one-time(The CLI itself needs no install step either — bun link points xiv at the repo, so command and flag changes in src/ are live immediately.)
When you're done iterating, run xiv update so the installed pack — the one real runs use — matches the repo. See Managed Files.
xiv check
Render a workflow's graph from the repo's pack/ without executing it.
xiv check <workflow> [--input '<json>'] [--cwd <path>]
# examples
xiv check linear-implement --input '{"issueId":"ENG-123"}'
xiv check pack/workflows/stack-build.tsx --input '{"stackMapPath":"/tmp/map.json"}'Runs smithers graph on the workflow: fast, free, side-effect-free — no agents run, nothing is written. Use it to sanity-check a workflow's structure (does it parse, do the steps wire up, does the input validate) before spending anything on a live run.
xiv dev
Run a workflow live from the repo's pack/ against a target repo.
xiv dev <workflow> [--input '<json>'] [--cwd <path>]
# examples
xiv dev linear-implement --input '{"issueId":"ENG-123"}' --cwd /path/to/target-repoRuns smithers up on the workflow — a real run, with real agents, operating on the target repo. Watch it with xiv ps / xiv logs / xiv ui like any other run (see Operations).
Arguments and flags
Both commands take the same arguments:
| Argument / flag | Default | What it does |
|---|---|---|
<workflow> | required | A workflow name (e.g. linear-implement, resolved to workflows/<name>.tsx under pack/) or a path to a .tsx file. |
--input '<json>' | {} | Raw JSON object forwarded to the workflow as its input. Non-object JSON is rejected. |
--cwd <path> | current directory | Target repo the workflow operates on (sets SMITHERS_TARGET_CWD). |
The input shape is whatever the workflow declares — the same shape the wrapping command would send. For example, xiv implement ENG-123 --tdd sends issueId, tdd, skipAcceptanceReview, and maxIterations, so exercising linear-implement directly looks like:
xiv dev linear-implement --input '{"issueId":"ENG-123","tdd":true,"maxIterations":1}'When to use which
- Structural change to a workflow — edit,
xiv check, fix, repeat; then onexiv devrun against a scratch repo to see it live. - Prompt or agent-assignment change —
xiv devagainst a real-ish input;checkcan't tell you if the prose works. - Done authoring —
xiv update, then use the normal commands. - Not authoring at all — you shouldn't be here; use
implement,ship,pr, orstack, which run the installed pack.
Related
- What the pack contains and how installs work: Managed Files
- The workflows you'd be editing: Workflows
- Model/effort knobs during authoring (
XIV_TIER,XIV_MODEL_*): Model Tiers