Thanks for helping improve this project.
The toolchain is pinned in devbox.json. The recommended workflow:
devbox shell # enters the pinned environment, installs Node deps, wires hooks
just ci # runs the full local CI lane (tidy, vet, lint, sec, test, build)Without devbox you'll need: Go 1.26+, just, Node 24 + pnpm 10, golangci-lint v2, gofumpt, gosec, govulncheck, gitleaks, lychee, markdownlint-cli2, and GoReleaser. Mileage may vary.
- Branches off
master. Open a PR targetingmaster. - Keep PRs focused. Refactors, bug fixes, and feature work belong in separate PRs unless the dependency is structural.
- CI must be green before merge:
quality,test,lint,security, andbuild / {ubuntu,macos}-latest.
Conventional Commits with a mandatory scope. Examples:
feat(cli): add status commandfix(server): handle empty body on POST /healthzchore(deps): bump testify to v1.12docs(readme): clarify install instructions
The commit-msg hook validates every commit locally; CI re-validates the
range on each PR.
- Run
golangci-lint run— it enforces the standard linter set plus thegofumptformatter andgoimportsordering. - Tests use
testify/requirefor fatal assertions andtestify/assertfor soft checks. - Comments explain why, not what.
Tag a v<semver> on master. CI publishes binaries, Docker images, and
SBOMs automatically. See AGENTS.md for details.