What problem does it solve? Domain concepts like Email, CPF, or Address need validation and immutability guarantees, but plain Go structs with public fields allow invalid states and uncontrolled mutation. This Skill provides a consistent pattern for modeling value objects that validate themselves at construction and can never be tampered with afterward. ## Core Features & Use Cases - Primitive Value Objects: Wrap single values like Email, CPF, or JobOutputUrl with private fields, a New<Name> constructor returning (T, error), and the accessor quartet Value(), String(), Equals(), IsZero(). - Composite Value Objects: Model multi-field concepts like Address or Money using validate struct tags with go-playground/validator via validation.ValidateWithCode. - Typed Error Handling: Constructors return errors.NewBaseError(code, message) so HTTP mappers translate failures to correct status codes, never panicking. - Use Case: When adding a JobOutputUrl field to a transcoding entity, generate a context-specific VO in internal/transcoding/objects/ that validates the URL format at construction and rejects empty or malformed values. ## Quick Start Create a Go value object for Email with a validating constructor, private fields, and Value, String, Equals, and IsZero methods.