Skip to content
Back to skills

Golang Error Handling

ASecurity

Standards for error wrapping, checking, and definition in Golang. Use when wrapping errors, defining sentinel errors, or handling errors idiomatically in Go.

  • 549 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added June 6, 2026
developmentgosql

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned June 6, 2026

npx -y skills add HoangNguyen0403/agent-skills-standard --skill golang-error-handling --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Golang Error Handling?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Golang Error Handling
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hoangnguyen0403-golang-error-handling/badge)](https://www.skillsdirectory.com/skills/hoangnguyen0403-golang-error-handling)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: golang-error-handling
description: Standards for error wrapping, checking, and definition in Golang. Use when wrapping errors, defining sentinel errors, or handling errors idiomatically in Go.
metadata:
  triggers:
    files:
    - 'fmt.Errorf'
    - 'errors.Is'
    - 'errors.As'
    keywords:
    - error wrapping
    - sentinel error
    - error handling
---
# 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 `err` bubble up. Wrap it with context: `fmt.Errorf("failed to open file: %w", err)`.
- **Use Standard Lib**: Go 1.13+ `errors` package (`Is`, `As`, `Unwrap`) sufficient. Avoid `pkg/errors` (deprecated).

## Guidelines

- **Sentinel Errors**: Expoted, fixed errors (`io.EOF`, `sql.ErrNoRows`). Use `errors.Is(err, io.EOF)`.
- **Error Types**: Structs implementing `error`. Use `errors.As(err, &target)`.
- **Panic**: Only for unrecoverable startup errors.

## Anti-Patterns

- **No bare return err**: Wrap with `fmt.Errorf("context: %w", err)` to preserve call chain.
- **No string error checks**: Use `errors.Is`/`errors.As`; string comparison brittle.
- **No swallowed errors**: Never assign errors to `_`; always handle or propagate.

## References

- [Error Wrapping Patterns](references/error-wrapping.md)

Files in this skill

  • SKILL.md1.4 KB
  • evals/evals.json1.6 KB
  • references/error-wrapping.md734 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.