Skip to content
xiv

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-repo

Runs 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 / flagDefaultWhat it does
<workflow>requiredA 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 directoryTarget 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 one xiv dev run against a scratch repo to see it live.
  • Prompt or agent-assignment changexiv dev against a real-ish input; check can't tell you if the prose works.
  • Done authoringxiv update, then use the normal commands.
  • Not authoring at all — you shouldn't be here; use implement, ship, pr, or stack, which run the installed pack.
  • 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