.cursor/skills/handle-pr-review/SKILL.md
PR レビューコメントを仕様に照らして分析し、対応方針を提案・実行する。 コメントをそのまま受け入れるのではなく、TSDoc/テスト/型定義に基づいて 妥当性を検証し、修正・代替案・対応不要を判断する。 "レビュー対応して", "PRコメントに対応", "review PR comments", "レビューコメントを確認", "PRのレビューを処理" などで起動する。 Cursor / Claude Code 共通で使用可能。
npx skillsauth add otomatty/zedi handle-pr-reviewInstall 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 のレビューコメントを取得し、プロジェクトの仕様(TSDoc/JSDoc・テスト・型定義)に照らして妥当性を検証したうえで、対応方針を提案・実行する。
ユーザーが PR URL や番号を指定していない場合、ブランチから自動検出する:
gh pr list --head "$(git branch --show-current)" --json number,url,title --jq '.[0]'
セッション中に既に PR を扱っている場合は、その情報を再利用する。
レビューコメントを読む前に、PR の変更意図と仕様を理解する:
gh pr view <番号> で PR の概要・本文を取得gh pr diff <番号> で差分を取得AGENTS.md / SPECIFICATION_POLICY.md の方針を参照するこの段階で「この PR は何を達成しようとしているか」を明確にする。
返信済みコメントを除外し、未返信のトップレベルコメントを取得する:
gh api repos/{owner}/{repo}/pulls/{number}/comments \
--jq '
[.[] | select(.in_reply_to_id != null) | .in_reply_to_id] as $replied |
[.[] | select(.in_reply_to_id == null and (.id | IN($replied[]) | not))]
| .[] | {id, path, line, body: (.body | .[0:300]), user: .user.login, created_at}'
in_reply_to_id を収集 → $repliedin_reply_to_id == null)のうち、$replied に含まれないもの = 未返信body は先頭 300 文字に切り詰め、全文が必要なら個別に読む?per_page=100 や --paginate でページネーションを指定する各コメントについて以下を行う。
各コメントを以下の 3 択 で判断する:
A. 修正する — 以下のいずれかに該当する場合:
B. 代替案で対応する — 以下のいずれかに該当する場合:
C. 対応不要 — 以下のいずれかに該当する場合:
コメントごとに以下の形式で報告する:
### コメント #N: [コメントの要約]
**投稿者:** @username
**対象:** `ファイルパス` L行番号
**指摘内容:** コメントの要点
**判断:** 修正する / 代替案で対応 / 対応不要
**仕様根拠:** 判断の裏付け(TSDoc、テスト、型定義、AGENTS.md 等を引用)
**対応案:** 具体的な修正内容 / 代替案の詳細 / 不要の理由
最後にサマリーテーブルを提示する:
| # | ファイル | 指摘 | 判断 | 仕様根拠(一言) | 対応案 | | --- | -------- | ---- | ----- | ---------------- | ------ | | 1 | ... | ... | A/B/C | ... | ... |
ユーザーの承認を得てから Step 4 に進む。
承認された対応方針に基づき修正を行う:
bun run lint でエラーがないか確認fix: address PR #{number} review comments
各コメントに対する返信を作成し、投稿前にテーブルで一覧表示する:
| # | コメント要約 | 対応 | 返信内容 | | --- | ------------ | ----- | -------- | | 1 | ... | A/B/C | ... |
返信の書き方:
ユーザーが承認するまで投稿しない。
承認後、replies エンドポイントで投稿:
gh api -X POST repos/{owner}/{repo}/pulls/{number}/comments/{comment_id}/replies \
-f body="返信内容"
修正コミットを push し、再レビューを依頼する。
develop に直接 push できない場合は、作業ブランチを作成し develop 向け PR を出す:
git checkout -b fix/pr-{number}-review-comment
git push -u origin fix/pr-{number}-review-comment
gh pr create --base develop --head fix/pr-{number}-review-comment \
--title "fix: address PR #{number} review comments" --body "..."
git push origin HEAD
gh pr comment {number} --body "レビューコメントへの対応をコミットしました({SHA})。最新の変更に対する再レビューをお願いします。
@coderabbitai review
@devin
@claude"
since を併用すれば、さらに API レスポンスを削減できるdocumentation
Zenn 記事を A先輩と B後輩の対話形式で執筆する。 Q&A のように疑問点にピンポイントで答える構成で、 初心者がつまずきやすいポイントを自然に解消する。 "対話形式で記事を書いて", "会話形式の記事", "dialogue article", "対話記事", "先輩後輩の会話で記事" などで起動する。
documentation
Zenn 記事の執筆・推敲を、体験ベースで読みやすいトーンに仕上げる。 AIっぽい定型表現を排除し、実践報告として説得力のある文章を生成する。 "Zenn記事を書いて", "記事の下書き", "ブログ記事を書く", "記事を推敲して", "write a Zenn article", "draft a blog post" などで起動する。
development
Runs Stryker mutation tests only on git-changed production files under `src/` via `scripts/stryker-mutate-changed.mjs` and `bun run test:mutation:changed`. Uses `stryker.config.mutation-changed.mjs` so partial runs do not fail on global `thresholds.break`. Use when the user asks for mutation testing on changed files only, incremental mutation test, diff-based Stryker, or "差分だけミューテーション" / "mutation test for current changes". After a run, use `bun run mutation:report:summary` and attach `reports/mutation/mutation-summary.md` for AI explanation (not HTML).
development
手元の実装変更、または現在ブランチとターゲットブランチの差分を、 関連コード(テスト・依存先・呼び出し元)も含めて AI レビューし、結果をマークダウンファイルに出力する。 "レビューして", "実装をレビュー", "変更をチェック", "review my changes", "self review", "セルフレビュー", "develop との差分をレビュー", "ブランチの差分をチェック", "review branch diff" などで起動する。