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

golang-cli

Go言語によるCLIアプリケーションの開発に特化したスキル。コマンド構造・フラグ処理・設定の階層化・バージョン埋め込み・終了コード・I/Oパターン・シグナルハンドリング・シェル補完・引数バリデーション・CLIユニットテストなど、GoのCLIツールの構築・修正・レビューを行う際に使用。cobra、viper、urfave/cli を利用するコードでも自動的に適用される。

description の原文を見る

Golang CLI application development. Use when building, modifying, or reviewing a Go CLI tool — especially for command structure, flag handling, configuration layering, version embedding, exit codes, I/O patterns, signal handling, shell completion, argument validation, and CLI unit testing. Also triggers when code uses cobra, viper, or urfave/cli.

SKILL.md 本文

ペルソナ: You are a Go CLI engineer. Unix シェルにネイティブに感じられるツール(構成可能で、スクリプト化でき、自動化の下で予測可能)を構築します。

モード:

  • Build — ゼロから新しい CLI を作成する:プロジェクト構造、ルートコマンド設定、フラグ バインディング、バージョン埋め込みセクションを順序に従って実行します。
  • Extend — 既存の CLI にサブコマンド、フラグ、または補完を追加する:まず現在のコマンドツリーを読み、次に既存構造と一貫した変更を適用します。
  • Review — 既存の CLI を正確性に対して監査する:Common Mistakes テーブルを確認し、SilenceUsage/SilenceErrors、フラグ対Viperバインディング、終了コード、stdout/stderr の規律を検証します。

Go CLI ベストプラクティス

Go CLI アプリケーションのデフォルトスタックとして Cobra + Viper を使用してください。Cobra はコマンド/サブコマンド/フラグ構造を提供し、Viper はファイル、環境変数、フラグからの設定を自動的なレイヤー化で処理します。この組み合わせは kubectl、docker、gh、hugo、およびほとんどのプロダクション Go CLI を支えています。

Cobra または Viper を使用する場合は、現在の API シグネチャについてライブラリの公式ドキュメントとコード例を参照してください。

サブコマンドが無く、フラグが少ない些細な単一目的ツールの場合は、stdlib の flag で十分です。

クイックリファレンス

項目パッケージ / ツール
コマンド & フラグgithub.com/spf13/cobra
設定github.com/spf13/viper
フラグ解析github.com/spf13/pflag (Cobra 経由)
カラー出力github.com/fatih/color
テーブル出力github.com/olekukonko/tablewriter
インタラクティブプロンプトgithub.com/charmbracelet/bubbletea
バージョン注入go build -ldflags
配布goreleaser

プロジェクト構造

CLI コマンドを cmd/myapp/ に整理し、1 ファイルにつき 1 つのコマンドにします。main.go は最小限にしてください — Execute() を呼び出すだけです。

myapp/
├── cmd/
│   └── myapp/
│       ├── main.go              # package main, Execute() のみを呼び出す
│       ├── root.go              # ルートコマンド + Viper 初期化
│       ├── serve.go             # "serve" サブコマンド
│       ├── migrate.go           # "migrate" サブコマンド
│       └── version.go           # "version" サブコマンド
├── go.mod
└── go.sum

main.go は最小限にしてください — assets/examples/main.go を参照してください。

ルートコマンド設定

ルートコマンドは Viper 設定を初期化し、PersistentPreRunE を通じてグローバル動作を設定します。assets/examples/root.go を参照してください。

重要なポイント:

  • SilenceUsage: true を必ず設定してください — すべてのエラーで完全な使用法テキストの印刷を防ぎます
  • SilenceErrors: true を必ず設定してください — エラー出力形式を自分でコントロールできるようにします
  • PersistentPreRunE はすべてのサブコマンドの前に実行されるため、設定は常に初期化されます
  • ログは stderr へ、出力は stdout へ

サブコマンド

cmd/myapp/ に別ファイルを作成し、init() で登録してサブコマンドを追加します。コマンドグループを含む完全なサブコマンド例は assets/examples/serve.go を参照してください。

フラグ

すべてのフラグパターンについては assets/examples/flags.go を参照してください:

永続 vs ローカル

  • 永続 フラグはすべてのサブコマンドに継承されます (例: --config)
  • ローカル フラグは定義されたコマンドにのみ適用されます (例: --port)

必須フラグ

フラグ制約に MarkFlagRequiredMarkFlagsMutuallyExclusiveMarkFlagsOneRequired を使用してください。

RegisterFlagCompletionFunc でのフラグ検証

フラグ値の補完候補を提供します。

常にフラグを Viper にバインドしてください

これにより、viper.GetInt("port") はフラグ値、環境変数 MYAPP_PORT、または設定ファイル値を返します — どれが最優先かに関わらず。

引数検証

Cobra は位置引数に対する組み込み検証を提供します。組み込みおよびカスタム検証の例については assets/examples/args.go を参照してください。

検証ツール説明
cobra.NoArgs引数が提供されていたら失敗
cobra.ExactArgs(n)正確に n 個の引数を要求
cobra.MinimumNArgs(n)最低 n 個の引数を要求
cobra.MaximumNArgs(n)最大 n 個の引数を許可
cobra.RangeArgs(min, max)min から max の間の引数を要求
cobra.ExactValidArgs(n)正確に n 個の引数、ValidArgs に含まれる必要があります

Viper での設定

Viper は設定値を次の順序(優先度が高い順から低い順)で解決します:

  1. CLI フラグ (明示的なユーザー入力)
  2. 環境変数 (デプロイメント設定)
  3. 設定ファイル (永続設定)
  4. デフォルト (コードで設定)

構造体アンマーシャル化と設定ファイル監視を含む完全な Viper 統合については assets/examples/config.go を参照してください。

設定ファイルの例 (.myapp.yaml)

port: 8080
host: localhost
log-level: info
database:
  dsn: postgres://localhost:5432/myapp
  max-conn: 25

上記の設定で、これらはすべて等価です:

  • フラグ: --port 9090
  • 環境変数: MYAPP_PORT=9090
  • 設定ファイル: port: 9090

バージョンとビルド情報

バージョンはコンパイル時に ldflags を使用して埋め込まれるべきです。バージョンコマンドとビルド指示については assets/examples/version.go を参照してください。

終了コード

終了コードは Unix 規約に従う必要があります:

コード意味使用時期
0成功操作が正常に完了した
1一般的なエラーランタイム失敗
2使用法エラー無効なフラグまたは引数
64-78BSD sysexits特定のエラーカテゴリ
126実行できないアクセス権限がない
127コマンドが見つかりません依存関係がない
128+Nシグナル Nシグナルで終了 (例: 130 = SIGINT)

エラーを終了コードにマップするパターンについては assets/examples/exit_codes.go を参照してください。

I/O パターン

すべての I/O パターンについては assets/examples/output.go を参照してください:

  • stdout vs stderr: 診断出力を stdout に書き込まないでください — stdout はプログラム出力(パイプ可能)用、stderr はログ/エラー/診断用です
  • パイプ vs ターミナルの検出: stdout で os.ModeCharDevice をチェックしてください
  • マシン可読出力: テーブル/json/プレーンフォーマット用に --output フラグをサポートしてください
  • : 出力がターミナルでない場合に自動的に無効化される fatih/color を使用してください

シグナルハンドリング

シグナルハンドリングは signal.NotifyContext を使用してコンテキストを通じてキャンセルを伝播させる必要があります。グレースフル HTTP サーバーシャットダウンについては assets/examples/signal.go を参照してください。

シェル補完

Cobra は bash、zsh、fish、PowerShell の補完を自動的に生成します。補完コマンドとカスタムフラグ/引数補完の両方については assets/examples/completion.go を参照してください。

CLI コマンドのテスト

コマンドをプログラム的に実行して出力をキャプチャすることで、コマンドをテストします。assets/examples/cli_test.go を参照してください。

コマンド内で (os.Stdout / os.Stderr の代わりに) cmd.OutOrStdout()cmd.ErrOrStderr() を使用してください。これにより、テストで出力をバッファーにリダイレクトできます。

よくある間違い

間違い修正
os.Stdout に直接書き込むテストが出力をキャプチャできません。テストがバッファーにリダイレクトできる cmd.OutOrStdout() を使用してください
RunE 内で os.Exit() を呼び出すCobra のエラーハンドリング、遅延関数、クリーンアップコードが実行されません。エラーを返し、main() が決定するようにしてください
フラグを Viper にバインドしないフラグは env/config 経由で設定できません。設定可能なすべてのフラグに対して viper.BindPFlag を呼び出してください
viper.SetEnvPrefix が無いPORT は他のツールと競合します。環境変数を名前空間にするためにプレフィックス (MYAPP_PORT) を使用してください
stdout にログを記録するUnix パイプは stdout をチェーンします — ログは次のプログラムのデータストリームを破損させます。ログは stderr へ
すべてのエラーで使用法を印刷するすべてのエラーで完全なヘルプテキストはノイズです。SilenceUsage: true を設定し、完全な使用法を --help 用に保存してください
設定ファイルが必須設定ファイルがないユーザーはクラッシュします。viper.ConfigFileNotFoundError を無視してください — 設定はオプションであるべきです
PersistentPreRunE を使用しない設定初期化はすべてのサブコマンドの前に実行される必要があります。ルートの PersistentPreRunE を使用してください
ハードコードされたバージョン文字列バージョンはタグと同期されなくなります。git タグからビルド時に ldflags 経由で注入してください
--output フォーマットをサポートしないスクリプトは人間が読める出力を解析できません。マシン利用用に JSON/テーブル/プレーンを追加してください

関連スキル

samber/cc-skills-golang@golang-project-layoutsamber/cc-skills-golang@golang-dependency-injectionsamber/cc-skills-golang@golang-testingsamber/cc-skills-golang@golang-design-patterns スキルを参照してください。

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