Skip to main content
We welcome contributions: bug fixes, features, and documentation improvements. This section helps collaborators get started.

Prerequisites

  • Docker
  • make (pre-installed on macOS and most Linux distributions)
  • Mint CLI, only if you plan to preview documentation changes
All developer tooling (Go, buf, mockery, golangci-lint, openssl) runs inside a Docker image built by the Makefile. No additional local installs are required.

Before you start

  1. Read the Architecture Document to understand the codebase
  2. Check existing issues and discussions
  3. Follow Conventional Commits for commit messages

How to contribute

  1. Fork the repository
  2. Create a branch for your change
  3. Make your changes; ensure tests pass: make test
  4. Document user-facing changes in changelogs/unreleased.md
  5. Commit with a conventional commit message
  6. Open a pull request to the main branch
  7. For a bug fix or a new feature, leave a working sample in the playground package per its instructions

Changelog entries

User-facing changes are documented in changelogs/unreleased.md, updated in the same pull request as the code change. Entries are grouped under the headings that apply (Features, Fixes, Performance, Behavior Changes, Deprecations, Documentation); keep only the headings you actually use.
Link the authorizing issue, prefer user-facing language over implementation detail, and skip the entry entirely for purely internal refactors with no observable behavior change.

Contributor License Agreement

Every contributor must sign the CLA before a pull request can be merged. It only needs to be done once and covers all your future contributions. On your first pull request the CLA Assistant bot comments with a signing link: click it, authenticate with GitHub, and confirm. The pull request cannot be merged until the CLA check passes.

Previewing documentation

Documentation lives under docs/ and is built with Mintlify. To preview changes locally:

Key documents