Guidelines for contributing to Kairo.
- Fork repository
- Clone:
git clone https://github.com/YOUR-USERNAME/kairo.git - Add upstream:
git remote add upstream https://github.com/dkmnx/kairo.git - Create branch:
git checkout -b feature/your-feature
go mod download
just build
just testjust pre-release # Format, lint, test
just lint## Summary
Brief description
## Type
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation
## Testing
How tested
## Checklist
- [ ] Code follows style
- [ ] Tests pass
- [ ] Docs updatedtype(scope): description
body
Types: feat, fix, docs, style, refactor, test, chore
Example:
feat(providers): add DeepSeek provider
Add DeepSeek AI as built-in provider.
Closes #42
- Follow Google Go Style Guide
- Use
gofmtfor formatting - Use
golangci-lint(see.golangci.yml) - MixedCaps naming, no
Getprefix on getters - Short receiver names (1-2 letters), consistent per type
- Doc comments on all top-level exported names
- Indent error flow, early returns
- Return typed errors from
internal/packages
go test -race ./...
go test -coverprofile=coverage.out ./...Requirements:
- New code needs tests
- Use table-driven tests
- Use
t.TempDir()for isolation
- The
cmdpackage must stay above the 70% coverage gate. - New commands and setup-wizard changes must include test coverage to avoid dropping below the threshold.
- Run
go test -coverprofile=coverage.out -covermode=atomic ./...and checkgo tool cover -func=coverage.outbefore submitting. internal/update(self-update path) andcmd(setup wizard) are the highest-value coverage targets.
MIT License - your contributions are licensed under MIT.