Communitygithub.com

netresearch/go-development-skill

エンタープライズGo開発パターン - 高耐久性サービス、テスト | Claude Code 対応

go-development-skill とは?

このスキルは、エンタープライズ環境向けのGoアプリケーション開発におけるベストプラクティスを提供します。具体的には、型安全性の確保、一貫性のあるコードパターン、そして強固なテスト戦略に焦点を当てています。Claude Code上で動作し、セキュリティ監査、エンタープライズ対応評価、GitHubプロジェクト管理などの関連スキルと連携して、コードレビューの品質ゲートを自動化します。golangci-lint、go vet、staticcheck、govulncheckなどのツールを組み合わせた静的解析と脆弱性スキャンを実行し、標準ライブラリの脆弱性修正手順も提供します。レファレンスドキュメントを通じて、アーキテクチャ、ロギング、レジリエンス、テスト戦略など、様々なトピックの詳細なパターンを参照できます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add netresearch/go-development-skill

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Go Development Patterns

必要なワークフロー

レビュー時は関連スキルを呼び出すこと: security-audit(OWASP)、enterprise-readiness(OpenSSF/SLSA)、github-project(ブランチ保護)。すべて必須です。

コア原則

型安全性

  • 避けるべきこと: interface{}(代わりにanyを使用)、sync.Map、散在する型アサーション、リフレクション
  • 推奨: ジェネリクス[T any]、errors.AsType[T](Go 1.26)、具象型
  • アップグレード後は go fix ./... を実行する

一貫性

  • 問題領域ごとに1つのパターン
  • 既存のコードベースパターンに合わせる
  • 全体的にリファクタリングするか、まったく行わない
  • 設定の優先順位:デフォルト < 設定ファイル < 環境変数 < フラグ

テスト

  • ビルドタグでテスト階層を分離:ユニット(デフォルト)、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フック:ls lefthook.yml 2>/dev/null && lefthook install || echo "Add lefthook — see references/lefthook-template.md"

必要に応じて参照:

参照先目的
references/architecture.mdパッケージ構造、設定管理、ミドルウェアチェイン
references/logging.mdlog/slog を使用した構造化ロギング、logrus からの移行
references/cron-scheduling.mdgo-cron パターン:名前付きジョブ、実行時更新、コンテキスト、耐久性
references/resilience.mdリトライロジック、グレースフルシャットダウン、コンテキスト伝播
references/docker.mdDocker クライアントパターン、バッファプーリング
references/ldap.mdLDAP/Active Directory 統合
references/testing.mdテスト戦略、ビルドタグ、テーブル駆動テスト
references/linting.mdgolangci-lint v2、staticcheck、コード品質
references/api-design.mdビットマスクオプション、関数型オプション、ビルダー
references/fuzz-testing.mdGo ファジングパターン、セキュリティシード
references/contracts-and-invariants.md契約、不変条件、プロパティテスト
references/mutation-testing.mdGremlins 設定、テスト品質測定
references/makefile.mdCI/CD のための標準 Makefile インターフェース
references/modernization.mdGo 1.26 モダナイザー、go fix、errors.AsType[T]、wg.Go()
references/lefthook-template.mdGo プロジェクトの Git フック用、すぐに使える lefthook.yml
references/reusable-workflows.md再利用可能な Actions ワークフロー呼び出し元、権限伝播、リリースゲート出力
references/single-build-release.md単一ビルドリリース:一度クロスコンパイルし、リリースとコンテナで再利用
references/awesome-go-submission.mdawesome-go 投稿:CIで解析されるPR本文、エントリ形式、名前の衝突

品質ゲート

レビュー完了前に以下を実行:

golangci-lint run --timeout 5m    # リンティング
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 に改善案を送信してください

関連スキル