golang-how-to

โดย samber

ตัวประสานทักษะ Golang — ทำงานตลอดเวลาสำหรับงานเขียนโค้ด ตรวจสอบ แก้ไขบั๊ก หรือตั้งค่า Golang อ่านบริบทของงานและโหลดทักษะที่เกี่ยวข้องมากที่สุดจาก samber/cc-skills-golang ซึ่งมักจะโหลดหลายทักษะพร้อมกัน เช่น การเขียนบริการ gRPC จะโหลด golang-grpc + golang-testing + golang-error-handling การแก้ไขบั๊ก panic จะโหลด golang-troubleshooting + golang-safety การตรวจสอบความปลอดภัยจะโหลด golang-security + golang-lint + golang-safety นอกจากนี้ยังแยกแยะคลัสเตอร์ที่แข่งขันกันเมื่อสองทักษะดูเหมือนจะทับซ้อนกัน...

npx skills add https://github.com/samber/cc-skills-golang --skill golang-how-to

Persona: You are a Go skills orchestrator. For every Go task, identify all relevant skills and load them together — a task rarely belongs to a single skill.

Modes:

  • Orchestrate — for any Go coding, review, debug, or setup task, load the primary skill plus all applicable secondary skills simultaneously.
  • Disambiguate — when two skills seem to overlap, show the boundary table. See disambiguation.md.
  • Configure — add a ## Required Go skills block to the project's CLAUDE.md or AGENTS.md. Follow project-config.md.

Skill loading

For each task, load the primary skill and all applicable secondary skills at the same time. Do not wait — load them together at the start.

IntentPrimaryAlso load
Design an API, choose a patterngolang-design-patternsgolang-structs-interfaces, golang-naming
Name a type, function, or packagegolang-naminggolang-code-style
Handle errors idiomaticallygolang-error-handlinggolang-safety (nil-heavy code)
Write goroutines, channels, syncgolang-concurrencygolang-context (if cancellation)
Pass deadlines / cancel operationsgolang-contextgolang-concurrency (if goroutines)
Design structs, embed, use interfacesgolang-structs-interfacesgolang-design-patterns
Database queries and transactionsgolang-databasegolang-error-handling, golang-security
Build a gRPC servicegolang-grpcgolang-testing, golang-error-handling
Build a GraphQL APIgolang-graphqlgolang-testing, golang-error-handling
Build a CLI command treegolang-spf13-cobragolang-cli, golang-spf13-viper (if config)
Layer config from flags/env/filegolang-spf13-vipergolang-spf13-cobra
Write testsgolang-testinggolang-stretchr-testify (if using testify)
Apply optimization patternsgolang-performancegolang-benchmark (measure first)
Measure with pprof / benchstatgolang-benchmarkgolang-performance (fix), golang-troubleshooting (root cause)
Debug a panic or unexpected behaviorgolang-troubleshootinggolang-safety, golang-benchmark (if perf-related)
Monitor in productiongolang-observabilitygolang-performance (if SLO breach)
Audit security vulnerabilitiesgolang-securitygolang-safety, golang-lint
Review formatting and stylegolang-code-stylegolang-naming, golang-lint
Configure golangci-lintgolang-lintgolang-code-style
Write godoc / README / CHANGELOGgolang-documentationgolang-naming
Set up a new project structuregolang-project-layoutgolang-design-patterns, golang-dependency-injection, golang-lint
Set up CI/CD pipelinegolang-continuous-integrationgolang-lint, golang-security
Choose a librarygolang-popular-librariesrelevant library-specific skill
Adopt new Go language featuresgolang-modernizegolang-lint
Use samber/lo (slice/map helpers)golang-samber-logolang-data-structures, golang-performance
Use samber/oops (structured errors)golang-samber-oopsgolang-error-handling
Use log/sloggolang-samber-sloggolang-observability, golang-error-handling
Use dependency injectiongolang-dependency-injectiongolang-google-wire or golang-uber-dig or golang-uber-fx or golang-samber-do

All skill identifiers above are short forms of samber/cc-skills-golang@<name>.

Categories at a glance

Full catalog with "use when" hooks: by-category.md

CategorySkills
Code Qualitygolang-code-style golang-documentation golang-error-handling golang-lint golang-naming golang-safety golang-security golang-structs-interfaces
Architecture & Designgolang-concurrency golang-context golang-data-structures golang-database golang-dependency-injection golang-design-patterns golang-modernize
QA & Performancegolang-benchmark golang-observability golang-performance golang-testing golang-troubleshooting
Project Setupgolang-cli golang-continuous-integration golang-dependency-management golang-popular-libraries golang-project-layout golang-stay-updated
APIsgolang-graphql golang-grpc golang-swagger
Dependency Injectiongolang-dependency-injection golang-google-wire golang-uber-dig golang-uber-fx golang-samber-do
Frameworksgolang-spf13-cobra golang-spf13-viper
samber/*golang-samber-do golang-samber-hot golang-samber-lo golang-samber-mo golang-samber-oops golang-samber-ro golang-samber-slog
Testinggolang-stretchr-testify golang-testing

Competing clusters — boundary lines

Full boundary tables with routing examples: disambiguation.md

Key clusters and their owners:

  • Performance: golang-performance (optimization patterns) · golang-benchmark (measurement) · golang-troubleshooting (root cause) · golang-observability (always-on production)
  • DI: golang-dependency-injection (concepts/decision) · golang-google-wire (compile-time) · golang-uber-dig (runtime reflection) · golang-uber-fx (lifecycle framework) · golang-samber-do (type-safe container)
  • samber/*: golang-samber-lo (finite transforms) · golang-samber-ro (reactive streams) · golang-samber-mo (monadic types)
  • Errors: golang-error-handling (idioms) · golang-samber-oops (structured errors) · golang-safety (prevent panics)
  • Style: golang-code-style · golang-naming · golang-lint · golang-documentation
  • CLI: golang-cli (architecture) · golang-spf13-cobra (command tree) · golang-spf13-viper (config layering)
  • Gap — type vs arch: golang-structs-interfaces (type design) vs golang-design-patterns (architectural patterns)
  • Gap — goroutine vs cancel: golang-concurrency + golang-context — load both when cancelling goroutines via context
  • Gap — correctness vs threat: golang-safety (internal bugs) vs golang-security (external threats)
  • Gap — features vs rules: golang-modernize (language adoption) vs golang-lint (static analysis config)

Configure mode

Force-trigger specific skills in a project's CLAUDE.md or AGENTS.md so they always load.

When invoked as /golang-how-to configure, follow project-config.md.


This skill is not exhaustive. Refer to individual skill files and the official Go documentation for detailed guidance.

If you encounter a bug or unexpected behavior in this skill plugin, open an issue at https://github.com/samber/cc-skills-golang/issues.

Skills เพิ่มเติมจาก samber

golang-code-style
samber
Golang code style conventions — line length and breaking, variable declarations, control flow clarity, when comments help vs hurt. Use when writing or reviewing Go code, asking about style or clarity, or establishing project coding standards. Not for naming conventions (→ See `samber/cc-skills-golang@golang-naming` skill), linter configuration (→ See `samber/cc-skills-golang@golang-lint` skill), or doc comments (→ See `samber/cc-skills-golang@golang-documentation` skill).
developmentcode-review
golang-testing
samber
Production-ready Golang tests — table-driven tests, testify suites and mocks, parallel tests, fuzzing, fixtures, goroutine leak detection with goleak, snapshot testing, code coverage, integration tests, idiomatic test naming. Use when writing or reviewing Go tests, choosing a testing approach, setting up Go test CI, or debugging flaky/slow tests. For testify-specific APIs see `samber/cc-skills-golang@golang-stretchr-testify`; for measurement methodology see...
developmenttestingcode-review
golang-design-patterns
samber
รูปแบบการออกแบบ Go ที่เป็นธรรมชาติ — ตัวเลือกเชิงฟังก์ชัน, คอนสตรัคเตอร์, การไหลของข้อผิดพลาดและการเรียงลำดับ, การจัดการทรัพยากรและวงจรชีวิต, การปิดระบบอย่างนุ่มนวล, ความยืดหยุ่น, สถาปัตยกรรม, การฉีด dependencies, การจัดการข้อมูล, การสตรีม และอื่นๆ ใช้เมื่อเลือกอย่างชัดเจนระหว่างรูปแบบสถาปัตยกรรม, การใช้ตัวเลือกเชิงฟังก์ชัน, การออกแบบ API ของคอนสตรัคเตอร์, การตั้งค่าการปิดระบบอย่างนุ่มนวล, การใช้รูปแบบความยืดหยุ่น, หรือการถามว่ารูปแบบ Go ที่เป็นธรรมชาติใดเหมาะกับปัญหาเฉพาะ
developmentdesigncode-review
golang-error-handling
samber
Idiomatic Golang error handling — creation, wrapping with %w, errors.Is/As, errors.Join, custom error types, sentinel errors, panic/recover, the single handling rule, structured logging with slog, HTTP request logging middleware, and samber/oops for production errors. Built to make logs usable at scale with log aggregation 3rd-party tools. Apply when creating, wrapping, inspecting, or logging errors in Go code. For samber/oops specifics → See `samber/cc-skills-golang@golang-samber-oops`...
developmentcode-review
golang-performance
samber
รูปแบบและวิธีการปรับแต่งประสิทธิภาพของ Golang - หากพบคอขวด X ให้ใช้ Y ครอบคลุมการลดการจัดสรรหน่วยความจำ ประสิทธิภาพของ CPU การจัดวางหน่วยความจำ การปรับแต่ง GC การใช้พูล การแคช และการปรับแต่งเส้นทางร้อน ใช้เมื่อการโปรไฟล์หรือการวัดประสิทธิภาพระบุคอขวดและคุณต้องการรูปแบบการปรับแต่งที่ถูกต้องเพื่อแก้ไข ยังใช้เมื่อตรวจสอบโค้ดด้านประสิทธิภาพเพื่อแนะนำการปรับปรุงหรือการวัดประสิทธิภาพที่ช่วยระบุการเพิ่มประสิทธิภาพอย่างรวดเร็ว ไม่ใช่สำหรับวิธีการวัดผล (→...
developmentcode-review
golang-security
samber
แนวทางปฏิบัติด้านความปลอดภัยและการป้องกันช่องโหว่สำหรับ Golang ครอบคลุมการฉีด (SQL, command, XSS), การเข้ารหัส, ความปลอดภัยของระบบไฟล์, ความปลอดภัยเครือข่าย, คุกกี้, การจัดการความลับ, ความปลอดภัยของหน่วยความจำ และการบันทึก ใช้เมื่อเขียน ตรวจสอบ หรือตรวจสอบโค้ด Go เพื่อความปลอดภัย หรือเมื่อทำงานกับโค้ดที่มีความเสี่ยงที่เกี่ยวข้องกับการเข้ารหัส I/O การจัดการความลับ การจัดการอินพุตจากผู้ใช้ หรือการยืนยันตัวตน รวมถึงการกำหนดค่าเครื่องมือด้านความปลอดภัย
securitycode-reviewdevelopment
golang-database
samber
คู่มือครอบคลุมการเข้าถึงฐานข้อมูลใน Go — คิวรีแบบมีพารามิเตอร์, การสแกนโครงสร้าง, คอลัมน์ที่รองรับค่า NULL, ธุรกรรม, ระดับการแยกธุรกรรม, SELECT FOR UPDATE, พูลการเชื่อมต่อ, การประมวลผลแบบแบตช์, การส่งต่อบริบท, และเครื่องมือจัดการไมเกรชัน ใช้เมื่อเขียน, ตรวจสอบ, หรือดีบักโค้ด Golang ที่ทำงานกับ PostgreSQL, MariaDB, MySQL, หรือ SQLite; สำหรับการทดสอบฐานข้อมูล; หรือสำหรับคำถามเกี่ยวกับ database/sql, sqlx, หรือ pgx ไม่สร้างสคีมาฐานข้อมูลหรือ SQL สำหรับไมเกรชัน
developmentdatabase
golang-lint
samber
แนวทางปฏิบัติที่ดีที่สุดในการ lint และการกำหนดค่า golangci-lint สำหรับโปรเจกต์ Golang — การรัน linter, การกำหนดค่า .golangci.yml, การระงับคำเตือนด้วย nolint directives, การตีความผลลัพธ์ lint, และการเลือก linter ใช้เมื่อกำหนดค่า golangci-lint, สอบถามเกี่ยวกับคำเตือน lint หรือการระงับ nolint, ตั้งค่าเครื่องมือคุณภาพโค้ด, หรือเลือก linter นอกจากนี้ยังใช้เมื่อผู้ใช้กล่าวถึง golangci-lint, go vet, staticcheck, หรือ revive
developmentcode-reviewtesting