agent-pr-creator について
Agent PR Creatorは、リポジトリの履歴、差分、テンプレートをもとにプルリクエストを準備・作成する開発者やコーディングエージェント向けのスキルです。ベースブランチの確認から変更分析、テンプレート記入、GitHub CLIでの作成までを案内します。
主な機能
- 01ベースブランチと既存PRの確認
- 02差分とコミット履歴の分析
- 03PRテンプレートの検索と適用
- 04タイトルと変更説明の作成
- 05gh CLIによるPR作成
活用シーン
- 01作業済みブランチからのPR作成
- 02リポジトリ固有のPRテンプレート記入
- 03変更点と破壊的変更の要約
- 04PR作成前のブランチ状態確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ravnhq/ ai-toolkit --skill agent-pr-creatorインストール後、Claude Code で/agent-pr-creatorを入力して読み込まれたか確認します。
詳細
Agent PR Creator
git の差分とコミット履歴を分析して、PR テンプレートに適切な内容を入力し、gh CLI でプルリクエストを作成します。このスキルでは、ベースブランチの検出、変更内容の分析、プロジェクトの PR テンプレートの読み込み、コミットと差分のコンテキストを踏まえたテンプレートへの入力、PR の作成を行います。
ワークフロー
フェーズ 1:ベースブランチの検出と既存 PR の確認
この PR の対象となるベースブランチを特定します。
# Check if develop exists; fall back to main
git rev-parse --verify develop 2>/dev/null && echo "develop" || echo "main"
# Current branch
git branch --show-current
現在のブランチに対する PR がすでに存在するか確認します。
gh pr list --head $(git branch --show-current) --json number,url,title
PR が存在する場合は、処理を中止してユーザーに知らせます。代わりに gh pr edit で説明を更新するか確認します。
ゲート: 未コミットの変更がある場合、またはブランチがリモートより遅れている場合は、ユーザーに警告して処理を中止します。
# Check for uncommitted changes
git status --porcelain
# Check if branch is behind remote
git rev-parse @{u} 2>/dev/null && git log --oneline @..@{u}
ブランチにリモート追跡先が設定されていない場合は、PR を作成する前に -u を指定してプッシュします。
git push -u origin $(git branch --show-current)
フェーズ 2:変更内容の分析
ベースブランチ以降の変更に関する完全なコンテキストを収集します。
# Get the base branch
BASE=$(git rev-parse --verify develop 2>/dev/null && echo "develop" || echo "main")
# Changed files
git diff ${BASE}...HEAD --name-only
# Commit log with oneline format
git log --oneline ${BASE}..HEAD
# Diff stats (file-level changes)
git diff ${BASE}...HEAD --stat
# Full diff for review (optional, context-dependent)
git diff ${BASE}...HEAD
変更内容を分析して、以下を把握します。
- 変更されたファイルとその領域(フロントエンド、バックエンド、テスト、ドキュメント、設定)
- 作成されたコミット数
- 含まれる Conventional Commit の種類(feat、fix、refactor、test、docs、chore)
- 破壊的変更(API の変更、スキーマのマイグレーション、設定形式の変更)の有無
- リファクタリング、新機能、バグ修正、またはそれらの組み合わせのいずれか
フェーズ 3:PR テンプレートの読み込み
プロジェクトの PR テンプレートを探して読み込みます。
# Standard locations
ls -la .github/PULL_REQUEST_TEMPLATE.md .github/pull_request_template.md PULL_REQUEST_TEMPLATE.md pull_request_template.md 2>/dev/null | head -1
見つかった場合は、テンプレート全体を読み、以下を確認します。
- 必須のすべてのセクション(Description、Type of Change、Breaking Changes、Screenshots、Notes、Checklist)
- チェックボックスの正確なラベルと選択肢
- プロジェクト固有の指示や規約
テンプレートが見つからない場合は、タイトルと説明だけの最小限の PR を作成します。
フェーズ 4:PR テンプレートを記入する
変更内容に基づいて、テンプレートの各セクションを記入します。
タイトル: Conventional Commit 形式を使用します
- プレフィックス:コミットの大半に基づいて、
feat:、fix:、refactor:、docs:、test:、chore:を使用します - 形式:
<type>: <short description> - 70 文字未満にします
- 命令形を使用します(「added」「fixed」「updates」ではなく、「add」「fix」「update」)
- 例:
feat: add authentication service integration
説明:
- 差分とコミットを分析し、変更内容と変更理由をまとめた 2~3 文の要約を作成します
- 実装の詳細ではなく、ビジネス上の価値に焦点を当てます
- 複数の領域が変更されている場合は、論理的にまとめます(例:「クエリのパフォーマンスを改善するため、データベース層を変更。新しいメトリクスを表示するため、フロントエンドを変更。ダッシュボードに新しい監視クエリを追加。」)
- ブランチ名やコミットに Linear/課題 ID が含まれている場合は記載します(例:
PUL3-34、#123) - 例:「サードパーティーとの連携に OAuth 2.0 認証フローを追加します。標準的な OIDC プロバイダーパターンを使用して、複数の ID サービスに対応します。PUL3-42 をクローズします。」
変更の種類:
- コミットのプレフィックスを分析します:
feat→ 新機能、fix→ バグ修正、refactor→ コードのリファクタリング、test→ テスト、docs→ ドキュメント、chore/build→ ビルド/設定 - 該当するチェックボックスにチェックを入れます。選択する項目は
[x]、選択しない項目は[ ]を使用します - テンプレートにあるチェックボックスのラベルをそのまま使用します。書き換えたり、言い換えたりしないでください
- 複数の項目にチェックを入れることができます(例:機能追加の PR にテストが含まれる場合)
破壊的変更:
- 次の項目に変更がないか分析します:
- 公開 API の契約(関数シグネチャ、エンドポイント、エクスポートされた型)
- データベーススキーマ(必須フィールドの追加、カラムの削除、型の変更)
- 環境変数(必須変数の追加、変数の削除、形式の変更)
- 設定ファイルの形式(構造、必須キー、非推奨オプション)
- エクスポートまたは公開メソッドの削除
- 変更がある場合:「Yes」にチェックを入れ、何が影響を受けるのか、必要な移行手順を説明します
- 変更がない場合:「No」にチェックを入れます
- 例:「Yes —
POST /api/auth/loginでoauth_providerフィールドが必須になりました。このフィールドがない既存の呼び出しは 400 を返します。クライアント側の認証コードを更新し、プロバイダーを指定してください。」
スクリーンショット/動画:
- UI ファイル(
src/components/、pages/、app/、または.jsx、.tsx、.vueなどの拡張子)に変更がある場合:プレースホルダー `` - それ以外の場合:
N/A — No UI changesと記載します
補足/チェックリスト:
- 標準以外のデプロイ手順がある場合は記載します(データベースのマイグレーション、環境設定、サービスの再起動など)
- 他の PR やサービスへの依存関係を記載します
- 特定のテスト手順やエッジケースへの対応が必要な場合は、レビュアー向けの指示を追加します
- 特記事項がない場合は、テンプレートの形式に応じて
N/Aと記載するか、空欄のままにします
フェーズ 5:PR を作成する
記入済みのテンプレートとタイトルを使用して、gh pr create を実行します:
gh pr create \
--base ${BASE} \
--title "<type>: <short description>" \
--body "<filled template body as HEREDOC or string>"
例:
gh pr create --base develop \
--title "feat: add authentication service integration" \
--body $'## Description\nAdds OAuth 2.0 support for third-party integrations.\n\n## Type of Change\n- [x] New Feature\n- [ ] Bug Fix\n\n## Breaking Changes\n- [ ] Yes\n- [x] No\n\n## Screenshots\nN/A'
重要: テンプレートの Markdown 形式を維持してください。セクション区切りや書式を保つために、シェルの HEREDOC($'...')または複数行の文字列を使用します。
フェーズ 6:確認して報告する
gh pr create が成功したら、次の内容を出力します:
- PR の URL(例:
https://github.com/owner/repo/pull/456) - PR 番号
- 含まれる変更の概要(変更の種類、影響を受ける主な領域)
- レビュアーが自動割り当てされたか、特別な状態(ドラフト、レビュー準備完了)があるか
出力例:
PR created: https://github.com/ravn/ai-toolkit/pull/123
Type: feat (New Feature)
Changes: 3 files, 156 additions
Affected areas: Authentication service, OAuth integration tests
Ready for review.
例
ポジティブトリガー
User: 「PR テンプレートに記入して、自分のブランチでプルリクエストを作成してください」
Expected behavior: agent-pr-creator ワークフローを使用して、git 履歴を分析し、PR テンプレートを読み、変更内容に基づいてすべてのセクションに適切に記入し、gh pr create で PR を作成します。
User: 「適切な説明を付けてプルリクエストを作成したいです」
Expected behavior: agent-pr-creator を使用して、コミットと差分からコンテキストを収集し、変更の種類(feat/fix/refactor)を分析して、破壊的変更を検出し、規約に沿った適切なタイトルと本文で、内容の充実した PR を作成します。
User: 「main に PR を作成してください」
Expected behavior: agent-pr-creator を使用して、ベースブランチを検出し、ブランチ作成以降の変更をすべて分析して、プロジェクトの規約に従ってテンプレートに記入し、PR を作成します。
非トリガー
User: 「このプルリクエストをレビューしてください:https://github.com/org/repo/pull/123」
Expected behavior: agent-pr-creator は使用しません。ユーザーは既存の PR をレビューしたいのであり、作成したいわけではありません。代わりに gh pr view またはレビュー用スキルを使用します。
User: 「自分のブランチにはどのような変更がありますか?」
Expected behavior: agent-pr-creator は使用しません。ユーザーは変更内容を確認したいのであり、PR を作成したいわけではありません。git diff または git log を直接使用します。
トラブルシューティング
スキルがトリガーされない
- Error: ユーザーが PR の作成を求めても、スキルが選択されません。
- Cause: リクエストの表現がトリガーフレーズと一致していません。「create PR」「open PR」「make PR」ではなく、「review」や「commit」のような一般的な語句が使われています。
- Solution: 「create a pull request」「make a PR」「open a PR」など、PR 作成を明示するキーワードを使って言い換え、再試行してください。
PR テンプレートが見つからない
- Error:
.github/PULL_REQUEST_TEMPLATE.mdなどが見つかりません。 - Cause: プロジェクトに PR テンプレートがないか、標準的ではない場所にあります。
- Solution:
.github/とルートディレクトリ内の一般的な場所でテンプレートファイルを検索します。見つからない場合は、Conventional Commits の形式に従って、タイトルと説明だけの最小限の PR を作成します。
このブランチにはすでに PR が存在する
- Error: このブランチの PR がすでに存在するため、
gh pr createが失敗します。 - Cause: このブランチにはすでにオープン中の PR があります。
- Solution: 既存の PR の URL をユーザーに伝え、新しい PR を作成する代わりに
gh pr edit <PR>で説明を更新するか確認します。
未コミットの変更がある、またはブランチがリモートより遅れている
- Error: 未コミットの変更がある、またはブランチがリモートより遅れているため、PR を作成できません。
- Cause: 作業ディレクトリにステージングされていない変更や未コミットの変更があるか、ローカルブランチがアップストリームより遅れています。
- Solution: 未コミットの変更がある場合は、ユーザーに警告し、まず
/commitでコミットするか、stash するよう提案します。ブランチが遅れている場合は、PR を作成する前に pull して rebase します。
リモート追跡ブランチがない
- Error: ブランチにアップストリーム追跡ブランチがないため、
gh pr createが失敗します。 - Cause: ローカルブランチがリモートに一度もプッシュされていません。
- Solution: まず
git push -u origin <branch-name>でブランチをプッシュしてから、PR を作成します。
gh CLI の認証に失敗する
- Error:
ghコマンドが「not authenticated」または「token expired」エラーで失敗します。 - Cause: GitHub CLI にログインしていないか、認証トークンの有効期限が切れています。
- Solution:
gh auth loginを実行して再認証し、スキルを再試行します。