Agent-skills-standard golang-error-handling
Standards for error wrapping, checking, and definition in Golang. Use when wrapping errors, defining sentinel errors, or handling errors idiomatically in Go. (triggers: fmt.Errorf, errors.Is, errors.As, error wrapping, sentinel error, error handling)
install
source · Clone the upstream repo
git clone https://github.com/HoangNguyen0403/agent-skills-standard
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HoangNguyen0403/agent-skills-standard "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/golang/golang-error-handling" ~/.claude/skills/hoangnguyen0403-agent-skills-standard-golang-error-handling && rm -rf "$T"
manifest:
skills/golang/golang-error-handling/SKILL.mdsource content
Golang Error Handling Standards
Priority: P0 (CRITICAL)
Principles
- Errors Values: Handle them like any other value.
- Handle Once: Log OR Return. Never Log AND Return (creates duplicate logs).
- Add Context: Don't return
bubble up. Wrap it with context:err
.fmt.Errorf("failed to open file: %w", err) - Use Standard Lib: Go 1.13+
package (errors
,Is
,As
) sufficient. AvoidUnwrap
(deprecated).pkg/errors
Guidelines
- Sentinel Errors: Expoted, fixed errors (
,io.EOF
). Usesql.ErrNoRows
.errors.Is(err, io.EOF) - Error Types: Structs implementing
. Useerror
.errors.As(err, &target) - Panic: Only for unrecoverable startup errors.
Anti-Patterns
- No bare return err: Wrap with
to preserve call chain.fmt.Errorf("context: %w", err) - No string error checks: Use
/errors.Is
; string comparison brittle.errors.As - No swallowed errors: Never assign errors to
; always handle or propagate._