Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/khalilbenaz/claude-skills-collectionnpx agentmods add skills/khalilbenaz/claude-skills-collection/go-concurrency-guideWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/khalilbenaz/claude-skills-collection/go-concurrency-guide)<a href="https://agentmods.dev/skills/khalilbenaz/claude-skills-collection/go-concurrency-guide"><img src="https://agentmods.dev/badge/skills/khalilbenaz/claude-skills-collection/go-concurrency-guide/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/khalilbenaz/claude-skills-collection/go-concurrency-guide"><img src="https://agentmods.dev/badge/skills/khalilbenaz/claude-skills-collection/go-concurrency-guide.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00075 | $0.01726 |
| Opus 5.5 | $0.00030 | $0.00690 |
| Sonnet 5.5 | $0.00015 | $0.00345 |
| Haiku 4.5 | $0.00007 | $0.00173 |
Grade A, and why
go-concurrency-guide scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
fetch(u) How it starts
The opening of the file, as written. The whole thing — 226 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Go Concurrency Guide
1. Fondamentaux Go — critères de décision
| Situation | Choix |
|---|---|
| Méthode modifie le receiver | Pointer receiver *T |
| Méthode lit seulement | Value receiver T (sauf struct > ~64 bytes) |
| Comportement partagé | Interface implicite (duck typing) |
| Cleanup garanti | defer f.Close() / defer mu.Unlock() |
| Erreur attendue | Retour (T, error), jamais panic |
type Store struct{ db *sql.DB }
func (s *Store) Get(ctx context.Context, id int) (User, error) {
var u User
err := s.db.QueryRowContext(ctx, "SELECT ...").Scan(&u.Name)
return u, fmt.Errorf("store.Get %d: %w", id, err)
}
2. Goroutines et channels
Unbuffered = synchrone (handshake). Buffered = découplage, ne pas abuser.
// Done pattern — arrêt propre
done := make(chan struct{})
go func() {
defer close(done)
for {
select {
case <-ctx.Done():
return
case job := <-jobs:
process(job)
}
}
}()
// Fan-out vers N workers
jobs := make(chan Task, 100)
var wg sync.WaitGroup
for range N { // Go 1.22+
wg.Add(1)
go func() {
defer wg.Done()
for t := range jobs { handle(t) }
}()
}
close(jobs)
wg.Wait()
Règle d'or : le producteur ferme le channel, jamais le consommateur.
3. Patterns de concurrence — quand utiliser quoi
| Pattern | Usage | Snippet |
|---|---|---|
| Worker pool | CPU-bound, N fixe | make(chan Job, buf) + N goroutines |
| Pipeline | Transformations en chaîne | channels en entrée/sortie de chaque stage |
| Semaphore | Limiter I/O concurrent | sem := make(chan struct{}, max) |
| errgroup | Goroutines avec erreur remontée | golang.org/x/sync/errgroup |
// Semaphore — max 10 requêtes HTTP parallèles
sem := make(chan struct{}, 10)
for _, url := range urls {
sem <- struct{}{}
go func(u string) {
defer func() { <-sem }()
fetch(u)
}(url)
}
// errgroup — propagation d'erreur
g, ctx := errgroup.WithContext(ctx)
for _, item := range items {
item := item
g.Go(func() error { return process(ctx, item) })
}
if err := g.Wait(); err != nil { ... }
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 226 lines · 75 tokens per session scan A 04fcf17e1dfd
go-concurrency-guide is a skill published in the GitHub repository khalilbenaz/claude-skills-collection (27 stars, last pushed 2mo ago), licensed MIT. It adds 75 tokens to every session and 1,726 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
go-concurrency-guide compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| go-concurrency-guidekhalilbenaz/claude-skills-collection | Skill | 27 | 2mo ago | MIT | A | 75 | Claude Code, Codex |
| golang-rulessoftspark/ai-toolkit | Skill | 179 | 10d ago | Apache-2.0 | A | 40 | Claude Code |
| unit-testjohnqtcg/awesome-skills | Skill | 30 | 28d ago | MIT | A | 100 | Claude Code |
| fuzzing-testjohnqtcg/awesome-skills | Skill | 30 | 28d ago | MIT | A | 74 | Claude Code |
| go-benchmarkjohnqtcg/awesome-skills | Skill | 30 | 28d ago | MIT | A | 90 | Claude Code |
| go-code-reviewerjohnqtcg/awesome-skills | Skill | 30 | 28d ago | MIT | A | 45 | Claude Code |
| go-dependency-auditjohnqtcg/awesome-skills | Skill | 30 | 28d ago | MIT | A | 102 | Claude Code |