# Go Errors

> Use this skill when writing, reviewing, or debugging Go error handling — wrapping errors, sentinel errors, error type checking, panicking, or handling errors in defer.

- Skill: `xrplf/go-errors` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds@latest add xrplf/go-errors`
- Raw SKILL.md: https://api.skillmd.com/api/skills/xrplf/go-errors/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: xrplf (https://skillmd.com/u/xrplf)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/xrplf/go-errors

---


# Go Error Management

Critical patterns for robust Go error handling. Covers sentinel errors, error wrapping with context, type/value checking, defer error patterns, and when to use panic vs return.

## When to Use This Skill

- Writing error handling for any Go function
- Reviewing code for ignored or swallowed errors
- Using `errors.Is` / `errors.As` correctly
- Deciding whether to wrap or not wrap an error
- Handling errors inside defer statements

## How It Works

1. Identifies error handling anti-patterns (CRITICAL impact)
2. Explains the production consequences of each mistake
3. Shows correct error propagation and wrapping patterns
4. Covers the full error handling lifecycle

## Categories Covered

1. **Error Management** — sentinel values, wrapping, type checking, panicking, defer errors, ignored returns

## Present Results to User

When identifying issues:
```
❌ Found: Ignoring error return value
📍 Location: handlers/user.go:45
⚠️ Impact: CRITICAL - Silent failures in production
✅ Fix: Check and handle the error explicitly

[Show incorrect code]
[Show correct code]
[Explain why the fix matters]
```

## Troubleshooting

**When is it safe to ignore errors:**
- `Close()` in defer after a successful write is sometimes acceptable — but log it
- Use explicit `_ = f.Close()` to show the ignore is intentional, never silent

**errors.Is vs errors.As:**
- `errors.Is` checks for a specific error value (sentinel)
- `errors.As` checks for a specific error type and unwraps the chain

