AutoFor

gh-pr-approve

PR の承認・マージと後処理(Issue クローズ、ブランチ切り替え、Worktree 削除)を行う。ユーザーが「PRを承認する」「マージして」と言ったときに使用します。

AutoFor 0 Updated 3mo ago

Resources

3
GitHub

Install

npx skillscat add autofor/claude-code-config/gh-pr-approve

Install via the SkillsCat registry.

SKILL.md

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回だけ):

  1. GitHub App を作成(Pull requests: Read & Write 権限)
  2. 対象リポジトリにインストール
  3. ~/.claude/github-app-config.env に Client ID と Installation ID を設定
  4. 秘密鍵を ~/.claude/github-app-key.pem に配置

実行手順

必ず以下の順序で実行する:

0. [MANDATORY] CWD をメインリポジトリに移動

CRITICAL: このステップは省略不可。 Worktree 使用時にスキップすると、cleanup で CWD が無効化され以降の全コマンドが失敗する。CWD がサブディレクトリの場合も同様に問題が発生するため、常に実行すること。

git worktree list

MAIN_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 成功後):

pwd

pwd の出力がメインリポジトリのパスと一致することを確認してから次のステップに進む。

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: 以下を確認してください:

  1. ~/.claude/github-app-config.env の Client ID と Installation ID が正しいか
  2. ~/.claude/github-app-key.pem が存在し、正しい秘密鍵か
  3. GitHub App が対象リポジトリにインストールされているか
  4. GitHub App に Pull requests の Read & Write 権限があるか