mcpField
G
go-skills

go-skills

github.com/llama-farm開発83655 回インストール21 週間前に更新
リポジトリ

go-skills について

go-skills は、LlamaFarm CLI の開発者向け Go ガイドラインです。慣用的で保守しやすく、安全な実装方法を扱い、主要な開発テーマのチェックリストを備えています。

主な機能

  1. 01Go のエラー処理と並行処理の指針
  2. 02テストとセキュリティのチェックリスト
  3. 03慣用的な Go のパターン
  4. 04LlamaFarm CLI のコード規約

活用シーン

  1. 01LlamaFarm CLI の Go 変更のレビュー
  2. 02エラー処理と並行処理の統一
  3. 03テストとセキュリティの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/llama-farm/llamafarm --skill go-skills

インストール後、Claude Code で/go-skillsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

concurrency.md
error-handling.md
patterns.md
security.md
testing.md

詳細

LlamaFarm CLI 向け Go スキル

LlamaFarm CLI 開発で共通して使う Go のベストプラクティスです。これらのガイドラインに従うことで、慣用的で保守しやすく、安全な Go コードを作成できます。

技術スタック

  • Go 1.24+
  • Cobra(CLI フレームワーク)
  • Bubbletea(TUI フレームワーク)
  • Lipgloss(ターミナルのスタイリング)

ディレクトリ構成

cli/
  cmd/           # Command implementations
    config/      # Configuration types and loading
    orchestrator/ # Service management
    utils/       # Shared utilities
    version/     # Version and upgrade handling
  internal/      # Internal packages
    tui/         # TUI components
    buildinfo/   # Build information

クイックリファレンス

エラー処理
  • エラーには必ずコンテキストを付けてラップします:fmt.Errorf("operation failed: %w", err)
  • 予期される状況にはセンチネルエラーを使用します:var ErrNotFound = errors.New("not found")
  • 関数呼び出しの直後にエラーを確認します
並行処理
  • 共有状態の保護には sync.Mutex を使用します
  • 読み取りが書き込みより多い場合は sync.RWMutex を使用します
  • ゴルーチン間の通信にはチャネルを使用します
  • ミューテックスのロック解除には必ず defer を使用します
テスト
  • 幅広いカバレッジを確保するため、テーブル駆動テストを使用します
  • モック可能にするため、インターフェースを使用します
  • テストファイル名:同じパッケージ内の *_test.go
セキュリティ
  • 認証情報やトークンをログに記録しません
  • デバッグログでは機密性の高いヘッダーをマスキングします
  • 外部からのすべての入力を検証します
  • キャンセル処理には context.Context を使用します

チェックリストファイル

ファイル説明
patterns.mdGo の慣用的なパターン
concurrency.mdゴルーチン、チャネル、同期
error-handling.mdエラーのラップ、センチネル
testing.mdテーブル駆動テスト、モック
security.md入力検証、安全なコーディング

覚えておきたい Go の格言

  1. 「メモリを共有して通信するのではなく、通信してメモリを共有しましょう」
  2. 「エラーは値です」
  3. 「少しのコピーは、少しの依存よりも優れています」
  4. 「巧妙さより明快さが大切です」
  5. 「アーキテクチャを設計し、コンポーネントに名前を付け、詳細を文書化しましょう」

このコードベースでよく使われるパターン

HTTP クライアントインターフェース
type HTTPClient interface {
    Do(req *http.Request) (*http.Response, error)
}
ミューテックスを使ったプロセス管理
type ProcessManager struct {
    mu        sync.RWMutex
    processes map[string]*ProcessInfo
}
Cobra コマンドパターン
var myCmd = &cobra.Command{
    Use:   "mycommand",
    Short: "Brief description",
    RunE: func(cmd *cobra.Command, args []string) error {
        // Implementation
        return nil
    },
}
Bubbletea モデルパターン
type myModel struct {
    // State fields
}

func (m myModel) Init() tea.Cmd { return nil }
func (m myModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { /* ... */ }
func (m myModel) View() string { return "" }

コメント