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 rules so an AI coding agent applies them consistently when designing or reviewing structs and interfaces. ## 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 before a second implementation exists. - 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 uncopyable structs. - Struct Mechanics: Guides struct vs interface embedding decisions, struct field tags for JSON/YAML/DB serialization, useful zero values via lazy initialization, and pointer vs value receiver consistency. - Use Case: When asked to design a notification service depending on an email client, the agent defines a minimal Sender interface in the consumer package, returns a concrete struct from the constructor, and injects the dependency for easy mocking in tests. ## Quick Start Ask the agent to design or review Go types, for example: review my Go service struct and tell me whether the interfaces, receivers, and field tags follow idiomatic Go design.