What problem does it solve? Go developers often create oversized interfaces, define them in the wrong package, return interfaces from constructors, or panic on bare type assertions. This Skill encodes idiomatic Go type-system rules so an AI coding agent designs small composable interfaces, useful zero values, and consistent receivers from the start. ## Core Features & Use Cases - Interface design rules: keep interfaces to 1-3 methods, define them where consumed, accept interfaces and return concrete structs, and avoid premature abstraction. - Type safety patterns: comma-ok type assertions, type switches, compile-time interface checks with var _ Interface = (*Type)(nil), and generics over any. - Struct design guidance: struct vs interface embedding, field tags for JSON/YAML/DB serialization, pointer vs value receiver consistency, and the noCopy sentinel for uncopyable structs. - Use Case: When asked to design a notification service depending on an email client, the agent defines a small Sender interface in the consumer package, returns a concrete struct from the constructor, and injects the dependency via the interface for easy mocking in tests. ## Quick Start Ask the agent to design a Go service with its dependencies and data types, for example: design a UserService with a UserStore dependency following idiomatic Go interface and struct patterns.