← スキル一覧に戻る

go-code-review
by tamaco489
⭐ 0🍴 0📅 2026年1月25日
SKILL.md
name: go-code-review description: | Goコードのレビューと品質チェック。 セキュリティ、パフォーマンス、Clean Architectureの観点から分析。PRレビュー、コード品質確認時に使用。 allowed-tools: Read, Grep, Glob, Bash, Write
Go Code Review Skill
Go コードのレビューと品質チェックを行うスキルです。
対象
backend/api/配下の API サービスbackend/batch/配下のバッチ処理.goファイルのみ(自動生成ファイルを除く)
レビュー対象外
internal/gen/配下(OpenAPI 自動生成)*.sql.go(sqlc 自動生成)vendor/ディレクトリ
レビュー観点
1. セキュリティ
- SQL インジェクションの検出
- コマンドインジェクションの検出
- 機密情報のハードコーディング確認
- 入力値検証の有無
- 参考: OWASP Go-SCP
2. パフォーマンス
- N+1 クエリの検出
- 不要なメモリ割り当て(append の多用)
- スライスの事前メモリ確保の推奨
- defer の適切な使用
- 参考: Uber Go Style Guide - Performance
3. Clean Architecture
- レイヤー間の依存関係(controller → usecase → repository)
- ドメイン層への外部依存の混入
- インターフェースによる依存性逆転
- 責務の分離
4. コーディング規約(プロジェクト固有)
- エラーメッセージは小文字で開始
- else 文の回避(早期リターン推奨)
- スライスの事前メモリ確保
anyの使用(interface{}禁止)- パッケージコメント必須(最大 2 行)
- ファイル末尾の改行
- 行末の空白禁止
5. コーディング規約(一般的な Go ベストプラクティス)
6. エラーハンドリング
- エラーの適切なラップ(
fmt.Errorf("context: %w", err)) - エラーの握りつぶし検出
- センチネルエラーの適切な使用
- 参考: Go Blog - Working with Errors
スキル構成
.claude/skills/code-review/
├── SKILL.md # このファイル
├── scripts/
│ └── get_go_diff.sh # 差分取得スクリプト
└── templates/
└── review-result.md # レビュー結果テンプレート
.claude/rules/backend/
└── go-coding.md # プロジェクト固有の Go コーディングルール
レビュー手順
-
ベースブランチの確認(対話形式)
- ユーザーにベースブランチ(分岐元)を確認する
- 例: 「レビュー対象のベースブランチを教えてください(例: main, release/v1.0)」
- ベースブランチが指定されるまでレビューを開始しない
-
変更範囲の特定
- 差分取得スクリプトを実行:
.claude/skills/code-review/scripts/get_go_diff.sh {ベースブランチ} - スクリプトが自動で以下を実行:
- 分岐元からの差分を取得
- 自動生成ファイル(
internal/gen/、*.sql.go、vendor/)を除外 - 変更された Go ファイル一覧と統計を表示
- 差分取得スクリプトを実行:
-
コーディング規約の確認
.claude/rules/backend/go-coding.mdを参照(プロジェクト固有ルール)- 上記「レビュー観点」セクションの外部リンクを参照(一般的な Go ベストプラクティス)
- 特に以下を重視:
- Uber Go Style Guide のエラーハンドリング・パフォーマンス指針
- Go Code Review Comments の命名規則・コードスタイル
- Effective Go の設計原則
-
ファイル単位のレビュー
- 各ファイルの変更内容を確認
- 上記観点でチェック
-
レポート作成
- 問題点をカテゴリ別に整理
- 重要度(Critical/Warning/Info)を付与
- 改善提案を記載
-
レポート出力の確認(対話形式)
- レビュー完了後、ユーザーに確認:
- 「レビュー結果をファイルに出力しますか?(y/N)」
- 「y」の場合:
- 出力先:
backend/api/article/tmp/review/ - ファイル名:
{YYYYMMDD}_{ブランチ名}.md - 例:
20241217_feature-add-auth.md
- 出力先:
- 「N」または未指定の場合:
- チャット上での表示のみ(ファイル出力なし)
- レビュー完了後、ユーザーに確認:
出力フォーマット
テンプレートファイル: templates/review-result.md を参照
使用例
ブランチのレビュー(対話形式)
ユーザー: このブランチをレビューして
Claude: レビュー対象のベースブランチを教えてください(例: main, release/v1.0)
ユーザー: main
Claude: (レビュー実行)
Claude: レビュー結果をファイルに出力しますか?(y/N)
ユーザー: y
Claude: backend/api/article/tmp/review/20241217_feature-add-auth.md に出力しました
ベースブランチを指定してレビュー
mainブランチからの差分をレビューして
特定ファイルのレビュー
backend/api/article/internal/usecase/article_usecase.go をレビューして
注意事項
- このスキルはコードの変更は行いません(レビュー結果の出力のみ)
- 指摘事項は提案であり、最終判断は開発者が行ってください
- golangci-lint で検出可能な項目は
make lintの実行を推奨します - レビュー結果の出力先
backend/api/article/tmp/review/は.gitignoreで管理外
スコア
総合スコア
50/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です