go-functional-options
Use when designing a Go constructor or factory with 3+ optional parameters, or an API expected to grow new options over time. Covers the canonical Option interface pattern with unexported apply method, With* constructors, default values, and the interface-vs-closure tradeoff. Apply proactively when reviewing a New* function that takes many settings, even if the user didn't ask about functional options. Does not cover general function design (see go-functions).
- Version
- 0.1.0
- License
- MIT
- Compatibility
- Designed for Claude Code or similar AI coding agents. Plain Go (any supported version).
Pinned to revision 121b47cd4371, so it is the text this page describes rather than whatever the author pushed since.
Pre-approved tools experimental
Experimental field. Support varies between clients, so this list is what the author declared, not what your client will enforce.
- Read
- Edit
- Write
- Glob
- Grep
- Bash(go:*)
- Bash(golangci-lint:*)
Files
- skills/go-functional-options/SKILL.md
- skills/go-functional-options/references/option-evolution.md
- skills/go-functional-options/references/options-vs-struct.md
Every link opens the file at its source, pinned to the revision this page describes.