Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Implements concurrent Go patterns using goroutines and channels, designs and builds microservices with gRPC or REST, optimizes Go application performance with pprof, and enforces idiomatic Go with generics, interfaces, and robust error handling. Use when building Go applications requiring concurrent programming, microservices architecture, or high-performance systems. Invoke for goroutines, channels, Go generics, gRPC integration, CLI tools, benchmarks, or table-driven testing.
.claude/skills/heidihowilson-golang-pro/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 100% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-02 | ✓→✗ | ▼ Worse | 16% | 0% |
| case-04 | ✓→✗ | ▼ Worse | 16% | 0% |
Senior Go developer with deep expertise in Go 1.21+, concurrent programming, and cloud-native microservices. Specializes in idiomatic patterns, performance optimization, and production-grade systems.
go vet ./... before proceedinggolangci-lint run and fix all reported issues before proceeding-race flag, fuzzing, 80%+ coverage; confirm race detector passes before committingLoad detailed guidance based on context:
| Topic | Reference | Load When | |-------|-----------|-----------| | Concurrency | references/concurrency.md | Goroutines, channels, select, sync primitives | | Interfaces | references/interfaces.md | Interface design, io.Reader/Writer, composition | | Generics | references/generics.md | Type parameters, constraints, generic patterns | | Testing | references/testing.md | Table-driven tests, benchmarks, fuzzing | | Project Structure | references/project-structure.md | Module layout, internal packages, go.mod |
Goroutine with proper context cancellation and error propagation:
go// worker runs until ctx is cancelled or an error occurs. // Errors are returned via the errCh channel; the caller must drain it. func worker(ctx context.Context, jobs <-chan Job, errCh chan<- error) { for { select { case <-ctx.Done(): errCh <- fmt.Errorf("worker cancelled: %w", ctx.Err()) return case job, ok := <-jobs: if !ok { return // jobs channel closed; clean exit } if err := process(ctx, job); err != nil { errCh <- fmt.Errorf("process job %v: %w", job.ID, err) return } } } } func runPipeline(ctx context.Context, jobs []Job) error { ctx, cancel := context.WithTimeout(ctx, 30*time.Second) defer cancel() jobCh := make(chan Job, len(jobs)) errCh := make(chan error, 1) go worker(ctx, jobCh, errCh) for _, j := range jobs { jobCh <- j } close(jobCh) select { case err := <-errCh: return err case <-ctx.Done(): return fmt.Errorf("pipeline timed out: %w", ctx.Err()) } }
Key properties demonstrated: bounded goroutine lifetime via ctx, error propagation with %w, no goroutine leak on cancellation.
X | Y union constraints for generics (Go 1.18+)When implementing Go features, provide:
Go 1.21+, goroutines, channels, select, sync package, generics, type parameters, constraints, io.Reader/Writer, gRPC, context, error wrapping, pprof profiling, benchmarks, table-driven tests, fuzzing, go.mod, internal packages, functional options
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-08 | fail→pass | 19,802 | 18,173 | -8% | 1 | 1 | 0% | 4,129 | 4,828 | +17% | 0 | 0 | — |
case-01 | fail→fail | 23,248 | 19,553 | -16% | 1 | 1 | 0% | 5,103 | 5,144 | +1% | 0 | 0 | — |
case-07 | pass→pass | 22,410 | 22,395 | -0% | 1 | 1 | 0% | 4,790 | 6,042 | +26% | 0 | 0 | — |
case-02 | pass→fail | 29,148 | 30,728 | +5% | 1 | 1 | 0% | 6,195 | 7,211 | +16% | 0 | 0 | — |
case-03 | fail→fail | 30,852 | 26,244 | -15% | 1 | 1 | 0% | 6,198 | 7,215 | +16% | 0 | 0 | — |
case-04 | pass→fail | 21,447 | 20,292 | -5% | 1 | 1 | 0% | 4,626 | 5,372 | +16% | 0 | 0 | — |
case-05 | pass→fail | 16,095 | 16,330 | +1% | 1 | 1 | 0% | 3,234 | 4,445 | +37% | 0 | 0 | — |
case-06 | pass→pass | 26,758 | 22,562 | -16% | 1 | 1 | 0% | 5,640 | 5,911 | +5% | 0 | 0 | — |
case-09 | fail→pass | 17,901 | 29,007 | +62% | 1 | 1 | 0% | 3,593 | 7,196 | +100% | 0 | 0 | — |
case-10 | fail→fail | 30,408 | 32,094 | +6% | 1 | 1 | 0% | 6,183 | 7,201 | +16% | 0 | 0 | — |
case-11 | pass→pass | 17,272 | 21,254 | +23% | 1 | 1 | 0% | 3,456 | 5,528 | +60% | 0 | 0 | — |
case-12 | fail→fail | 30,330 | 25,415 | -16% | 1 | 1 | 0% | 6,186 | 6,419 | +4% | 0 | 0 | — |
case-13 | pass→fail | 20,841 | 18,242 | -12% | 1 | 1 | 0% | 4,219 | 4,755 | +13% | 0 | 0 | — |
case-14 | pass→pass | 22,182 | 21,792 | -2% | 1 | 1 | 0% | 4,864 | 6,312 | +30% | 0 | 0 | — |
case-15 | pass→pass | 27,935 | 17,171 | -39% | 1 | 1 | 0% | 6,188 | 4,924 | -20% | 0 | 0 | — |
case-16 | pass→pass | 19,199 | 22,567 | +18% | 1 | 1 | 0% | 4,067 | 5,829 | +43% | 0 | 0 | — |
case-17 | fail→pass | 27,795 | 22,581 | -19% | 1 | 1 | 0% | 5,009 | 5,985 | +19% | 0 | 0 | — |
case-18 | pass→pass | 22,661 | 19,521 | -14% | 1 | 1 | 0% | 4,722 | 5,221 | +11% | 0 | 0 | — |
case-19 | pass→pass | 25,444 | 21,730 | -15% | 1 | 1 | 0% | 5,474 | 5,659 | +3% | 0 | 0 | — |
case-20 | pass→pass | 11,851 | 14,603 | +23% | 1 | 1 | 0% | 2,376 | 3,876 | +63% | 0 | 0 | — |
case-21 | pass→pass | 18,757 | 17,940 | -4% | 1 | 1 | 0% | 4,252 | 5,224 | +23% | 0 | 0 | — |
case-22 | pass→pass | 8,115 | 13,461 | +66% | 1 | 1 | 0% | 1,855 | 3,719 | +100% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of -11 percentage points is the difference between those two pass rates over the 22 comparable cases. 5 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.