AgentSkillsCN

pr-code-review

对 GitHub 的 Pull Request(PR)进行代码评审,并将评审结果以 Markdown 文件的形式输出。在 PR 评审请求、代码评审、PR 评审、差异对比、代码质量检查等场景中使用。通过 gh 命令获取 PR 信息,从安全、性能、可读性与最佳实践的角度进行评审,并将结果保存至本地文件。

SKILL.md
--- frontmatter
name: pr-code-review
description: GitHubのPull Request(PR)に対するコードレビューを実施し、レビュー結果をマークダウンファイルとして出力する。PRのレビュー依頼、コードレビュー、PRレビュー、差分確認、コード品質チェックなどのリクエスト時に使用。ghコマンドでPR情報を取得し、セキュリティ、パフォーマンス、可読性、ベストプラクティスの観点からレビューを行い、結果をローカルファイルに保存する。

PR Code Review

GitHubのPull Requestに対して包括的なコードレビューを実施し、レビュー結果をマークダウンファイルとして出力するスキル。

ワークフロー概要

  1. PR情報の取得: ghコマンドでPRの詳細とdiffを取得
  2. コード分析: 複数の観点からコードを分析
  3. レビュー作成: 構造化されたレビューレポートを生成
  4. ファイル出力: レビュー結果をマークダウンファイルとして保存

Step 1: PR情報の取得

PR URLまたはPR番号から情報を取得する。

bash
# PR詳細の取得
gh pr view <PR番号> --repo <owner/repo>

# PRのdiffを取得
gh pr diff <PR番号> --repo <owner/repo>

# PRのファイル一覧を取得
gh pr view <PR番号> --repo <owner/repo> --json files

ユーザーがPR URLを指定した場合: URLからowner/repoPR番号を抽出する(例: https://github.com/owner/repo/pull/123)。

ユーザーがPR番号のみを指定した場合: 現在のディレクトリのリモートリポジトリを使用するか、リポジトリ名を確認する。

Step 2: コードレビュー観点

以下の観点からコードをレビューする。詳細はreferences/review-guidelines.mdを参照。

2.1 セキュリティ

  • 入力値バリデーション
  • インジェクション脆弱性(SQL、XSS、コマンド)
  • 認証・認可の実装
  • 機密情報の取り扱い

2.2 パフォーマンス

  • N+1クエリ問題
  • 不要なループや計算
  • メモリ効率
  • 非同期処理の適切な使用

2.3 可読性・保守性

  • 命名規則の一貫性
  • 関数・クラスの責務分離
  • コメントの適切さ
  • コードの重複

2.4 エラーハンドリング

  • 例外処理の適切さ
  • エラーメッセージの明確さ
  • リソースのクリーンアップ

2.5 テスト

  • テストカバレッジ
  • エッジケースの考慮
  • テストの可読性

2.6 言語・フレームワーク固有のベストプラクティス

  • 言語のイディオム
  • フレームワークの規約
  • 型安全性

Step 3: レビューレポート作成

以下のテンプレートに従ってレビューレポートを作成する。

markdown
# PR Code Review Report

## PR情報
- **PR**: #[番号] [タイトル]
- **リポジトリ**: [owner/repo]
- **作成者**: [author]
- **レビュー日時**: [YYYY-MM-DD HH:MM]

## サマリー

[PRの概要と全体的な評価を1-2段落で記述]

### 評価
| カテゴリ | 評価 |
|---------|------|
| セキュリティ | ✅ 良好 / ⚠️ 要確認 / ❌ 要修正 |
| パフォーマンス | ✅ 良好 / ⚠️ 要確認 / ❌ 要修正 |
| 可読性・保守性 | ✅ 良好 / ⚠️ 要確認 / ❌ 要修正 |
| エラーハンドリング | ✅ 良好 / ⚠️ 要確認 / ❌ 要修正 |
| テスト | ✅ 良好 / ⚠️ 要確認 / ❌ 要修正 |

## 指摘事項

### 🔴 要修正(Critical)

[マージ前に修正が必要な問題]

#### [問題タイトル]
- **ファイル**: `path/to/file.ext:行番号`
- **問題**: [具体的な問題の説明]
- **提案**: [修正案]

```[言語]
// 修正前
[問題のあるコード]

// 修正後(提案)
[修正案のコード]

🟡 要確認(Warning)

[確認・検討が必要な問題]

🟢 提案(Suggestion)

[あれば良い改善点]

良い点

[PRの良い点を箇条書きで記述]

質問・確認事項

[実装意図の確認が必要な点を箇条書きで記述]

code

## Step 4: ファイル出力

レビュー結果を以下のパスに保存する。

./pr-review-[PR番号]-[YYYYMMDD-HHMM].md

code

**例**: `./pr-review-123-20240115-1430.md`

## 使用例

**ユーザーリクエスト例:**
- 「このPRをレビューして: https://github.com/owner/repo/pull/123」
- 「PR #45 のコードレビューをお願い」
- 「owner/repo の PR 78 をレビュー」

**実行手順:**
1. ghコマンドでPR情報とdiffを取得
2. 変更されたファイルを分析
3. 各観点からレビューを実施
4. レビューレポートをマークダウンファイルとして出力
5. レビュー結果のサマリーをユーザーに報告

## 注意事項

- レビュー結果はGitHubにコメントせず、ローカルファイルに保存する
- 大きなPRの場合は、重要な変更に焦点を当てる
- コードの文脈を理解するため、必要に応じて関連ファイルも読む
- 指摘は具体的かつ建設的に行う