PR Create
Git 変更分析に基づく自動 PR 作成で効率的な Pull Request ワークフローを実現します。
使い方
bash
# 変更分析による自動 PR 作成 git add . && git commit -m "feat: ユーザー認証機能の実装" 「変更内容を分析して適切な説明文とラベルで Draft PR を作成してください」 # 既存テンプレート保持での更新 cp .github/PULL_REQUEST_TEMPLATE.md pr_body.md 「テンプレート構造を完全に保持して変更内容を補完してください」 # 段階的品質向上 gh pr ready 「品質確認完了後、Ready for Review に変更してください」
基本例
bash
# 1. ブランチ作成とコミット git checkout main && git pull git checkout -b feat-user-profile git add . && git commit -m "feat: ユーザー プロフィール機能の実装" git push -u origin feat-user-profile # 2. PR 作成 「以下の手順で PR を作成してください: 1. git diff --cached で変更内容を確認 2. .github/PULL_REQUEST_TEMPLATE.md を使用して説明文を作成 3. 変更内容から適切なラベルを最大 3 個選択 4. Draft PR として作成 (HTML コメント保持)」 # 3. CI 確認後に Ready 化 「CI が通ったら PR を Ready for Review に変更してください」
実行手順
1. ブランチ作成
bash
# ガイドラインに従った命名規則: {type}-{subject}
git checkout main
git pull
git checkout -b feat-user-authentication
# ブランチ確認 (現在のブランチ名を表示)
git branch --show-current
2. コミット
bash
# 変更をステージング git add . # ガイドラインに従ったコミットメッセージ git commit -m "feat: ユーザー認証 API の実装"
3. リモートに Push
bash
# 初回 Push(upstream 設定) git push -u origin feat-user-authentication # 2 回目以降 git push
4. 自動分析による Draft PR 作成
Step 1: 変更内容の分析
bash
# ファイル変更の取得 (ステージ済み変更を確認) git diff --cached --name-only # 内容分析 (最大 1000 行) git diff --cached | head -1000
Step 2: 説明文の自動生成
bash
# テンプレート処理の優先順位 # 1. 既存 PR 説明 (完全保持) # 2. .github/PULL_REQUEST_TEMPLATE.md # 3. デフォルトテンプレート cp .github/PULL_REQUEST_TEMPLATE.md pr_body.md # HTML コメント・区切り線を保持したまま空セクションのみ補完
Step 3: ラベルの自動選択
bash
# 利用可能ラベルの取得 (非インタラクティブ) 「.github/labels.yml または GitHub リポジトリから利用可能なラベルを取得して、変更内容に基づいて適切なラベルを自動選択してください」 # パターンマッチングによる自動選択 (最大 3 個) # - ドキュメント: *.md, docs/ → documentation|docs # - テスト: test, spec → test|testing # - バグ修正: fix|bug → bug|fix # - 新機能: feat|feature → feature|enhancement
Step 4: GitHub API での PR 作成 (HTML コメント保持)
bash
# PR 作成 「以下の情報で Draft PR を作成してください: - タイトル: コミットメッセージから自動生成 - 説明文: .github/PULL_REQUEST_TEMPLATE.md を使用して適切に記入 - ラベル: 変更内容から自動選択 (最大 3 個) - ベースブランチ: main - HTML コメントは完全に保持」
方法 B: GitHub MCP(フォールバック)
javascript
// HTML コメント保持での PR 作成
mcp_github_create_pull_request({
owner: "organization",
repo: "repository",
base: "main",
head: "feat-user-authentication",
title: "feat: ユーザー認証の実装",
body: prBodyContent, // HTML コメントを含む完全な内容
draft: true,
maintainer_can_modify: true,
});
自動ラベル選択システム
ファイルパターンベース判定
- •ドキュメント:
*.md,README,docs/→documentation|docs|doc - •テスト:
test,spec→test|testing - •CI/CD:
.github/,*.yml,Dockerfile→ci|build|infra|ops - •依存関係:
package.json,pubspec.yaml→dependencies|deps
変更内容ベース判定
- •バグ修正:
fix|bug|error|crash|修正→bug|fix - •新機能:
feat|feature|add|implement|新機能|実装→feature|enhancement|feat - •リファクタリング:
refactor|clean|リファクタ→refactor|cleanup|clean - •パフォーマンス:
performance|perf|optimize→performance|perf - •セキュリティ:
security|secure→security
制約事項
- •最大 3 個まで: 自動選択の上限
- •既存ラベルのみ: 新規作成禁止
- •部分マッチ: キーワード含有による判定
プロジェクトガイドライン
基本姿勢
- •必ず Draft で開始: すべての PR は Draft 状態で作成
- •段階的品質向上: Phase 1(基本実装)→ Phase 2(テスト追加)→ Phase 3(ドキュメント更新)
- •適切なラベル: 最大 3 種類のラベルを必ず付与
- •テンプレート使用:
.github/PULL_REQUEST_TEMPLATE.mdを必ず使用 - •日本語スペース: 日本語と半角英数字間に必ず半角スペース
ブランチ命名規則
text
{type}-{subject}
例:
- feat-user-profile
- fix-login-error
- refactor-api-client
コミットメッセージ
text
{type}: {description}
例:
- feat: ユーザー認証 API の実装
- fix: ログイン エラーの修正
- docs: README の更新
テンプレート処理システム
処理優先順位
- •既存 PR 説明: 既に記述されている内容を完全に踏襲
- •プロジェクトテンプレート:
.github/PULL_REQUEST_TEMPLATE.md構造を維持 - •デフォルトテンプレート: 上記が存在しない場合
既存内容保持ルール
- •一文字も変更しない: 既に記述されている内容
- •空セクションのみ補完: プレースホルダー部分を変更内容で埋める
- •機能的コメント保持:
<!-- Copilot review rule -->などを維持 - •HTML コメント保持:
<!-- ... -->を完全に保持 - •区切り線保持:
---などの構造を維持
HTML コメント保持の対処法
重要: GitHub CLI (gh pr edit) は HTML コメントを自動エスケープし、シェル処理で EOF < /dev/null などの不正な文字列が混入する場合があります。
根本的解決策:
- •GitHub API の --field オプション使用: 適切なエスケープ処理で HTML コメント保持
- •テンプレート処理の簡素化: 複雑なパイプ処理やリダイレクトを避ける
- •完全保持アプローチ: HTML コメント削除処理を廃止し、テンプレートを完全保持
レビューコメント対応
bash
# 変更後の再コミット git add . git commit -m "fix: レビュー フィードバックに基づく修正" git push
注意事項
HTML コメント保持の重要性
- •GitHub CLI 制限:
gh pr editは HTML コメントをエスケープ、不正文字列混入 - •根本的回避策: GitHub API の
--fieldオプションで適切なエスケープ処理 - •テンプレート完全保持: HTML コメント削除処理を廃止し、構造を完全維持
自動化の制約
- •新規ラベル禁止:
.github/labels.yml定義外のラベル作成不可 - •最大 3 ラベル: 自動選択の上限
- •既存内容優先: 手動で記述された内容は一切変更しない
段階的品質向上
- •Draft 必須: すべての PR は Draft で開始
- •CI 確認:
gh pr checksで状態確認 - •Ready 移行: 品質確認完了後に
gh pr ready - •テンプレート完全遵守: プロジェクト固有の構造を維持