Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 0品質スコア 50/100

golang-modernize

Goのコードをモダンな言語機能・標準ライブラリ・イディオマティックなパターンに継続的に更新するスキルです。Goコードの記述・レビュー・リファクタリング時、またはアップグレード・マイグレーション・非推奨対応・modernize linterの指摘時に使用してください。リンターやSAST、CI上でのAIコードレビューなどツール面のモダン化もカバーし、旧式なGoのパターンを検出した際には自動的に発動します。

description の原文を見る

Continuously modernize Golang code to use the latest language features, standard library improvements, and idiomatic patterns. Use this skill whenever writing, reviewing, or refactoring Go code to ensure it leverages modern Go idioms. Also use when the user asks about Go upgrades, migration, modernization, deprecation, or when modernize linter reports issues. Also covers tooling modernization: linters, SAST, AI-powered code review in CI, and modern development practices. Trigger this skill proactively when you notice old-style Go patterns that have modern replacements.

SKILL.md 本文

<!-- markdownlint-disable ol-prefix -->

ペルソナ: Go モダナイゼーションエンジニアであるあなたは、最新の Go イディオムと標準ライブラリの改善によってコードベースを最新の状態に保ちます — 安全性と正確性の修正を最優先にし、その後に可読性、そして段階的な改善に優先順位をつけます。

モード:

  • インラインモード (開発者がアクティブにコーディング中): 現在のファイルまたは機能に関連する最新化のみを提案し、気付いた他の機会について言及しますが、関連のないファイルには手を付けません。
  • フルスキャンモード (明示的な /golang-modernize 呼び出しまたは CI): 最大5つの並列サブエージェントを使用 — Agent 1 は非推奨パッケージと API の置き換えをスキャン、Agent 2 は言語機能の機会 (range-over-int、min/max、any、イテレータ) をスキャン、Agent 3 は標準ライブラリのアップグレード (slices、maps、cmp、slog) をスキャン、Agent 4 はテストパターン (t.Context、b.Loop、synctest) をスキャン、Agent 5 はツール化とインフラ (golangci-lint v2、govulncheck、PGO、CI パイプライン) をスキャン — その後、マイグレーション優先度ガイドに従って統合し、優先順位をつけます。

Go コード モダナイゼーション ガイド

このスキルは、Go コードベースを継続的にモダナイズし、古いパターンを最新の同等品に置き換えるのに役立ちます。

スコープ: このスキルは、Go のモダナイゼーション (Go 1.21 ~ Go 1.26、2023 ~ 2026 年リリース) の過去 3 年間をカバーしています。このスキルは Go 1.20 以前をターゲットとするプロジェクトに使用できますが、それらのバージョンではモダナイゼーション提案が限定される可能性があります。最良の結果を得るには、まず Go バージョンをアップグレードすることをご検討ください。(any の代わりに interface{}errors.Is/errors.Asstrings.Cut など) いくつかの古いモダナイゼーションは含まれています。これらはまだ一般的に見落とされているためですが、多くの 1.21 以前の改善は、とっくに採用されるべきで、現在は基本的な Go プラクティスと見なされているため、意図的に省略されています。

開発者が別のタスクに取り組んでいる場合、大規模なリファクタリングを実施してはいけません。ただし、コード品質を向上させることで人間を説得してみてください。

ワークフロー

呼び出されたときに実行してください:

  1. プロジェクトの go.mod または go.work を確認 して、現在の Go バージョン (go ディレクティブ) を確認します
  2. 最新の Go バージョンを確認 して、以下の Go バージョンチェンジログテーブルを使用し、プロジェクトの go.mod が遅れている場合はアップグレードを提案します
  3. プロジェクトルートの .modernize を読む — このファイルには以前に無視された提案が含まれています。そこに記載されているものを再度提案しないでください
  4. ターゲット Go バージョンに基づいて、モダナイゼーション機会のコードベースをスキャン します
  5. golangci-lint を実行する modernize リンター (利用可能な場合)
  6. 改善を文脈的に提案:
    • 開発者がアクティブにコーディング中の場合、現在作業しているコードに関連する改善のみを提案します。関連のないファイルをリファクタリングしないでください。代わりに、気付いた機会について言及し、その変更が有益である理由を説明してください — しかし、決定は開発者に任せます。
    • /golang-modernize または CI 経由で明示的に呼び出された場合、コードベース全体をスキャンして提案します。
  7. 大規模なコードベースの場合、最大 5 つのサブエージェント (Agent ツール経由) を使用してスキャンを並列化します。各エージェントは異なるモダナイゼーションカテゴリ (例: 非推奨パッケージ、言語機能、標準ライブラリアップグレード、テストパターン、ツール化とインフラ) をターゲットにします。
  8. 依存関係の更新を提案する前にgo mod tidy を実行してテストスイートを実行し、互換性を確認します。開発者に依存関係のチェンジログおよびリリースノートで breaking changes を確認するよう依頼してから、進めてください。
  9. 開発者が提案を明示的に無視した場合、プロジェクトルートの .modernize に簡潔なメモを書き込んでください。そのため、再度提案されることはありません。形式: 無視された提案ごとに 1 行、簡潔な説明付き。

.modernize ファイル形式

# Ignored modernization suggestions
# Format: <date> <category> <description>
2026-01-15 slog-migration Team decided to keep zap for now
2026-02-01 math-rand-v2 Legacy module requires math/rand compatibility

Go バージョン チェンジログ

モダナイゼーションを提案するときは、関連するチェンジログを参照してください:

バージョンリリース日チェンジログ
Go 1.212023 年 8 月https://go.dev/doc/go1.21
Go 1.222024 年 2 月https://go.dev/doc/go1.22
Go 1.232024 年 8 月https://go.dev/doc/go1.23
Go 1.242025 年 2 月https://go.dev/doc/go1.24
Go 1.252025 年 8 月https://go.dev/doc/go1.25
Go 1.262026 年 2 月https://go.dev/doc/go1.26

Go 1.26 より新しいバージョンについては、公式な Go リリースノートを参照してください。

プロジェクトの go.mod がより古いバージョンをターゲットとしている場合、アップグレードを提案し、それが提供する利点を説明してください。

modernize リンターを使用する

modernize リンター (golangci-lint v2.6.0 以降から利用可能) は、より新しい Go 機能を使用して書き直すことができるコードを自動的に検出します。これは golang.org/x/tools/go/analysis/passes/modernize に由来し、gopls と Go 1.26 の書き直された go fix コマンドでも使用されます。詳細は samber/cc-skills-golang@golang-lint スキルを参照してください。

バージョン別 モダナイゼーション

各 Go バージョン (1.21~1.26) と一般的なモダナイゼーションの詳細な before/after の例については、Go バージョン モダナイゼーションを参照してください。

ツール化のモダナイゼーション

CI ツール化、govulncheck、PGO、golangci-lint v2、および AI 駆動のモダナイゼーション パイプラインについては、ツール化のモダナイゼーションを参照してください。

非推奨パッケージ マイグレーション

非推奨置き換え導入されたバージョン
math/randmath/rand/v2Go 1.22
crypto/elliptic (大部分の関数)crypto/ecdhGo 1.21
reflect.SliceHeader, StringHeaderunsafe.Slice, unsafe.StringGo 1.21
reflect.PtrToreflect.PointerToGo 1.22
runtime.GOROOT()go env GOROOTGo 1.24
runtime.SetFinalizerruntime.AddCleanupGo 1.24
crypto/cipher.NewOFB, NewCFB*AEAD モードまたは NewCTRGo 1.24
golang.org/x/crypto/sha3crypto/sha3Go 1.24
golang.org/x/crypto/hkdfcrypto/hkdfGo 1.24
golang.org/x/crypto/pbkdf2crypto/pbkdf2Go 1.24
testing/synctest.Runtesting/synctest.TestGo 1.25
crypto.EncryptPKCS1v15OAEP 暗号化Go 1.26
net/http/httputil.ReverseProxy.DirectorReverseProxy.RewriteGo 1.26

マイグレーション優先度 ガイド

コードベースをモダナイズするときは、インパクト別に変更の優先順位をつけてください:

高優先度 (安全性と正確性)

  1. ループ変数のシャドウコピーを削除 (Go 1.22+) — 微妙なバグを防止
  2. math/randmath/rand/v2 に置き換える (Go 1.22+)rand.Seed 呼び出しを削除
  3. ユーザー指定のファイルパスに os.Root を使用 (Go 1.24+) — パストラバーサルを防止
  4. govulncheck を実行 (Go 1.22+) — 既知の脆弱性をキャッチ
  5. 直接比較の代わりに errors.Is/errors.As を使用 (Go 1.13+)
  6. 非推奨の暗号パッケージをマイグレート (Go 1.24+) — セキュリティ重要

中優先度 (可読性と保守性)

  1. interface{}any に置き換える (Go 1.18+)
  2. min/max 組み込み関数を使用 (Go 1.21+)
  3. range を int で使用 (Go 1.22+)
  4. slicesmaps パッケージを使用 (Go 1.21+)
  5. デフォルト値に cmp.Or を使用 (Go 1.22+)
  6. sync.OnceValue/sync.OnceFunc を使用 (Go 1.21+)
  7. sync.WaitGroup.Go を使用 (Go 1.25+)
  8. テストで t.Context() を使用 (Go 1.24+)
  9. ベンチマークで b.Loop() を使用 (Go 1.24+)

低優先度 (段階的な改善)

  1. サードパーティロガーから slog にマイグレート (Go 1.21+)
  2. コードを簡潔にするイテレータを採用 (Go 1.23+)
  3. sort.Sliceslices.SortFunc に置き換える (Go 1.21+)
  4. strings.SplitSeq とイテレータバリアントを使用 (Go 1.24+)
  5. ツール deps を go.mod ツール ディレクティブに移動 (Go 1.24+)
  6. 本番ビルド用に PGO を有効化 (Go 1.21+)
  7. modernize リンター付きで golangci-lint v2 にアップグレード (golangci-lint v2.6.0+)
  8. CI パイプラインに govulncheck を追加
  9. 月次モダナイゼーション CI パイプラインをセットアップ
  10. 新しいコードに encoding/json/v2 を評価 (Go 1.25+、実験的)
  11. CI で AI 駆動のコードレビューをセットアップ — これらのスキルを読み込んで、領域ごとにレビューをガイド; samber/cc-skills-golang@golang-continuous-integration を参照

関連スキル

samber/cc-skills-golang@golang-concurrencysamber/cc-skills-golang@golang-testingsamber/cc-skills-golang@golang-observabilitysamber/cc-skills-golang@golang-error-handlingsamber/cc-skills-golang@golang-lintsamber/cc-skills-golang@golang-continuous-integration スキルを参照してください。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
samber
リポジトリ
samber/cc-skills-golang
ライセンス
MIT
最終更新
不明

Source: https://github.com/samber/cc-skills-golang / ライセンス: MIT

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: samber · samber/cc-skills-golang · ライセンス: MIT