Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

golang-concurrency

Goの並行処理パターンに関するスキルです。goroutine、channel、select、ロック、sync primitives、errgroup、singleflight、ワーカープール、fan-out/fan-inパイプラインを含む並行Goコードの実装・レビュー時に使用します。goroutineリーク、レースコンディション、channelのオーナーシップ問題の検出や、channelとmutexの使い分けを判断する際にも適用されます。

description の原文を見る

Golang concurrency patterns. Use when writing or reviewing concurrent Go code involving goroutines, channels, select, locks, sync primitives, errgroup, singleflight, worker pools, or fan-out/fan-in pipelines. Also triggers when you detect goroutine leaks, race conditions, channel ownership issues, or need to choose between channels and mutexes.

SKILL.md 本文

ペルソナ: あなたは Go 並行処理エンジニアです。すべてのゴルーチンを必要性が証明されるまでは負債と見なします — 正確性とメモリリーク防止がパフォーマンスより優先されます。

モード:

  • 書き込みモード — 並行処理コード(ゴルーチン、チャネル、同期プリミティブ、ワーカープール、パイプライン)を実装します。以下の順序指示に従ってください。
  • レビューモード — PR の並行処理コード変更をレビューしています。diff に焦点を当て、ゴルーチンリーク、コンテキスト伝播の欠落、所有権違反、保護されていない共有状態を確認してください。順序的に。
  • 監査モード — コードベース全体の既存の並行処理コードを監査しています。「並行処理監査の並列化」セクションで説明されているように、最大 5 つの並列サブエージェントを使用します。

コミュニティデフォルト。 samber/cc-skills-golang@golang-concurrency スキルを明示的に上書きする会社スキルが優先されます。

Go 並行処理のベストプラクティス

Go の並行処理モデルはゴルーチンとチャネルに基づいています。ゴルーチンは安価ですが無料ではありません — スポーンするすべてのゴルーチンは管理する必要があるリソースです。目標は構造化された並行処理です。すべてのゴルーチンは明確な所有者、予測可能な終了、適切なエラー伝播を持っています。

コア原則

  1. すべてのゴルーチンは明確な終了を持つ必要がある — シャットダウンメカニズム(context、done チャネル、WaitGroup)がないと、リークが発生し、プロセスがクラッシュするまで蓄積されます
  2. メモリの共有は通信によって — チャネルは明示的に所有権を転送します。ミューテックスは共有状態を保護しますが、所有権は暗黙的です
  3. チャネルの送信前にコピーを送信、ポインタは送信しない — ポインタの送信は見えない共有メモリを作成し、チャネルの目的を無視します
  4. チャネルを閉じるのは送信側のみ — 受信側から閉じるとパニックになります(送信側が閉じた後に書き込む場合)
  5. チャネル方向を指定する (chan<-, <-chan) — コンパイラはビルド時に誤用を防ぎます
  6. デフォルトはバッファなしチャネル — 大きなバッファはバックプレッシャーをマスクします。測定されたジャスティフィケーションがある場合のみ使用してください
  7. select に常に ctx.Done() を含める — なければ、呼び出し元がキャンセルされた後にゴルーチンがリークします
  8. ループで time.After を使用しない — 各呼び出しはタイマーを作成し、発火まで存在し、メモリが蓄積されます。time.NewTimer + Reset を使用してください
  9. テストで go.uber.org/goleak を使用してゴルーチンリークを追跡してください

詳細なチャネル/select コード例については、Channels and Select Patterns を参照してください。

チャネル vs ミューテックス vs アトミック

シナリオ使用理由
ゴルーチン間でのデータ転送Channel所有権転送を通信
ゴルーチンのライフサイクル調整Channel + contextselect による明確なシャットダウン
共有構造体フィールドの保護sync.Mutex / sync.RWMutexシンプルなクリティカルセクション
シンプルなカウンター、フラグsync/atomicロックフリー、低オーバーヘッド
マップの多くの読み取り、少数の書き込みsync.Map読み取り集約的なワークロード向けに最適化。マップの同時読み取り/書き込みはハードクラッシュを引き起こす
高コストな計算のキャッシングsync.Once / singleflight一度実行またはデデュプリケーション

WaitGroup vs errgroup

必要性使用理由
ゴルーチンを待つ、エラーは不要sync.WaitGroupファイアアンドフォーゲット
待機 + 最初のエラーを収集errgroup.Groupエラー伝播
待機 + 最初のエラーで兄弟プロセスをキャンセルerrgroup.WithContextエラー時のコンテキストキャンセル
待機 + 並行処理を制限errgroup.SetLimit(n)組み込みワーカープール

同期プリミティブクイックリファレンス

プリミティブユースケース重要な注記
sync.Mutex共有状態の保護クリティカルセクションを短く保つ。I/O をまたいで保持しない
sync.RWMutex多くの読み取り、少数の書き込みRLock を Lock にアップグレードしない(デッドロック)
sync/atomicシンプルなカウンター、フラグ型付きアトミックスを選択(Go 1.19+): atomic.Int64, atomic.Bool
sync.Map並行マップ、読み取り集約的明示的なロックなし。書き込みが多い場合は RWMutex+map を使用
sync.Pool一時的なオブジェクトの再利用Put() 前に常に Reset() してください。GC 圧力を削減
sync.Once一度限りの初期化Go 1.21+: OnceFunc, OnceValue, OnceValues
sync.WaitGroupゴルーチン完了を待つAddgo 前に実行。Go 1.24+: wg.Go() で使用を簡素化
x/sync/singleflight同時呼び出しのデデュプリケーションキャッシュスタンピード防止
x/sync/errgroupゴルーチングループ + エラーSetLimit(n) は手ロール型ワーカープールを置換

詳細な例とアンチパターンについては、Sync Primitives Deep Dive を参照してください。

並行処理チェックリスト

ゴルーチンをスポーンする前に、以下に答えてください:

  • それはどのように終了するか? — コンテキストキャンセル、チャネルクローズ、または明示的シグナル
  • 停止するようシグナルできるか?context.Context または done チャネルを渡す
  • それを待つことができるか?sync.WaitGroup または errgroup
  • チャネルの所有者は誰か? — 作成者/送信者が所有し、クローズする
  • これは同期的にすべきではないか? — 測定された必要がなければ並行処理を追加しない

パイプラインとワーカープール

パイプラインパターン(ファンアウト/ファンイン、バウンドワーカー、ジェネレータチェーン、Go 1.23+ イテレータ、samber/ro)については、Pipelines and Worker Pools を参照してください。

並行処理監査の並列化

大きなコードベース全体の並行処理を監査する場合、最大 5 つの並列サブエージェント(Agent ツール)を使用してください:

  1. すべてのゴルーチンスポーン(go func, go method)を検出し、シャットダウンメカニズムを検証
  2. ミューテックスなしで同期化された可変グローバルと共有状態を検索
  3. チャネル使用を監査 — 所有権、方向、クロージャー、バッファサイズ
  4. ループ内の time.After、select の欠落 ctx.Done()、バウンドなしのスポーンを検出
  5. ミューテックス使用、sync.Map、アトミックス、スレッドセーフティドキュメントを確認

よくある間違い

間違い修正
ファイアアンドフォーゲットゴルーチン停止メカニズム(context、done チャネル)を提供
受信側からチャネルをクローズ送信側のみがクローズ
ホットループで time.Aftertime.NewTimer + Reset を再利用
select の欠落 ctx.Done()キャンセルを許可するため常に context 上で select
バウンドなしのゴルーチンスポーンerrgroup.SetLimit(n) またはセマフォを使用
チャネル経由でポインタを共有コピーまたは不変値を送信
ゴルーチン内の wg.AddWait が早期に戻る可能性があるため、go の前に Add を呼び出す
CI で -race を忘れる常に go test -race ./... を実行
I/O をまたいでミューテックスを保持クリティカルセクションを短く保つ

相互参照

  • -> パフォーマンス、キャッシュラインパディング、sync.Pool ホットパスパターンについては samber/cc-skills-golang@golang-performance スキルを参照
  • -> キャンセル伝播とタイムアウトパターンについては samber/cc-skills-golang@golang-context スキルを参照
  • -> 同時マップアクセスとレース条件防止については samber/cc-skills-golang@golang-safety スキルを参照
  • -> ゴルーチンリークとデッドロックのデバッグについては samber/cc-skills-golang@golang-troubleshooting スキルを参照
  • -> グレースフルシャットダウンパターンについては samber/cc-skills-golang@golang-design-patterns スキルを参照
  • -> これらのガイドラインを使用した CI での自動化 AI 駆動コードレビューについては samber/cc-skills-golang@golang-continuous-integration スキルを参照

参考資料

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

詳細情報

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

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

関連スキル

汎用その他⭐ リポ 1,982

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

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

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