pr-checks について
pr-checksは、既存のプルリクエストのレビュー対応と各種チェックを体系的に進めるスキルです。PR情報、CodeRabbitのコメント、フォーマット用フック、テスト、任意のレビュー用ツールを扱います。
主な機能
- 01PRの状態と説明を確認
- 02承認を得てCodeRabbitの指摘に対応
- 03pre-commitフックとテストを実行
- 04設定を検証して修正を準備
- 05PRチェック結果の要約を作成
活用シーン
- 01オープン中のPRの指摘に対応
- 02最終レビュー依頼前に変更を確認
- 03レビュー修正後にテストとフォーマットを実行
- 04PRの検証結果を要約
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ massgen/ massgen --skill pr-checksインストール後、Claude Code で/pr-checksを入力して読み込まれたか確認します。
詳細
PR チェックのスキル
このスキルは、既存のプルリクエストに対して包括的な PR チェックを実行し、コード品質を確保してレビューのフィードバックに対応します。
使用するタイミング
次の場合にこのスキルを実行します:
- PR が作成され、CodeRabbit がレビューコメントを投稿したとき
- 既存のレビューのフィードバックに体系的に対応したいとき
- PR の最終レビューまたはマージを依頼する前
使用方法
/pr-checks
ワークフロー
1. 現在の状態を分析する
まず、レビュー対象を把握します。
# Check current branch and status
git branch --show-current
git status --short
# Show diff summary vs main
git diff --stat main...HEAD
# Get the PR number for this branch
gh pr view --json number,title,state
2. PR の説明を確認して修正する
コードコメントに対応する前に、PR に適切な説明があることを確認します。
# View current PR description
gh pr view --json body,title
適切な PR の説明には、次の内容を含めます:
- 概要:PR の内容を説明する 1~3 個の箇条書き
- テスト計画:変更が正しく動作することを確認する方法
- 関連する課題:Linear/GitHub の課題へのリンク(例:
Closes MAS-XXX)
説明がない、または不十分な場合:
# Update the PR description
gh pr edit --body "$(cat <<'EOF'
## Summary
<1-2 sentence overview of what this PR accomplishes>
### Changes
- <change 1: what was added/modified/removed>
- <change 2>
- <change 3>
- ...
### Technical details (if applicable)
<Brief explanation of implementation approach, architectural decisions, or non-obvious changes>
## Test plan
- [ ] <verification step 1>
- [ ] <verification step 2>
- [ ] <edge case or error scenario tested>
## Related issues
Closes MAS-XXX
## Screenshots/recordings (if applicable)
<Add screenshots for UI changes, terminal output for CLI changes>
🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"
必要に応じてタイトルを修正します(Conventional Commits 形式に従います)。
# Update PR title
gh pr edit --title "feat: descriptive title here"
3. 既存の CodeRabbit コメントを確認する
これが主なワークフローです。 CodeRabbit は PR を自動的にレビューし、コメントを投稿します。/pr-comments を使ってコメントを取得し、対応します。
/pr-comments
これにより、PR のすべてのレビューコメントが取得されます。CodeRabbit の各コメントについて、次の手順を実行します。
- コメントを読む — CodeRabbit の提案内容を理解します
- 妥当性を評価する — このコードベースにおいて有効な懸念事項でしょうか?
- 対応を決める — 次のいずれかを選びます:
- ✅ 実装する — 提案は妥当で、修正する価値があります
- ❌ スキップする — 提案は当てはまらないか、重要度が低すぎます
- ❓ 確認する — 判断する前にユーザーから追加の情報を得る必要があります
コメントを一つずつユーザーと確認します:
## CodeRabbit Comment #1 of 5
**File:** `massgen/backend/foo.py:45`
**Original code:**
```python
response = client.api_call(params)
return response.data
CodeRabbit の提案:
API 呼び出しにエラー処理を追加することを検討してください。ネットワークの問題や API エラーによりリクエストが失敗し、未処理の例外が発生する可能性があります。メインのオーケストレーションループから呼び出されるため、失敗すると実行全体がクラッシュするおそれがあり、特に重要です。 [truncated - 8 more lines]
変更案:
try:
response = client.api_call(params)
return response.data
except APIError as e:
logger.error(f"API call failed: {e}")
raise
私の評価: 妥当な懸念です。この API 呼び出しは失敗する可能性があり、エラー処理もありません。
推奨事項: ✅ 実装する
次のどれを実行しますか?
- この修正を実装する
- このコメントをスキップする
- 追加情報が必要
**After user decides, resolve the comment on GitHub:**
```bash
# If implemented or intentionally skipped, resolve the comment thread
gh api graphql -f query='
mutation {
resolveReviewThread(input: {threadId: "THREAD_ID"}) {
thread { isResolved }
}
}
'
または、実施した対応を説明する返信をコメントに投稿します。
# Reply to the comment
gh pr comment <PR_NUMBER> --body "Addressed in <commit-sha>: <brief description of fix>"
コメントを表示するときは、次の内容を含めます:
- 対象の元のコード
- 提案の全文(15 行を超える場合は「[truncated - N more lines]」を付けて省略)
- CodeRabbit が提示した場合は変更案
- 文脈がわかるように行番号
修正を実装する前に、ユーザーの承認を待ちます。これにより、次のことを確実にできます:
- どの変更を行うかをユーザーが管理できます
- 不要な変更が加わりません
- 文脈に応じた判断ができます
4. プリコミットフックを実行する
修正後、コードスタイルを確認するためにプリコミットを実行します。
uv run pre-commit run --all-files
問題が見つかった場合は修正してコミットします。
5. テストを実行する
# Run tests (skip expensive API tests)
uv run pytest massgen/tests/ -v -m "not expensive and not docker" -x --tb=short
6. 設定を検証する(変更した場合)
uv run python scripts/validate_all_configs.py
7. 修正をコミットしてプッシュする
# Stage fixes
git add -u .
# Commit with descriptive message
git commit -m "fix: address CodeRabbit review comments
- Fix error handling in foo.py
- Add missing type hints in bar.py
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>"
# Push to trigger CodeRabbit re-review
git push
8. PR レビューツールキットを実行する(任意)
CodeRabbit 以外の追加分析を行う場合:
/pr-review-toolkit:review-pr
次のタスクを実行する専門エージェントが起動します:
- プロジェクトのガイドラインに照らしたコードレビュー
- サイレント障害の検出
- 型設計の分析
- テストカバレッジの分析
9. (任意)ローカルで CodeRabbit のレビューを実行する
GitHub の PR コメントとは別に、新たにローカルレビューを実行する場合:
coderabbit --prompt-only --type committed
注: これは CodeRabbit 独自の分析をローカルで実行するもので、自動 PR レビューとは結果が異なる場合があります。ステップ 3 の GitHub PR コメントは、PR 全体のコンテキストを踏まえているため、通常はより詳細です。
10. サマリーを作成する
すべてのチェック後、サマリーを出力します。
## PR Checks Summary
### Branch: feature/my-feature
- PR #123: "feat: add new feature"
- Commits ahead of main: 3
- Files changed: 5
### PR Description
✅ Has summary, test plan, and issue links
### CodeRabbit Comments Addressed
| Comment | File | Action |
|---------|------|--------|
| Add error handling | foo.py:45 | ✅ Implemented |
| Consider caching | bar.py:12 | ❌ Skipped (not applicable) |
| Missing type hint | baz.py:78 | ✅ Implemented |
### Check Results
| Check | Status |
|-------|--------|
| Pre-commit | ✅ Passed |
| Tests | ✅ 47 passed |
| Config Validation | ✅ Valid |
### Ready for Merge?
✅ All critical issues addressed, ready for final review
参考資料
PR の説明テンプレート
## Summary
<1-2 sentence overview of what this PR accomplishes>
### Changes
- <change 1: what was added/modified/removed>
- <change 2>
- <change 3>
### Technical details (if applicable)
<Implementation approach, architectural decisions, or non-obvious changes>
## Test plan
- [ ] Step to verify functionality
- [ ] Edge cases tested
- [ ] Error scenarios handled
## Related issues
Closes MAS-XXX
## Screenshots/recordings (if applicable)
<For UI/CLI changes>
## Breaking changes (if applicable)
<What breaks and migration steps>
PR タイトルの形式
Conventional Commits の形式を使用します:
feat:- 新機能fix:- バグ修正docs:- ドキュメントのみの変更refactor:- バグ修正や機能追加を伴わないコード変更perf:- パフォーマンスの改善test:- テストの追加または更新chore:- メンテナンスタスク
コミット前フック
- black - Python フォーマッター(1 行 200 文字)
- isort - インポートの整理
- flake8 - スタイルチェッカー
- autoflake - 未使用のインポートの削除
テストマーカー
@pytest.mark.expensive- 簡易チェックではスキップします@pytest.mark.docker- Docker に依存します
CodeRabbit の設定
パスごとのレビュー指示と除外設定については、.coderabbit.yaml を参照してください。