pr-triage
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesePRトリアージ
PR变更分诊
PRの変更内容を分析し、後続のコードレビューフェーズに必要な情報を構造化して出力するスキルです。
軽量モデル(Haiku)での実行を想定しており、CI環境でのコスト最適化に寄与します。
本技能用于分析PR的变更内容,结构化输出后续代码评审阶段所需的信息。
预计使用轻量模型(Haiku)运行,有助于优化CI环境中的成本。
手順
步骤
- でPR情報を取得
gh pr view <PR番号> --json title,body,headRefName,baseRefName,changedFiles - で変更ファイル一覧を取得
gh pr diff <PR番号> --name-only - 差分の取得(changedFilesが15以上の場合、手順3はスキップしてファイル名とPR説明のみで分析する):
- changedFilesが15未満の場合のみ でコード差分を取得
gh pr diff <PR番号> - 表層チェックが必要なファイル(.ts, .js, .tsx, .jsx)が多い場合は個別に で取得
gh pr diff <PR番号> -- <file>
- changedFilesが15未満の場合のみ
- が存在するか確認する(前回レビュー状態)
.pr-review-state.json - 以下の分析を行う:
- 変更ファイルのカテゴリ分類(added/modified/deleted)
- 使用言語・フレームワークの検出
- 変更カテゴリの判定(認可変更、DB変更、RLS変更、API変更、テスト変更、設定変更、スキル変更)
- 必要なリファレンスファイルの判定
- Minor/Suggestionレベルの表層的問題の検出(インクリメンタルモード時は変更ファイルのみ)
- 差分の要約(200文字以内)
- レビュー時に注目すべきポイント
- 分析結果を ファイルに出力する
.pr-triage.json
- 使用获取PR信息
gh pr view <PR编号> --json title,body,headRefName,baseRefName,changedFiles - 使用获取变更文件列表
gh pr diff <PR编号> --name-only - 获取差分(当changedFiles数量≥15时,跳过步骤3,仅通过文件名和PR说明进行分析):
- 仅当changedFiles数量<15时,使用获取代码差分
gh pr diff <PR编号> - 若需要表层检查的文件(.ts, .js, .tsx, .jsx)较多,则单独使用获取
gh pr diff <PR编号> -- <file>
- 仅当changedFiles数量<15时,使用
- 确认是否存在(上次评审状态)
.pr-review-state.json - 执行以下分析:
- 变更文件的类别划分(added/modified/deleted)
- 检测使用的语言与框架
- 判定变更类别(权限变更、DB变更、RLS变更、API变更、测试变更、配置变更、技能变更)
- 判定所需的参考文件
- 检测Minor/Suggestion级别的表层问题(增量模式下仅检查变更文件)
- 差分摘要(200字以内)
- 评审时的重点关注项
- 将分析结果输出至文件
.pr-triage.json
インクリメンタルモード(.pr-review-state.json が存在する場合)
增量模式(存在.pr-review-state.json
时)
.pr-review-state.json前回のレビュー状態を活用してチェック範囲を最適化する:
- の
.pr-review-state.jsonを取得するlast_reviewed_commit - で前回レビュー以降に変更されたファイルを特定する
git diff <last_reviewed_commit>..HEAD --name-only - 変更のないファイルの は前回の状態からそのまま引き継ぐ(
surface_issuesを付与)。再チェックしない。"carried_over": true - 変更があったファイルのみ表層チェックを実行する
- 前回の と
surface_issuesのうち、該当箇所が修正されたものをreview_commentsに含めるresolved_issues - 出力の に
.pr-triage.json、"incremental": true、"base_commit"、"changed_since_last_review"、"unchanged_since_last_review"フィールドを追加する"resolved_issues"
resolved_issuesjson
{
"comment_id": 12345678,
"file": "<ファイルパス>",
"line": 42,
"issue": "<元の問題の説明>",
"resolution": "fixed"
}が存在しない場合は、通常のフルトリアージを実行する。.pr-review-state.jsonが不正な形式(JSONパースエラー等)の場合は、警告を出力してフルトリアージを実行する。破損した状態ファイルに基づいてインクリメンタルモードを実行してはならない。.pr-review-state.json
利用上次的评审状态优化检查范围:
- 获取中的
.pr-review-state.jsonlast_reviewed_commit - 使用确定上次评审后变更的文件
git diff <last_reviewed_commit>..HEAD --name-only - 未变更文件的直接沿用上次状态(添加
surface_issues标记),不再重新检查"carried_over": true - 仅对已变更文件执行表层检查
- 将上次和
surface_issues中已修复的问题纳入review_commentsresolved_issues - 在输出的中添加
.pr-triage.json、"incremental": true、"base_commit"、"changed_since_last_review"、"unchanged_since_last_review"字段"resolved_issues"
resolved_issuesjson
{
"comment_id": 12345678,
"file": "<文件路径>",
"line": 42,
"issue": "<原问题描述>",
"resolution": "fixed"
}若不存在,则执行常规全量分诊。 若.pr-review-state.json格式异常(如JSON解析错误),则输出警告并执行全量分诊。禁止基于损坏的状态文件执行增量模式。.pr-review-state.json
必要なリファレンスの判定基準
必要参考文件的判定标准
以下の条件に該当する場合のみ、対応するリファレンスを に含める:
required_references- TypeScript/JavaScript ファイルの変更あり →
typescript-best-practices.md - 認証・認可に関わるコード変更あり(auth, permission, role, session, token等のキーワード) →
authorization-review-general.md - PostgreSQL RLS に関わる変更あり(RLS, row level security, policy等のキーワード) →
authorization-review-postgres-rls.md - SKILL.md ファイルの変更あり →
skill-review.md - CI環境でのGitHub投稿が必要 → (常に含める)
github-pr-review-actions.md
仅当满足以下条件时,将对应参考文件纳入:
required_references- 存在TypeScript/JavaScript文件变更 →
typescript-best-practices.md - 存在与认证/授权相关的代码变更(包含auth, permission, role, session, token等关键字) →
authorization-review-general.md - 存在与PostgreSQL RLS相关的变更(包含RLS, row level security, policy等关键字) →
authorization-review-postgres-rls.md - 存在SKILL.md文件变更 →
skill-review.md - 需要在CI环境中向GitHub提交内容 → (始终包含)
github-pr-review-actions.md
表層チェック項目(Minor/Suggestion)
表层检查项目(Minor/Suggestion)
差分を確認し、以下の問題を検出する(該当するもののみ):
- 型の使用(TypeScript)
any - キーワードの使用(TypeScript/JavaScript)
var - 空のインターフェイス定義
- マジックナンバーの使用
- 命名規則違反(camelCase/PascalCase/UPPER_CASE)
- テストの未追加(新規ファイルがあるのにテストファイルがない)
检查差分,检测以下问题(仅列出符合的项):
- 使用类型(TypeScript)
any - 使用关键字(TypeScript/JavaScript)
var - 空接口定义
- 使用魔法数字
- 命名规则违反(camelCase/PascalCase/UPPER_CASE)
- 未添加测试(新增文件但无对应测试文件)
出力フォーマット
输出格式
.pr-triage.jsonjson
{
"pr_number": 123,
"incremental": false,
"base_commit": "<前回レビュー時のコミットSHA(インクリメンタル時のみ)>",
"summary": "<変更の概要(1-2文)>",
"files": {
"added": ["<追加ファイルパス>"],
"modified": ["<変更ファイルパス>"],
"deleted": ["<削除ファイルパス>"]
},
"changed_since_last_review": ["<前回から変更があったファイル(インクリメンタル時のみ)>"],
"unchanged_since_last_review": ["<前回から変更がないファイル(インクリメンタル時のみ)>"],
"languages": ["<検出された言語>"],
"frameworks": ["<検出されたフレームワーク>"],
"change_categories": {
"has_auth_changes": false,
"has_db_changes": false,
"has_rls_changes": false,
"has_api_changes": false,
"has_test_changes": false,
"has_config_changes": true,
"has_skill_changes": true
},
"required_references": ["<必要なリファレンスファイル名>"],
"surface_issues": [
{
"severity": "Minor|Suggestion",
"file": "<ファイルパス>",
"line": 15,
"issue": "<問題の説明>",
"suggestion": "<改善案>",
"carried_over": true
}
],
"resolved_issues": [
{
"comment_id": 12345678,
"file": "<ファイルパス>",
"line": 42,
"issue": "<元の問題の説明>",
"resolution": "fixed"
}
],
"diff_summary": "<差分の要約(200文字以内)>",
"estimated_complexity": "low|medium|high",
"focus_areas": ["<レビュー時の注目ポイント>"]
}重要:
- テキスト出力は最小限にし、の出力に集中してください。
.pr-triage.json
需按照以下JSON结构输出至:
.pr-triage.jsonjson
{
"pr_number": 123,
"incremental": false,
"base_commit": "<上次评审时的提交SHA(仅增量模式)>",
"summary": "<变更概要(1-2句话)>",
"files": {
"added": ["<新增文件路径>"],
"modified": ["<变更文件路径>"],
"deleted": ["<删除文件路径>"]
},
"changed_since_last_review": ["<上次评审后变更的文件(仅增量模式)>"],
"unchanged_since_last_review": ["<上次评审后未变更的文件(仅增量模式)>"],
"languages": ["<检测到的语言>"],
"frameworks": ["<检测到的框架>"],
"change_categories": {
"has_auth_changes": false,
"has_db_changes": false,
"has_rls_changes": false,
"has_api_changes": false,
"has_test_changes": false,
"has_config_changes": true,
"has_skill_changes": true
},
"required_references": ["<所需参考文件名>"],
"surface_issues": [
{
"severity": "Minor|Suggestion",
"file": "<文件路径>",
"line": 15,
"issue": "<问题描述>",
"suggestion": "<改进方案>",
"carried_over": true
}
],
"resolved_issues": [
{
"comment_id": 12345678,
"file": "<文件路径>",
"line": 42,
"issue": "<原问题描述>",
"resolution": "fixed"
}
],
"diff_summary": "<差分摘要(200字以内)>",
"estimated_complexity": "low|medium|high",
"focus_areas": ["<评审时的重点关注项>"]
}注意:
- 尽量减少文本输出,专注于输出。
.pr-triage.json