ドラフト Pull Request を作成
Create a draft pull request linked to a related issue. Use this when you've finished implementing a feature or fix and want to open a PR for review without marking it as ready.
/plugin marketplace add B16B1RD/cc-zen-workflow/plugin install b16b1rd-zen-workflow@B16B1RD/cc-zen-workflowpr/ドラフト PR を作成し、関連 Issue と連携する
このコマンドを実行したら、以下のフェーズを順番に実行してください。
| 引数 | 説明 |
|---|---|
[title] | PR タイトル(省略時は自動生成) |
現在のブランチと main ブランチとの差分を確認:
git branch --show-current
main/master ブランチの場合:
エラー: 現在 {branch} ブランチにいます
PR を作成するには作業ブランチに切り替えてください。
`/zen:issue:start` で作業を開始できます。
処理を終了。
git status --porcelain
git diff --stat origin/main...HEAD
git log --oneline origin/main...HEAD
コミットがない場合:
警告: まだコミットがありません
変更をコミットしてから PR を作成してください。
処理を終了。
ブランチ名から関連 Issue 番号を抽出:
パターン: {type}/issue-{number}-{slug}
例: feat/issue-17-pr-create → Issue #17
抽出できない場合は AskUserQuestion で確認:
ブランチ名から Issue 番号を特定できません
現在のブランチ: {branch}
オプション:
- Issue 番号を手動で指定
- Issue なしで PR を作成
- キャンセル
gh issue view {issue_number} --json number,title,body,state,labels
Issue がクローズされている場合:
警告: Issue #{number} は既にクローズされています
PR を作成しますか?
オプション:
- はい、作成する
- キャンセル
Issue のコメントから作業メモリを取得:
gh api repos/{owner}/{repo}/issues/{issue_number}/comments --jq '.[] | select(.body | contains("zen 作業メモリ"))'
作業メモリが見つかった場合、以下の情報を抽出:
zen-config.yml から build/lint コマンドを取得:
commands:
build: null # 自動検出
lint: null # 自動検出
自動検出ロジック:
package.json の scripts から検出Makefile のターゲットから検出AskUserQuestion で実行を確認:
PR 作成前に品質チェックを実行しますか?
検出されたコマンド:
- lint: {lint_command}
- build: {build_command}
オプション:
- すべて実行(推奨)
- lint のみ
- スキップ
選択されたチェックを実行:
# lint 実行例
npm run lint
エラーがある場合:
品質チェックでエラーが検出されました
{error_output}
オプション:
- エラーを無視して PR 作成
- 修正してから再実行
- キャンセル
Conventional Commits 形式でタイトルを生成:
タイトル生成ルール:
パターン: {type}({scope}): {description}
例: feat(pr): implement /zen:pr:create command
type マッピング:
| ブランチ prefix | PR type |
|---|---|
| feat/ | feat |
| fix/ | fix |
| docs/ | docs |
| refactor/ | refactor |
| chore/ | chore |
| style/ | style |
| test/ | test |
プロジェクト種別(zen-config.yml の project.type)に応じたテンプレートを使用。
テンプレートファイル: templates/pr/{project_type}.md
本文に含める情報:
Closes #{number})ローカルブランチをリモートにプッシュ:
git push -u origin {branch_name}
gh pr create --draft --title "{title}" --body "{body}"
Issue の作業メモリコメントを自動的に更新する。
PR 作成時に以下の情報を自動収集:
# 変更ファイルの取得
git diff --name-status origin/main...HEAD
# コミット履歴の取得
git log --oneline origin/main...HEAD
# コメント ID を取得
comment_id=$(gh api repos/{owner}/{repo}/issues/{issue_number}/comments \
--jq '.[] | select(.body | contains("🧘 zen 作業メモリ")) | .id')
# コメントが見つかった場合のみ更新
if [ -n "$comment_id" ]; then
gh api repos/{owner}/{repo}/issues/comments/{comment_id} \
-X PATCH \
-f body="{updated_body}"
fi
作業メモリに以下を自動追記:
### 進捗
- [x] 実装完了
- [x] PR 作成済み
### 変更ファイル
| ファイル | 状態 |
|---------|------|
| {path} | {status} |
### 関連 PR
- #{pr_number}: {pr_title}
- URL: {pr_url}
- 作成日時: {timestamp}
### コミット履歴
{commit_log}
ステータスの判定:
A → 追加M → 変更D → 削除R → 名前変更注意: 作業メモリコメントが見つからない場合は更新をスキップし、警告を表示する。
ドラフト PR #{pr_number} を作成しました
タイトル: {title}
URL: {pr_url}
関連 Issue: #{issue_number}
次のステップ:
1. PR の内容を確認
2. `/zen:pr:review` でセルフレビュー
3. `/zen:pr:ready` で Ready for review に変更
エラー: リモートへのプッシュに失敗しました
考えられる原因:
- ネットワーク接続の問題
- 認証エラー
- リモートブランチとの競合
対処:
1. ネットワーク接続を確認
2. `gh auth status` で認証状態を確認
3. `git pull --rebase origin main` で最新を取得
4. 再度実行
エラー: PR の作成に失敗しました
考えられる原因:
- 同じブランチの PR が既に存在
- 権限不足
- ネットワークエラー
対処:
1. `gh pr list` で既存 PR を確認
2. 権限を確認
3. 再度実行
警告: Issue #{number} が見つかりません
Issue なしで PR を作成しますか?
オプション:
- はい、作成する
- 別の Issue を指定
- キャンセル
gh コマンド、git コマンド実行