What problem does it solve? Writing Go HTTP controllers by hand often leads to inconsistent route registration, missing OpenAPI schemas, unvalidated requests, and business logic leaking into handlers. This Skill standardizes how controllers are defined, registered, and wired to use cases in an fx-based Go backend. ## Core Features & Use Cases - Declarative route metadata: Implements types.Controller with Metadata() and Handle(), so routes, methods, middlewares, and OpenAPI schemas are declared in one place. - Auto-registration via fx: Controllers are registered with fx.As(new(types.Controller)) and fx.ResultTags(group:"controllers"), letting the HTTP router discover them automatically. - Request decoding and validation: Uses httputil.DecodeRequest with from, validate, and swaggerignore struct tags, plus validator/v10 under the hood. - Use Case: Add a new POST /api/v1/channel/channels/whatsapp endpoint by defining a request struct, a thin controller that dispatches to a use case handler, and one fx registration line in module.go. ## Quick Start Ask the agent to create a new Go controller for a specific endpoint in a bounded context, following the controller-go patterns and registering it in module.go.