Skip to content
Back to skills

Go Concurrency

ASecurity

Use when correctness depends on overlapping goroutines, publication of shared state, bounded concurrent work, or stopping and joining goroutines.

  • 7 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 24, 2026
developmentgo

Security analysis

A100/100

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

Scanned September 24, 2026

npx -y skills add Dankosik/go-service-template-rest --skill go-concurrency --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Go Concurrency?

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

Security grade badge for Go Concurrency
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dankosik-go-concurrency/badge)](https://www.skillsdirectory.com/skills/dankosik-go-concurrency)

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: go-concurrency
description: "Use when correctness depends on overlapping goroutines, publication of shared state, bounded concurrent work, or stopping and joining goroutines."
metadata:
  invocation: model
  kind: method
---

# 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, timers, and synchronization identity. Complete
when every story names an edge or a race and every blocking site has an unblock
disposition. The race detector can reject a story; it cannot prove one. Use
existing race, leak, `synctest`, and lint gates for mechanical evidence.

Load the [review selector](references/index.md) for fire-and-forget or blocked
goroutines, publication or lock scope, unbounded fan-out or queues, and
timer-driven coordination.

Files in this skill

  • SKILL.md2.1 KB
  • references/bounded-work-and-backpressure.md2.5 KB
  • references/goroutine-leak-profiles.md3.4 KB
  • references/goroutine-lifetime-and-blocking-sites.md1.4 KB
  • references/index.md1.5 KB
  • references/shared-state-publication-and-locking.md1.4 KB
  • references/timers-and-time-driven-shutdown.md2.8 KB

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…