code-reviewing

majiayu000's avatarfrom majiayu000

高品質なコードレビューを実施するスキル。セキュリティ、パフォーマンス、保守性、アーキテクチャの観点から包括的にレビューし、Must/Should/Nice to haveで優先順位付けした建設的なフィードバックを提供します。

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 5, 2026

When & Why to Use This Skill

This Claude skill automates high-quality, comprehensive code reviews across security, performance, maintainability, and architecture. It provides structured, constructive feedback prioritized by 'Must,' 'Should,' and 'Nice to have' levels, ensuring that critical vulnerabilities are addressed while fostering long-term code health and developer growth.

Use Cases

  • Large-Scale Pull Request Auditing: Efficiently review complex changes (10+ files) by deploying specialized sub-agents to analyze security, architecture, and performance in parallel.
  • Security & Vulnerability Screening: Identify critical risks such as SQL injection, XSS, and improper authentication in Python (FastAPI) and TypeScript (SvelteKit) environments.
  • Architectural Integrity Checks: Ensure code adheres to defined layer separation, dependency rules, and responsibility patterns to prevent technical debt.
  • Automated Quality Gate: Use as a pre-merge check to verify that functional requirements are met, tests are implemented, and naming conventions follow best practices.
  • Developer Mentorship: Provide junior developers with actionable feedback, including 'why' a change is needed and specific code examples for improvement.
namecode-reviewing
description|

Code Reviewing Skill

体系的で建設的なコードレビューを実施するスキル。

対応観点

観点 フォーカス 詳細ガイド
Security SQLi, XSS, 認証/認可, 機密情報 ./agents/security-reviewer.md
Architecture レイヤー分離, 依存関係, 責務分離 ./agents/architecture-reviewer.md
Test カバレッジ, テストケース設計, TDD準拠 ./agents/test-reviewer.md
Performance N+1問題, アルゴリズム効率, メモリ ./agents/performance-reviewer.md

判断フロー

レビュー対象の規模は?
│
├─ 大規模(10+ファイル、500+行)──→ ✅ サブエージェント並列レビュー
│
├─ 中規模(4-9ファイル、100-500行)─→ ✅ 直接レビュー(全観点)
│
├─ 小規模(1-3ファイル、100行以下)─→ ✅ 直接レビュー(軽量)
│
├─ 特定観点のみ ───────────────────→ ✅ 該当観点のみレビュー
│
└─ PoC・プロトタイプ ──────────────→ ❌ スキップ可

サブエージェント並列レビュー

大規模PRや包括的レビューが必要な場合、専門サブエージェントを並列起動。

┌──────────────────────────────────────────────────────────────┐
│ 1. 準備フェーズ                                              │
│    └── レビュー対象のスコープ確認                            │
├──────────────────────────────────────────────────────────────┤
│ 2. 並列レビューフェーズ(サブエージェント起動)              │
│    ├── Security Reviewer   → セキュリティ観点                │
│    ├── Architecture Reviewer → アーキテクチャ観点            │
│    ├── Test Reviewer       → テスト観点                      │
│    └── Performance Reviewer → パフォーマンス観点             │
├──────────────────────────────────────────────────────────────┤
│ 3. 統合フェーズ                                              │
│    └── 結果を統合し、優先順位付け                            │
├──────────────────────────────────────────────────────────────┤
│ 4. フィードバックフェーズ                                    │
│    └── Must / Should / Nice to have で整理して出力           │
└──────────────────────────────────────────────────────────────┘

レビューワークフロー(6ステップ)

    ┌─────────────────────────────────────────────────────────────┐
    │                                                             │
    ▼                                                             │
┌────────┐   ┌────────┐   ┌────────┐   ┌────────┐   ┌────────┐  │
│準備    │──→│第一印象│──→│詳細    │──→│コンテ  │──→│フィード│  │
│        │   │        │   │レビュー│   │キスト  │   │バック  │  │
└────────┘   └────────┘   └────────┘   └────────┘   └────────┘  │
                                                        │        │
                                                        ▼        │
                                                   ┌────────┐   │
                                                   │承認判断│───┘
                                                   └────────┘

Step 1: 準備

  • PRのタイトル・説明・関連Issue確認
  • 変更範囲の把握(ファイル数・行数)
  • CI/CD・Linter・テスト結果の確認

Step 2: 第一印象

  • ファイル構成・アーキテクチャの妥当性
  • 変更量の適切さ(1PR = 1機能が理想)
  • 明らかなセキュリティ・設計上の問題

Step 3: 詳細レビュー(優先順位順)

順位 観点 チェック項目
1 セキュリティ 入力バリデーション, SQLi/XSS対策, 認証/認可, 機密情報
2 機能性 要件充足, バグ, エッジケース, エラーハンドリング
3 アーキテクチャ レイヤー分離, 依存関係方向, 責務分離
4 テスト テスト有無, カバレッジ, 正常系/異常系/境界値
5 可読性 命名, 定数化, DRY, 関数長
6 パフォーマンス N+1問題, ループ効率, アルゴリズム

Step 4: コンテキストレビュー

  • 変更が既存コードに与える影響
  • インターフェース変更の影響範囲
  • 既存テストへの影響

Step 5: フィードバック作成

3原則:

  1. 優先順位を明確に: Must / Should / Nice to have
  2. 具体的に: 問題点 + 理由 + 修正案
  3. ポジティブに: 良い点も評価

Step 6: 承認判断

判定 条件
✅ Approve Must全クリア、セキュリティOK、テストOK
💬 Approve with Comments MustクリアだがShould課題あり
🔄 Request Changes Must未達、セキュリティ問題、テスト無し

フィードバックテンプレート

## [優先度] タイトル

### 現状
[問題のあるコード]

### 問題点
[なぜ問題なのか]

### 修正案
[推奨する修正方法]

### 理由
[修正のメリット]

例:Must(セキュリティ)

## [Must] SQLインジェクションの脆弱性

### 現状
query = f"SELECT * FROM users WHERE email = '{email}'"

### 問題点
ユーザー入力を直接SQL文に埋め込んでおり、SQLインジェクション攻撃の危険性があります。

### 修正案
user = db.query(User).filter(User.email == email).first()

### 理由
ORMを使用することでセキュリティリスクを排除し、型安全性も向上します。

例:ポジティブフィードバック

## [Good] エラーハンドリングが素晴らしい

具体的な例外を捕捉し、適切なログを出力し、
ユーザーにわかりやすいエラーメッセージを返している点が良いです。
このパターンを他の箇所でも参考にさせてください。

レビューチェックリスト

🔴 Must(必須)

  • セキュリティ上の問題がない
  • 機能要件を満たしている
  • テストが実装されている
  • アーキテクチャが守られている
  • 重大なバグがない

🟡 Should(推奨)

  • 命名が適切
  • DRY原則が守られている
  • エラーハンドリングが適切
  • パフォーマンス問題がない
  • コードスタイルが統一されている

🟢 Nice to have(改善提案)

  • より良い設計パターン
  • ドキュメント充実
  • 拡張性の考慮

Backend (Python/FastAPI) レビューポイント

レイヤー分離

# ❌ Bad: Routerにビジネスロジック
@router.post("/users")
async def create_user(data: UserCreate):
    if not data.email or "@" not in data.email:
        raise HTTPException(400, "Invalid email")
    return await db.create(data)

# ✅ Good: Service層に委譲
@router.post("/users")
async def create_user(
    data: UserCreate,
    service: UserService = Depends(get_user_service)
):
    return await service.create_user(data)

データベース

# ✅ 外部キーはINTEGER + ON DELETE CASCADE
user_id = Column(Integer, ForeignKey("users.id", ondelete="CASCADE"))

# ❌ user_uuidを外部キーに使用しない

型ヒント

# ✅ 完全な型ヒント
def get_user_by_id(self, user_id: int) -> Optional[User]:
    return self.repository.get(user_id)

# ❌ Anyの使用は避ける

Frontend (TypeScript/SvelteKit) レビューポイント

型安全性

// ✅ Good: 明確な型定義
interface User {
  id: number;
  email: string;
  name: string;
}

function getUser(id: number): Promise<User> { ... }

// ❌ Bad: anyの使用
function getUser(id: number): Promise<any> { ... }

エラーハンドリング

// ✅ Good: 適切なエラーハンドリング
async function fetchUser(id: number): Promise<User> {
  try {
    const response = await fetch(`/api/users/${id}`);
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    return await response.json();
  } catch (error) {
    console.error('Failed to fetch user:', error);
    throw error;
  }
}

よくある指摘パターン

パターン 問題 指摘例
セキュリティ SQLi, XSS, 機密情報漏洩 [Must] SQLインジェクションの危険性
アーキテクチャ レイヤー違反, 責務混在 [Must] Routerにビジネスロジックが混在
テスト不足 テスト無し, カバレッジ低 [Must] 異常系のテストが不足
パフォーマンス N+1問題, 非効率ループ [Should] N+1問題が発生しています
可読性 不適切な命名, マジックナンバー [Should] マジックナンバーを定数化

セルフレビューチェックリスト

PR作成前に自分でチェック:

基本

  • PRのタイトル・説明が明確
  • 自動テストがパス
  • Linterエラーなし

コード

  • 命名が適切
  • マジックナンバーを定数化
  • エラーハンドリングが適切

テスト

  • テストを実装
  • 正常系・異常系・境界値をカバー

セキュリティ

  • 入力バリデーションあり
  • 機密情報をハードコードしていない

アーキテクチャ

  • レイヤー分離が守られている
  • 依存関係の方向が正しい

レビュー効率化のコツ

  1. 小さなPRを推奨: 1PR = 1機能、300行以内が理想
  2. 自動化活用: Linter、型チェック、テストを事前実行
  3. 優先順位明確化: Must → Should → Nice to have の順
  4. ポジティブフィードバック: 良い点も積極的に評価

ベストプラクティス

DO ✅

  • 問題点と修正案をセットで提示
  • 理由を説明して学習機会を提供
  • 良いコードを積極的に褒める
  • Must/Should/Niceで優先順位を明確化
  • 小さなPRへの分割を提案

DON'T ❌

  • 理由なく「これは良くない」と言う
  • スタイルの好みを押し付ける
  • 全てを完璧にしようとする
  • ブロッキングコメントを曖昧にする
  • 人格攻撃をする

参照ファイル

ファイル 説明
./agents/security-reviewer.md セキュリティレビュー詳細
./agents/architecture-reviewer.md アーキテクチャレビュー詳細
./agents/test-reviewer.md テストレビュー詳細
./agents/performance-reviewer.md パフォーマンスレビュー詳細
.claude/rules/code-review-rules.md レビュールール詳細
.claude/rules/code-style.md コードスタイル規約
.claude/rules/backend/layer-rules.md Backendレイヤールール