Skip to content

Command line

The development surface, and the way to evaluate Dispatch before installing anything.

bash
npm i -g @dispatch-triage/cli

Set TYPESAFE_API_KEY and GITHUB_TOKEN in a .env at your repository root.

Try it on your own history first

bash
dispatch replay --repo your-org/your-repo --last 200

replay never writes to GitHub. There is no code path in it that could. It re-triages real items and prints what would happen:

  Replayed 20 item(s)

  Would apply
       3  label: add needs-tests
       2  label: add area:docs

  Would suggest
       3  label: add needs-repro
       3  comment: needs-repro.md

  Suppressed
       2  below_suggest_threshold  careful-review, needs-tests

Commands

CommandWhat it does
initScaffold a config, a workflow, and a template directory
validateReport every config problem at once, with file and line
runTriage one item
replayRe-triage history and print the plan; never writes
recordCapture fixtures from real items (the only command that spends money)
evalCalibration and accuracy over the decision log
sync-labelsCreate the repository labels your taxonomy implies

Record once, work offline forever

bash
dispatch record --repo your-org/your-repo --last 50 --estimate-only   # check the cost
dispatch record --repo your-org/your-repo --last 50                   # ~$0.005

Everything afterwards — replay, eval, your whole test suite — runs against those fixtures with no API key and no network. Fixtures store the redacted state, so they are safe to commit.

Validation points at the line

.github/dispatch.yml:14:3  error  References `has_reproduction`, which is not a question. (rules[1].if)
    Define it under `questions:`, or check the spelling.

  0 errors, 2 warnings

Errors mean the rule can never work. Warnings mean it will run but something will not happen — a destructive op without an opt-in, a label outside your taxonomy. Both are reported; only errors stop the load.

dry-run is not shadow mode

--dry-run evaluates under the real mode and then declines to execute, so you see what would happen. --mode shadow suppresses everything with a reason, so the plan reads "nothing, because shadow". Use --dry-run when you want to see the plan.

MIT licensed.