Thanks for your interest in contributing. Here is everything you need to know.
- Open an issue first for non-trivial changes so we can discuss the approach
- For bugs, include steps to reproduce and the expected vs actual behavior
- For features, describe the use case and why it belongs in the core protocol
- Edit Solidity in
src/ - Compile:
npx hardhat compile - Update tests in
test/ - All tests must pass before opening a PR
The API contract lives in api-spec/openapi.yaml. This is the source of truth.
- Edit the OpenAPI spec first
- Run codegen:
pnpm --filter @workspace/api-spec run codegen - Implement the route in
api-server/src/routes/ - Use generated Zod schemas for input/output validation
- Use generated React Query hooks in the frontend
Never edit files in api-zod/src/generated/ or api-client/src/generated/ directly.
The schema lives in db/src/schema/index.ts.
- Edit the schema
- Run:
pnpm --filter @workspace/db run push(dev only) - For production, generate and apply a migration
Never use console.log in server code. Use req.log in route handlers.
The web UI is intentionally limited to onboarding and monitoring. Do not add UI for operations that should be bot commands. All vault, project, and bounty actions happen via @gitbankbot mentions.
pnpm run typecheckThis must pass with zero errors before opening a PR.
- Keep PRs focused - one concern per PR
- Write a clear description of what changed and why
- Reference related issues with
Closes #<number> - Do not bump version numbers - maintainers handle releases
Be direct and respectful. Treat others the way you want to be treated.
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.