deploylisted
Install: claude install-skill devbasex/ai-plugins
# 環境デプロイPR作成コマンド
現在のfeatureブランチを指定した環境ブランチへデプロイするためのPRを作成する。`{feature}_to_{env}` という命名のdeployブランチを作成し、最新の起点ブランチを取り込んでから環境ブランチへPRを出す。
## 使用方法
```
/ndf:deploy qa/staging
/ndf:deploy release/v2
```
## cherry-pick-pr との使い分け
| 観点 | cherry-pick-pr | deploy |
|---|---|---|
| 適用範囲 | featureブランチの**一部コミット**を選択 | featureブランチ**全体**を適用 |
| ブランチ戦略 | 環境ブランチから短命ブランチ派生 | featureブランチから deploy ブランチ派生 |
| 起点ブランチの取り込み | 必須 | 必須 |
| 用途 | 特定修正のみ検証環境に届けたい | feature機能全体を環境で検証したい |
## 処理フロー
### 1. バリデーション
```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/origin/$dev_base" ||
git show-ref --verify --quiet "refs/heads/$dev_base"; then
dev_base_found=1
else
# `git ls-remote` のパターンは参照名の末尾に一致する。問い合わせの成功だけを見ると
# `refs/heads/x/refs/heads/develop` のような別のブランチでも「ある」と読むため、
# 返った行の参照名そのものを照合する(共通ライブラリ `wt_branch_exists` と同じ形)
dev_base_listing=$(GIT_TERMINAL_PROMPT=0 git ls-remote --heads origin \
"refs/heads/$dev_base" 2>/dev/null)
while IFS= read -r line; do
case "$line" in *$'\t'"refs/heads/$dev_base") dev_base_found=1; br