Communitygithub.com

Go 開發模式 (netresearch/go-development-skill)

企業級 Go 開發模式技能:強韌服務、測試策略,相容 Claude Code。

go-development-skill) 是什麼?

此技能為 Go 開發者提供了一組嚴謹的企業級開發規範與自動化流程,適用於 Claude Code 等 AI 代理。它強制要求型別安全(避免 interface{} 與反射,偏好泛型)、一致性(單一問題域對應一種模式、配置優先級明確)以及結構化測試(使用建置標籤隔離測試層級、並行執行與表格驅動子測試)。技能要求進行程式碼審查時,必須一併叫用安全審計(OWASP)、企業就緒(OpenSSF/SLSA)及 GitHub 專案(分支保護)等關聯技能,並在完成前執行包括 golangci-lint、go vet、staticcheck、govulncheck 及競賽檢測在內的多道品質關卡。此外,技能還透過一系列參考文件(涵蓋架構、日誌、排程、韌性、Docker、LDAP 等主題)提供可依需載入的深度指引,並內建標準函式庫漏洞修復流程,確保專案始終保持最新與安全。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add netresearch/go-development-skill

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Go 開發模式

必要工作流程

執行審查時,請一併叫用相關技能: security-audit (OWASP)、enterprise-readiness (OpenSSF/SLSA)、github-project (分支保護)。這些都是必須的。

核心原則

型別安全

  • 避免: interface{} (改用 any)、sync.Map、分散的型別斷言、反射
  • 偏好: 泛型 [T any]、errors.AsType[T] (Go 1.26)、具體型別
  • 升級後執行 go fix ./...

一致性

  • 每個問題域僅使用一種模式
  • 符合現有程式碼庫模式
  • 要重構就全面重構,否則完全不做
  • 配置優先級:預設值 < 設定檔 < 環境變數 < 命令列標記

測試

  • 使用建置標籤隔離測試層級:單元測試 (預設)、integration、e2e
  • 一律使用 t.Parallel()、t.Helper()、表格驅動子測試
  • 直接使用 log/slog —— 絕對不要為其包裝自訂的 Logger 介面

慣例

  • 錯誤訊息:小寫、無標點符號 (errors.New("invalid input"))
  • 命名:ID、URL、HTTP (勿用 Id、Url、Http)
  • 錯誤包裝:fmt.Errorf("failed to process: %w", err)

參考資料

Git Hooks:ls lefthook.yml 2>/dev/null && lefthook install || echo "Add lefthook — see references/lefthook-template.md"

視需要載入:

參考文件用途
references/architecture.md套件結構、配置管理、中介軟體鏈
references/logging.md使用 log/slog 的結構化日誌、從 logrus 遷移
references/cron-scheduling.mdgo-cron 模式:具名任務、執行時期更新、Context、韌性
references/resilience.md重試邏輯、優雅關機、Context 傳遞
references/docker.mdDocker 客戶端模式、緩衝池
references/ldap.mdLDAP/Active Directory 整合
references/testing.md測試策略、建置標籤、表格驅動測試
references/linting.mdgolangci-lint v2、staticcheck、程式碼品質
references/api-design.mdBitmask 選項、函數式選項、建構者模式
references/fuzz-testing.mdGo Fuzzing 模式、安全性種子
references/contracts-and-invariants.md合約、不變量、屬性測試
references/mutation-testing.mdGremlins 設定、測試品質衡量
references/makefile.md標準 Makefile 介面,適用於 CI/CD
references/modernization.mdGo 1.26 現代化工具、go fix、errors.AsType[T]、wg.Go()
references/lefthook-template.md立即可用的 Go 專案 Git Hooks 設定檔 lefthook.yml
references/reusable-workflows.md可重複使用的 Actions Workflow 呼叫者、權限傳遞、發佈閘道輸出
references/single-build-release.md單一建置發佈:一次交叉編譯,重複用於發佈與容器
references/awesome-go-submission.mdawesome-go 提交:CI 解析的 PR 正文、條目格式、名稱衝突處理

品質關卡

在完成任何審查前執行:

golangci-lint run --timeout 5m    # Linting
go vet ./...                       # 靜態分析
staticcheck ./...                  # 額外檢查
govulncheck ./...                  # 漏洞掃描
go test -race ./...                # 競賽檢測

標準函式庫漏洞修復

當 govulncheck 報告標準函式庫漏洞時:透過 vuln.go.dev 檢查修復版本、更新 go.mod 中的 go X.Y.Z、執行 go mod tidy。對於設有分支保護的儲存庫,請使用 PR 分支。


貢獻方式: 將改善提交至 https://github.com/netresearch/go-development-skill

相關技能