code-review by xtone/ai_development_tools
npx skills add https://github.com/xtone/ai_development_tools --skill code-review用于系统审查PR或代码变更的通用技能。结合使用与语言无关的通用审查标准以及语言/框架特定的最佳实践。
code-review/
├── SKILL.md (此文件)
└── references/
├── typescript-best-practices.md # TypeScript特定检查
├── authorization-review-general.md # 授权审查要点(通用篇)
├── authorization-review-postgres-rls.md # 授权审查要点(PostgreSQL RLS篇)
├── github-pr-review-actions.md # GitHub PR审查操作
├── ci-optimized-workflow.md # CI环境中的成本优化工作流
├── incremental-review.md # 增量审查详情
├── skill-review.md # Claude Code技能(SKILL.md)审查标准
├── skill-overview.md # 技能概述(官方文档)
└── skill-best-practices.md # 技能最佳实践(官方文档)
CI执行时自动生成的文件。不提交到仓库。
| 文件 | 用途 | 生命周期 |
|---|---|---|
.pr-triage.json | 分流结果 | 每次生成 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
.pr-review-state.json| 审查状态 |
通过 actions/cache 在执行间持久化 |
React / Next.js 的最佳实践,使用 Vercel 提供的 vercel-react-best-practices 技能。
npx -y skills add vercel-labs/agent-skills --skill vercel-react-best-practices --agent claude-code --yes在 GitHub Actions 等 CI 环境中执行时,通过将分流阶段委托给轻量模型(Haiku),可以大幅降低成本。详情请参阅 references/ci-optimized-workflow.md。
在 CI 环境中执行了预分流的情况下,工作目录中会存在 .pr-triage.json。如果存在此文件,则应用以下优化:
summaryrequired_references 中包含的文件surface_issues 中包含的 Minor/Suggestion 问题视为已检查,集中进行 Critical/Major 分析files 的分类,优先审查重要性高的文件// .pr-triage.json 的结构
{
"pr_number": 123,
"summary": "添加认证中间件和新建用户API",
"files": {
"added": ["src/middleware/auth.ts", "src/api/users.ts"],
"modified": ["src/routes/index.ts"],
"deleted": []
},
"languages": ["typescript"],
"frameworks": ["express"],
"change_categories": {
"has_auth_changes": true,
"has_db_changes": false,
"has_rls_changes": false,
"has_api_changes": true,
"has_test_changes": false,
"has_config_changes": false,
"has_skill_changes": false
},
"required_references": [
"typescript-best-practices.md",
"authorization-review-general.md"
],
"surface_issues": [
{
"severity": "Minor",
"file": "src/api/users.ts",
"line": 15,
"issue": "使用了 `any` 类型",
"suggestion": "更改为具体类型"
}
],
"diff_summary": "新增认证中间件。实现JWT令牌验证。新建用户CRUD API。未添加测试。",
"estimated_complexity": "medium",
"focus_areas": ["安全性: JWT验证的实现", "授权: 用户API的访问控制"]
}
如果
.pr-triage.json不存在,则按常规从步骤1开始执行所有步骤(保持向后兼容性)。
在 PR 更新(synchronize 事件)时,利用上次的审查状态来减少令牌消耗。详情请参阅 references/incremental-review.md。
如果
.pr-review-state.json不存在(首次审查),则不应用增量优化,执行完整分流。如果格式无效,也会输出警告并执行完整分流。
复制以下检查清单以跟踪进度:
审查进度:
- [ ] 步骤1: 把握变更概要
- [ ] 步骤2: 通用质量检查
- [ ] 步骤3: 语言/框架特定检查
- [ ] 步骤4: approve/reject判定
- [ ] 步骤5: 输出审查结果
如果存在
.pr-triage.json:读取此文件,使用summary、files、change_categories、diff_summary。跳过以下手动确认,直接进入步骤2。
理解变更内容。
需要确认的要点:
如果存在
.pr-triage.json:surface_issues中包含的 Minor/Suggestion 问题视为已检查。在此集中检测 Critical/Major 级别(安全性、逻辑与正确性、性能的重大问题)。表层问题(命名规范、解构等)无需重新检查。
执行与语言无关的通用检查。
| 检查项目 | 重要性 |
|---|---|
| 是否存在硬编码的机密信息(API密钥、密码、令牌) | Critical |
| 是否对用户输入进行了适当的验证和清理 | Critical |
| 是否存在 SQL 注入、XSS、命令注入漏洞 | Critical |
| 认证和授权检查是否得到适当实现 | Critical |
| 敏感数据是否被无意中记录到日志 | Major |
| CORS 设置是否合适 | Major |
授权(Authorization)的详细审查:如果存在与授权相关的变更,请参考 references/authorization-review-general.md 进行详细检查。如果使用 PostgreSQL RLS,请额外参考 references/authorization-review-postgres-rls.md。
| 检查项目 | 重要性 |
|---|---|
| 是否妥善处理了边界情况(null、空数组、边界值) | Major |
| 错误处理是否恰当(异常被吞没、不恰当的 catch) | Major |
| 条件分支的逻辑是否正确(off-by-one、逻辑运算符错误) | Major |
| 异步处理是否存在竞态条件 | Major |
| 是否确保释放资源(文件、连接、锁) | Major |
| 检查项目 | 重要性 |
|---|---|
| 函数/方法的职责是否单一 | Minor |
| DRY 原则:是否存在不必要的重复代码 | Minor |
| 命名是否准确表达了意图 | Minor |
| 是否存在魔法数字或含义不明的字符串字面量 | Minor |
| 是否以适当的抽象级别进行设计(过度抽象或不足) | Minor |
| 是否存在循环引用或不恰当的依赖关系 | Major |
| 检查项目 | 重要性 |
|---|---|
| 是否存在 N+1 查询等低效的数据访问模式 | Major |
| 是否存在不必要的循环、嵌套或计算量大的处理 | Minor |
| 是否存在内存泄漏的可能性 | Major |
| 是否对大量数据进行了适当的分页或流式处理 | Minor |
| 检查项目 | 重要性 |
|---|---|
| 是否添加/更新了与变更对应的测试 | Major |
| 是否包含边界情况的测试 | Minor |
| 测试是否针对行为而非实现细节 | Minor |
| 测试名称是否清晰表达了被测行为 | Suggestion |
如果存在
.pr-triage.json:只加载required_references中列出的参考文件。不加载列表中未包含的参考文件(节省令牌)。
根据变更文件的语言/框架,参考相应的参考文件。
可参考的参考文件:
| 语言/FW | 参考来源 | 类型 |
|---|---|---|
| TypeScript | references/typescript-best-practices.md | 内部参考 |
| React / Next.js | vercel-react-best-practices 技能(Vercel 提供) | 外部技能 |
| 视角 | 参考来源 | 类型 |
| --- | --- | --- |
| 授权(通用) | references/authorization-review-general.md | 内部参考 |
| 授权(PostgreSQL RLS) | references/authorization-review-postgres-rls.md | 内部参考 |
| GitHub PR 审查 | references/github-pr-review-actions.md | 内部参考 |
| Claude Code 技能 | references/skill-review.md | 内部参考 |
参考规则:
vercel-react-best-practices 技能(如果已安装)基于所有检查结果,根据以下标准判定 approve/reject。
| 重要性 | 说明 | 扣分 |
|---|---|---|
| Critical | 合并前必须修复。安全漏洞、数据丢失风险、严重错误 | -3分/件 |
| Major | 应优先修复。逻辑问题、性能下降、测试不足 | -2分/件 |
| Minor | 建议改进。设计改进、可读性提升、轻微问题 | -1分/件 |
| Suggestion | 建议。推荐最佳实践、提示更好的方法 | -0.5分/件 |
满分为10分,根据以下标准进行判定。
| 判定 | 条件 | 操作 |
|---|---|---|
| Reject | 存在1件以上 Critical 问题 | REQUEST_CHANGES |
| Reject | 存在3件以上 Major 问题 | REQUEST_CHANGES |
| Reject | 得分低于5分 | REQUEST_CHANGES |
| Conditional Approve | 无 Critical 问题,Major 问题1-2件,得分5分以上 | APPROVE(在评论中注明改进点) |
| Approve | 无 Critical/Major 问题,得分8分以上 | APPROVE |
存在 Critical 问题? → 是 → Reject(REQUEST_CHANGES)
↓ 否
Major 问题3件以上? → 是 → Reject(REQUEST_CHANGES)
↓ 否
得分低于5分? → 是 → Reject(REQUEST_CHANGES)
↓ 否
Major 问题1-2件? → 是 → Conditional Approve
↓ 否
得分8分以上? → 是 → Approve
↓ 否
Conditional Approve
如果存在
.pr-triage.json:将分流阶段的surface_issues合并到审查结果的“检测到的问题”表格中(去重)。评分时也包含分流的指摘。
按照以下格式输出审查结果。
在 GitHub 上发布审查:仅在 GitHub Actions 等 CI 环境中执行 PR 审查时,参考 references/github-pr-review-actions.md,使用
gh命令或内联评论将审查结果发布到 GitHub 上。在本地环境执行时,仅将结果显示在标准输出。已修复问题的跟进:如果
.pr-triage.json中包含resolved_issues(增量审查时),在原内联评论下回复报告修复情况。审查完成后,将发布的评论 ID 记录到.pr-review-state.json中。
## Code Review: [判定结果]
### 变更概要
- **范围**: [用1-2句话概括变更]
- **变更文件数**: [N]个文件
- **主要语言/FW**: [检测到的语言/FW]
### 得分: X/10
### 检测到的问题
| # | 重要性 | 文件 | 问题 | 推荐应对措施 |
|---|--------|---------|------|---------------|
| 1 | [Critical/Major/Minor/Suggestion] | [文件路径:行号] | [问题说明] | [应对方法] |
### 优点
- [具体描述代码的优点]
### 判定
- **结果**: [Approve / Conditional Approve / Reject]
- **理由**: [概括判定理由]
### 后续步骤
- [需要修正时的具体操作]
Weekly Installs
900
Repository
GitHub Stars
3
First Seen
Feb 10, 2026
Security Audits
Installed on
claude-code888
opencode33
codex33
gemini-cli32
github-copilot32
amp32
PRやコード変更を体系的にレビューするための汎用スキルです。 言語非依存の共通レビュー基準と、言語/フレームワーク固有のベストプラクティスを組み合わせて使用します。
code-review/
├── SKILL.md (このファイル)
└── references/
├── typescript-best-practices.md # TypeScript固有のチェック
├── authorization-review-general.md # 認可レビュー観点(一般編)
├── authorization-review-postgres-rls.md # 認可レビュー観点(PostgreSQL RLS編)
├── github-pr-review-actions.md # GitHub PRレビューアクション
├── ci-optimized-workflow.md # CI環境でのコスト最適化ワークフロー
├── incremental-review.md # インクリメンタルレビューの詳細
├── skill-review.md # Claude Codeスキル(SKILL.md)レビュー基準
├── skill-overview.md # スキル概要(公式ドキュメント)
└── skill-best-practices.md # スキルベストプラクティス(公式ドキュメント)
CI実行時に自動生成されるファイル。リポジトリにはコミットしない。
| ファイル | 用途 | ライフサイクル |
|---|---|---|
.pr-triage.json | トリアージ結果 | 毎回生成 |
.pr-review-state.json | レビュー状態 | actions/cache で実行間永続化 |
React / Next.js のベストプラクティスは、Vercel提供の vercel-react-best-practices スキルを使用する。
npx -y skills add vercel-labs/agent-skills --skill vercel-react-best-practices --agent claude-code --yesGitHub Actions等のCI環境で実行する場合、トリアージフェーズを軽量モデル(Haiku)に委任することでコストを大幅に削減できる。 詳細は references/ci-optimized-workflow.md を参照。
CI環境で事前トリアージが実行されている場合、作業ディレクトリに .pr-triage.json が存在する。 このファイルが存在する場合、以下の最適化を適用する:
summary を使用するrequired_references に含まれるものだけを読むsurface_issues に含まれるMinor/Suggestion問題は既にチェック済みとして、Critical/Major分析に集中するfiles のカテゴリ分類を活用し、重要度の高いファイルから優先的にレビューする// .pr-triage.json の構造
{
"pr_number": 123,
"summary": "認証ミドルウェアの追加とユーザーAPI新規作成",
"files": {
"added": ["src/middleware/auth.ts", "src/api/users.ts"],
"modified": ["src/routes/index.ts"],
"deleted": []
},
"languages": ["typescript"],
"frameworks": ["express"],
"change_categories": {
"has_auth_changes": true,
"has_db_changes": false,
"has_rls_changes": false,
"has_api_changes": true,
"has_test_changes": false,
"has_config_changes": false,
"has_skill_changes": false
},
"required_references": [
"typescript-best-practices.md",
"authorization-review-general.md"
],
"surface_issues": [
{
"severity": "Minor",
"file": "src/api/users.ts",
"line": 15,
"issue": "`any`型が使用されている",
"suggestion": "具体的な型に変更する"
}
],
"diff_summary": "認証ミドルウェアを新規追加。JWTトークン検証を実装。ユーザーCRUD APIを新規作成。テストは未追加。",
"estimated_complexity": "medium",
"focus_areas": ["セキュリティ: JWT検証の実装", "認可: ユーザーAPIのアクセス制御"]
}
.pr-triage.jsonが存在しない場合は、従来通りステップ1から全ステップを実行する(後方互換性あり)。
PR更新(synchronizeイベント)時に、前回のレビュー状態を活用してトークン消費を削減する。 詳細は references/incremental-review.md を参照。
.pr-review-state.jsonが存在しない場合(初回レビュー)は、インクリメンタル最適化は適用されず、フルトリアージを実行する。不正な形式の場合も警告を出力してフルトリアージを実行する。
以下のチェックリストをコピーして進行状況を追跡します:
レビュー進捗:
- [ ] ステップ1: 変更概要の把握
- [ ] ステップ2: 共通品質チェック
- [ ] ステップ3: 言語/フレームワーク固有チェック
- [ ] ステップ4: approve/reject判定
- [ ] ステップ5: レビュー結果の出力
.pr-triage.jsonが存在する場合: このファイルを読み込み、summary、files、change_categories、diff_summaryを使用する。以下の手動確認はスキップしてステップ2へ進む。
変更内容を理解する。
確認すべきポイント:
.pr-triage.jsonが存在する場合:surface_issuesに含まれるMinor/Suggestionの問題は既にチェック済み。ここではCritical/Majorレベル(セキュリティ、ロジック・正確性、パフォーマンスの重大問題)の検出に集中する。表層的な問題(命名規則、デストラクチャリング等)は再チェック不要。
言語に依存しない汎用的なチェックを実施する。
| チェック項目 | 重要度 |
|---|---|
| ハードコードされた秘密情報(APIキー、パスワード、トークン)がないか | Critical |
| ユーザー入力の適切なバリデーション・サニタイズがあるか | Critical |
| SQLインジェクション、XSS、コマンドインジェクションの脆弱性がないか | Critical |
| 認証・認可のチェックが適切に実装されているか | Critical |
| 機密データが不用意にログ出力されていないか | Major |
| CORS設定が適切か | Major |
認可(Authorization)の詳細レビュー :認可に関わる変更がある場合は、references/authorization-review-general.md を参照して詳細なチェックを行う。PostgreSQL RLSを使用している場合は、追加で references/authorization-review-postgres-rls.md も参照する。
| チェック項目 | 重要度 |
|---|---|
| エッジケースが適切に処理されているか(null、空配列、境界値) | Major |
| エラーハンドリングが適切か(例外の握りつぶし、不適切なcatch) | Major |
| 条件分岐のロジックが正しいか(off-by-one、論理演算子の誤り) | Major |
| 非同期処理の競合状態(race condition)がないか | Major |
| リソースの確実な解放(ファイル、接続、ロック) | Major |
| チェック項目 | 重要度 |
|---|---|
| 関数/メソッドの責務が単一か | Minor |
| DRY原則: 不要な重複コードがないか | Minor |
| 命名が意図を正確に表しているか | Minor |
| マジックナンバーや意味不明な文字列リテラルがないか | Minor |
| 適切な抽象度で設計されているか(過剰な抽象化・不足) | Minor |
| 循環参照・不適切な依存関係がないか | Major |
| チェック項目 | 重要度 |
|---|---|
| N+1クエリなど非効率なデータアクセスパターンがないか | Major |
| 不要なループやネスト、計算量の大きい処理がないか | Minor |
| メモリリークの可能性がないか | Major |
| 大量データの適切なページネーション・ストリーミング処理 | Minor |
| チェック項目 | 重要度 |
|---|---|
| 変更に対応するテストが追加/更新されているか | Major |
| エッジケースのテストが含まれているか | Minor |
| テストが実装詳細でなく振る舞いをテストしているか | Minor |
| テスト名がテスト対象の振る舞いを明確に表しているか | Suggestion |
.pr-triage.jsonが存在する場合:required_referencesに記載されたリファレンスのみを読み込む。リストにないリファレンスは読み込まない(トークン節約)。
変更ファイルの言語/フレームワークに応じて、対応するリファレンスファイルを参照する。
参照可能なリファレンス:
| 言語/FW | 参照先 | 種別 |
|---|---|---|
| TypeScript | references/typescript-best-practices.md | 内部リファレンス |
| React / Next.js | vercel-react-best-practices スキル(Vercel提供) | 外部スキル |
| 観点 | 参照先 | 種別 |
| --- | --- | --- |
| 認可(一般) | references/authorization-review-general.md | 内部リファレンス |
| 認可(PostgreSQL RLS) | references/authorization-review-postgres-rls.md | 内部リファレンス |
参照ルール:
vercel-react-best-practices スキルを併用する(インストール済みの場合)すべてのチェック結果に基づき、以下の基準でapprove/rejectを判定する。
| 重要度 | 説明 | 減点 |
|---|---|---|
| Critical | マージ前に必ず修正が必要。セキュリティ脆弱性、データ損失リスク、重大なバグ | -3点/件 |
| Major | 優先的に修正すべき。ロジックの問題、パフォーマンス劣化、テスト不足 | -2点/件 |
| Minor | 改善が望ましい。設計改善、可読性向上、軽微な問題 | -1点/件 |
| Suggestion | 提案。ベストプラクティスの推奨、より良いアプローチの提示 | -0.5点/件 |
満点は10点とし、以下の基準で判定する。
| 判定 | 条件 | アクション |
|---|---|---|
| Reject | Critical問題が1件以上ある | REQUEST_CHANGES |
| Reject | Major問題が3件以上ある | REQUEST_CHANGES |
| Reject | スコアが5点未満 | REQUEST_CHANGES |
| Conditional Approve | Critical問題なし、Major 1-2件、スコア5点以上 | APPROVE(改善点をコメント) |
| Approve | Critical/Major問題なし、スコア8点以上 | APPROVE |
Critical問題あり? → Yes → Reject(REQUEST_CHANGES)
↓ No
Major問題が3件以上? → Yes → Reject(REQUEST_CHANGES)
↓ No
スコア5点未満? → Yes → Reject(REQUEST_CHANGES)
↓ No
Major問題が1-2件? → Yes → Conditional Approve
↓ No
スコア8点以上? → Yes → Approve
↓ No
Conditional Approve
.pr-triage.jsonが存在する場合: トリアージフェーズのsurface_issuesをレビュー結果の「検出された問題」テーブルにマージする(重複を除外)。スコアリングにはトリアージの指摘も含める。
以下のフォーマットでレビュー結果を出力する。
GitHub上でのレビュー投稿 :GitHub Actions等のCI環境でPRレビューを実行している場合のみ、references/github-pr-review-actions.md を参照して、
ghコマンドやインラインコメントを使用してレビュー結果をGitHub上に投稿する。ローカル環境での実行時は、結果を標準出力に表示するのみとする。修正済み問題のフォローアップ :
.pr-triage.jsonにresolved_issuesが含まれる場合(インクリメンタルレビュー時)、元のインラインコメントにリプライして修正を報告する。レビュー完了後、投稿したコメントIDを.pr-review-state.jsonに記録する。
## Code Review: [判定結果]
### 変更概要
- **スコープ**: [変更の概要を1-2文で]
- **変更ファイル数**: [N]ファイル
- **主な言語/FW**: [検出された言語/FW]
### スコア: X/10
### 検出された問題
| # | 重要度 | ファイル | 問題 | 推奨される対応 |
|---|--------|---------|------|---------------|
| 1 | [Critical/Major/Minor/Suggestion] | [ファイルパス:行番号] | [問題の説明] | [対応方法] |
### 良い点
- [コードの良い点を具体的に記載]
### 判定
- **結果**: [Approve / Conditional Approve / Reject]
- **理由**: [判定理由の要約]
### 次のステップ
- [修正が必要な場合の具体的なアクション]
Weekly Installs
900
Repository
GitHub Stars
3
First Seen
Feb 10, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
claude-code888
opencode33
codex33
gemini-cli32
github-copilot32
amp32
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
102,200 周安装
Gemini Interactions API 指南:统一接口、智能体交互与服务器端状态管理
833 周安装
Apollo MCP 服务器:让AI代理通过GraphQL API交互的完整指南
834 周安装
智能体记忆系统构建指南:分块策略、向量存储与检索优化
835 周安装
Scrapling官方网络爬虫框架 - 自适应解析、绕过Cloudflare、Python爬虫库
836 周安装
抽奖赢家选取器 - 随机选择工具,支持CSV、Excel、Google Sheets,公平透明
838 周安装
Medusa 前端开发指南:使用 SDK、React Query 构建电商商店
839 周安装
| GitHub PRレビュー | references/github-pr-review-actions.md | 内部リファレンス |
| Claude Codeスキル | references/skill-review.md | 内部リファレンス |