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 → 起点ブランチ` の PR に環境ブランチ固有のコードが混入する(起点の汚染)。短命ブランチ + cherry-pick で、必要なコミットだけを対象ブランチに届ける。
| 観点 | 正しい順序 | 誤った順序 |
|------|-----------|-----------|
| 単一ソース | feature ブランチが唯一の正 | 二箇所で実装 |
| 一貫性 | cherry-pick で完全一致 | 手書き差分でズレる |
| 追跡性 | `-x` で元 commit が明記 | 関連 commit 不明確 |
## 核心ルール
原則は `ndf-policies`「ブランチ運用の原則」に定義されている。本 Skill の処理フローはその原則を手順へ落としたもので、対応は次のとおり。
| 原則 | 対応する処理フロー |
|------|------------------|
| feature に先に commit し cherry-pick で届ける | 3・6 |
| ���境ブランチを feature に merge しない | 「なぜ必要か」 |
| push 前に起点ブランチを取り込む | 5 |
| マージ済みブランチには push しない | 2 |
## 処理フロー
### 1. 引数・現状確認
- 引数から環境ブランチ名を取得(必須。未指定なら確認)
- `git branch --show-current` で現在ブランチを取得
- 開発の起点ブランチを決める。以降の手順はこの値を使う
```bash
# 起点は開発の本流であって、既定ブランチとは限らない。宣言(`.ndf/worktree.json` の
# `base_branch`)を先に読み、その名前が実在することを確かめる。取得済みの参照に無ければ
# origin へ問い合わせる(取得していないだけの場合を「無い」と読まないため)。実在しなければ
# 既定ブランチへ落とさずに止まる。宣言が無ければ origin の HEAD が指す先を使い、それも
# 取れなければ慣例の名前のうちローカルにあるものへ落とす
# (共通ライブラリ `wt_base_branch` と同じ順序)
dev_base=$(jq -r 'select(.version == 1) | .base_branch | select(type == "string")' \
.ndf/worktree.json 2>/dev/null)
if [ -n "$dev_base" ]; then
dev_base_found=0
if git show-ref --verify --quiet "refs/remotes/origi