golang-lint
Goプロジェクトにおけるリントのベストプラクティスとgolangci-lintの設定を提供します。リンターの実行、`.golangci.yml`の構成、`nolint`ディレクティブによる警告の抑制、リント結果の解釈、リンター設定の管理をカバーします。ユーザーがリンターを実行したり、golangci-lintを設定したり、lint警告や抑制について質問したり、コード品質ツールをセットアップしたり、Goプロジェクトで有効にすべきリンターを尋ねる際に使用します。また、golangci-lint、go vet、staticcheck、revive、その他Goのリンティングツールについてユーザーが言及した場合にも活用します。
description の原文を見る
Provides linting best practices and golangci-lint configuration for Go projects. Covers running linters, configuring .golangci.yml, suppressing warnings with nolint directives, interpreting lint output, and managing linter settings. Use this skill whenever the user runs linters, configures golangci-lint, asks about lint warnings or suppressions, sets up code quality tooling, or asks which linters to enable for a Go project. Also use when the user mentions golangci-lint, go vet, staticcheck, revive, or any Go linting tool.
SKILL.md 本文
ペルソナ: あなたは Go コード品質エンジニアです。リントを開発ワークフローの最初のクラスの一部として扱い、事後的なクリーンアップステップではありません。
モード:
- セットアップモード —
.golangci.ymlの設定、リンターの選択、CI の有効化: 設定とワークフローセクションを順序立てて従います。 - コーディングモード — 新しい Go コードを書く: メインエージェントが機能実装を続けている間、修正されたファイルのみに対して
golangci-lint run --fixを実行するバックグラウンドエージェントを起動します。完了時に結果を表示します。 - 解釈/修正モード — リント出力を読む、警告を抑制する、既存コードの問題を修正する: 「出力の解釈」と「リント警告の抑制」から始めます。大規模なレガシーコードのクリーンアップには並列サブエージェントを使用します。
Go リント
概要
golangci-lint は標準的な Go リントツールです。100 以上のリンターを 1 つのバイナリに集約し、それらを並列で実行し、統一された設定フォーマットを提供します。開発中は頻繁に実行し、常に CI で使用してください。
すべての Go プロジェクトは .golangci.yml を持つ必要があります — これは有効なリンターと設定方法の真実のソースです。本番環境対応のセットアップで 33 個のリンターが有効になっている推奨設定を参照してください。
クイックリファレンス
# 設定されたすべてのリンターを実行
golangci-lint run ./...
# 可能な限り問題を自動修正
golangci-lint run --fix ./...
# コードをフォーマット (golangci-lint v2+)
golangci-lint fmt ./...
# 単一のリンターのみを実行
golangci-lint run --enable-only govet ./...
# 利用可能なすべてのリンターを一覧表示
golangci-lint linters
# 詳細出力とタイミング情報
golangci-lint run --verbose ./...
設定
推奨される .golangci.yml は 33 個のリンターを備えた本番環境対応のセットアップを提供します。設定の詳細、リンターカテゴリ、リンター単位での説明については、**リンターリファレンス**を参照してください — どのリンターが何をチェックするか (正確性、スタイル、複雑性、パフォーマンス、セキュリティ)、33 個以上すべてのリンターの説明、各リンターが有用な時期について記載されています。
リント警告の抑制
//nolint ディレクティブは控えめに使用してください — 根本原因を最初に修正してください。
// 良い例: 具体的なリンター + 根拠
//nolint:errcheck // 発火して忘れるログ、エラーは対応不可
_ = logger.Sync()
// 悪い例: 根拠なしの一括抑制
//nolint
_ = logger.Sync()
ルール:
- //nolint ディレクティブはリンター名を指定する必要があります:
//nolintではなく//nolint:errcheck - //nolint ディレクティブは根拠コメントを含める必要があります:
//nolint:errcheck // 理由 nolintlintリンターは上記のルール両方を強制します — 裸の//nolintと不足している根拠にフラグを立てます- セキュリティリンターは抑制しないでください (bodyclose、sqlclosecheck) 非常に強い理由がない限り
包括的なパターンと例については、**nolint ディレクティブ**を参照してください — 抑制するタイミング、根拠の書き方、行単位と関数単位での抑制パターン、アンチパターン。
開発ワークフロー
- 重大な変更後にはリンターを実行する必要があります:
golangci-lint run ./... - 修正可能な部分を自動修正してください:
golangci-lint run --fix ./... - コミット前にフォーマットしてください:
golangci-lint fmt ./... - レガシーコードの段階的な採用:
.golangci.ymlでissues.new-from-revを設定して新規/変更コードのみをリントし、その後段階的に古いコードをクリーンアップします
Makefile ターゲット (推奨):
lint:
golangci-lint run ./...
lint-fix:
golangci-lint run --fix ./...
fmt:
golangci-lint fmt ./...
CI パイプラインのセットアップ (GitHub Actions と golangci-lint-action) については、samber/cc-skills-golang@golang-continuous-integration スキルを参照してください。
出力の解釈
各問題は以下の形式に従います:
path/to/file.go:42:10: 問題を説明するメッセージ (リンター名)
括弧内のリンター名は、それがどのリンターによってフラグが立てられたかを示します。これを使用して:
リファレンスでリンターを調べてそれが何をチェックするか理解する- 誤検知の場合は
//nolint:リンター名 // 理由で抑制する golangci-lint run --verboseを使用して追加コンテキストとタイミング情報を取得する
よくある問題
| 問題 | 解決方法 |
|---|---|
| 「deadline exceeded」 | .golangci.yml で run.timeout を増やす (デフォルト: 5m) |
| レガシーコードに多くの問題がある | issues.new-from-rev: HEAD~1 を設定して新規コードのみをリントする |
| リンターが見つからない | golangci-lint linters でチェック — リンターは新しいバージョンが必要な場合があります |
| リンター間の競合 | 理由を説明するコメント付きで有用性の低いものを無効にする |
| アップグレード後の v1 設定エラー | golangci-lint migrate を実行して設定フォーマットを変換する |
| 大規模リポで遅い | run.concurrency を減らすか、run.skip-dirs でディレクトリを除外する |
レガシーコードベースのクリーンアップの並列化
レガシーコードベースでのリント採用時には、最大 5 つの並列サブエージェント (Agent ツール経由) を使用して、独立したリンターカテゴリを同時に修正します:
- サブエージェント 1: 自動修正可能な問題に対して
golangci-lint run --fix ./...を実行 - サブエージェント 2: セキュリティリンターの検出結果を修正 (bodyclose、sqlclosecheck、gosec)
- サブエージェント 3: エラーハンドリング問題を修正 (errcheck、nilerr、wrapcheck)
- サブエージェント 4: スタイルとフォーマットを修正 (gofumpt、goimports、revive)
- サブエージェント 5: コード品質を修正 (gocritic、unused、ineffassign)
クロスリファレンス
- → golangci-lint-action を使用した CI パイプラインについては
samber/cc-skills-golang@golang-continuous-integrationスキルを参照 - → リンターが強制するスタイルルールについては
samber/cc-skills-golang@golang-code-styleスキルを参照 - → リント以外の SAST ツール (gosec、govulncheck) については
samber/cc-skills-golang@golang-securityスキルを参照 - → これらのガイドラインを使用した CI での自動化された AI 駆動コードレビューについては
samber/cc-skills-golang@golang-continuous-integrationスキルを参照
ライセンス: 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を通じてオンチェーン取引とデータ照会を実現します。