create-pr
変更内容を分析してセキュリティチェック後に GitHub PR を作成します。
前提条件
ghCLI がインストールされ、認証済みであること- 現在のブランチがベースブランチからフォークされていること
フロー
Step 1: 変更内容を分析する
ベースブランチはリポジトリの規約に従う(main / develop 等)。
Step 2: セキュリティチェック(必須)
Agent ツールでセキュリティ確認を行う。
確認項目:
- 認証・認可の実装漏れ
- API キー・シークレットのハードコーディング
- XSS の可能性
- 入力バリデーションの欠如
- OWASP Top 10
問題が見つかった場合はユーザーに警告し、対処後に PR 作成を再試行するよう案内する。
Step 2.5: Closes 対象 Issue の milestone 確認
この PR で close する予定の Issue(same-repo のみ)を特定し、milestone の割当状況を確認する。
- 候補の特定: 作業対象の Issue 番号(会話文脈)・ブランチのコミットメッセージ中の
Closes #N/Fixes #N/Resolves #N参照から候補を挙げる - close 可否の確認: 候補ごとに「この PR で当該 Issue が完了するか」を確認する
(部分実装・関連のみの Issue は close 対象にしない。Step 4 の PR body には
close 対象のみ
Closes #Nと記載し、それ以外はRefs #N等の関連参照にとどめる) - milestone 確認: close 対象と確定した Issue について、以下で割当状況を確認する。 milestone 非運用リポジトリのガード: リポジトリに milestone が 1 件も存在しない場合 (closed 含む)は milestone 非運用リポジトリとみなし、この手順 3 のみ確認・警告なしで スキップして Step 3 へ進む(milestone を使わないリポジトリの PR 作成にノイズを加えない。 手順 1〜2 の close 可否確認は milestone と無関係の安全確認のためスキップしない)
- milestone が既に割当済み → 次の Step へ進む
- 未割当の場合:
- オープン中の milestone が 1 件のみなら、その milestone を割り当ててよいかユーザーに確認し、
同意が得られたら
gh issue edit <N> --milestone <title>で付与する - 複数件 or 0 件の場合はユーザーに確認する。どの milestone を使うか決まらない場合は milestone なしのまま Step 3 へ進めてよいが、その旨を PR body に警告として明記する (milestone を必須とする CI ゲートがあるリポジトリではそちらが最終防衛線として 機能する前提とし、本 Step は PR 作成自体をブロックしない)
- オープン中の milestone が 1 件のみなら、その milestone を割り当ててよいかユーザーに確認し、
同意が得られたら
この PR で close する Issue がない場合はこの Step をスキップする。
Step 3: PR タイトルを生成する
Conventional Commits 形式: type(scope): subject
例:
Step 4: PR body を生成する
Step 5: PR を作成する
ユーザーに PR URL を返す。
検証
PR 作成後に以下を確認してから完了を宣言する(対象リポジトリに .claude/rules/verification.md が存在する場合はそちらの5段階ゲートに従う。存在しない場合は次の要点に従う: コマンドを新規実行し、出力全体・終了コードを確認してから完了を宣言する)。「PR を作成したはず」等の推測語での完了主張は禁止。
よくある失敗
注意事項
- ベースブランチはリポジトリの規約に従う
- セキュリティ問題が未解決の場合は PR 作成を中止する
- Step 2.5 の milestone 確認は省略しない(Closes 対象がない場合は Step 2.5 全体を、milestone 非運用リポジトリでは手順 3 のみをスキップ可)
- Draft PR を作成する場合は
--draftフラグを追加する(ユーザーに確認)
sandbox 環境での実行
このスキルはネットワーク越しの GitHub 操作(git push / gh pr create)を必須とする。該当コマンドはコマンド単位で sandbox 無効にして実行する。ネットワーク遮断を解除できない環境では実行できない。


