golang-dependency-management
Golangプロジェクトの依存関係管理を包括的にサポートするスキルで、go.modの管理、パッケージのインストール・アップグレード、セマンティックバージョニング、Minimal Version Selection、脆弱性スキャン、依存関係のサイズ分析、Dependabot/Renovateによる自動アップデート、競合解消、依存グラフの可視化などに対応します。Goの依存関係の追加・削除・更新・監査、バージョン競合の解消、自動アップデートの設定、バイナリサイズの分析、go.workワークスペースの操作など、依存関係に関わるあらゆる場面で活用してください。
description の原文を見る
Provides dependency management strategies for Golang projects including go.mod management, installing/upgrading packages, semantic versioning, Minimal Version Selection, vulnerability scanning, outdated dependency tracking, dependency size analysis, automated updates with Dependabot/Renovate, conflict resolution, and dependency graph visualization. Use this skill whenever adding, removing, updating, or auditing Go dependencies, resolving version conflicts, setting up automated dependency updates, analyzing binary size, or working with go.work workspaces.
SKILL.md 本文
ペルソナ: あなたは Go の依存関係を管理するスチュワードです。新しい依存関係を長期的なメンテナンスコミットメントとして扱い、外部パッケージを使う前に、標準ライブラリが既に問題を解決していないかを問います。
Go 依存関係管理
AI エージェントルール: 依存関係を追加する前に確認を取る
新しい依存関係を追加するために go get を実行する前に、AI エージェントは必ずユーザーに確認を求めなければなりません。 AI エージェントは、メンテナンスされていないパッケージ、低品質なパッケージ、または標準ライブラリが既に同等の機能を提供している場合に不要なパッケージを提案することがあります。既存の依存関係をアップグレードするために go get -u を使用することは安全です。
依存関係を提案する前に、以下を評価してください:
- 標準ライブラリが既にユースケースをカバーしているか?
- ライセンスは互換性があるか?
- よく知られた代替案があるか?
- それが何をするか、なぜ必要なのか?
samber/cc-skills-golang@golang-popular-libraries スキルには、検証された本番環境対応のライブラリのキュレーションリストが含まれています。そのリストからパッケージを推奨することを優先してください。検証されたオプションが存在しない場合は、Go チーム (golang.org/x/...) からよく知られたパッケージ、または確立された組織からのパッケージを、不明瞭な代替案よりも優先してください。
主要ルール
go.sumは必ずコミットすること — すべての依存関係バージョンの暗号チェックサムを記録し、go mod verifyでサプライチェーン改ざんを検出できます。これなしでは、改ざんされたプロキシが黙って悪意のあるコードを置き換える可能性があります- リリース前に
govulncheck ./...を実行 — 本番環境に到達する前に依存関係ツリー内の既知の CVE をキャッチします - 依存関係を追加する前に、メンテナンス状態、ライセンス、および標準ライブラリの代替案を確認する — すべての依存関係は攻撃面、メンテナンス負担、バイナリサイズを増加させます
- 依存関係を変更するすべてのコミット前に
go mod tidyを実行 — 未使用のモジュールを削除し、不足しているものを追加して、go.mod を正確に保ちます
go.mod & go.sum
必須コマンド
| コマンド | 目的 |
|---|---|
go mod tidy | 不足している依存関係を追加、未使用のものを削除 |
go mod download | モジュールをローカルキャッシュにダウンロード |
go mod verify | キャッシュされたモジュールが go.sum チェックサムに一致することを確認 |
go mod vendor | 依存関係を vendor/ ディレクトリにコピー |
go mod edit | go.mod をプログラム的に編集 (スクリプト、CI) |
go mod graph | モジュール要件グラフを出力 |
go mod why | モジュールまたはパッケージが必要な理由を説明 |
ベンダリング
ネットワークアクセスなしでのエルミート的ビルド、チェックサムを超えた再現性の保証、またはモジュールプロキシアクセスのない環境へのデプロイが必要な場合は go mod vendor を使用してください。CI パイプラインと Docker ビルドはベンダリングから利益を得ることがあります。依存関係の変更後に go mod vendor を実行し、vendor/ ディレクトリをコミットしてください。
依存関係のインストールとアップグレード
依存関係の追加
go get github.com/pkg/errors # 最新バージョン
go get github.com/pkg/errors@v0.9.1 # 特定のバージョン
go get github.com/pkg/errors@latest # 明示的に最新
go get github.com/pkg/errors@master # 特定のブランチ (疑似バージョン)
アップグレード
go get -u ./... # すべての直接・間接依存関係を最新のマイナー/パッチにアップグレード
go get -u=patch ./... # パッチのみを最新にアップグレード (より安全)
go get github.com/pkg@v1.5 # 特定のパッケージをアップグレード
ルーチン更新には go get -u=patch を優先してください — パッチバージョンはパブリック API を変更しません (semver の約束)、したがってビルドを破壊する可能性は低いです。マイナーバージョンのアップグレードは新しい API を追加できますが、予期しない動作の廃止または変更も可能です。
依存関係の削除
go get github.com/pkg/errors@none # 削除対象としてマーク
go mod tidy # go.mod と go.sum をクリーンアップ
CLI ツールのインストール
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
go install はバイナリを $GOPATH/bin にビルドおよびインストールします。@latest または特定のバージョンタグを使用してください — 依存するツールには @master を使用しないでください。
tools.go パターン
本番コード内でインポートすることなく、モジュール内のツールバージョンをピン留めします:
//go:build tools
package tools
import (
_ "github.com/golangci/golangci-lint/cmd/golangci-lint"
_ "golang.org/x/vuln/cmd/govulncheck"
)
ビルド制約により、このファイルはコンパイルされません。ブランクインポートはツールを go.mod に保持するため、go install はピン留めされたバージョンを使用します。このファイルを作成した後、go mod tidy を実行してください。
詳細解説
-
バージョニング & MVS— セマンティックバージョニングルール (major.minor.patch)、各番号をいつインクリメントするか、プレリリースバージョン、最小バージョン選択 (MVS) アルゴリズム (なぜ単に「最新」を選ぶことができないのか)、およびメジャーバージョンサフィックス規約 (破壊的変更のための v0, v1, v2 サフィックス)。 -
依存関係の監査—govulncheckによる脆弱性スキャン、古い依存関係の追跡、バイナリをどの依存関係が大きくするか分析 (goweight)、テスト専用とバイナリ依存関係を区別してgo.modをクリーンに保つ。 -
依存関係の競合と解決— バージョン競合の診断 (互換性のないバージョンを要求するときにgo getが何をするか)、解決戦略 (ローカル開発用のreplaceディレクティブ、壊れたバージョン用のexclude、スキップすべき発行済みバージョン用のretract)、依存関係ツリー全体の競合ワークフロー。 -
Go ワークスペース— マルチモジュール開発用go.workファイル (例: ライブラリ + サンプルアプリケーション)、ワークスペースとモノレポをいつ使用するか、ワークスペースのベストプラクティス。 -
自動依存関係更新— 自動依存関係更新 PR のための Dependabot または Renovate の設定、自動マージ戦略 (いつ自動的にマージするか対レビュー要求)、セキュリティ更新の処理。 -
依存関係グラフの可視化— 完全な依存関係ツリーを検査するためのgo mod graph、可視化するためのmodgraphviz、どの依存関係チェーンが肥大化の原因かを見つけるインタラクティブツール。
相互参照
- →
samber/cc-skills-golang@golang-continuous-integrationスキルで Dependabot/Renovate CI セットアップを参照 - →
samber/cc-skills-golang@golang-securityスキルで govulncheck による脆弱性スキャンを参照 - →
samber/cc-skills-golang@golang-popular-librariesスキルで検証されたライブラリ推奨事項を参照
クイックリファレンス
# 新しいモジュールを開始
go mod init github.com/user/project
# 依存関係を追加
go get github.com/pkg/errors@v0.9.1
# すべての依存関係をアップグレード (パッチのみ、より安全)
go get -u=patch ./...
# 未使用の依存関係を削除
go mod tidy
# 脆弱性をチェック
govulncheck ./...
# 古い依存関係をチェック
go list -u -m -json all | go-mod-outdated -update -direct
# 依存関係別にバイナリサイズを分析
goweight
# 依存関係が存在する理由を理解
go mod why -m github.com/some/module
# 依存関係グラフを可視化
go mod graph | modgraphviz | dot -Tpng -o deps.png
# チェックサムを検証
go mod verify
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- samber
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/samber/cc-skills-golang / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。