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 your structs and interfaces stay small, composable, testable, and panic-free. ## Core Features & Use Cases - Interface Design Rules: Enforces small 1-3 method interfaces defined where consumed, 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 (var _ io.ReadWriter = (*T)(nil)), generics over any, and the noCopy sentinel for uncopyable structs. - Struct Design Guidance: Explains embedding vs named fields, struct field tags for JSON/YAML/DB serialization, useful zero values with lazy initialization, and pointer vs value receiver consistency. - Use Case: When reviewing a Go event dispatcher that uses bare type assertions like e.Payload.(*UserCreated), the Skill directs you to switch to comma-ok form and return errors instead of panicking. ## Quick Start Ask the AI to review your Go package's interface and struct design, for example: "Review my Go service — should NewUserService return an interface, and where should I define the UserStore interface?"