Testing, Linting, and Code Generation
Testing
dev test # Runs go test ./...
dev test -v ./internal/controller/... # Verbose tests for the controller package
dev test -short ./... # Skips integration and chromedp tests (no Orbstack or browser required)
dev test forwards all arguments to go test.
Linting and formatting
dev lint # Runs kube-lint, lint-docs, and golangci-lint
dev fmt # Attempts to fix linting errors
All Go files must be formatted with gofumpt (enforced by golangci-lint).
Code generation
Protocol Buffers
Core domain types are defined in internal/skipper/types.proto and the gRPC service is defined in internal/skipper/controller.proto. After modifying .proto files, regenerate the Go code:
buf generate
This uses Buf with the configuration in buf.gen.yaml to generate:
types.pb.go— Go structs and enums (from types.proto)types.pb.json.go— JSON marshaling helpers (from types.proto)controller.pb.go— Request/response types (from controller.proto)controller.pb.json.go— JSON marshaling helpers (from controller.proto)controller_grpc.pb.go— gRPC service stubs (from controller.proto)