code-review-excellence について
開発者やチーム向けのコードレビュー用スキルです。段階的な手順と建設的なフィードバックを軸に、言語別の参考資料や共通の品質ガイドも提供します。
主な機能
- 01段階的なプルリクエストレビュー手順
- 02実行可能な協調的フィードバック手法
- 03レビューコメントの重要度ラベル
- 04言語別・横断的なガイド
- 05レビュー用チェックリストとテンプレート
活用シーン
- 01プルリクエストやコード変更のレビュー
- 02チームのレビュー基準やチェックリスト作成
- 03レビューを通じた若手開発者の指導
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ awesome-skills/ code-review-skill --skill code-review-excellenceインストール後、Claude Code で/code-review-excellenceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreREADME.md.nojekyllLICENSEindex.htmlCONTRIBUTING.mdindex.en.htmlassets/review-checklist.mdpr-review-template.mdreference/angular.mdcommon-bugs-checklist.mdcode-review-best-practices.mdc.mdcode-quality-universal.mdarchitecture-review-guide.mdcss-less-sass.mdcpp.mdcsharp.mddjango.mdfastapi.mdjava.mdnestjs.mdgo.mdqt.mdkotlin.mdpython.mdreact.mdphp.mdperformance-review-guide.mdsecurity-review-guide.md詳細
コードレビューの卓越性
建設的なフィードバック、体系的な分析、協力的な改善を通じて、コードレビューを門番役から知識共有の場へと変えます。
このスキルを使用する場面
- プルリクエストやコード変更をレビューするとき
- チームのコードレビュー基準を策定するとき
- レビューを通じてジュニア開発者を指導するとき
- アーキテクチャレビューを実施するとき
- レビューチェックリストやガイドラインを作成するとき
- チームの協力体制を改善するとき
- コードレビューのサイクル時間を短縮するとき
- コード品質基準を維持するとき
基本原則
1. レビューへの姿勢
コードレビューの目標:
- バグやエッジケースを見つける
- コードの保守性を確保する
- チーム内で知識を共有する
- コーディング規約を徹底する
- 設計とアーキテクチャを改善する
- チーム文化を築く
目標ではないこと:
- 知識をひけらかす
- 書式を細かく指摘する(リンターを使用します)
- 不必要に進行を妨げる
- 自分の好みに合わせて書き直す
2. 効果的なフィードバック
良いフィードバックとは:
- 具体的で、実行に移せる
- 批判的ではなく、学びにつながる
- 個人ではなく、コードに焦点を当てている
- バランスが取れている(良い仕事も褒める)
- 優先順位が明確(重大な指摘と、あると望ましい提案を区別する)
❌ Bad: "This is wrong."
✅ Good: "This could cause a race condition when multiple users
access simultaneously. Consider using a mutex here."
❌ Bad: "Why didn't you use X pattern?"
✅ Good: "Have you considered the Repository pattern? It would
make this easier to test. Here's an example: [link]"
❌ Bad: "Rename this variable."
✅ Good: "[nit] Consider `userCount` instead of `uc` for
clarity. Not blocking if you prefer to keep it."
3. レビューの範囲
レビューする項目:
- ロジックの正しさとエッジケース
- セキュリティ上の脆弱性
- パフォーマンスへの影響
- テストの網羅性と品質
- エラー処理
- ドキュメントとコメント
- API の設計と命名
- アーキテクチャとの適合性
手動でレビューしない項目:
- コードの書式(Prettier、Black などを使用します)
- インポートの整理
- リント違反
- 単純な誤字
レビュープロセス
フェーズ 1:背景情報の収集(2~3 分)
コードを詳しく見る前に、次の点を把握します。
- PR の説明と、リンクされている Issue を読む
- PR の規模を確認する(400 行超? 分割を依頼します)
- CI/CD の状態を確認する(テストは成功しているか?)
- ビジネス要件を理解する
- 関連するアーキテクチャ上の決定事項を確認する
フェーズ 2:概要レビュー(5~10 分)
- アーキテクチャと設計 - 解決策は問題に適していますか?
- 大幅な変更の場合は、アーキテクチャレビューガイドを参照します
- 確認事項:SOLID 原則、結合度と凝集度、アンチパターン
- パフォーマンス評価 - パフォーマンス上の懸念はありますか?
- パフォーマンスが重要なコードの場合は、パフォーマンスレビューガイドを参照します
- 確認事項:アルゴリズムの計算量、N+1 クエリ、メモリ使用量
- ファイル構成 - 新しいファイルは適切な場所にありますか?
- テスト戦略 - エッジケースを網羅するテストがありますか?
フェーズ 3:行単位のレビュー(10~20 分)
各ファイルについて、次の点を確認します。
- ロジックと正確性 - エッジケース、オフバイワン、null チェック、競合状態
- セキュリティ - 入力検証、インジェクションのリスク、XSS、機密データ
- パフォーマンス - N+1 クエリ、不要なループ、メモリリーク
- 保守性 - 分かりやすい名前、単一責任、コメント
- 再利用 - 新しいコードを受け入れる前に、既存のユーティリティやヘルパーで置き換えられないか検索します。隣接するファイルや共有モジュールに類似のパターンがないか確認します。パラメーターの乱立、漏れやすい抽象化、入れ子の条件分岐、文字列に依存した型指定、TOCTOU、何もしない更新などのアンチパターンについては、ユニバーサル品質ガイドを参照してください。
フェーズ 4:まとめと判断(2~3 分)
- 主な懸念事項をまとめる
- 良いと思った点を挙げる
- 判断を明確に示す:
- ✅ 承認
- 💬 コメント(軽微な提案)
- 🔄 変更をリクエスト(対応必須)
- 複雑な場合は、ペアでの作業を申し出る
レビュー手法
手法 1:チェックリスト方式
一貫性のあるレビューにはチェックリストを使用します。包括的なセキュリティチェックリストについては、セキュリティレビューガイドを参照してください。
手法 2:質問形式
問題を断定するのではなく、質問します。
❌ "This will fail if the list is empty."
✅ "What happens if `items` is an empty array?"
❌ "You need error handling here."
✅ "How should this behave if the API call fails?"
手法 3:命令せず、提案する
協力的な表現を使います。
❌ "You must change this to use async/await"
✅ "Suggestion: async/await might make this more readable. What do you think?"
❌ "Extract this into a function"
✅ "This logic appears in 3 places. Would it make sense to extract it?"
Technique 4: 深刻度を区別する
優先度を示すラベルを使用します。
- 🔴
[blocking]- マージ前に必ず修正します - 🟡
[important]- 修正が望ましい項目です。異論がある場合は話し合います - 🟢
[nit]- あるとよい項目ですが、マージを妨げるものではありません - 💡
[suggestion]- 検討できる別の方法です - 📚
[learning]- 学習に役立つコメントです。対応は不要です - 🎉
[praise]- 良い仕事です。その調子で続けましょう!
言語別ガイド
レビュー対象のコード言語に応じて、対応する詳細ガイドを参照してください。
| 言語/フレームワーク | 参照ファイル | 主なトピック |
|---|---|---|
| React | React ガイド | Hooks、useEffect、React 19 Actions、RSC、Suspense、TanStack Query v5 |
| Vue 3 | Vue ガイド | Composition API、リアクティブシステム、Props/Emits、Watchers、Composables |
| Angular 17+ | Angular ガイド | Signals、Standalone コンポーネント、RxJS、Zoneless 変更検知、テンプレート最適化 |
| Rust | Rust ガイド | 所有権/借用、Unsafe のレビュー、非同期コード、キャンセル安全性、エラー処理 |
| TypeScript | TypeScript ガイド | 型安全性、async/await、不変性 |
| Python | Python ガイド | 可変デフォルト引数、例外処理、クラス属性 |
| Django / DRF | Django ガイド | セキュリティレビュー、N+1 クエリ、Serializer のアンチパターン、ViewSet、非同期ビュー |
| FastAPI | FastAPI ガイド | Depends、Pydantic v2 の検証、非同期処理の正確性、セッション/N+1、認証と認可の違い、テスト駆動の検証 |
| Java | Java ガイド | Java 17/21 の新機能、Spring Boot 3、仮想スレッド、Stream/Optional |
| PHP | PHP ガイド | PHP 8.x の型システム、PDO、セキュリティレビュー、Composer、PHPUnit/PHPStan |
| C# / .NET | C# ガイド | C# 12 の機能、非同期プログラミング、EF Core のパフォーマンス、ASP.NET Core、LINQ |
| Go | Go ガイド | エラー処理、goroutine/channel、context、インターフェース設計 |
| Kotlin / Android | Kotlin ガイド | コルーチン、Flow、Jetpack Compose、null 安全性、メモリーリーク、アーキテクチャパターン |
| NestJS | NestJS ガイド | 依存性注入、階層化アーキテクチャ、DTO 検証、Guard/Interceptor、循環依存 |
| Svelte / SvelteKit | Svelte ガイド | Runes、Load 関数、Form Actions、Store の移行、SSR/CSR の境界 |
| C | C ガイド | ポインター/バッファー、メモリー安全性、UB、エラー処理 |
| C++ | C++ ガイド | RAII、ライフタイム、Rule of 0/3/5、例外安全性 |
| CSS/Less/Sass | CSS ガイド | 変数の規約、!important、パフォーマンス最適化、レスポンシブ対応、互換性 |
| Qt | Qt ガイド | オブジェクトモデル、シグナル/スロット、メモリー管理、スレッド安全性、パフォーマンス |
分野横断ガイド
すべてのコードレビューに適用できる、言語に依存しないパターンです。
| トピック | 参照ファイル | 主なトピック |
|---|---|---|
| 普遍的な品質 | 普遍的な品質ガイド | 再利用性の監査、パラメーターの過剰な増加、抽象化の漏れ、入れ子になった条件分岐、文字列型に依存するコード、TOCTOU、何もしない更新、冗長な状態 |
追加リソース
- アーキテクチャレビューガイド - アーキテクチャ設計のレビューガイド(SOLID、アンチパターン、結合度)
- パフォーマンスレビューガイド - パフォーマンスレビューガイド(Web Vitals、N+1、複雑度)
- 一般的なバグのチェックリスト - 言語別の一般的なエラー一覧
- セキュリティレビューガイド - セキュリティレビューガイド
- コードレビューベストプラクティス - コードレビューのベストプラクティス
- PR レビューテンプレート - PR レビューコメントのテンプレート
- レビューチェックリスト - クイックリファレンスチェックリスト
コメント
Markdown 対応