mcpField
G
go-development

go-development

github.com/netresearch開発13123 回インストール今日更新
リポジトリ

go-development について

Go プロジェクトの開発や保守向けのスキルです。コーディング規約、テストやセキュリティチェックに加え、一般的な開発作業の参考ガイドをまとめています。

主な機能

  1. 01型安全な Go のパターンと規約
  2. 02テストと静的解析のガイダンス
  3. 03セキュリティと脆弱性のチェック
  4. 04Go 開発のテーマ別リファレンス

活用シーン

  1. 01Go コードの一貫性の確認
  2. 02プロジェクトの品質チェック設定
  3. 03テストやエラー処理のパターン選定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/netresearch/go-development-skill --skill go-development

インストール後、Claude Code で/go-developmentを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

checkpoints.yaml
evals/
evals.json
references/
api-design.md
architecture.md
awesome-go-submission.md
branch-protection.md
contracts-and-invariants.md
cron-scheduling.md
dependencies.md
docker.md
fuzz-testing.md
ldap.md
lefthook-template.md
linting.md
logging.md
makefile.md
modernization.md
mutation-testing.md
resilience.md
reusable-workflows.md
single-build-release.md
testing.md
scripts/
verify-go-project.sh

詳細

Go 開発パターン

基本原則

型安全性
  • 避けるもの: interface{}(any を使用)、sync.Map、散在する型アサーション、リフレクション
  • 推奨: ジェネリクス [T any]、errors.AsType[T](Go 1.26)、具象型
  • アップグレード後に go fix ./... を実行します
一貫性
  • 問題領域ごとにパターンを1つに絞ります
  • 既存のコードベースのパターンに合わせます
  • リファクタリングは全体的に行うか、まったく行わないかのどちらかにします
  • 設定の優先順位:デフォルト値 < 設定ファイル < 環境変数 < フラグ
テスト
  • ビルドタグでテスト層を分離します:単体テスト(デフォルト)、integration、e2e
  • 必ず t.Parallel()、t.Helper()、テーブル駆動のサブテストを使用します
  • log/slog を直接使用します。カスタム Logger インターフェースでラップしてはいけません
慣例
  • 命名:ID、URL、HTTP(Id、Url、Http ではありません)— ツールでは強制されません(ST1003 はデフォルトで無効です)
  • エラーのラップ: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.mdgo-cron に組み込まれた再試行/サーキットブレーカー/タイムアウトのラッパーへのポインター
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 fix のモダナイザーとビルドタグの落とし穴、errors.AsType[T]、b.Loop
references/dependencies.mdアップグレード:go get -u all、メジャーバージョン、ビルド対象のスコープ設定
references/lefthook-template.mdGo プロジェクトの Git フックですぐに使える lefthook.yml
references/branch-protection.mdルールセットの基準値:3 つのルールセットによるゲート、バイパスモード
references/reusable-workflows.md再利用可能な Actions ワークフローの呼び出し元、権限の伝播、リリースゲートの出力
references/single-build-release.md単一ビルドのリリース:クロスコンパイルは一度だけ行い、リリースとコンテナーで再利用
references/awesome-go-submission.mdawesome-go への投稿:CI で解析される PR 本文、名前の衝突

品質ゲート

レビューを完了する前に実行します:

golangci-lint run --timeout 5m    # Linting
go vet ./...                       # Static analysis
staticcheck ./...                  # Additional checks
govulncheck ./...                  # Vulnerability scan
go test -race ./...                # Race detection

標準ライブラリの脆弱性修正

govulncheck が標準ライブラリの脆弱性を報告した場合は、vuln.go.dev で修正版のバージョンを確認し、go.mod の go X.Y.Z を更新してから、go mod tidy を実行します。


貢献: 改善案を https://github.com/netresearch/go-development-skill に提出してください

コメント