ニューラルネットワークに悪いGoコードを書かせない方法
Cursor、Claude Code、CopilotでGoコードを生成しようとしたことがある人なら、それぞれ固有の問題に遭遇したことがあるでしょう。ニューラルネットワークはしつこくJavaのパターンをGoに持ち込み、%wでエラーをラップすることを忘れ、ゴルーティンでのレース条件を無視し、シンプルな関数で十分なところで巨大な構造を生成します。
毎回手動でモデルにプロンプトを出すのは骨の折れる作業です。アシスタントに一度適切なルールセットを与えて、コードレビューでの絶え間ない修正から解放されたいですよね。だからこそ、フランスの開発者Samuel Berthe(人気の samber/lo ライブラリの作者)が cc-skills-golang プロジェクトを作成しました。

Agent Skillsとは何か、なぜ必要なのか
Agent Skillsのコンセプトは、シンプルな問題から生まれました:ニューラルネットワークのシステムプロンプトは無限ではないということです。詳細なスタイルガイド、セキュリティルール、データベース操作の詳細、フレームワークの機能をコンテキストに読み込むと、モデルには実際のコードの余地が просто не останется。レスポンスは遅くなり、生成品質は低下します。
Skillsはレイジーローディングでこの問題を解決します。このプロジェクトは小さなMarkdownファイルのコレクションです。セッション開始時には、各モジュールの概要(約100トークン/スキル)のみがLLMのメモリにロードされます。「この関数のベンチマークを書いて」や「gRPCハンドラーにエラー処理を追加して」とアシスタントに尋ねるとすぐに、モデルは一致するトリガーを認識し、そのタスク専用の詳細なドキュメントを読み込みます。
AIスラップなし
リポジトリのREADMEにある主な注意点は、作者の正直な警告です:「ここにAIスラップはありません。」
今日、GitHubは自動生成されたナレッジベースで溢れかえり、むしろ害をもたらしています。Samuelは違うやり方をしました。実際のGoプロジェクトのコミットからClaudeを使って最初にルールの蒸留は行いましたが、その後、すべての指示を手動で書き直し、編集し、テストしました。
著者はテストスイートで精度測定を行いました:
- プラグイン可能なスキルなしでは、言語モデルはテストタスクを56%の確率で正しく完了しました。
- ルールセットを有効にすると、スコアは98%に上昇しました。
特に精度が向上したのは、特定のトピックでした:新しいGo機能(range-over-int、反復子)への古いコードの近代化、ベンチマークの記述、エラー処理。
リポジトリの中身
すべての指示は2つの主要カテゴリに分類されています:一般的な言語ルールと特定のライブラリでの作業。
一般的な言語とアーキテクチャのルール
モジュールはGo開発サイクルほぼ全体をカバーしています:
- コード品質とスタイル:命名規則、
nilとスライスの安全な操作、メモリリークの防止、適切なドキュメント、golangci-lint設定。 - アーキテクチャとパターン:コンテキスト処理、ゴルーティンリークなしの並行処理、構造体とインタフェースの設計、
goplsを通じたリファクタリングパターン。 - テストとデバッグ:テーブル駆動テスト、レース検出、
pprofを通じたプロファイリング、OpenTelemetry設定、メトリクス収集。 - プロジェクトセットアップ:慣用的なディレクトリ構造(cmd/internal/pkg)、CI/CDパイプライン、モジュール管理。
人気のライブラリサポート
言語標準そのものに加えて、リポジトリは一般的なツールでの作業のためのルールを組み込んでいます:
- CLIと設定:
spf13/cobraとspf13/viper。 - 依存性注入:
google/wire、uber/dig、uber/fx、そして独自のコンテナsamber/do。 - ネットワークプロトコル:gRPC、GraphQL(
gqlgen)、OpenAPI/Swagger。 - samberエコシステム:関数ヘルパー
samber/lo、モナドsamber/mo、ロギングsamber/slog、エラーチェイニングsamber/oops。
興味深いポイント:スキルは互いに重複しないように設計されています。エラー処理ルールがロギングに影響する場合、golang-error-handlingモジュールで説明され、golang-observabilityモジュールはそれを参照するだけです。これによりトークンを節約できます。
インストール方法
このプロジェクトは、Agent Skills標準に対応するほぼすべての一般的なツールをサポートしています。
最も汎用的な方法は skills ユーティリティです:
npx skills add https://github.com/samber/cc-skills-golang --all
Cursorで作業する場合は、リポジトリをskillsフォルダにクローンするだけです:
git clone https://github.com/samber/cc-skills-golang.git ~/.cursor/skills/cc-skills-golang
Claude Codeの場合、プラグインの標準コマンドでインストールできます:
/plugin marketplace add samber/cc
/plugin install cc-skills-golang@samber
Copilot、Gemini CLI、OpenCode、OpenAIのCodexも同じ方法でサポートされています。
CIでの自動レビューの使用
著者が説明する興味深いユースケースは、GitHub ActionsでレビュアーとしてAIエージェントを実行することです。
通常のリンターはフォーマットや未使用変数の検出に優れています。しかし、ニューラルネットワークがリファクタリング中に静かにアーキテクチャの凝集性を壊したり、関数から抜けるときにコンテキストをキャンセルし忘れた場合、リンターは無力です。このスキルセットに接続されたエージェントは、コード specifically Goのイディオム遵守をチェックし、PRが同僚に届く前にアーキテクチャの問題を指摘します。
試す価値はあるか
Go開発でニューラルネットワークを активно 使用しており、それらに対する些細なミスの修正に厌倦しているなら、このセットをインストールする価値は十分あります。AIをシニアアーキテクトに変えることはできませんが、馬鹿げたタイポや非慣用的なコードの数を大幅に減らすでしょう。
特に素晴らしいのは、プロジェクトがコンテキストを過負荷にしようとしず、公司のルールで任意のスキルをオーバーライドする能力を残っていることです。社内の内部モジュールを作成し、标准モジュールより優先度を 指定するだけです。
関連プロジェクト