Resources
3Install
npx skillscat add autofor/claude-code-config/gh-pr-approve Install via the SkillsCat registry.
GitHub PR 承認・マージスキル
このスキルは、GitHub App Bot による PR 承認、マージ、その後の後処理を行う標準手順を提供します。
絶対禁止事項
gh pr review --approve は絶対に使用しないこと。 自分の PR は GitHub の仕様上承認できないため、必ず失敗する。PR の承認には必ず approve-pr.sh(GitHub App Bot)を使用すること。
前提条件の確認
以下を確認してから手順を開始する:
- ✅ PR が作成済みである
- ✅ PR の内容をユーザーが確認済みである
- ✅ ユーザーから承認を得ている
- ✅ GitHub App のセットアップが完了している(初回のみ)
初回セットアップ
GitHub App Bot を使用するには、以下のセットアップが必要です(1回だけ):
- GitHub App を作成(Pull requests: Read & Write 権限)
- 対象リポジトリにインストール
~/.claude/github-app-config.envに Client ID と Installation ID を設定- 秘密鍵を
~/.claude/github-app-key.pemに配置
実行手順
必ず以下の順序で実行する:
0. [MANDATORY] CWD をメインリポジトリに移動
CRITICAL: このステップは省略不可。 Worktree 使用時にスキップすると、cleanup で CWD が無効化され以降の全コマンドが失敗する。CWD がサブディレクトリの場合も同様に問題が発生するため、常に実行すること。
git worktree listMAIN_REPO の決定ルール:
git worktree listの1行目が.bareを含む場合 → bare worktree 構造。デフォルトブランチ(master/main)のワークツリーパス(例:<プロジェクトルート>/master)を MAIN_REPO とする.bareでない場合 → 1行目のパスを MAIN_REPO とする- bare リポジトリのパス(
.bare)は絶対に MAIN_REPO に使わないこと(bare repo ではgit checkoutが実行できず fatal エラーになる)
以下の 2 つを独立した Bash コマンドとして順番に実行する(1つの Bash 呼び出しにまとめないこと):
Bash コマンド 1:
cd <メインリポジトリの絶対パス>⚠️
cd <path> && other-commandは不可。 CWD が無効な場合、Bash ツールはコマンド実行前に CWD を検証し、コマンド全体を拒否する。cdは必ず単独で実行すること。
Bash コマンド 2(cd 成功後):
pwdpwd の出力がメインリポジトリのパスと一致することを確認してから次のステップに進む。
1a. GitHub App Bot で PR 承認
GitHub App Bot を使って PR を承認する。これにより、PR 作成者とは別のエンティティが承認するため、ブランチ保護ルール(承認必須)を満たせる。
bash ~/.claude/skills/gh-pr-approve/approve-pr.sh <owner> <repo> <PR番号>例:
bash ~/.claude/skills/gh-pr-approve/approve-pr.sh <owner> my-repo 44エラーが出た場合:
Config file not found→~/.claude/github-app-config.envを確認Private key not found→~/.claude/github-app-key.pemを確認Failed to get installation access token→ Client ID, Installation ID, 秘密鍵が正しいか確認Failed to approve PR→ GitHub App がリポジトリにインストールされているか確認
1b. PR マージ
承認が成功したら、PR をマージする。
gh pr merge <PR番号> --squash # または --merge, --rebaseマージ方法の選択:
--squash: 複数コミットを1つにまとめる(推奨)--merge: マージコミットを作成--rebase: コミット履歴を線形に保つ
2. Issue クローズ確認
PR に Closes #XX が含まれていれば自動でクローズされるが、念のため確認する。
手動クローズが必要な場合:
gh issue close <Issue番号>3. 後処理(master切替 + pull + Worktree/ブランチ削除)
Step 0 で CWD はメインリポジトリに移動済み。git worktree list の結果を参照してパスを指定する。
Worktree 使用中(出力が2行以上)の場合:
bash ~/.claude/skills/gh-pr-approve/cleanup-after-merge.sh <メインリポジトリの絶対パス> <Worktreeの絶対パス> master <ブランチ名>通常ブランチの場合:
bash ~/.claude/skills/gh-pr-approve/cleanup-after-merge.sh <リポジトリの絶対パス> none master <ブランチ名>4. 完了メッセージをユーザーに表示
以下のメッセージをユーザーに表示する:
✅ PR のマージと後処理が完了しました。
完了した作業:
- PR #[PR番号] を GitHub App Bot で承認
- PR #[PR番号] をマージ
- Issue #[Issue番号] をクローズ
- master ブランチに切り替え
- リモートの最新状態を取得
- Worktree を削除 / ローカルブランチを削除
- リモートブランチを削除
新しい作業を開始する場合は、`/gh-worktree-branch` または `/gh-branch` スキルをご利用ください。実行例
# 1a. GitHub App Bot で PR を承認
bash ~/.claude/skills/gh-pr-approve/approve-pr.sh <owner> my-repo 44
# 1b. PR マージ
gh pr merge 44 --squash
# 2. Issueクローズ(通常は自動だが念のため)
gh issue close 45
# 3. 後処理(master切替 + pull + Worktree/ブランチ削除)— Step 0 で CWD 移動済み
bash ~/.claude/skills/gh-pr-approve/cleanup-after-merge.sh /home/user/projects/claude-config /home/user/projects/claude-config-feature master注意事項
gh pr review --approveは絶対に使用禁止 — 必ずapprove-pr.shを使うこと- 必ずユーザーの承認を得てから実行する
- 初回セットアップが必要 — GitHub App 作成・インストール・設定ファイル配置が完了していること
- Worktree を削除する前にコミット・プッシュが完了しているか確認
git fetch --pruneでリモートで削除されたブランチをローカルからも削除- master ブランチに戻った後は、新しい作業を開始する前に必ず新しいブランチを作成する
- approve-pr.sh は
bash,openssl,curlに依存する
よくある質問
Q: マージ方法は何を選ぶべきか?
A: 基本的には --squash を使用して、コミット履歴を整理します。
Q: Worktree を削除し忘れたらどうなるか?
A: git worktree list で確認し、git worktree remove で削除できます。
Q: Issue が自動でクローズされない場合は?
A: PR 本文に Closes #XX が含まれているか確認し、手動で gh issue close を実行します。
Q: GitHub App Bot の承認が失敗する場合は?
A: 以下を確認してください:
~/.claude/github-app-config.envの Client ID と Installation ID が正しいか~/.claude/github-app-key.pemが存在し、正しい秘密鍵か- GitHub App が対象リポジトリにインストールされているか
- GitHub App に Pull requests の Read & Write 権限があるか