git clone https://github.com/basecamp/cli.git
cd cli
Requires Go 1.24+.
make check # fmt-check + vet + test (fast, run before every commit)
make test # go test ./...
make test-race # go test -race ./...
make lint # golangci-lint run (install: https://golangci-lint.run)
make check-all # full CI suite: fmt-check + vet + lint + test-race + bench
- Run
make checkbefore pushing. - Add tests for new behavior.
- Keep commits focused — one logical change per commit.
- Open a PR against
main.
gofmtformatting — enforced by CI.- Follow Effective Go.
- Tests live alongside source (
*_test.goin the same package).
This is a Go library with no binary output. Key areas:
- Packages (
output/,credstore/,pkce/,oauthcallback/,profile/,surface/) — reusable libraries imported by product CLIs - Seed templates (
seed/) — project scaffolding for new CLIs - GitHub Actions (
actions/) — composite actions for CI - Rubric (
RUBRIC.md) — quality specification for 37signals CLIs