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

go-style-core

Goのフォーマット、行の長さ、ネスト、naked return、セミコロン、およびコアスタイル原則に関する作業時に使用します。より具体的なスキルでカバーされていないスタイルの質問にも対応するフォールバックとして機能しますが、エラーハンドリング・命名・テストなどのドメイン固有のパターンは対象外です(専用スキルを参照)。

description の原文を見る

Use when working with Go formatting, line length, nesting, naked returns, semicolons, or core style principles. Also use when a style question isn't covered by a more specific skill, even if the user doesn't reference a specific style rule. Does not cover domain-specific patterns like error handling, naming, or testing (see specialized skills). Acts as fallback when no more specific style skill applies.

SKILL.md 本文

Go スタイルコア原則

スタイル原則(優先度順)

読みやすい Go コードを書く際は、以下の原則を優先度順に適用します:

優先度順

  1. 明確性(Clarity) — 読み手が余計な背景知識なしにコードを理解できるか?
  2. シンプルさ(Simplicity) — これが目標を達成するもっともシンプルな方法か?
  3. 簡潔性(Concision) — すべての行が存在価値を持っているか?
  4. 保守性(Maintainability) — 後で変更しやすいか?
  5. 一貫性(Consistency) — 周囲のコードやプロジェクト規約に合致しているか?

明確性、シンプルさ、簡潔性の間の葛藤を解決する際、またはそれぞれの原則が実際の Go コードでどのように適用されるかを知りたい際は、references/PRINCIPLES.md を参照してください。


フォーマット

gofmt を実行してください — 例外なしです。厳密な行の長さ制限はありません が、Uber は 99 文字のソフトリミットを推奨しています。長さではなく意味で改行を判断し、単に折り返すのではなくリファクタリングしてください。

gofmt の設定、行区切りの判断、MixedCaps ルールの適用、またはローカルな一貫性の問題を解決する際は、references/FORMATTING.md を参照してください。


ネストを減らす

エラーケースと特殊な条件を最初に処理します。早期に return するか loop を continue させることで、「正常系(happy path)」を字下げしないままにします。

// 悪い例:深くネストしている
for _, v := range data {
    if v.F1 == 1 {
        v = process(v)
        if err := v.Call(); err == nil {
            v.Send()
        } else {
            return err
        }
    } else {
        log.Printf("Invalid v: %v", v)
    }
}

// 良い例:早期 return でフラットな構造
for _, v := range data {
    if v.F1 != 1 {
        log.Printf("Invalid v: %v", v)
        continue
    }

    v = process(v)
    if err := v.Call(); err != nil {
        return err
    }
    v.Send()
}

不要な Else

if の両方の分岐で変数が設定される場合は、デフォルト値+上書きパターンを使用します。

// 悪い例:両方の分岐で設定
var a int
if b {
    a = 100
} else {
    a = 10
}

// 良い例:デフォルト値 + 上書き
a := 10
if b {
    a = 100
}

Naked Returns

引数を指定しない return ステートメントは、名前付き戻り値を返します。これは「naked return」として知られています。

func split(sum int) (x, y int) {
    x = sum * 4 / 9
    y = sum - x
    return // x, y を返す
}

Naked Returns のガイドライン

  • 小さな関数では OK:Naked return は数行程度の関数では問題ありません
  • 中程度以上の関数では明示的に:関数が中程度のサイズに成長したら、明確性のため戻り値を明示的に書きます
  • Naked return のためだけに結果を名前付けしない:ドキュメント化の明確性は、1〜2 行を節約することより常に重要です
// 良い例:小さな関数、naked return は明確
func minMax(a, b int) (min, max int) {
    if a < b {
        min, max = a, b
    } else {
        min, max = b, a
    }
    return
}

// 良い例:大きな関数、明示的な return
func processData(data []byte) (result []byte, err error) {
    result = make([]byte, 0, len(data))

    for _, b := range data {
        if b == 0 {
            return nil, errors.New("null byte in data")
        }
        result = append(result, transform(b))
    }

    return result, nil // 明示的:長い関数ではより明確
}

名前付き戻り値パラメータのガイダンスは go-documentation を参照してください。


セミコロン

Go の字句解析器は、最後のトークンが識別子、リテラル、または break continue fallthrough return ++ -- ) } のいずれかである行の後に自動的にセミコロンを挿入します。

これは、開き括弧は制御構造と同じ行になければならない ことを意味します:

// 良い例:括弧が同じ行
if i < f() {
    g()
}

// 悪い例:括弧が次の行 — 字句解析器が f() の後にセミコロンを挿入
if i < f()  // 間違い!
{           // 間違い!
    g()
}

慣用的な Go では、セミコロンは for loop の句内と、1 行に複数のステートメントを並べるときだけ明示的に使用されます。


クイックリファレンス

原則キーとなる質問
明確性読み手が何と なぜを理解できるか?
シンプルさこれが最もシンプルなアプローチか?
簡潔性シグナルノイズ比は高いか?
保守性これを後で安全に変更できるか?
一貫性これは周囲のコードと合致しているか?

関連スキル

  • 命名規則:MixedCaps の適用、識別子名の選択、命名に関する議論を解決する際は go-naming を参照してください
  • エラー処理フロー:エラーファーストガード句の構造化や early return によるネスト削減は go-error-handling を参照してください
  • ドキュメント:doc コメント、名前付き戻り値パラメータ、パッケージレベルドキュメントを書く際は go-documentation を参照してください
  • Linting 自動化:golangci-lint によるスタイルチェックの自動化や CI 設定は go-linting を参照してください
  • コードレビュー:体系的なコードレビュー中にスタイル原則を適用する際は go-code-review を参照してください
  • ロギングスタイル:ロギング慣行の確認、log と slog の選択、ログ出力の構造化は go-logging を参照してください

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