Contributing
Clone Eva, run the one command CI runs, and know the conventions before you open a pull request.
Eva is MIT licensed and developed in the open at github.com/missingstudio/eva.
Get set up
Requires Bun 1.3 or newer.
git clone git@github.com:missingstudio/eva.git && cd eva && bun installThe one command
bun run verifyThat is exactly what CI checks on every change: types and lint, the tests, the packaging, and a dependency audit, in that order. If it passes locally it passes in CI.
Run a subset while you work:
bun run check # types, lint, and format in one pass
bun run test # the suite
bun run test packages/kernel # one package, by pathConventions that will fail review
Commits are Conventional Commits. type(scope): description, lowercase,
imperative, no full stop. Types: feat, fix, refactor, chore, docs,
test, ci, build. One logical change per commit.
feat(kernel): batch domain rebuilds during bootBranches are type/kebab-case-description. For example
fix/streaming-first-char-missing.
Prose is ASD-STE100 Simplified Technical English — short sentences, active voice, one instruction per sentence, and the same word for the same thing every time. That applies to commits, plans, and documentation.
Make the smallest correct change. Follow the package boundaries that are already there.
Package boundaries are enforced
A plugin imports the contract packages only — never the kernel, and never another plugin. That is a lint rule rather than a convention, so crossing a boundary fails the build rather than a review.
Before you open a pull request
Read AGENTS.md.