Pr Triage

xtone/ai_development_tools/development_workflows/skills/pr-triage

作者 xtone630d61d2acfc无许可证3 个星标收录于 2026年10月8日更新于 2026年10月8日仓库2天前更新

PRの変更内容をトリアージし、変更カテゴリ分類・表層チェック・必要リファレンス判定を行います。結果を`.pr-triage.json`に出力し、後続のコードレビューフェーズで活用します。CI環境でのコスト最適化に使用してください。

AI 生成的概览

对拉取请求的变更进行分诊,并输出结构化的 .pr-triage.json 供后续代码审查阶段使用。

功能
该技能分析拉取请求的变更文件与差异,对变更进行分类(新增/修改/删除),检测语言与框架,并标记变更类别,如认证、数据库、RLS、API、测试、配置和技能变更。它还会判定需要哪些参考文件、检测 Minor/Suggestion 级别的表层问题,并生成简短的差异摘要、复杂度评估和关注点。结果写入 .pr-triage.json 文件;增量模式会复用先前的 .pr-review-state.json,仅重新检查自上次审查以来发生变更的文件。
适用场景
适用于在代码审查阶段之前需要在 CI 中对拉取请求进行分诊的场景,尤其适合通过轻量模型运行来降低成本。也适用于存在先前审查状态、只需重新检查新变更文件的增量审查。
运行要求
需要可访问目标仓库和拉取请求的 GitHub CLI(gh),以及用于与先前提交进行差异比较的 git。它会读写本地文件(.pr-triage.json,以及可选的 .pr-review-state.json),不附带脚本,仅为指令。

PRトリアージ

PRの変更内容を分析し、後続のコードレビューフェーズに必要な情報を構造化して出力するスキルです。 軽量モデル(Haiku)での実行を想定しており、CI環境でのコスト最適化に寄与します。

手順

  1. gh pr view <PR番号> --json title,body,headRefName,baseRefName,changedFiles でPR情報を取得
  2. gh pr diff <PR番号> --name-only で変更ファイル一覧を取得
  3. 差分の取得(changedFilesが15以上の場合、手順3はスキップしてファイル名とPR説明のみで分析する):
    • changedFilesが15未満の場合のみ gh pr diff <PR番号> でコード差分を取得
    • 表層チェックが必要なファイル(.ts, .js, .tsx, .jsx)が多い場合は個別に gh pr diff <PR番号> -- <file> で取得
  4. .pr-review-state.json が存在するか確認する(前回レビュー状態)
  5. 以下の分析を行う:
    • 変更ファイルのカテゴリ分類(added/modified/deleted)
    • 使用言語・フレームワークの検出
    • 変更カテゴリの判定(認可変更、DB変更、RLS変更、API変更、テスト変更、設定変更、スキル変更)
    • 必要なリファレンスファイルの判定
    • Minor/Suggestionレベルの表層的問題の検出(インクリメンタルモード時は変更ファイルのみ)
    • 差分の要約(200文字以内)
    • レビュー時に注目すべきポイント
  6. 分析結果を .pr-triage.json ファイルに出力する

インクリメンタルモード(.pr-review-state.json が存在する場合)

前回のレビュー状態を活用してチェック範囲を最適化する:

  1. .pr-review-state.json の last_reviewed_commit を取得する
  2. git diff <last_reviewed_commit>..HEAD --name-only で前回レビュー以降に変更されたファイルを特定する
  3. 変更のないファイルの surface_issues は前回の状態からそのまま引き継ぐ("carried_over": true を付与)。再チェックしない。
  4. 変更があったファイルのみ表層チェックを実行する
  5. 前回の surface_issues と review_comments のうち、該当箇所が修正されたものを resolved_issues に含める
  6. 出力の .pr-triage.json に "incremental": true、"base_commit"、"changed_since_last_review"、"unchanged_since_last_review"、"resolved_issues" フィールドを追加する

resolved_issues のフォーマット:

json
{  "comment_id": 12345678,  "file": "<ファイルパス>",  "line": 42,  "issue": "<元の問題の説明>",  "resolution": "fixed"}

.pr-review-state.json が存在しない場合は、通常のフルトリアージを実行する。 .pr-review-state.json が不正な形式(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(常に含める)

表層チェック項目(Minor/Suggestion)

差分を確認し、以下の問題を検出する(該当するもののみ):

  • any 型の使用(TypeScript)
  • var キーワードの使用(TypeScript/JavaScript)
  • 空のインターフェイス定義
  • マジックナンバーの使用
  • 命名規則違反(camelCase/PascalCase/UPPER_CASE)
  • テストの未追加(新規ファイルがあるのにテストファイルがない)

出力フォーマット

.pr-triage.json に以下のJSON構造で出力すること:

json
{  "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 の出力に集中してください。

来源与署名

来源:xtone/ai_development_tools位于development_workflows/skills/pr-triage提交630d61d

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架