Contributing
The full guide lives in CONTRIBUTING.md. This page is the short version.
bash
git clone https://github.com/JeelGajera/Dispatch.git
cd Dispatch
pnpm install
pnpm checkNode 22 or 24, pnpm 10. No API key required — every test runs offline against recorded fixtures.
The rule that matters
@dispatch-triage/core is a leaf: no GitHub client, no model SDK, no filesystem, no network. Everything outside goes through a port.
bash
pnpm run check:boundariesThat is not style. It is the reason shadow mode, replay, and offline evaluation can exist at all.
Where things live
| Path | What |
|---|---|
packages/core | The engine |
packages/config | Schema and validation |
packages/provider-jev | The model provider, record/replay |
packages/github | Normalizer, executor, CODEOWNERS |
packages/templates | Every word the bot writes |
apps/cli, apps/action, apps/app | The three surfaces |
Changing a rule or a threshold
packages/core/src/rules is held to 100% coverage on all four metrics. Your change will also show up as a diff in the golden decision snapshot, which runs the real engine over real recorded model output:
bash
pnpm --filter @dispatch-triage/cli test -uRead that diff. It is what your change would do to a real repository. If it surprises you, the change is probably wrong.
Commits
Conventional Commits, scoped to the package graph:
feat(core): add a gate for draft pull requests
fix(github): handle a null author on deleted accountsbash
node scripts/check-commits.mjs master..HEADReporting a vulnerability
Privately. See Security.