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

go-naming

Goの識別子(パッケージ、型、関数、メソッド、変数、定数、レシーバーなど)に名前を付ける際に使用し、慣用的でわかりやすい命名を保証します。ユーザーが新しい型・パッケージ・公開APIを作成する場面でも、命名規則について明示的な質問がなくても適用されます。パッケージ構成については対象外です(go-packages を参照)。

description の原文を見る

Use when naming any Go identifier — packages, types, functions, methods, variables, constants, or receivers — to ensure idiomatic, clear names. Also use when a user is creating new types, packages, or exported APIs, even if they don't explicitly ask about naming conventions. Does not cover package organization (see go-packages).

SKILL.md 本文

Go命名規約

利用可能なスクリプト

  • scripts/check-naming.sh — Go コードの命名アンチパターンをスキャンします: SCREAMING_SNAKE_CASE定数、Get接頭辞のゲッター、悪いパッケージ名(util/helper/common)、"this"/"self"という名前のレシーバー。bash scripts/check-naming.sh --helpで詳細なオプションを確認できます。

基本原則

名前は以下を満たすべきです:

  • 使用時に繰り返されないこと
  • コンテキストを考慮すること
  • 既に明確な概念を繰り返さないこと

命名は科学というより芸術です。Go の名前は他の言語よりも短い傾向があります。


命名判定フロー

何を命名していますか?
├─ パッケージ   → 短い、小文字、単数形の名詞(アンダースコア、mixedCapsなし)
├─ インターフェース → メソッド名 + "-er"接尾辞(単一メソッドの場合)(Reader, Writer)
├─ レシーバー   → 型の1-2文字の省略(Client の場合は c); メソッド間で一貫性を保つ
├─ 定数        → MixedCaps; iota を列挙型に使用; ALL_CAPS は禁止
├─ エクスポート関数 → MixedCaps の動詞または動詞句; ゲッターに Get 接頭辞なし
├─ 変数        → スコープの距離に比例した長さ
│              ├─ 小さいスコープ(1-7行) → 単一文字(i, n, r)
│              ├─ 中程度のスコープ      → 短い単語(count, buf)
│              └─ パッケージレベル/広範囲 → 説明的(userAccountCount)
└─ 任意の名前   → 確認: パッケージ名またはコンテキストを繰り返していないか? はい の場合、短縮する

MixedCaps(必須)

Normative: すべての Go 識別子は MixedCaps を使用する必要があります。

アンダースコアが許可される範囲: テスト関数(TestFoo_InvalidInput)、生成されたコード、OS/cgo相互運用のみです。


パッケージ名

Normative: パッケージは小文字で、アンダースコアなしである必要があります。

短く、小文字、単数形の名詞です。utilcommonhelperといった一般的な名前は避けてください。特定の名前を選びましょう: stringutilhttpauthconfigloader

// 良い: user, oauth2, tabwriter
// 悪い: user_service, UserService, count (変数をシャドウイング)

パッケージの命名、インポートエイリアスの決定、または一般的な名前と特定の名前の選択時は references/IDENTIFIERS.md を参照してください。


インターフェース名

Advisory: 単一メソッドインターフェースは"-er"接尾辞を使用します。

単一メソッドインターフェースはメソッド名に-erを付けます: ReaderWriterFormatter。標準的なメソッド名(ReadWriteCloseString)とそのシグネチャを遵守してください。

新しいインターフェースを定義するか、既知のメソッドシグネチャを実装する場合は references/IDENTIFIERS.md を参照してください。


レシーバー名

Normative: レシーバーは短い省略形であり、一貫して使用する必要があります。

型を省略した1-2文字で、すべてのメソッドで一貫性を保ちます: func (c *Client) Connect()func (c *Client) Send()thisselfを使用しないでください。

レシーバー名を選択するか、メソッド間で一貫性を確保する場合は references/IDENTIFIERS.md を参照してください。


定数名

Normative: 定数は MixedCaps を使用し、ALL_CAPS または K 接頭辞は使用しません。

定数を値ではなく役割で命名します: ThreeではなくMaxRetriesPort8080ではなくDefaultPort

const MaxPacketSize = 512
const defaultTimeout = 30 * time.Second

定数を命名するか、役割ベースと値ベースの名前の選択時は references/IDENTIFIERS.md を参照してください。


イニシャリズムと頭字語

Normative: イニシャリズムは大文字と小文字を一貫して保ちます。

イニシャリズム(URL、ID、HTTP、API)は大文字または小文字で統一します: HTTPClientuserIDParseURL()HttpClientorderIdParseUrl()ではなく。

複合名でイニシャリズムを使用する場合または完全な大文字小文字テーブルについては references/IDENTIFIERS.md を参照してください。


関数とメソッド名

Advisory: 単純なアクセサーにGet接頭辞を使用しません; アクションには動詞のような名前を使用します。

フィールドownerのゲッターはGetOwner()ではなくOwner()です。セッターはSetOwner()です。高コストな操作にはComputeまたはFetchを使用してください。

関数が型によってのみ異なる場合、型を末尾に含めます: ParseInt()ParseInt64()

ゲッター/セッター API を設計するか、関数バリアントを命名する場合は references/IDENTIFIERS.md を参照してください。


変数名

変数命名は簡潔さと明確さのバランスを取ります。主要な原則:

  • スコープベースの長さ: 小さいスコープには短い名前(iv); 大きいスコープには長い説明的な名前
  • 単一文字の規約: 見慣れたパターンを使用(iはインデックス、r/wはリーダー/ライター)
  • 名前に型を含めない: userSliceではなくusersnameStringではなくnameを使用
  • エクスポートされていないグローバルに接頭辞を付ける: パッケージレベルのエクスポートされていない変数/定数に_接頭辞を使用してシャドウイングを防止
for i, v := range items { ... }           // 小さいスコープ
pendingOrders := filterPending(orders)    // 大きいスコープ
const _defaultPort = 8080                 // エクスポートされていないグローバル

15行を超える関数内のローカル変数を命名する場合は references/VARIABLES.md を参照してください。


繰り返しを回避する

Go の名前は使用時に繰り返されるような感じを与えるべきではありません。完全なコンテキストを考慮してください:

  • パッケージ + シンボル: widget.NewWidget()ではなくwidget.New()
  • レシーバー + メソッド: p.ProjectName()ではなくp.Name()
  • コンテキスト + 型: sqldbパッケージではDBConnectionではなくConnectionを使用

パッケージ名とそのエクスポートされたシンボルが冗長に感じられる場合は references/REPETITION.md を参照してください。


組み込み名を回避する

Go の事前宣言識別子(errorstringlencapappendcopynewmake等)を変数、パラメータ、または型名としてシャドウイングしないでください。

詳細ガイダンス: go-declarations — "Avoid Using Built-In Names"セクションを参照してください。


クイックリファレンス

要素ルール
パッケージ小文字、アンダースコアなしpackage httputil
エクスポートMixedCaps、大文字で始まるfunc ParseURL()
エクスポート非mixedCaps、小文字で始まるfunc parseURL()
レシーバー1-2文字の省略func (c *Client)
定数MixedCaps、ALL_CAPS は禁止const MaxSize = 100
イニシャリズム一貫した大文字小文字userIDXMLAPI
変数長さ ~ スコープサイズi(小)、userCount(大)
組み込み名事前宣言識別子をシャドウイングしないgo-declarationsを参照

検証: 識別子の名前変更後、bash scripts/check-naming.shを実行して命名アンチパターンが残っていないことを確認します。次にgo build ./...を実行して、名前変更が何も壊していないことを確認します。

関連スキル

  • インターフェース命名: -er接尾辞でインターフェースを命名するか、レシーバー型を選択する場合は go-interfaces を参照してください
  • パッケージ命名: パッケージを命名する、util/commonを回避する、またはインポート衝突を解決する場合は go-packages を参照してください
  • エラー命名: センチネルエラー(ErrFoo)またはカスタムエラー型を命名する場合は go-error-handling を参照してください
  • 宣言スコープ: 変数名の長さがスコープに依存する場合、または組み込みのシャドウイングを回避する場合は go-declarations を参照してください
  • スタイル原則: 識別子名で明確さと簡潔さのバランスを取る場合は go-style-core を参照してください

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

詳細情報

作者
cxuu
リポジトリ
cxuu/golang-skills
ライセンス
Apache-2.0
最終更新
不明

Source: https://github.com/cxuu/golang-skills / ライセンス: Apache-2.0

関連スキル

汎用その他⭐ リポ 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 フォームよりご連絡ください。
原作者: cxuu · cxuu/golang-skills · ライセンス: Apache-2.0