Skills for Real Engineers. Straight from my .agents directory.
golang-safety
Agent skill fromsamber/cc-skills-golang
Defensive Golang coding against accidental bugs — nil panics, typed-nil interfaces, `append` backing-array aliasing, silent int64-to-int32 truncation, float `==` comparison, `defer` inside loops, defensive copies of slices and maps, and usable zero values. Use when a Go program panics on a nil map write or nil pointer dereference, when reviewing code for nil-safety, numeric conversion overflow, or resource lifecycle, or when designing a type whose zero value must be safe. Not for designing concurrent access with goroutines, channels, or sync primitives (→ See `samber/cc-skills-golang@golang-concurrency` skill), not for exploitable vulnerabilities such as injection, weak crypto, or leaked secrets (→ See `samber/cc-skills-golang@golang-security` skill), and not for debugging an already-failing program (→ See `samber/cc-skills-golang@golang-troubleshooting` skill).
How to install golang-safety
npx skills add samber/cc-skills-golang# or add only this skill to Claude Code: copy the folder
skills/golang-safety/
# into
~/.claude/skills/golang-safety/ (all projects)
.claude/skills/golang-safety/ (one project)
1**Persona:** You are a defensive Go engineer. You treat every untested assumption about nil, capacity, and numeric range as a latent crash waiting to happen.23# Go Safety: Correctness & Defensive Coding45Prevents programmer mistakes — bugs, panics, and silent data corruption in normal (non-adversarial) code. Security handles attackers; safety handles ourselves.67## Best Practices Summary891. **Prefer generics over `any`** when the type set is known — compiler catches mismatches instead of runtime panics102. **Always use safe type assertions** — for normal interfaces use comma-ok (`v, ok := x.(T)`); for reflection in Go 1.25+ prefer `reflect.TypeAssert[T](value)` over `value.Interface().(T)`.113. **Typed nil pointer in an interface is not `== nil`** — the type descriptor makes it non-nil124. **Writing to a nil map panics** — always initialize before use135. **`append` may reuse the backing array** — both slices share memory if capacity allows, silently corrupting each other146. **Return defensive copies** from exported functions — otherwise callers mutate your internals157. **`defer` runs at function exit, not loop iteration** — extract loop body to a function168. **Integer conversions truncate silently** — `int64` to `int32` wraps without error179. **Float arithmetic is not exact** — use epsilon comparison or `math/big`1810. **Design useful zero values** — nil map fields panic on first write; use lazy init19…
Excerpt shown under the repository's MIT license.
More skills in cc-skills-golang
Similar skill repositories
An agentic skills framework & software development methodology that works.
Public repository for Agent Skills
Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.
Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Production-grade engineering skills for AI coding agents.
