mcpField
A
agent-pr-creator

agent-pr-creator

github.com/ravnhq開発1652 回インストール21 週間前に更新
リポジトリ

agent-pr-creator について

Agent PR Creatorは、リポジトリの履歴、差分、テンプレートをもとにプルリクエストを準備・作成する開発者やコーディングエージェント向けのスキルです。ベースブランチの確認から変更分析、テンプレート記入、GitHub CLIでの作成までを案内します。

主な機能

  1. 01ベースブランチと既存PRの確認
  2. 02差分とコミット履歴の分析
  3. 03PRテンプレートの検索と適用
  4. 04タイトルと変更説明の作成
  5. 05gh CLIによるPR作成

活用シーン

  1. 01作業済みブランチからのPR作成
  2. 02リポジトリ固有のPRテンプレート記入
  3. 03変更点と破壊的変更の要約
  4. 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 が成功したら、次の内容を出力します:

  1. PR の URL(例:https://github.com/owner/repo/pull/456)
  2. PR 番号
  3. 含まれる変更の概要(変更の種類、影響を受ける主な領域)
  4. レビュアーが自動割り当てされたか、特別な状態(ドラフト、レビュー準備完了)があるか

出力例:

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 を実行して再認証し、スキルを再試行します。

コメント