Thank you for your interest in contributing to Wave! This document provides guidelines and instructions for contributing.
- Go 1.25+ — Download
- An LLM CLI adapter — Claude Code (
claude) or another supported adapter - Git — for version control and worktree operations
# Clone the repository
git clone https://github.com/re-cinq/wave.git
cd wave
# Build from source
make build
# Run the test suite
make test- Fork the repository and create a feature branch from
main - Write tests for any new functionality
- Run the full test suite before submitting:
go test -race ./... - Commit using conventional commit prefixes
- Open a pull request against
main
Wave uses conventional commits for automated versioning. Every merge to main produces a release.
| Prefix | Version Bump | Example |
|---|---|---|
fix: |
patch (0.0.X) | fix: resolve workspace cleanup race condition |
feat: |
minor (0.X.0) | feat: add Bitbucket pipeline support |
feat!: or BREAKING CHANGE: |
major (X.0.0) | feat!: redesign contract validation API |
docs:, test:, chore:, refactor: |
patch (0.0.X) | docs: update installation guide |
- Follow idiomatic Go practices (
gofmt,go vet) - Single responsibility per package
- Use interfaces for testability and dependency injection
- Table-driven tests with edge case coverage
- No
t.Skip()without a linked issue
See the README for an overview of the project structure and core concepts.
# Run all tests
go test ./...
# Run with race detector (required for PRs)
go test -race ./...
# Run tests for a specific package
go test -race ./internal/pipeline/...- Use GitHub Issues to report bugs or request features
- Include reproduction steps, expected behavior, and actual behavior
- Check existing issues before creating a new one
By contributing to Wave, you agree that your contributions will be licensed under the MIT License.