Contributing to floop
February 28, 2026 · View on GitHub
Thank you for your interest in contributing to floop! This guide will help you get started.
Prerequisites
Development Setup
# Clone the repository
git clone https://github.com/nvandessel/floop.git
cd floop
# Build
make build
# Run tests
make test
# Run the full CI suite (format check + lint + vet + test + build)
make ci
Workflow
- Find or create an issue — Check existing issues or open a new one describing the change
- Fork and branch — Create a feature branch from
main(feat/descriptionorfix/description) - Write code — Follow the Go coding standards
- Write tests — All changes need tests (see Testing below)
- Update docs — If adding or changing CLI commands or flags, update
docs/CLI_REFERENCE.md - Run CI locally —
make cimust pass - Submit a PR — Reference the related issue
Code Standards
See docs/GO_GUIDELINES.md for the full guide. Key points:
- Run
go fmt ./...before committing - Use
fmt.Errorf("context: %w", err)for error wrapping - Keep interfaces small (1-3 methods)
- Pass
context.Contextas the first parameter
Testing
- Table-driven tests with
t.Run()for all functions with multiple input cases - Test both success and error paths
- Use
go test -race ./...to catch race conditions
make test # Run all tests
make test-coverage # Generate coverage report
Commit Messages
Use conventional commits:
feat:new featuresfix:bug fixesdocs:documentation changestest:test additions or changeschore:maintenance
Release Process
Releases are automated using GoReleaser and GitHub Actions.
- Patches auto-release when code changes merge to
main - Skip auto-release with
[skip release]in the commit message or askip-releaselabel on the PR - Minor/major releases are manual:
gh workflow run version-bump.yml -f bump=<minor|major>
For detailed instructions, see docs/RELEASE_PROCESS.md.
Pull Request Expectations
- PRs should be focused — one logical change per PR
- Include a description of what changed and why
- Reference the related issue (
Fixes #123orCloses #123) - All CI checks must pass
- Maintain or improve test coverage
Reporting Issues
- Bugs: Use the bug report template
- Features: Use the feature request template
- Security: See SECURITY.md
License
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.