What problem does it solve? Go codebases rely on nil pointers and repetitive if err != nil checks, which cause runtime panics and verbose error handling. This Skill teaches how to use the samber/mo library's monadic types — Option, Result, Either, Future, IO, Task, and State — to make absence and failure explicit in the type system and compose multi-step pipelines without nested error checks. ## Core Features & Use Cases - Option[T] for nullable values: Replace nil pointers with Some/None, with built-in JSON marshaling and SQL Scanner/Valuer support for database models and API responses. - Result[T] and Either[L, R] for error handling: Convert Go's (T, error) tuples with TupleToResult, chain operations with Map/FlatMap, and use Either when both outcomes are valid alternatives. - Type-changing pipelines: Use sub-package functions (option.Map, result.Pipe3) and mo.Do notation to work around Go's limitation that methods cannot introduce new type parameters. - Use Case: When building a config loader that reads a file, parses YAML, and validates the result, wrap os.ReadFile with mo.TupleToResult and chain parse and validate steps through result.Pipe2 so errors short-circuit automatically. ## Quick Start Ask the agent to refactor a Go function that returns (T, error) into a samber/mo Result pipeline using TupleToResult and FlatMap chaining.