npx skills add ...
npx skills add cxuu/golang-skills --skill go-functions
Use when organizing functions within a Go file, formatting function signatures, designing return values, or following Printf-style naming conventions. Also use when a user is adding or refactoring any Go function, even if they don't mention function design or signature formatting. Does not cover functional options constructors (see go-functional-options).
npx skills add cxuu/golang-skills --skill go-functions
references/SIGNATURES.md - Read when designing parameters, return values, named results, or signature readability.references/PRINTF-STRINGER.md - Read when using fmt verbs, Stringer, GoStringer, Formatter, or Printf-style function naming.When this skill does NOT apply: For functional options constructors (
WithTimeout,WithLogger), see go-functional-options. For error return conventions, see go-error-handling. For naming functions and methods, see go-naming.
Organize functions in a file by these rules:
struct/const/var definitionsNewXxx/newXxx constructors appear right after the type definitionKeep the signature on a single line when possible. When it must wrap, put all arguments on their own lines with a trailing comma:
Add /* name */ comments for ambiguous arguments, or better yet, replace naked
bool parameters with custom types.
You almost never need a pointer to an interface. Pass interfaces as values — the underlying data can still be a pointer.
Functions that accept a format string should end in f for go vet support.
Declare format strings as const when used outside Printf calls.
Prefer %q over %s with manual quoting when formatting strings for logging
or error messages — it safely escapes special characters and wraps in quotes:
See go-functional-options when designing a constructor with 3+ optional parameters.
| Topic | Rule |
|---|---|
| File ordering | Type -> constructor -> exported -> unexported -> utils |
| Signature wrapping | All args on own lines with trailing comma |
| Naked parameters | Add /* name */ comments or use custom types |
| Pointers to interfaces | Almost never needed; pass interfaces by value |
| Printf function names | End with f for go vet support |