zero-skills について
マイクロサービス開発を支援する AI エージェント向けの、モジュール型 go-zero ナレッジスキルです。REST・RPC サービス、データアクセス、耐障害性、コード生成、運用を、分野別ガイドとワークフローで扱います。
主な機能
- 01REST・RPC パターンの分野別ガイド
- 02SQL、MongoDB、Redis の利用案内
- 03耐障害性とコレクションのパターン
- 04goctl コマンドとコード生成
- 05可観測性とメッセージキューの資料
活用シーン
- 01REST API または RPC サービスの作成
- 02データベース永続化とキャッシュの追加
- 03Swagger ドキュメントの生成
- 04本番環境に向けたサービスの強化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ zeromicro/ zero-skills --skill zero-skillsインストール後、Claude Code で/zero-skillsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreREADME.mdREADME_CN.mdbest-practices/overview.mddesign/principles.mdexamples/README.mdverify-tutorial.shexamples/case-studies/looklook-overview.mdexamples/demo-project/README.mdsetup-demo.shgetting-started/README.mdcodex-guide.mdclaude-code-guide.mdcopilot-guide.mdwindsurf-guide.mdcursor-guide.mdreferences/collection-patterns.mdadvanced-components.mddistributed-transactions.mddatabase-patterns.mdgoctl-commands.mdobservability.mdmessage-queue.mdrest-api-patterns.mdrpc-patterns.mdswagger-patterns.mdresilience-patterns.mdskill-patterns/README.mdplan-architecture.mdgenerate-service.md詳細
AI エージェント向け go-zero スキル
このスキルは、本番環境に対応したサービスの構築を開発者に支援する AI エージェント向けに最適化された、go-zero マイクロサービスフレームワークの包括的な知識を提供します。REST API、RPC サービス、データベース操作、回復性パターン、高性能データ構造、トラブルシューティングを網羅しています。
🎯 このスキルを使用するタイミング
go-zero を扱うときは、このスキルを呼び出してください。
- サービスの作成:REST API、gRPC サービス、マイクロサービスアーキテクチャ
- データベース統合:SQL、MongoDB、Redis、コネクションプーリング
- データ構造:LRU Cache、Ring Buffer、TimingWheel、並行マップ
- 本番環境への対応:サーキットブレーカー、レート制限、エラー処理
- デバッグ:エラーの理解、設定の修正、問題の解決
- 学習:go-zero のパターンとベストプラクティスの理解
📚 知識の構成
このスキルでは、go-zero の知識を用途別のモジュールに整理しています。一度にすべてを読むのではなく、必要に応じて特定のガイドを読み込んでください。
クイックスタートガイド
リンク:go-zero 公式ドキュメント 内容:インストール、最初の API サービス、基本コマンド、hello-world の例(公式ドキュメントを参照)
パターンガイド(詳細リファレンス)
1. REST API パターン
ファイル:references/rest-api-patterns.md 読み込むタイミング:HTTP エンドポイントの作成、CRUD 操作の実装、ミドルウェアの追加 内容:
- Handler → Logic → Context の 3 層アーキテクチャ
- 適切な型を使ったリクエスト/レスポンスの処理
- ミドルウェア(認証、ログ記録、メトリクス、CORS)
httpx.Error()とhttpx.OkJson()を使ったエラー処理- ✅ 正しいパターンと❌ 誤ったパターンを含む CRUD の完全な例
2. RPC サービスパターン
ファイル:references/rpc-patterns.md 読み込むタイミング:gRPC サービスの構築、サービス間通信 内容:
- Protocol Buffers の定義とコード生成
- etcd/consul/kubernetes を使ったサービスディスカバリー
- ロードバランシング戦略
- クライアントの設定とインターセプター
- RPC コンテキストでのエラー処理
3. データベースパターン
ファイル:references/database-patterns.md 読み込むタイミング:データ永続化、キャッシュ、複雑なクエリの実装 内容:
- sqlx を使った SQL 操作(CRUD、トランザクション、一括挿入)
- MongoDB 統合パターン
- Redis キャッシュ戦略とキャッシュアサイドパターン
goctl modelを使ったモデル生成- コネクションプーリングとパフォーマンスチューニング
4. 回復性パターン
ファイル:references/resilience-patterns.md 読み込むタイミング:本番環境への対応、障害への対処、システム負荷の管理 内容:
- サーキットブレーカーの設定(Breaker)
- レート制限と API スロットリング
- 高負荷時の負荷遮断
- タイムアウトとリトライ戦略
- グレースフルシャットダウンと縮退運転
5. コレクションパターン
ファイル:references/collection-patterns.md 読み込むタイミング:高性能データ構造、ローカルキャッシュ、タイムアウト管理を使用するとき 内容:
- ローカルの頻出データをキャッシュする LRU Cache(O(1) 操作)
- 固定サイズの循環バッファ向け Ring Buffer
- 効率的なタイマー管理を行う TimingWheel(O(1) の追加/削除/実行)
- 並行処理で安全なマップ操作を行う SafeMap
- メモリ管理のベストプラクティスと注意点
6. goctl コマンドリファレンス
ファイル:references/goctl-commands.md 読み込むタイミング:goctl によるコード生成、新しいサービスのセットアップ、生成後の手順 内容:
- goctl のインストールと検出
- 正確なフラグを含む API/RPC/Model 生成コマンド
- 生成後のパイプライン(mod tidy、インポートの修正、ビルドの検証)
- 設定テンプレート(API、RPC、本番環境)
- デプロイメントテンプレート(Dockerfile、Kubernetes、Docker Compose)
- ミドルウェアとエラーハンドラーのテンプレート
- API 仕様のパターン(CRUD、JWT、混合認証)
7. Swagger / OpenAPI ドキュメント
ファイル:references/swagger-patterns.md
読み込むタイミング:.api ファイルから Swagger/OpenAPI ドキュメントを生成するとき、API ドキュメントのアノテーションを追加するとき
内容:
- 組み込みの
goctl api swaggerコマンドリファレンス(goctl ≥ 1.8.4。プラグインは不要) infoブロックのメタデータ:title、description、host、basePath、schemes、useDefinitions、wrapCodeMsg- Swagger UI のグループ分けに使用する
@serverタグ - エンドポイントの概要/説明に使用する
@doc - フィールドタグ:
example、options(列挙型)、range、default、optional - セキュリティ定義(
securityDefinitionsFromJson+authType) - ビジネスエラーコード(
bizCodeEnumDescription) - ベストプラクティスを含む、複数ファイルから成る
.api構成の完全な例
8. 分散トランザクションのパターン
ファイル:references/distributed-transactions.md 読み込むタイミング:サービス間のデータ整合性、DTM 連携、SAGA/TCC パターンを扱うとき 内容:
- Workflow、Saga、TCC、XA、2 フェーズメッセージ、outbox のパターン選択ガイド
- 検証済みの DTM HTTP Saga のスケルトン
- バリア、冪等性、補償、セキュリティ、障害テストのチェックリスト
9. 可観測性のパターン
ファイル:references/observability.md 読み込むタイミング:本番環境の監視、トレース、アラートを設定するとき 内容:
- Prometheus メトリクスの設定
- カスタムメトリクスの実装
- OpenTelemetry/Jaeger による分散トレーシング
- logx による構造化ロギング
- Grafana ダッシュボードとアラートルール
- ログ集約のための ELK 連携
10. メッセージキューのパターン
ファイル:references/message-queue.md 読み込むタイミング:非同期処理、遅延タスク、イベントストリーミングを扱うとき 内容:
- 遅延タスク向けの go-queue dq(Beanstalkd)
- 高スループットのメッセージング向けの go-queue kq(Kafka)
- 現在のプロデューサー API とコンシューマー API
- ライフサイクル、再試行、冪等性、シャットダウンに関するガイダンス
11. 高度なコンポーネント
ファイル:references/advanced-components.md 読み込むタイミング:パフォーマンスの最適化、並行処理、キャッシュを扱うとき 内容:
- キャッシュ浸透を防ぐブルームフィルター
- 遅延タスクのスケジューリングに使用する TimingWheel
- 並列処理向けの MapReduce
- バッチタスクのバッファリングに使用する Executors
- 重複を防止する SharedCalls(SingleFlight)
補足リソース
ベストプラクティス
ファイル:best-practices/overview.md 読み込むタイミング:本番環境へのデプロイ、コードレビュー、最適化のとき 内容:設定管理、ロギング、監視、セキュリティ、パフォーマンス
トラブルシューティング
ファイル:troubleshooting/common-issues.md 読み込むタイミング:エラー、設定の問題、実行時の問題をデバッグするとき 内容:よくあるエラーメッセージ、解決策、設定上の注意点、デバッグのヒント
Claude Code 連携
ファイル:getting-started/claude-code-guide.md 読み込むタイミング:スキルを使わずに Claude Code を使用できるよう設定するとき 内容:インストール、呼び出し方法、高度な機能(サブエージェント、動的コンテキスト)
設計原則
ファイル:design/principles.md 読み込むタイミング:フレームワークの理念やアーキテクチャ上の判断を理解するとき 内容:3 層アーキテクチャの根拠、設計上の判断、パフォーマンスに関する考慮事項、アンチパターン
ケーススタディ:go-zero-looklook
ファイル:examples/case-studies/looklook-overview.md 読み込むタイミング:本番規模の例や実際のアーキテクチャから学ぶとき 内容:ソースに基づくリポジトリマップ、学習ワークフロー、再利用可能なパターン、検証チェックリスト
ツール連携ガイド
ファイル: getting-started/README.md 読み込むタイミング: Cursor、GitHub Copilot、Windsurf、または Codex で zero-skills をセットアップするとき 内容: 機能比較表、ツールごとのセットアップ手順(Claude Code、Cursor、Copilot、Windsurf、Codex)
🚀 一般的なワークフロー
これらのワークフローでは、go-zero の一般的な開発タスクの手順を説明します。
新しい REST API サービスの作成
手順:
- 型とルートを含む API 仕様を
.apiファイルで定義します - コードを生成します:
goctl api go -api user.api -dir . internal/logic/レイヤーにビジネスロジックを実装しますhttpxを使ってバリデーションとエラー処理を追加します- 適切なリクエスト/レスポンス処理でエンドポイントをテストします
詳細ガイド: references/rest-api-patterns.md
データベース操作の実装
手順:
- データベーススキーマを設計し、テーブルを作成します
- モデルを生成します:
goctl model mysql datasource -url="..." -table="users" -dir="./model" internal/svc/service_context.goの ServiceContext にモデルを注入します- ロジックレイヤーで sqlx のメソッド(
Insert、FindOne、Update、Delete)を使用します ctxを伝播させ、トランザクションとエラーを適切に処理します
詳細ガイド: references/database-patterns.md
ミドルウェアの追加
手順:
internal/middleware/ディレクトリにミドルウェア関数を作成します.apiファイルでミドルウェアを定義するか、プログラムから登録します- 認証/認可ロジックを実装します
- 検証済みのデータを
r.Context()経由で渡します - 適切な HTTP ステータスコードでエラーを処理します
詳細ガイド: references/rest-api-patterns.md
RPC サービスの構築
手順:
- メッセージと RPC を含むサービスを
.protoファイルで定義します - コードを生成します:
goctl rpc protoc user.proto --go_out=. --go-grpc_out=. --zrpc_out=. internal/logic/にサービスロジックを実装します- サービスディスカバリー(etcd/consul/kubernetes)を設定します
- RPC クライアントでテストし、エラーを処理します
詳細ガイド: references/rpc-patterns.md
Swagger ドキュメントの生成
手順:
- エントリー
.apiファイルに Swagger メタデータ(title、host、basePath、schemes)を含むinfoブロックを追加します - Swagger UI でグループ分けするため、
@serverブロックにtagsを追加します - 各エンドポイントに
@docの概要を追加します - リクエスト/レスポンスのフィールドに
example/options/rangeタグを追加します goctl api swagger --api entry.api --dir docs/swagger --filename apiを実行します
詳細ガイド: references/swagger-patterns.md
高性能データ構造の使用
手順:
- ユースケースに応じて適切なデータ構造を選択します:
- ローカルのホットデータのキャッシュには LRU Cache
- 固定サイズのログ/メッセージバッファーには Ring Buffer
- タイムアウト/遅延タスクの管理には TimingWheel
- 並行アクセスに安全なキーと値の保存には SafeMap
github.com/zeromicro/go-zero/core/collectionからインポートします- メモリ制約に基づいて容量/パラメーターを設定します
- リソースのクリーンアップのため、退避コールバックを処理します(LRU Cache)
- メモリ使用量を監視し、必要に応じて再構築します(SafeMap)
詳細ガイド: references/collection-patterns.md
⚡ 主な原則
go-zero のコードを生成またはレビューする際は、常に次の原則に従ってください。
✅ 必ず従うこと
- 3 層の分離: Handler(ルーティング)→ Logic(ビジネス)→ Model(データ)を明確に分けます
- 構造化エラー: HTTP エラーには
fmt.Errorfではなくhttpx.Error(w, err)を使用します - 設定:
conf.MustLoad(&c, *configFile)で読み込み、ServiceContext 経由で注入します - コンテキストの伝播: トレースとキャンセルのため、すべてのレイヤーに
ctx context.Contextを渡します - 型安全性: リクエスト/レスポンスの型を
.apiファイルで定義し、goctl で生成します - goctl による生成: 常に
goctlでボイラープレートを生成し、ハンドラー/ルートを手書きしないでください
❌ 絶対にしないこと
- ハンドラーにビジネスロジックを直接記述する(三層アーキテクチャに違反します)
- httpx ヘルパーを使わずに、
w.Write()やfmt.Fprintf()でエラーをそのまま返す - 設定値(ポート、ホスト、データベースの認証情報)をハードコードする
- ユーザー入力の検証を省略したり、
err != nilの確認を忘れたりする - 生成されたコードを変更する(カスタマイズは
logicレイヤーで行ってください) - ServiceContext のインジェクションを回避する(密結合やテストの問題につながります)
📖 段階的な学習パス
ニーズに応じて、以下のパスに沿って学習してください。
🟢 go-zero を初めて使う方へ
-
ここから始めましょう:go-zero 公式クイックスタート go-zero をインストールし、最初の API を作成して、基本概念を理解します
-
データベースを追加する:references/database-patterns.md MySQL/PostgreSQL に接続し、モデルを生成して、CRUD を実装します
🟡 本番サービスを構築していますか?
-
ベストプラクティスを確認する:best-practices/overview.md 設定、ロギング、モニタリング、セキュリティのチェックリスト
-
耐障害性を追加する:references/resilience-patterns.md サーキットブレーカー、レート制限、グレースフルデグラデーション
-
データ構造を最適化する:references/collection-patterns.md パフォーマンス向上のための LRU Cache、Ring Buffer、TimingWheel
-
よくある落とし穴を確認する:troubleshooting/common-issues.md 典型的なミスを避け、問題のデバッグ方法を把握します
-
オブザーバビリティを設定する:references/observability.md Prometheus メトリクス、分散トレーシング、構造化ロギング
🔴 高度なシナリオに取り組みますか?
-
分散トランザクション:references/distributed-transactions.md DTM との統合、SAGA/TCC パターン、データの一貫性
-
メッセージキュー:references/message-queue.md 非同期処理、遅延タスク、Kafka との統合に go-queue を使用します
-
パフォーマンスの最適化:references/advanced-components.md Bloom filter、MapReduce、TimingWheel、SharedCalls
-
設計を理解する:design/principles.md フレームワークの理念、アーキテクチャ上の判断、アンチパターン
-
サンプルから学ぶ:examples/case-studies/looklook-overview.md 本番規模のアーキテクチャ、実際のパターン
🔵 機能を拡張しますか?
-
Claude Code と併用する:getting-started/claude-code-guide.md サブエージェント、動的コンテキスト、引数の受け渡しなどの高度な機能を学びます デモプロジェクトを実行して、環境を検証します
-
知識を検証する:examples/verify-tutorial.sh サンプルが正しく動作するか確認するスクリプト
🔗 go-zero AI エコシステムとの連携
このスキルは、AI を活用した go-zero 開発のための二層エコシステムの一部です。
| ツール | 用途 | 最適な対象 |
|---|---|---|
| ai-context | 簡潔なワークフロー手順(約5KB) | GitHub Copilot、Cursor、Windsurf |
| zero-skills(このリポジトリ) | 包括的なナレッジベースと goctl リファレンス(約45KB) | すべての AI ツール、深い学習、リファレンス |
コード生成では、AI がターミナルで goctl を直接実行するため、別途 MCP サーバーは必要ありません。すべてのコマンドを網羅したリファレンスについては、references/goctl-commands.md を参照してください。
Claude Code での使用方法:
- go-zero プロジェクトで作業すると、このスキルが自動的に読み込まれます
- go-zero のガイダンスを手動で呼び出すには、
/zero-skillsを使用します - コード生成では、AI がターミナルで goctl コマンドを直接実行します
- 必要に応じて、特定のパターンファイルを参照してください(Claude は必要に応じて読み込みます)
詳しい使用方法については、getting-started/claude-code-guide.md を参照してください。
🌐 その他のリソース
- 公式ドキュメント: go-zero.dev — 最新の API リファレンスとガイド
- GitHub: zeromicro/go-zero — ソースコードとサンプル
- コミュニティ: メインリポジトリでは、ディスカッション、イシュー、コントリビューションを歓迎しています
📝 バージョン互換性
- 安定版の対象: go-zero v1.10.3(Go 1.24 以降が必要です)
- master との互換性: go-zero の
masterブランチに対してテストする場合は、Go 1.25 以降を使用してください - 更新: フレームワークの進化に合わせて、パターンを定期的に更新しています
- 破壊的変更: バージョン間の API 変更については、公式ドキュメントを確認してください
クイック呼び出し: /zero-skills を使用するか、「go-zero で [タスク] を行うにはどうすればよいですか?」と尋ねてください
お困りですか? 詳しい例と説明については、該当するパターンガイドを参照してください。