- Go 1.25+
- golangci-lint —
brew install golangci-lint - goreleaser —
brew install goreleaser - pre-commit (optional) —
brew install pre-commit && pre-commit install
git clone https://github.com/supermodeltools/cli
cd cli
go mod tidy
make buildmake build # compile to dist/supermodel
make test # run tests with race detector + coverage
make lint # run golangci-lint
make fmt # format all .go files
make tidy # go mod tidy + verify
make release-dry # full GoReleaser snapshot build across all platforms- Keep
main.gothin — it only callscmd.Execute(). - Put all commands under
cmd/. One file per subcommand. - Put reusable logic under
internal/. Nothing ininternal/should importcmd/. - Write table-driven tests. Aim for coverage on non-trivial logic.
- Follow standard Go error handling — wrap with
fmt.Errorf("...: %w", err).
- Branch from
main. make testandmake lintmust both pass.- Fill in the PR template.
- Keep PRs focused — one concern per PR.
Questions? Email abe@supermodel.software.