From git
PR やローカル変更の内容を包括的に収集・分析し、対応概要・背景・実装の順で丁寧に解説する。引数なしの場合はローカル変更 → PR → 直近コミットの優先度で解説対象を決定する。Use when PR の解説、変更内容の説明、コミットの概要把握を求められた際に使用する。
How this skill is triggered — by the user, by Claude, or both
Slash command
/git:pr-explainThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
PR の変更内容を包括的に収集・分析し、対応概要・背景説明・実装説明の順で丁寧に解説する。
PR の変更内容を包括的に収集・分析し、対応概要・背景説明・実装説明の順で丁寧に解説する。
japanese-text-style スキルに従う - スペース、句読点、括弧のルールを適用必須: 作業開始前に TaskList で残存タスクを確認し、存在する場合は全て TaskUpdate({ status: "deleted" }) で削除する。その後、TaskCreate ツールで以下のステップをタスクとして登録する:
TaskCreate({ subject: "解説対象の特定", description: "引数、ローカル変更、PR、直近コミットの優先度で対象を特定", activeForm: "解説対象を特定中" })
TaskCreate({ subject: "PR 情報の収集", description: "メタデータ、diff、レビューコメント、PR コメントを収集", activeForm: "PR 情報を収集中" })
TaskCreate({ subject: "コードベースの確認", description: "変更対象のコードを読み、文脈を把握", activeForm: "コードベースを確認中" })
TaskCreate({ subject: "解説の作成・出力", description: "収集した情報をもとに解説を作成", activeForm: "解説を作成中" })
各ステップの開始時に TaskUpdate で in_progress に、完了時に completed に更新する。
引数が渡された場合、PR として特定する。URL 形式と番号形式の両方に対応する:
# URL 形式: https://github.com/owner/repo/pull/123
# owner, repo, number を URL から抽出
# 番号形式: 123 または #123
# 現在のリポジトリの PR として扱う
gh pr view <number> --json number,title,url,baseRefName,headRefName --jq '{number, title, url, baseRefName, headRefName}'
# owner/repo を取得 (番号形式の場合、GraphQL クエリで使用)
gh repo view --json owner,name --jq '"\(.owner.login)/\(.name)"'
URL から owner/repo を抽出できない場合は、現在のリポジトリの owner/repo を使用する。
引数が渡されていない場合、以下の優先度で解説対象を決定する:
staged/unstaged の変更がある場合 → ローカル変更を解説対象とする
git diff --stat
git diff --cached --stat
いずれかに変更があれば、git diff と git diff --cached の内容を解説する。この場合、Step 2 の PR 情報収集はスキップし、diff の内容とコードベースの確認のみで解説を作成する。
現在のブランチに PR が紐づいている場合 → その PR を解説対象とする
gh pr view --json number,title,url,baseRefName,headRefName --jq '{number, title, url, baseRefName, headRefName}'
上記いずれでもない場合 → 直近のコミットを解説対象とする
git show HEAD
この場合も Step 2 の PR 情報収集はスキップし、コミットの diff 内容とコードベースの確認で解説を作成する。
以下の情報を 並列で 収集する:
PR メタデータと description:
gh pr view <number> --json title,body,author,baseRefName,headRefName,labels,additions,deletions,changedFiles,createdAt
コミット履歴:
gh pr view <number> --json commits --jq '.commits[] | "\(.oid[0:7]) \(.messageHeadline)\n\(.messageBody)"'
コード差分:
# 変更ファイル一覧
gh pr diff <number> --name-only
# 全差分
gh pr diff <number>
レビューコメント (インライン):
# レビュースレッドのコメントを取得 (GraphQL で完全な議論を取得)
# <owner>, <repo>, <number> は実際の値に置き換える
gh api graphql -F query='
query {
repository(owner: "<owner>", name: "<repo>") {
pullRequest(number: <number>) {
reviews(first: 50) {
nodes {
body
state
author { login }
}
}
reviewThreads(first: 100) {
nodes {
isResolved
comments(first: 20) {
nodes {
body
path
line
author { login }
createdAt
}
}
}
}
}
}
}'
PR コメント (一般):
gh pr view <number> --json comments --jq '.comments[] | "\(.author.login): \(.body)"'
diff だけでは文脈が不十分な場合、変更対象ファイルの全体像を確認する:
確認の判断基準:
| 状況 | 対応 |
|---|---|
| 新規ファイル追加 | 周辺の類似ファイルを確認 |
| 既存ファイル変更 | 変更箇所の前後を Read で確認 |
| 型定義の変更 | 使用箇所を Grep で確認 |
| 設定変更 | 関連する設定ファイルを確認 |
収集した情報を以下の構造で解説する:
## 対応概要
[PR の変更内容を 2-3 文で簡潔に説明する。何が変わったのかを端的に伝える。]
## 背景説明
[なぜこの変更が必要だったのかを説明する。以下の情報源から背景を構成する:]
- PR の description に記載された動機や課題
- 関連する Issue の内容
- レビューでの議論から明らかになった設計判断の理由
- コミットメッセージに含まれる意図の説明
## 実装説明
[変更内容を処理の流れが理解しやすい順序で丁寧に解説する:]
- コードの変更順 (diff 順) ではなく、論理的な理解の順序で説明する
- 新しい概念やデータ構造を先に説明してから、それを使う処理を説明する
- ファイルパスと行番号を含めて具体的に参照する
- レビューで議論になった設計判断は、該当箇所の説明に自然に織り込む
解説の品質基準:
大規模な差分 (目安: 変更ファイル 30 以上) の場合:
コンテキストウィンドウの制約上、全ファイルの diff を一度に処理できないため、以下の戦略を取る:
実装説明の順序決定方法:
gh api graphql でメインワークフローと同じ GraphQL クエリを実行する:
# ステップ 2 の GraphQL クエリを gh api graphql で実行
# <owner>, <repo>, <number> は実際の値に置き換える
gh api graphql -F query='...'
# PR メタデータは REST API で取得
gh api repos/<owner>/<repo>/pulls/<number>
URL から owner/repo を抽出し、gh api で情報を取得する:
# リポジトリをクローンせずに PR 情報を取得
gh api repos/<owner>/<repo>/pulls/<number>
gh api repos/<owner>/<repo>/pulls/<number>/comments
gh api repos/<owner>/<repo>/pulls/<number>/reviews
指定された PR が見つかりません。URL または PR 番号を確認してください。
例: /git:pr-explain https://github.com/owner/repo/pull/123
npx claudepluginhub ronnnnn/cc --plugin gitCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.