Golang Concurrency
SkillAI & modelsThis skill gives your AI guidance and patterns for writing concurrent Go code. Once added, your AI can write Go programs that run several tasks at the same time using established approaches. It comes from a collection of Go skills in the samber/cc-skills-golang repository.
Available today. Use it from your connected AI after setup.
No other account needed.
Add the skill, then ask your AI to write Go code that needs to handle several tasks at once. It will apply the patterns and guidance from the skill as it works.
Then ask your AI: use the Golang Concurrency skill
What your AI can do with it
- Write Go code that runs multiple tasks at the same time
- Apply established patterns for concurrent Go programs
- Follow recommended guidance when structuring concurrent code
- Use Go's concurrency features in the code it writes for you
What this skill tells your AI
The instructions your AI receives, as published by hoangnguyen0403/agent-skills-standard in skills/golang/golang-concurrency/SKILL.md and read by ahel’s review.
Priority: P0 (CRITICAL)
Principles
- Share Memory by Communicating: Use channels or synchronization primitives instead of unprotected shared memory.
- Context Propagation: Always pass
ctxto manage cancellation, deadlines, and graceful termination. - Throttle Database Load: Reserve goroutines for independent external API calls or CPU work. Avoid unconstrained goroutines hitting databases to prevent connection pool exhaustion.
- Prevent Leaks: Never start a goroutine without a deterministic shutdown mechanism.
- Race Detection: Always verify concurrent code with
go test -race.
Implementation Workflow
- Choose primitive —
errgroup.Groupfor parallel tasks with error propagation, channels for pipelines,sync.Mutexfor simple shared state. - Bound Concurrency with Semaphore — Cap maximum active goroutines using a buffered channel semaphore:
sem := make(chan struct{}, maxWorkers) for _, task := range tasks { task := task // prevent loop pointer capture sem <- struct{}{} g.Go(func() error { defer func() { <-sem }() return task.Execute(ctx) }) } - Respect Context Cancellation — Goroutines performing I/O must honor
ctx.Done(). - Avoid Loop Pointer Capture — Capture iteration variables explicitly before launching goroutines.
- Test with race detector — Run
go test -racein local dev and CI.
See ErrGroup and concurrency patterns and context timeout examples
Anti-Patterns
- No DB connection spam: avoid spawning unbounded goroutines to query the database in parallel.
- No goroutine leaks: ensure every goroutine has an exit path via
ctx.Done()or channel closure. - No loop variable pointer trap: never pass the address of a loop variable (
&item) into a concurrent closure. - No unbuffered goroutine spawn storms: always cap concurrency with worker pools or semaphores.
- No bare goroutines: use
errgrouporsync.WaitGroupfor lifecycle tracking.
References
Signals
- GitHub stars
- 565
- Forks
- 164
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
golang-concurrency- Source
- github.com/hoangnguyen0403/agent-skills-standard