cherry-pick-prlisted
Install: claude install-skill devbasex/ai-plugins
# cherry-pick PR 作成コマンド
featureブランチから指定ベースブランチ(`qa/*`, `staging/*`, `release/*` 等の環境ブランチ)へ、短命ブランチ経由で cherry-pick PR を作成する。同じ修正を複数ブランチへ並行適用する場面全般で、この原則と手順に従う。
## 使用方法
```
/ndf:cherry-pick-pr qa/staging
/ndf:cherry-pick-pr release/v2
```
## なぜ必要か
featureブランチに環境ブランチ(`qa/staging`等)を merge して conflict を解消すると、`feature → main` の PR に環境ブランチ固有のコードが混入する(main汚染)。短命ブランチ + cherry-pick で、必要なコミットだけを対象ブランチに届ける。
| 観点 | 正しい順序 | 誤った順序 |
|------|-----------|-----------|
| 単一ソース | feature ブランチが唯一の正 | 二箇所で実装 |
| 一貫性 | cherry-pick で完全一致 | 手書き差分でズレる |
| 追跡性 | `-x` で元 commit が明記 | ��連 commit 不明確 |
## 核心ルール
原則は `ndf-policies`「ブランチ運用の原則」に定義されている。本 Skill の処理フローはその原則を手順へ落としたもので、対応は次のとおり。
| 原則 | 対応する処理フロー |
|------|------------------|
| feature に先に commit し cherry-pick で届ける | 3・6 |
| 環境ブランチを feature に merge しない | 「なぜ必要か」 |
| push 前に `origin/main` を取り込む | 5 |
| マージ済みブランチには push しない | 2 |
## 処理フロー
### 1. 引数・現状確認
- 引数からベースブランチ名を取得(必須。未指定なら確認)
- `git branch --show-current` で現在ブランチを取得
### 2. 既存PRのマージ済みチェック(必須)
同じベースブランチ向けの短命ブランチに既存PRがないか確認する。
```bash
# 同名パターンのブランチでマージ済みPRがないか確認
gh pr list --head "<current-branch>-for-<base-short-name>" --state merged \
--json number,mergedAt --jq '.[]'
```
マージ済みPRが見つかった場合、**同じブランチ名は使えない**。サフィックスを付ける(例: `-v2`, `-v3`)。
### 3. コミット一覧の確認
```bash
git log --oneline main..HEAD
```
ユーザーに cherry-pick 対象コミットを確認(全コミット or 選択)。
### 4. 短命ブランチ作成
```bash
git fetch origin <base-branch>
git checkout -b <current-branch>-for-<base-short-name> origin/<base-branch>
```
- `<ba