Thanks for your interest! vabc is a small, dependency-light Go CLI + library for Virginia ABC.
git clone https://github.com/rnwolfe/vabc
cd vabc
go build ./... # build
go vet ./... # vet
go test ./... # unit + contract tests
go build -o vabc ./cmd/vabc && ./vabc --helpGo 1.25+ is required. The only dependency is kong.
/(packagevabc) — the importable HTTP+JSON client (Clientinterface, typed models). Keep this dependency-light; do not importinternal/*here.internal/cli/— the thin kong CLI (parse → call library → format). No business logic.internal/geocode/— ZIP/address → coordinates (embedded centroids + Census geocoder).internal/{output,errs,version,skill}/— the agent-CLI contract surface. Treat as stable.
See AGENTS.md for the full map and invariants.
- Conventional Commits (
feat:,fix:,docs:, …). The changelog and version bumps derive from them. - Sign off your commits (
git commit -s) — we use the DCO. No CLA. - The output contract is load-bearing: data → stdout, everything else → stderr; JSON is
2-space with HTML escaping off. Never print to stdout outside
output.Writer. - Exit codes and output fields are append-only. If you change the command grammar, run the
schema-snapshot gate and regenerate the golden:
VABC_UPDATE_GOLDEN=1 go test ./internal/cli/. - Keep it read-only and polite. No mutating commands; no scraping evasion.
- Fork, branch, and make focused changes with tests.
go build ./... && go vet ./... && go test ./...must pass.- Update docs in the same PR when commands/flags/output change (see the freshness note in
AGENTS.md). - Open the PR with a Conventional-Commit title and a clear description.