gh-create-pr について
gh-create-prは、GitHubリポジトリでのプルリクエスト作成を開発者やメンテナー向けに案内するスキルです。テンプレート、変更内容、検証記録、ブランチ、スタックPRの手順を定めています。
主な機能
- 01プルリクエストテンプレートの確認と遵守
- 02変更範囲とテスト証拠の収集
- 03Agent Noteと受け入れ条件の確認
- 04ベースブランチとスタック状態の調査
- 05手順に沿ったPR作成と確認
活用シーン
- 01リポジトリ規約に沿った変更PRの準備
- 02スタックブランチのPR作成とリンク
- 03実行済みの検証コマンドとシナリオの記録
- 04リリースブランチ規則に沿った修正対応
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cherryhq/ cherry-studio --skill gh-create-prインストール後、Claude Code で/gh-create-prを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yaml
詳細
GitHub PR の作成
スタック用ツール
このリポジトリには、プロジェクトの公開スキルとして .agents/skills/gh-stack/SKILL.md が含まれています。開発者がエージェントスキルを別途インストールする必要はありません。スタックされたブランチまたは PR を操作する前に、これを読んでください。.agents/skills/ を参照するエージェントは、このスキルを直接検出します。Claude のチェックアウトに .claude/skills/gh-stack がない場合は、pnpm skills:sync の後に pnpm skills:check を実行してください。別のグローバルコピーをダウンロードしないでください。
タスクで最初の gh stack コマンドを実行する前に、GitHub CLI を確認し、見つからない場合は公式拡張機能をインストールしてください。
command -v gh >/dev/null 2>&1 || {
echo "GitHub CLI is required: https://cli.github.com/" >&2
exit 1
}
gh auth status
if ! gh stack --help >/dev/null 2>&1; then
gh extension install github/gh-stack
fi
gh stack --help >/dev/null
認証、インストール、または最後の確認に失敗した場合は中止してください。場当たり的な Git コマンドでスタックを推測しないでください。人が作成した Cherry PR の場合は、gh stack push を使用し、このスキルに従って下から上へ各 PR を作成してから、既存の PR を gh stack link でリンクしてください。gh stack submit --auto は、テンプレートに準拠した本文の作成フローを経ずに PR を作成するため、このワークフローを回避する目的で使用してはなりません。
ワークフロー
- PR の本文を作成する前に、
.github/pull_request_template.mdを読みます。 - 現在のブランチから PR のコンテキスト(ベース/ヘッド、スコープ、関連する issue、テスト状況、破壊的変更、リリースノートの内容)を収集します。実際のベースを確認し、
pnpm change:scope --base <verified-base-ref>を実行します。最新のコミットだけからスコープを推測しないでください。 .agents/notes/README.mdを読み、変更を分類します。Agent Noteにはリポジトリ内のパスを記入します。ローカルで完結する変更や機械的な変更の場合は、N/A — <reason>と記入します。- Spec PR の場合は、
Spec PR: This PRと記入し、すべての AC を列挙します。 - 実装レイヤーの場合は、Spec PR へのリンクを記載し、このレイヤーで対応する AC ID のみを列挙します。
commit_idが現在の Spec の head と一致するAPPROVEDレビューがあることを確認します。古い承認は実装の許可にはなりません。 - 根拠を長期的に残す直接的なバグ修正の場合は、実装済みの
bug-fixノートへのリンクを記載し、Spec PR: N/Aとします。 - 自動化によって作成された PR(リポジトリのワークフローおよび Dependabot)は、これらのメタデータ項目が免除されます。本文を人間が作成した PR のようにしないでください。
- 実装 PR の場合は、スタックツールの事前確認を完了してから
gh stack view --jsonを実行します。終了コードが 2 の場合は、gh-stackスキルのリモート検出手順に従います。ローカルのメタデータがないことだけを根拠に、その PR が単独だと判断してはいけません。下位の実装 PR をすべて調べ、実際の検証で裏付けられた AC のみを集約します。中間レイヤーではノートを提案状態のままにします。現在の PR が最終レイヤーで、累積した証拠が承認済み Spec の全体を網羅している場合は、バイリンガルの 3 項目をimplemented/に移動し、公開前にpnpm agent-notes:check-transition --base <verified-spec-ref>を実行します。 - 実際に実行したコマンドとシナリオを
Verificationに記入します。予定、保留中、スキップ済み、または CI のみのチェックを、合格したものとして記載してはいけません。 - 現在のブランチがリモートにプッシュ済みか確認します。未プッシュの場合は、先にプッシュします。
- デフォルトのリモートは
originですが、別のリモートを使用するかユーザーに確認してください。
git push -u <remote> <head-branch> - デフォルトのリモートは
- ベースブランチを決定します。
- デフォルトを適用する前に、ヘッドブランチを確認します。ヘッドが
release/v<version>の場合は停止します。リリースブランチからプルリクエストを作成してはいけません。特にmainを対象にしてはいけません。独立した修正はトピックブランチに置いてリリースブランチを対象にするか、Post Release にメタデータ同期ブランチを作成させてください。 - 任意のトピックブランチのベースを
mainに設定する前に、マージベースとアップストリームを確認します。release/v<version>から開始した製品コードの修正は停止し、ホットフィックスとしてmainから作り直す必要があります。リリース専用の修復、または明示的なバックポート復旧用トピックのみ、該当するリリースブランチを対象にできます。 backport/v<version>/pr-<number>のヘッドは、一致するrelease/v<version>をベースにし、本文の単独行に、正確な元のホットフィックス PR を示す `` を含める必要があります。release-sync/v<version>のヘッドはmainを対象にし、正確なタイトルchore(release): sync v<version> metadataを使用し、本文のrelease-metadata-boundary: v<version>マーカーを残したうえで、スカッシュマージする必要があります。- 公式リポジトリ(CherryHQ/cherry-studio)で
originを使用する場合、デフォルトのベースはoriginのmainですが、ユーザーが明示的に別のベースブランチを指定することもできます。 mainはホットフィックス PR を含む、開発中のアクティブなブランチです。ユーザーが明示的に要求しない限り、古いメンテナンスブランチを対象にしてはいけません。- ユーザーがアクティブなドラフトリリースに含める必要があると明示した場合に限り、PR をリリースホットフィックスとして分類します。タイトルには
hotfix: <description>またはhotfix(<kebab-case-scope>): <description>を使用します。スコープは小文字の英数字によるケバブケースとし、コロンの後はスペース 1 つだけにし、説明を空にしてはいけません。このタイトルの文法により、hotfixラベルは自動的に同期されます。マージ後に別のバックポート PR が作成されるのは、一致するアクティブなrelease/v<version>ブランチがあるドラフトのセマンティックバージョンリリースがちょうど 1 つの場合に限ります。それ以外の場合、自動化は対象を推測せずに停止します。 - ホットフィックスがユーザーに影響する場合は、自動化がアクティブなドラフトと安定版のリリース履歴を更新できるよう、各言語でリリースノートを 1 行ずつ記載します。この正確な形式を、テンプレートに既存の
release-noteフェンス内に配置します。箇条書き記号は含めないでください。[Component] 英語での説明。 [组件] 中文说明。 - hotfix にユーザー向けのリリースノートがない場合は、テンプレートの
release-noteフェンス内にNONEをそのまま記載してください。コードはバックポートされますが、リリースメタデータは変更されません。提示されたバイリンガルブロックは、上記の正確な構造を満たす必要があります。 - フォークしたリポジトリを
originとしている場合は、git remote -vで利用可能なリモートを確認してください。デフォルトのベースはupstream/mainまたは別のリモートである可能性があります。ユーザーがベースブランチを明示していない限り、ユーザーは常に CherryHQ/cherry-studio/main へのマージを希望しているものとして扱ってください。 - デフォルト以外のベースブランチを使う場合は、ユーザーに確認してください。
- デフォルトを適用する前に、ヘッドブランチを確認します。ヘッドが
- 一時ファイルを作成し、単一の Bash ヒアドキュメントで PR の本文を書き込みます
(Windows で
mktempとWriteツールのパスが一致しない問題を回避します):
テンプレートの構造を正確に保って内容を記入してください(セクションの順序、 見出し、チェックボックスの書式を維持します)。該当しない場合はpr_body_file="/tmp/gh-pr-body-$(date +%s).md" cat > "$pr_body_file" <<'EOF' ...filled template body... EOFN/AまたはNoneと記載してください。 - Bash の
cat "$pr_body_file"で一時ファイルの内容を確認します(Windows ではReadツールが/tmp/...パスで失敗する場合があります)。ユーザーがプレビューまたは確認を求めている場合は、本文全体を提示してその要望に従ってください。そうでなければ、許可された PR 作成に進みます。 - PR を作成します。ユーザーがドラフトを希望している場合は
--draftを追加します:
gh pr create --base <base> --head <head> --title "<title>" --body-file "$pr_body_file"
リリース hotfix の場合は、ワークフローがラベルを同期し、提示されたバイリンガルノートを個別に検証できるよう、分類器に適合する正確なタイトルを使ってください:
gh pr create --base main --head <head> --title "hotfix: <description>" --body-file "$pr_body_file"
作成後、分類器が hotfix を追加したことを確認してください。追加されていない場合は、手動でラベルを追加するのではなく、タイトルを修正してください。また、ワークフローで不正な形式の任意のリリースノートブロックが報告された場合は、それも修正してください。
11. 一時ファイルをクリーンアップします:rm -f "$pr_body_file"
12. 作成した PR の URL を報告し、タイトル/ベース/ヘッド、Agent Note/Spec、AC の網羅状況、実際に行った検証、および必要なフォローアップを要約してください。
制約
-
テンプレートのセクションを省略しないでください。
-
テンプレートの形式を書き換えないでください。
-
変更内容に即して、簡潔かつ具体的に記述してください。
-
PR のタイトルと本文は英語で記述してください。
-
通常のバグ修正に
hotfixのタイトルやラベルを使わないでください。マージ後に該当するドラフトリリースが有効な場合、自動バックポート PR が作成される対象となります。 -
リリース hotfix でユーザー向けのリリースノートがない場合は、
NONEを使用できます。不完全なもの、片方の言語のみのもの、その他不正な形式のバイリンガルノートは決して記載しないでください。不正な内容があると、バックポートワークフローは処理を中止します。 -
release/v<version>のヘッドをmainに設定しないでください。リリースブランチはプルリクエストのソースブランチではありません。 -
現在の Spec のヘッドが完全一致する Approval を得ていない場合、実装 PR をレビュー準備完了の状態で公開しないでください。Spec はマージされていなくてもスタックのベースとして使用できます。
-
人が作成するすべての PR で、
Agent Note、Spec PR、Acceptance criteriaを記入してください。N/Aとする場合は簡潔な理由を添えてください。自動化が作成する PR(リポジトリのワークフローおよび Dependabot)は、このメタデータ記入要件の対象外です。 -
リリースノートとドキュメントのチェックボックス — どちらも変更がユーザー向けかどうかによって決まります。以下の表を参照してください。
変更の種類 リリースノート Docs [x]新しいユーザー向け機能/設定/UI 変更内容を記載 ✅ ユーザーに見えるバグ修正 修正内容を記載 動作が変わる場合は ✅ 動作/デフォルト値の変更 変更内容と action requiredを記載✅ ユーザー向け依存関係のセキュリティ修正 修正内容を記載 利用方法が変わる場合は ✅ CI/GitHub Actions の変更 NONE❌ 内部リファクタリング(ユーザーが認識できないもの) NONE❌ 開発/ビルドツールの変更 NONE❌ 開発専用の依存関係の更新 NONE❌ テストのみ/コードスタイルの変更 NONE❌
コマンドパターン
# read template
cat .github/pull_request_template.md
# prepare and inspect the PR body
pr_body_file="/tmp/gh-pr-body-$(date +%s).md"
cat > "$pr_body_file" <<'EOF'
...filled template body...
EOF
cat "$pr_body_file"
# create the authorized PR; add --draft when requested
gh pr create --base <base> --head <head> --title "<title>" --body-file "$pr_body_file"
rm -f "$pr_body_file"