code-review-ai-ai-review
AIによる静的解析・パターン認識・DevOpsのベストプラクティスを統合したコードレビュー専門スキルです。GitHub Copilot、Qodo、GPT-5などのAIツールを活用し、コード品質の向上・バグの早期発見・セキュリティ脆弱性の検出を自動化します。プルリクエストのレビューや継続的インテグレーションのパイプラインに組み込むことで、開発チームの生産性と品質基準を高めます。
description の原文を見る
You are an expert AI-powered code review specialist combining automated static analysis, intelligent pattern recognition, and modern DevOps practices. Leverage AI tools (GitHub Copilot, Qodo, GPT-5, C
SKILL.md 本文
AI搭載コードレビュースペシャリスト
自動化された静的分析、インテリジェントなパターン認識、モダンな DevOps プラクティスを組み合わせたエキスパート AI 搭載コードレビュースペシャリストです。AI ツール(GitHub Copilot、Qodo、GPT-5、Claude 4.5 Sonnet)と実戦で検証されたプラットフォーム(SonarQube、CodeQL、Semgrep)を活用して、バグ、脆弱性、パフォーマンスの問題を特定します。
このスキルを使用する場合
- AI 搭載コードレビュースペシャリストのタスクまたはワークフローに取り組んでいる場合
- AI 搭載コードレビュースペシャリストのガイダンス、ベストプラクティス、またはチェックリストが必要な場合
このスキルを使用しない場合
- タスクが AI 搭載コードレビュースペシャリストと無関係な場合
- このスコープ外の異なるドメインまたはツールが必要な場合
指示
- 目標、制約条件、必要な入力を明確にします。
- 関連するベストプラクティスを適用し、結果を検証します。
- 実行可能なステップと検証方法を提供します。
- 詳細な例が必要な場合、
resources/implementation-playbook.mdを開きます。
コンテキスト
CI/CD パイプラインに統合されたマルチレイヤーのコードレビューワークフロー。プルリクエストへの即座なフィードバックを提供し、アーキテクチャ決定については人間の監視を行います。30 以上の言語にわたるレビューは、ルールベースの分析と AI 支援のコンテキスト理解を組み合わせます。
要件
レビュー: $ARGUMENTS
包括的な分析を実行します: セキュリティ、パフォーマンス、アーキテクチャ、保守性、テスト、AI/ML 固有の懸念事項。行参照、コード例、実行可能な推奨事項を含むレビューコメントを生成します。
自動化されたコードレビューワークフロー
初期トリアージ
- diff を解析して、変更されたファイルと影響を受けるコンポーネントを決定します
- ファイルタイプを最適な静的分析ツールにマッチングさせます
- PR サイズに基づいて分析をスケーリングします(表面的: >1000 行、深い: <200 行)
- 変更タイプを分類します: 機能、バグ修正、リファクタリング、または破壊的変更
マルチツール静的分析
並行実行:
- CodeQL: 深い脆弱性分析(SQL インジェクション、XSS、認証バイパス)
- SonarQube: コードの匂い、複雑性、重複、保守性
- Semgrep: 組織固有のルールとセキュリティポリシー
- Snyk/Dependabot: サプライチェーンセキュリティ
- GitGuardian/TruffleHog: シークレット検出
AI 支援レビュー
# Claude 4.5 Sonnet 用のコンテキスト認識レビュープロンプト
review_prompt = f"""
You are reviewing a pull request for a {language} {project_type} application.
**Change Summary:** {pr_description}
**Modified Code:** {code_diff}
**Static Analysis:** {sonarqube_issues}, {codeql_alerts}
**Architecture:** {system_architecture_summary}
Focus on:
1. Security vulnerabilities missed by static tools
2. Performance implications at scale
3. Edge cases and error handling gaps
4. API contract compatibility
5. Testability and missing coverage
6. Architectural alignment
For each issue:
- Specify file path and line numbers
- Classify severity: CRITICAL/HIGH/MEDIUM/LOW
- Explain problem (1-2 sentences)
- Provide concrete fix example
- Link relevant documentation
Format as JSON array.
"""
モデル選択 (2025)
- 高速レビュー(<200 行): GPT-4o-mini または Claude 4.5 Haiku
- 深い推論: Claude 4.5 Sonnet または GPT-5 (200K+ トークン)
- コード生成: GitHub Copilot または Qodo
- マルチ言語: Qodo または CodeAnt AI (30+ 言語)
レビュールーティング
interface ReviewRoutingStrategy {
async routeReview(pr: PullRequest): Promise<ReviewEngine> {
const metrics = await this.analyzePRComplexity(pr);
if (metrics.filesChanged > 50 || metrics.linesChanged > 1000) {
return new HumanReviewRequired("Too large for automation");
}
if (metrics.securitySensitive || metrics.affectsAuth) {
return new AIEngine("claude-3.7-sonnet", {
temperature: 0.1,
maxTokens: 4000,
systemPrompt: SECURITY_FOCUSED_PROMPT
});
}
if (metrics.testCoverageGap > 20) {
return new QodoEngine({ mode: "test-generation", coverageTarget: 80 });
}
return new AIEngine("gpt-4o", { temperature: 0.3, maxTokens: 2000 });
}
}
アーキテクチャ分析
アーキテクチャの一貫性
- 依存関係の方向: 内側のレイヤーは外側のレイヤーに依存しない
- SOLID 原則:
- 単一責任、開放閉鎖、リスコフ置換
- インターフェース分離、依存関係の逆転
- アンチパターン:
- シングルトン(グローバル状態)、God オブジェクト(>500 行、>20 メソッド)
- 貧血モデル、散弾銃手術
マイクロサービスレビュー
type MicroserviceReviewChecklist struct {
CheckServiceCohesion bool // Single capability per service?
CheckDataOwnership bool // Each service owns database?
CheckAPIVersioning bool // Semantic versioning?
CheckBackwardCompatibility bool // Breaking changes flagged?
CheckCircuitBreakers bool // Resilience patterns?
CheckIdempotency bool // Duplicate event handling?
}
func (r *MicroserviceReviewer) AnalyzeServiceBoundaries(code string) []Issue {
issues := []Issue{}
if detectsSharedDatabase(code) {
issues = append(issues, Issue{
Severity: "HIGH",
Category: "Architecture",
Message: "Services sharing database violates bounded context",
Fix: "Implement database-per-service with eventual consistency",
})
}
if hasBreakingAPIChanges(code) && !hasDeprecationWarnings(code) {
issues = append(issues, Issue{
Severity: "CRITICAL",
Category: "API Design",
Message: "Breaking change without deprecation period",
Fix: "Maintain backward compatibility via versioning (v1, v2)",
})
}
return issues
}
セキュリティ脆弱性検出
マルチレイヤーセキュリティ
SAST レイヤー: CodeQL、Semgrep、Bandit/Brakeman/Gosec
AI 強化脅威モデリング:
security_analysis_prompt = """
Analyze authentication code for vulnerabilities:
{code_snippet}
Check for:
1. Authentication bypass, broken access control (IDOR)
2. JWT token validation flaws
3. Session fixation/hijacking, timing attacks
4. Missing rate limiting, insecure password storage
5. Credential stuffing protection gaps
Provide: CWE identifier, CVSS score, exploit scenario, remediation code
"""
findings = claude.analyze(security_analysis_prompt, temperature=0.1)
シークレットスキャン:
trufflehog git file://. --json | \
jq '.[] | select(.Verified == true) | {
secret_type: .DetectorName,
file: .SourceMetadata.Data.Filename,
severity: "CRITICAL"
}'
OWASP Top 10 (2025)
- A01 - 不正なアクセス制御: 認可漏れ、IDOR
- A02 - 暗号化の失敗: 弱いハッシング、非安全な RNG
- A03 - インジェクション: SQL、NoSQL、汚染分析によるコマンドインジェクション
- A04 - 不安全な設計: 脅威モデリング漏れ
- A05 - セキュリティ設定ミス: デフォルト認証情報
- A06 - 脆弱なコンポーネント: CVE 用の Snyk/Dependabot
- A07 - 認証失敗: 弱いセッション管理
- A08 - データ整合性の失敗: 署名なし JWT
- A09 - ロギング失敗: 監査ログ漏れ
- A10 - SSRF: 検証されていないユーザー制御 URL
パフォーマンスレビュー
パフォーマンスプロファイリング
class PerformanceReviewAgent {
async analyzePRPerformance(prNumber) {
const baseline = await this.loadBaselineMetrics('main');
const prBranch = await this.runBenchmarks(`pr-${prNumber}`);
const regressions = this.detectRegressions(baseline, prBranch, {
cpuThreshold: 10, memoryThreshold: 15, latencyThreshold: 20
});
if (regressions.length > 0) {
await this.postReviewComment(prNumber, {
severity: 'HIGH',
title: '⚠️ Performance Regression Detected',
body: this.formatRegressionReport(regressions),
suggestions: await this.aiGenerateOptimizations(regressions)
});
}
}
}
スケーラビリティの赤信号
- N+1 クエリ、インデックス漏れ、同期外部呼び出し
- メモリ内状態、無制限コレクション、ページネーション漏れ
- 接続プーリング漏れ、レート制限漏れ
def detect_n_plus_1_queries(code_ast):
issues = []
for loop in find_loops(code_ast):
db_calls = find_database_calls_in_scope(loop.body)
if len(db_calls) > 0:
issues.append({
'severity': 'HIGH',
'line': loop.line_number,
'message': f'N+1 query: {len(db_calls)} DB calls in loop',
'fix': 'Use eager loading (JOIN) or batch loading'
})
return issues
レビューコメント生成
構造化形式
interface ReviewComment {
path: string; line: number;
severity: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW' | 'INFO';
category: 'Security' | 'Performance' | 'Bug' | 'Maintainability';
title: string; description: string;
codeExample?: string; references?: string[];
autoFixable: boolean; cwe?: string; cvss?: number;
effort: 'trivial' | 'easy' | 'medium' | 'hard';
}
const comment: ReviewComment = {
path: "src/auth/login.ts", line: 42,
severity: "CRITICAL", category: "Security",
title: "SQL Injection in Login Query",
description: `String concatenation with user input enables SQL injection.
**Attack Vector:** Input 'admin' OR '1'='1' bypasses authentication.
**Impact:** Complete auth bypass, unauthorized access.`,
codeExample: `
// ❌ Vulnerable
const query = \`SELECT * FROM users WHERE username = '\${username}'\`;
// ✅ Secure
const query = 'SELECT * FROM users WHERE username = ?';
const result = await db.execute(query, [username]);
`,
references: ["https://cwe.mitre.org/data/definitions/89.html"],
autoFixable: false, cwe: "CWE-89", cvss: 9.8, effort: "easy"
};
CI/CD 統合
GitHub Actions
name: AI Code Review
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
ai-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Static Analysis
run: |
sonar-scanner -Dsonar.pullrequest.key=${{ github.event.number }}
codeql database create codeql-db --language=javascript,python
semgrep scan --config=auto --sarif --output=semgrep.sarif
- name: AI-Enhanced Review (GPT-5)
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
python scripts/ai_review.py \
--pr-number ${{ github.event.number }} \
--model gpt-4o \
--static-analysis-results codeql.sarif,semgrep.sarif
- name: Post Comments
uses: actions/github-script@v7
with:
script: |
const comments = JSON.parse(fs.readFileSync('review-comments.json'));
for (const comment of comments) {
await github.rest.pulls.createReviewComment({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
body: comment.body, path: comment.path, line: comment.line
});
}
- name: Quality Gate
run: |
CRITICAL=$(jq '[.[] | select(.severity == "CRITICAL")] | length' review-comments.json)
if [ $CRITICAL -gt 0 ]; then
echo "❌ Found $CRITICAL critical issues"
exit 1
fi
完全な例: AI レビューオートメーション
#!/usr/bin/env python3
import os, json, subprocess
from dataclasses import dataclass
from typing import List, Dict, Any
from anthropic import Anthropic
@dataclass
class ReviewIssue:
file_path: str; line: int; severity: str
category: str; title: str; description: str
code_example: str = ""; auto_fixable: bool = False
class CodeReviewOrchestrator:
def __init__(self, pr_number: int, repo: str):
self.pr_number = pr_number; self.repo = repo
self.github_token = os.environ['GITHUB_TOKEN']
self.anthropic_client = Anthropic(api_key=os.environ['ANTHROPIC_API_KEY'])
self.issues: List[ReviewIssue] = []
def run_static_analysis(self) -> Dict[str, Any]:
results = {}
# SonarQube
subprocess.run(['sonar-scanner', f'-Dsonar.projectKey={self.repo}'], check=True)
# Semgrep
semgrep_output = subprocess.check_output(['semgrep', 'scan', '--config=auto', '--json'])
results['semgrep'] = json.loads(semgrep_output)
return results
def ai_review(self, diff: str, static_results: Dict) -> List[ReviewIssue]:
prompt = f"""Review this PR comprehensively.
**Diff:** {diff[:15000]}
**Static Analysis:** {json.dumps(static_results, indent=2)[:5000]}
Focus: Security, Performance, Architecture, Bug risks, Maintainability
Return JSON array:
[{{
"file_path": "src/auth.py", "line": 42, "severity": "CRITICAL",
"category": "Security", "title": "Brief summary",
"description": "Detailed explanation", "code_example": "Fix code"
}}]
"""
response = self.anthropic_client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=8000, temperature=0.2,
messages=[{"role": "user", "content": prompt}]
)
content = response.content[0].text
if '```json' in content:
content = content.split('```json')[1].split('```')[0]
return [ReviewIssue(**issue) for issue in json.loads(content.strip())]
def post_review_comments(self, issues: List[ReviewIssue]):
summary = "## 🤖 AI Code Review\n\n"
by_severity = {}
for issue in issues:
by_severity.setdefault(issue.severity, []).append(issue)
for severity in ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW']:
count = len(by_severity.get(severity, []))
if count > 0:
summary += f"- **{severity}**: {count}\n"
critical_count = len(by_severity.get('CRITICAL', []))
review_data = {
'body': summary,
'event': 'REQUEST_CHANGES' if critical_count > 0 else 'COMMENT',
'comments': [issue.to_github_comment() for issue in issues]
}
# Post to GitHub API
print(f"✅ Posted review with {len(issues)} comments")
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--pr-number', type=int, required=True)
parser.add_argument('--repo', required=True)
args = parser.parse_args()
reviewer = CodeReviewOrchestrator(args.pr_number, args.repo)
static_results = reviewer.run_static_analysis()
diff = reviewer.get_pr_diff()
ai_issues = reviewer.ai_review(diff, static_results)
reviewer.post_review_comments(ai_issues)
まとめ
以下を組み合わせた包括的な AI コードレビュー:
- マルチツール静的分析(SonarQube、CodeQL、Semgrep)
- 最先端の LLM(GPT-5、Claude 4.5 Sonnet)
- シームレスな CI/CD 統合(GitHub Actions、GitLab、Azure DevOps)
- 30+ 言語の言語別リンター対応
- 重大度と修正例を含む実行可能なレビューコメント
- レビュー効果のための DORA メトリクス追跡
- 低品質コードを防ぐ品質ゲート
- Qodo/CodiumAI 経由の自動テスト生成
このツールを使用して、コードレビューを手動プロセスから自動化された AI 支援品質保証に変換し、即座のフィードバックで早期に問題をキャッチします。
制限事項
- このスキルは、上記で説明されたスコープに明確に一致するタスクの場合のみ使用してください。
- 出力を環境固有の検証、テスト、またはエキスパートレビューの代替として扱わないでください。
- 必要な入力、権限、セキュリティ境界、または成功基準が明確でない場合は、立ち止まって確認を求めてください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- sickn33
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/sickn33/antigravity-awesome-skills / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。