code-review について
code-review は、GitHub の PR、GitLab の MR、Gerrit の変更を対象とするワークフロースキルです。ホスティング基盤を判別し、CI 状態やリポジトリ固有の情報を踏まえてレビューし、必要に応じてコメントを投稿します。
主な機能
- 01GitHub、GitLab、Gerrit を判別
- 02変更情報、CI 状態、差分を取得
- 03セキュリティ、保守性、設計を確認
- 04リポジトリ別のレビュー情報を保存
- 05レビューコメントを投稿可能
活用シーン
- 01PR、MR、Gerrit の変更をレビュー
- 02変更の評価前に CI 状態を確認
- 03後続レビューでリポジトリ規約を適用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ odyssey4me/ agent-skills --skill code-reviewインストール後、Claude Code で/code-reviewを入力して読み込まれたか確認します。
同梱ファイルreferences/review-checklist.mdtile.json
詳細
コードレビュー
GitHub の PR、GitLab の MR、Gerrit の変更にわたるコードレビューを調整します。git のリモート設定からプラットフォームを自動検出し、セキュリティ、保守性、アーキテクチャとの適合性に焦点を当てたレビューのフィードバックを提供します。
これはワークフロースキルです。スクリプトは含まず、適切なプラットフォームスキルを使用して、複数ステップのレビュー手順をエージェントに案内します。
認証
このスキルでは、認証を基盤となるプラットフォームスキルに委任します。
- GitHub:
gh auth loginが必要です(github スキルを参照) - GitLab:
glab auth loginが必要です(gitlab スキルを参照) - Gerrit:
git-reviewの設定が必要です(gerrit スキルを参照)
code-review を使用する前に、該当するプラットフォームスキルが認証済みであることを確認してください。
コマンド
review
番号または URL で変更をレビューします。
使用方法:
Review PR #123
Review this MR: https://gitlab.com/org/repo/-/merge_requests/42
Review Gerrit change 456789
エージェントはワークフローの手順に従います。git のリモートまたは指定された URL からプラットフォームを検出し、変更のメタデータ、CI ステータス、差分を取得して、構造化されたレビューのフィードバックを提示します。レビューコメントを投稿することもできます。
remember
現在のリポジトリのレビュー用に追加のコンテキストを保存します。これにより、同じリポジトリの今後のレビューで考慮すべき情報が保持されます。
使用方法:
Remember that this repo follows the Google Python Style Guide
Remember: authentication changes must be reviewed by the security team
Remember https://internal-docs.example.com/api-conventions as a reference for API design
Remember that the data layer uses the Repository pattern, not Active Record
キーワード:メッセージの先頭にある remember という単語が、保存を開始するトリガーになります。コンテキストは、現在のリポジトリのリモート URL に対応付けて ~/.config/agent-skills/code-review.yaml に保存されます。
保存する内容:コーディング規約、アーキテクチャ上の決定事項、外部ドキュメントへのリンク、チームの慣習、レビューポリシー、または今後のレビューに反映すべきコンテキストを保存します。
forget
現在のリポジトリについて、以前に保存したコンテキストを削除します。
使用方法:
Forget the note about the Google Python Style Guide
Forget all saved context for this repo
show context
現在のリポジトリについて、保存済みのコンテキストをすべて表示します。
使用方法:
Show review context for this repo
check
必要なプラットフォームスキルが利用可能で、認証済みであることを確認します。
# For GitHub repos
skills/github/scripts/github.py check
# For GitLab repos
skills/gitlab/scripts/gitlab.py check
# For Gerrit repos
skills/gerrit/scripts/gerrit.py check
リポジトリのコンテキスト
リポジトリごとのコンテキストは、git remote get-url origin で取得したリモートのフェッチ URL をキーとして、~/.config/agent-skills/code-review.yaml に保存されます。このコンテキストは、すべてのレビューの開始時に読み込まれます(ワークフローのステップ 0 を参照)。
# ~/.config/agent-skills/code-review.yaml
repositories:
"[email protected]:myorg/myrepo.git":
references:
- "https://internal-docs.example.com/api-conventions"
- "https://google.github.io/styleguide/pyguide.html"
standards:
- "All API endpoints must validate input with Pydantic models"
- "Authentication changes require security team review"
notes:
- "Data layer uses Repository pattern, not Active Record"
- "Legacy modules in src/compat/ are exempt from new style rules"
"https://gitlab.com/myorg/other-repo.git":
references:
- "https://docs.example.com/other-repo/architecture"
standards: []
notes:
- "Migrating from REST to GraphQL -- new endpoints should use GraphQL"
レビュー中にユーザーがリポジトリ外のコンテキストを提供した場合は、remember コマンドを使って保存するよう提案してください。
ワークフロー
ステップ 0:リポジトリのコンテキストを読み込む
レビューを開始する前に、保存済みのコンテキストを確認します。
git remote get-url origin
~/.config/agent-skills/code-review.yaml を読み込み、リモート URL を検索します。コンテキストが存在する場合は読み込み、レビュー全体を通じて考慮します。
- references:アーキテクチャ上の決定事項を評価する際に参照します
- standards:各標準への準拠を積極的に確認します
- notes:これらをレビューのフィードバックに反映します
コンテキストファイルがない場合、またはリポジトリのエントリがない場合は、追加のコンテキストなしで進めます。
ステップ 1:プラットフォームを検出する
リポジトリのコンテキストから、コードホスティングプラットフォームを特定します。
# Check git remotes
git remote -v
- リモートに
github.comが含まれる場合 -> github スキルを使用します - リモートに
gitlabが含まれる場合 -> gitlab スキルを使用します .gitreviewファイルがある場合 -> gerrit スキルを使用します- URL が指定されている場合は、URL のホスト名から検出します
ステップ 2:変更のメタデータと CI ステータスを取得する
GitHub:
skills/github/scripts/github.py prs view <number> --repo OWNER/REPO
skills/github/scripts/github.py prs checks <number> --repo OWNER/REPO
GitLab:
skills/gitlab/scripts/gitlab.py mrs view <number> --repo GROUP/REPO
skills/gitlab/scripts/gitlab.py pipelines list --repo GROUP/REPO
Gerrit:
skills/gerrit/scripts/gerrit.py changes view <change-number>
ステップ 3:CI/テストのステータスを評価する
レビューの前に、CI/テストが成功しているか確認します。
- CI が成功している場合:全項目のレビューに進みます
- CI が失敗している場合:失敗内容を記録し、テストで検出できる懸念点のレビューは省略して、テストでは検出できない問題(セキュリティ、アーキテクチャ、設計)に焦点を当てます
- CI が保留中の場合:その旨を記録し、レビューを進めます
ステップ 4:差分を取得する
GitHub:
gh pr diff <number>
GitLab:
glab mr diff <number>
Gerrit:
git diff HEAD~1
ステップ 5:変更をレビューする
以下の領域を優先順位の高い順にレビューしてください。詳細なチェックリストについては、references/review-checklist.md を参照してください。
- セキュリティ上の懸念:インジェクションの脆弱性、認証/認可の不備、データ漏えい、安全でないデシリアライズ、ハードコードされたシークレット
- 保守性:過度な複雑さ、不適切な命名、関心の分離の欠如、可読性を損なうコードの重複
- 適切なコーディング慣行:エラーハンドリングの不備、リソースリーク、競合状態、システム境界での入力検証の欠如
- アーキテクチャとの適合性:既存のコードベースのパターンとの一貫性、適切な抽象化レベル、依存関係の方向
指摘しない項目:
- スタイルやフォーマットの問題(リンターに任せてください)
- 明確に可読性に影響しない、細かな命名の好み
- テストカバレッジの不足(CI のカバレッジツールに任せてください)
- 失敗した CI ですでに検出されている問題
ステップ 6:指摘事項を提示する
構造化されたレビューとして指摘事項を記載してください。
## Code Review: PR #<number> - <title>
### Summary
<1-2 sentence summary of the change and overall assessment>
### CI Status
<passing/failing/pending -- note any failures>
### Findings
#### Security
- [ ] <finding with file:line reference>
#### Maintainability
- [ ] <finding with file:line reference>
#### Coding Practices
- [ ] <finding with file:line reference>
#### Architecture
- [ ] <finding with file:line reference>
### Verdict
<APPROVE / REQUEST_CHANGES / COMMENT -- with brief rationale>
ユーザーから依頼があった場合は、プラットフォームのスキルを使用して、PR/MR にレビューコメントを投稿してください。
GitHub:
gh pr review <number> --comment --body "<review>"
# Or approve/request changes:
gh pr review <number> --approve --body "<review>"
gh pr review <number> --request-changes --body "<review>"
GitLab:
glab mr note <number> --message "<review>"
# Or approve:
glab mr approve <number>
例
GitHub PR をレビューする
Review PR #42
エージェントは git remote -v を実行して GitHub を検出し、skills/github/scripts/github.py prs view 42 で PR を取得し、skills/github/scripts/github.py prs checks 42 で CI を確認し、gh pr diff 42 で差分を取得して、構造化されたレビューのフィードバックを提示します。
URL を指定して GitLab MR をレビューする
Review https://gitlab.com/myorg/myrepo/-/merge_requests/15
コメントを投稿してレビューする
Review PR #42 and post your findings as a review comment
セキュリティのみに焦点を当ててレビューする
Review PR #42, focus only on security concerns
今後のレビューに向けてコンテキストを保存する
Remember that this repo uses the Twelve-Factor App methodology
Remember https://wiki.example.com/team/coding-standards as a reference
Remember: all database migrations must be backwards-compatible
保存したコンテキストを表示する
Show review context for this repo
モデルに関するガイダンス
このスキルは複数のサブスキルを連携させ、複数ステップにわたるワークフローについての推論を必要とします。最良の結果を得るには、より高性能なモデルを推奨します。
トラブルシューティング
プラットフォームが検出されない
リモートが設定された Git リポジトリ内で実行していることを確認してください。
git remote -v
認証エラー
基盤となるプラットフォームスキルが認証済みであることを確認してください。
# GitHub
gh auth status
# GitLab
glab auth status
差分を取得できない
PR/MR 番号が正しいこと、および変更が存在することを確認してください。
# GitHub
skills/github/scripts/github.py prs view <number>
# GitLab
skills/gitlab/scripts/gitlab.py mrs view <number>