What problem does it solve? Go developers often create oversized interfaces, return interfaces from constructors, panic on bare type assertions, or mix pointer and value receivers, leading to brittle and untestable code. This Skill encodes idiomatic Go type-system design rules so an AI coding agent produces correct struct and interface patterns by default. ## Core Features & Use Cases - Interface Design Rules: Enforces small 1-3 method interfaces defined at the consumer, the accept-interfaces-return-structs principle, and avoiding premature interfaces with a single implementation. - Type Safety Patterns: Covers comma-ok type assertions, type switches, compile-time interface checks with var _ Interface = (*Type)(nil), generics over any, and the noCopy sentinel for go vet copy detection. - Struct Design Guidance: Explains embedding vs named fields, useful zero values with lazy initialization, struct field tags for JSON/YAML/DB serialization, and pointer vs value receiver consistency. - 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 an interface-based dependency and review whether the types follow idiomatic struct and interface patterns.