chezmoi/dot_claude/skills/resolve-reviews/SKILL.md
PRレビューコメント対応
npx skillsauth add ibuibu/nix chezmoi/dot_claude/skills/resolve-reviewsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
現在のブランチに関連するPRの未解決レビューコメントを1つずつ確認し、対応していく。
gh pr view --json number,url
でPR番号を取得。リポジトリのowner/nameはgh repo view --json owner,nameで取得。
GraphQL APIでページネーションを使い、全スレッドを取得する。 1ページ目:
gh api graphql -f query='
{
repository(owner: "OWNER", name: "REPO") {
pullRequest(number: NUMBER) {
reviewThreads(first: 50) {
pageInfo {
hasNextPage
endCursor
}
nodes {
id
isResolved
comments(first: 1) {
nodes {
databaseId
body
path
line
}
}
}
}
}
}
}'
hasNextPageがtrueの場合、after引数にendCursorの値を渡して次ページを取得する:
gh api graphql -f query='
{
repository(owner: "OWNER", name: "REPO") {
pullRequest(number: NUMBER) {
reviewThreads(first: 50, after: "CURSOR") {
pageInfo {
hasNextPage
endCursor
}
nodes {
id
isResolved
comments(first: 1) {
nodes {
databaseId
body
path
line
}
}
}
}
}
}
}'
hasNextPageがfalseになるまで繰り返し、全ページの結果からisResolved: falseのスレッドだけを抽出する。
各未解決レビューについて、以下のスキップ条件に該当する場合は無視して次に進む:
スキップしなかった各レビューについて:
レビュー内容を日本語で要約してユーザーに提示
対応要否の考えをユーザーに提示
ユーザーに確認(AskUserQuestion toolを使う)
ユーザーの判断に応じて実行
重要: resolveするのはCopilotからのレビューのみ。人間のレビュアーからのレビューはリプライのみ行い、resolveはしない。
# リプライ
gh api graphql -f query='mutation { addPullRequestReviewThreadReply(input: { pullRequestReviewThreadId: "THREAD_ID", body: "理由" }) { comment { id } } }'
# レビューコメントに 👍 リアクションを付ける(databaseId を使う)
gh api repos/OWNER/REPO/pulls/comments/COMMENT_DATABASE_ID/reactions \
--method POST -f content='+1'
# resolve
gh api graphql -f query='mutation { resolveReviewThread(input: { threadId: "THREAD_ID" }) { thread { isResolved } } }'
cargo check --all等)# リプライ(コミットハッシュ付き)
gh api graphql -f query='mutation { addPullRequestReviewThreadReply(input: { pullRequestReviewThreadId: "THREAD_ID", body: "対応完了: HASH" }) { comment { id } } }'
# レビューコメントに 👍 リアクションを付ける(databaseId を使う)
gh api repos/OWNER/REPO/pulls/comments/COMMENT_DATABASE_ID/reactions \
--method POST -f content='+1'
# resolve
gh api graphql -f query='mutation { resolveReviewThread(input: { threadId: "THREAD_ID" }) { thread { isResolved } } }'
すべてresolveされたらgit pushする。
push完了後、レビュワーに再レビュー依頼を送るかユーザーにAskUserQuestion toolで確認する。
「はい」の場合、PRのレビュワーを取得して再レビュー依頼を送る:
# レビュワー取得
gh pr view --json reviewRequests,reviews
# 再レビュー依頼
gh pr edit --add-reviewer REVIEWER_LOGIN
testing
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
tools
macOSでクリップボードの画像を /tmp/claude-clipboard/ にPNG保存してClaude Code/opencodeに読ませる。AppleScript (osascript) 経由で取得する
tools
gwqでworktreeを切り、.envとsettings.local.jsonをコピーし、plan-xxx.mdを配置して別ターミナルで作業開始できる状態を作る
tools
新しいClaude Skillの設計と雛形作成を対話で支援。要件整理からSKILL.md作成、構成決定、最終チェックまでを一貫して進めるときに使う。