← ClaudeAtlas

go-concurrencylisted

Happens-before in Go. Use when correctness depends on overlapping goroutines, publication of shared state, bounded concurrent work, or stopping and joining goroutines.
Dankosik/go-service-template-rest · ★ 7 · API & Backend · score 76
Install: claude install-skill Dankosik/go-service-template-rest
# Go Concurrency Judge every change by its **happens-before** story: a claim that two events cannot race is either an edge you can name — channel operation, lock, `WaitGroup`, `Once`, atomic — or it is false. `shared state -> goroutine lifetime -> happens-before edges -> cancellation -> unblock and join -> bounds -> proof` Every goroutine has an owner, a signal it observes to stop, a guaranteed unblock for each blocking site, and a join point; a goroutine missing any of these outlives its purpose and leaks work, memory, or writes into freed assumptions. Worker pools and fan-outs carry explicit bounds, and timers and tickers have named stop owners. Load [goroutine leak profiles](references/goroutine-leak-profiles.md) for goroutine-count growth, shutdown stalls, production liveness incidents, or changes to channel, lock, wait-group, and process-exit ownership. For a delegated Decision or Review, or when the active artifact requires its result interface, load the [shared specialist contract](../../contracts/specialist-contract.md). Trace every changed spawn site to its join or explicit process-lifetime disposition. For interacting goroutines, exhaustive blocking-site coverage, or a decision/review handoff, record `GoroutineStory{owner, stop, blocking_sites, unblock, join, bound, happens_before, proof}` per path. A single local path can keep its judgment and evidence in the code or existing task artifact. Account for shared state, callers, cancellation, close ownership, time