Skip to content
create-pr logo

create-pr

JIRAチケットブランチからPRを自動作成するスキル。親ブランチ自動検出、JIRAリンク自動挿入、テンプレートに沿ったPR本文生成を行う。「PR作成」「PRを作って」「/create-pr」などのリクエストで使用。

SKILL.md

Full skill instructions

Create PR Skill

JIRAチケット番号のブランチからPull Requestを自動作成する。親ブランチの自動検出、JIRAリンクの自動挿入、テンプレートに沿った本文生成を行う。

使用方法

/​create-pr

引数なしで実行。現在のブランチ名とgit履歴から全て自動判定する。

実行手順

Step 1: 事前チェック

  1. git branch --show-current でブランチ名を取得
  2. ブランチ名が main または develop の場合はエラー終了:
    • 「main/​developブランチ上ではPRを作成できません。フィーチャーブランチに切り替えてください。」
  3. gh auth status で認証状態を確認。未認証ならエラー:
    • 「gh CLIが未認証です。gh auth login を実行してください。」
  4. gh pr list --head {ブランチ名} --json url --jq '.[0].url' で既存PRを確認。存在する場合:
    • 「既存のPRが見つかりました: {URL}」と表示して終了
  5. git status --porcelain で未コミット変更を確認。ある場合:
    • 「未コミットの変更があります。先にコミットすることを推奨します。」と警告(続行は可能)

Step 2: 親ブランチ検出

以下の優先順で親ブランチを特定する:

方法A: merge-base距離比較(推奨)
git fetch origin
CURRENT=$(git branch --show-current)
git branch -r --list 'origin/​*' | grep -v "origin/​$CURRENT" | grep -v 'origin/​HEAD' | while read branch; do
  echo "$(git rev-list --count $(git merge-base HEAD $branch)..HEAD) $branch"
done | sort -n | head -1 | awk '{print $2}' | sed 's|origin/||'

最もmerge-baseが近い(= 分岐元に近い)リモートブランチを親とする。

方法B: 直前のブランチ

方法Aで結果が得られない場合:

git rev-parse --abbrev-ref @{-1}
フォールバック

いずれも失敗した場合、AskUserQuestionでユーザーに確認する:

  • 「親ブランチ(PRのマージ先)を指定してください」
  • 選択肢: main, develop, その他

Step 3: 差分収集

git diff origin/​{parent}...HEAD --stat
git log origin/​{parent}..HEAD --oneline

差分の内容とコミットメッセージを確認し、変更の概要を把握する。

Step 4: PR本文生成

テンプレート(templates/​pr-template.md)の構造に従い、PR本文を構築する:

  • 概要: 差分とコミットログから日本語で要約を自動生成
  • 関連リンク: https://kokopelli-inc.atlassian.net/browse/{ブランチ名} を自動挿入
  • 動作確認: 空欄のまま
  • 特に見て欲しいところ: 空欄のまま

Step 5: プッシュ

リモートにブランチが存在しない場合:

git push -u origin {ブランチ名}

Step 6: PR作成

gh pr create --base {parent} --title "{ブランチ名}: {変更の要約}" --body "$(cat <<'EOF'
# 📝 概要

{自動生成した要約}

# 🔗 関連リンク

- https://kokopelli-inc.atlassian.net/browse/{ブランチ名}

# 🧪 動作確認



# 👀 特に見て欲しいところ

EOF
)"

Step 7: 結果表示

作成されたPRのURLを表示する。

PRタイトル

  • フォーマット: {ブランチ名}: {変更の要約}
  • 例: BAX-12345: チャットメンバー表示の不整合を修正
  • 要約は日本語で簡潔に(70文字以内)

エラーハンドリング

状況対応
main/develop上で実行エラーメッセージを表示して終了
未コミット変更あり警告を表示(続行可能)
既存PRが存在既存PRのURLを表示して終了
gh CLI未認証エラーメッセージを表示して終了
親ブランチ検出失敗ユーザーに確認