- Go >= 1.26
- Task (taskfile.dev) - build automation
- Buf (buf.build) - protobuf tooling
- Podman or Docker - required for integration tests
-
Fork the repository and clone your fork:
git clone git@github.com:<your-user>/crosscodex.git cd crosscodex
-
Install dependencies:
task dev:deps
- Open an issue first for large features or architectural changes.
- Create a feature branch from
main:git checkout -b feature/123-short-description main
- Write tests first (TDD): test, see it fail, implement, see it pass.
- Run the full check suite before submitting:
task check
Use imperative mood, max 72 characters for the subject line.
feat(config): add profile selection
fix(db): close idle connections on shutdown
test(natsbus): add TLS integration coverage
docs(readme): update build instructions
- Reference the related issue (e.g., "Closes #123").
- Describe what changed and why.
- Keep PRs focused -- one logical change per PR.
- All CI checks must pass before review.
- Unit tests are required for all changes:
task test:unit - Integration tests are required for infrastructure changes:
task test:integration:<name> - Follow table-driven test patterns used in the existing codebase.
- Never commit test fixtures that contain credentials or secrets.
- Follow existing patterns in the codebase. Read surrounding code before editing.
- Run
task lintand fix any issues before submitting. - Do not introduce new linters or formatters without discussion.
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.