Skip to content

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 check

Node 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:boundaries

That is not style. It is the reason shadow mode, replay, and offline evaluation can exist at all.

Where things live

PathWhat
packages/coreThe engine
packages/configSchema and validation
packages/provider-jevThe model provider, record/replay
packages/githubNormalizer, executor, CODEOWNERS
packages/templatesEvery word the bot writes
apps/cli, apps/action, apps/appThe 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 -u

Read 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 accounts
bash
node scripts/check-commits.mjs master..HEAD

Reporting a vulnerability

Privately. See Security.

MIT licensed.