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

golang-naming

Goの命名規則に関するスキルで、パッケージ・コンストラクタ・構造体・インターフェース・定数・列挙型・エラー・真偽値・レシーバー・ゲッター/セッター・関数型オプション・頭字語・テスト関数・サブテスト名など幅広くカバーします。新規Goコードの作成時、リファクタリング時、命名の選択肢(`New` vs `NewTypeName`、`isConnected` vs `connected`、`ErrNotFound` vs `NotFoundError`など)を検討する際や、`utils`/`helpers`のようなアンチパターンを含むパッケージ名について議論する際にトリガーされます。`MixedCaps` vs `snake_case`、`ALL_CAPS`定数、ゲッターへの`Get`プレフィックス、エラー文字列の大文字小文字といったトピックでも起動しますが、命名に関係しない一般的なGoの実装質問には使用しません。

description の原文を見る

Go (Golang) naming conventions — covers packages, constructors, structs, interfaces, constants, enums, errors, booleans, receivers, getters/setters, functional options, acronyms, test functions, and subtest names. Use this skill when writing new Go code, reviewing or refactoring, choosing between naming alternatives (New vs NewTypeName, isConnected vs connected, ErrNotFound vs NotFoundError, StatusReady vs StatusUnknown at iota 0), debating Go package names (utils/helpers anti-patterns), or asking about Go naming best practices. Also trigger when the user mentions MixedCaps vs snake_case, ALL_CAPS constants, Get-prefix on getters, or error string casing. Do NOT use for general Go implementation questions that don't involve naming decisions.

SKILL.md 本文

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

Go 命名規則

Go は簡潔で読みやすい名前を推奨します。大文字小文字は可視性を制御します — 大文字はエクスポート、小文字はアンエクスポートです。すべての識別子は MixedCaps を使用する必要があり、アンダースコアは使用しません。

"明確さは賢さよりも優れている。" — Go Proverbs

"アーキテクチャを設計し、コンポーネントに名前を付け、詳細を文書化しなさい。" — Go Proverbs

ルールを無視するには、コードにコメントを追加するだけです。

クイックリファレンス

要素規則
パッケージ小文字、1 語、テストファイルの場合 _test サフィックス OKjsonhttptabwriterhttp_test
ファイル小文字、アンダースコア OKuser_handler.go
エクスポート名UpperCamelCaseReadAllHTTPClient
アンエクスポートlowerCamelCaseparseTokenuserCount
Interfaceメソッド名 + -erReaderCloserStringer
StructMixedCaps 名詞RequestFileHeader
定数MixedCaps(ALL_CAPS ではない)MaxRetriesdefaultTimeout
Receiver1~2 文字の短縮形func (s *Server)func (b *Buffer)
エラー変数Err プレフィックスErrNotFoundErrTimeout
エラー型Error サフィックスPathErrorSyntaxError
コンストラクタNew(単一型)または NewTypeName(複数型)ring.Newhttp.NewRequest
Boolean フィールドフィールドとメソッドishascan プレフィックスisReadyIsConnected()
テスト関数Test + 関数名TestParseToken
頭字語すべて大文字またはすべて小文字URLHTTPServerxmlParser
バリアント: contextWithContext サフィックスFetchWithContextQueryContext
バリアント: インプレースIn サフィックスSortIn()ReverseIn()
バリアント: エラーMust プレフィックスMustParse()MustLoadConfig()
Option funcWith + フィールド名WithPort()WithLogger()
Enum (iota)型名プレフィックス、ゼロ値 = 不明iota 0 で StatusUnknownStatusReady
名前付きリターン説明的(ドキュメント用のみ)(n int, err error)
エラー文字列小文字(頭字語含む)、句読点なし"image: unknown format""invalid id"
インポートエイリアス短い、衝突時のみmrand "math/rand"pb "app/proto"
Format 関数f サフィックスErrorfWrapfLogf
テストテーブルフィールドgot/expected プレフィックスinput stringexpected int

MixedCaps

すべての Go 識別子は MixedCaps(または mixedCaps)を使用する必要があります。識別子にアンダースコアは使用しません — 唯一の例外はテスト関数のサブケース(TestFoo_InvalidInput)、生成されたコード、および OS/cgo 相互運用です。これは見た目の問題ではなく、機能に関わります — Go のエクスポート機構は大文字小文字に依存し、ツールは全体で MixedCaps を想定しています。

// ✓ Good
MaxPacketSize
userCount
parseHTTPResponse

// ✗ Bad — これらの規則は Go のエクスポート機構とツールの期待に矛盾します
MAX_PACKET_SIZE   // C/Python スタイル
max_packet_size   // snake_case
kMaxBufferSize    // ハンガリアン記法

スタッタリングを避ける

Go のコールサイトは常にパッケージ名を含むため、識別子でそれを繰り返すと読み手の時間を浪費します — http.HTTPClient は「HTTP」を 2 回解析させます。名前は、パッケージ名、型名、または周囲のコンテキストに既に存在する情報を繰り返してはいけません。

// Good — コールサイトがクリーン
http.Client       // not http.HTTPClient
json.Decoder      // not json.JSONDecoder
user.New()        // not user.NewUser()
config.Parse()    // not config.ParseConfig()

// In package sqldb:
type Connection struct{}  // DBConnection ではなく — "db" は既にパッケージ名にある

// アンチスタッター は主要な struct だけでなく、すべてのエクスポート型に適用されます:
// In package dbpool:
type Pool struct{}        // DBPool ではなく
type Status struct{}      // PoolStatus ではなく — 呼び出し元は dbpool.Status と記述
type Option func(*Pool)   // PoolOption ではなく

よく見落とされる規則

これらの規則は正しいですが非明白です — 命名の誤りの最も一般的な原因です:

コンストラクタ命名: パッケージが単一の主要型をエクスポートする場合、コンストラクタは New()NewTypeName() ではない)です。これはスタッタリングを避けます — 呼び出し元は apiclient.New() と書き、apiclient.NewClient() ではありません。複数の構築可能な型を持つパッケージの場合(http.NewRequesthttp.NewServeMux など)のみ NewTypeName() を使用します。

Boolean struct フィールド: アンエクスポートの boolean フィールドは is/has/can プレフィックスを使用する必要があります — isConnectedhasPermission(裸の connected または permission ではない)。エクスポートされたゲッターはプレフィックスを保持します:IsConnected() bool。これは質問として自然に読め、boolean を他の型と区別します。

エラー文字列は完全に小文字です — 頭字語を含めて。 "invalid message ID" ではなく "invalid message id" と書いてください。エラー文字列は他のコンテキストと連結されることが多く(fmt.Errorf("parsing token: %w", err))、大文字小文字が混在していると文中に見えるためです。センチネルエラーはプレフィックスとしてパッケージ名を含める必要があります:errors.New("apiclient: not found")

Enum ゼロ値: iota 位置 0 に明示的な Unknown/Invalid センチネルを常に配置します。var s Status は静かに 0 になります — それが StatusReady のような実際の状態にマップされる場合、意図的に選択されたかのようにコードが動作することがあります。

Subtest 名: t.Run() のテーブル駆動型テストケース名は完全に小文字の説明句である必要があります:"valid id""empty input""valid ID" または "Valid Input" ではなく。

詳細カテゴリー

完全なルール、例、および根拠については、以下を参照してください:

  • Packages, Files & Import Aliasing — パッケージ命名(1 語、小文字、複数形なし)、ファイル命名規則、インポートエイリアスパターン(認知負荷を避けるため衝突時のみ使用)、ディレクトリ構造。

  • Variables, Booleans, Receivers & Acronyms — スコープベースの命名(名前の長さはスコープと一致:3 行ループでは i、パッケージレベルではより長い名前)、1 文字の receiver 規則(s for Server)、頭字語大文字小文字(Url ではなく URL、HttpServer ではなく HTTPServer)、boolean 命名パターン(isReady、hasPrefix)。

  • Functions, Methods & Options — Getter/setter パターン(Go は Get を省略するため user.Name() は自然に読める)、コンストラクタ規則(New または NewTypeName)、名前付きリターン(ドキュメント用のみ)、format 関数サフィックス(ErrorfWrapf)、functional options(WithPortWithLogger)。

  • Types, Constants & Errors — Interface 命名(ReaderCloser サフィックスと -er)、struct 命名(名詞、MixedCaps)、定数(MixedCaps、ALL_CAPS ではない)、enum(StatusReady のような型名プレフィックス)、センチネルエラー(ErrNotFound 変数)、エラー型(PathError サフィックス)、エラーメッセージ規則(小文字、句読点なし)。

  • Test Naming — テスト関数命名(TestFunctionName)、テーブル駆動型テストフィールド規則(inputexpected)、テストヘルパー命名、サブケース命名パターン。

よくある誤り

誤り修正
ALL_CAPS 定数Go は可視性のために大文字小文字を予約し、強調のためではありません — MixedCaps(MaxRetries)を使用します
GetName() ゲッターGo は Get を省略します。なぜなら user.Name() はコールサイトで自然に読めるからです。ただし Is/Has/Can プレフィックスは boolean 述語で保持されます:Healthy() bool ではなく IsHealthy() bool
UrlHttpJson 頭字語大文字小文字混在の頭字語は曖昧さを生じます(HttpsUrlHttps+Url ですか?)。すべて大文字またはすべて小文字を使用します
this または self receiverGo メソッドは頻繁に呼び出されます — 視覚的ノイズを減らすために 1~2 文字の短縮形(Server の場合 s)を使用します
utilhelper パッケージこれらの名前はコンテンツについて何も述べません — 抽象化を説明する具体的な名前を使用します
http.HTTPClient スタッタリングパッケージ名は常にコールサイトに存在します — http.Client は「HTTP」を 2 回読むのを避けます
user.NewUser() コンストラクタ単一の主要型は New() を使用します — user.New() は型名の繰り返しを避けます
connected bool フィールド裸の形容詞は曖昧です — isConnected を使用してフィールドが true/false の質問として読めるようにします
"invalid message ID" エラーエラー文字列は頭字語を含めて完全に小文字である必要があります — "invalid message id"
iota 0 での StatusReadyゼロ値はセンチネルである必要があります — StatusUnknown at 0 は未初期化値をキャッチします
"not found" エラー文字列センチネルエラーはパッケージ名をプレフィックスとして含む必要があります — "mypackage: not found" は起源を識別します
userSlice 型名型は実装の詳細をエンコードします — users は保持内容を説明し、方法ではありません
一貫性のない receiver 名同じ型のメソッド間で名前を切り替えると読者を混乱させます — 1 つの名前を一貫して使用します
snake_case 識別子アンダースコアは Go の MixedCaps 規則とツールの期待に矛盾します — mixedCaps を使用します
短いスコープでの長い名前名前の長さはスコープと一致する必要があります — i は 3 行ループで問題ありませんが、userIndex はノイズです
値で定数に名前を付ける値は変わりますが、役割は変わりません — DefaultPort はポート変更後も機能しますが、Port8080 は機能しません
FetchCtx() context バリアントWithContext は標準的な Go サフィックスです — FetchWithContext() は瞬時に認識できます
sort() インプレースだが In なし読者は関数が新しい値を返すと想定します。SortIn() は変更を通知します
parse() エラーをパニックMustParse() は失敗がパニックすることを呼び出し元に警告します — 驚きは名前に属します
With*Set*Use* を混在コードベース全体で一貫性を — With* は functional options の Go 規則です
複数形のパッケージ名Go 規則は単数です(net/urls ではなく net/url) — インポートパスを一貫性に保ちます
f サフィックスなしの Wrapff サフィックスは format-string セマンティクスを通知します — WrapfErrorf は呼び出し元に format 引数を渡すことを伝えます
不要なインポートエイリアスエイリアスは認知負荷を追加します。衝突時のみエイリアス — mrand "math/rand"
概念名の一貫性がないuser/account/person を同じコンセプトに使用すると読者はシノニムを追跡させられます — 1 つの名前を選びます

Linter で強制

多くの命名規則の問題は自動的に linter によってキャッチされます:revivepredeclaredmisspellerrname。設定と使用については samber/cc-skills-golang@golang-lint スキルを参照してください。

クロスリファレンス

  • → より広い形式とスタイル決定については samber/cc-skills-golang@golang-code-style スキルを参照
  • → interface 命名の深さと receiver 設計については samber/cc-skills-golang@golang-structs-interfaces スキルを参照
  • → 自動強制(revive、predeclared、misspell、errname)については samber/cc-skills-golang@golang-lint スキルを参照

ライセンス: 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