pr
プロジェクトのブランチ戦略(staging/mainへのPR)に従ってプルリクエストを作成。コミット済みの変更をレビュー依頼する際に使用
- Category: discovered
- Tags: github, community
- Version: 1.0.0
- Author: walid
- Downloads: 0
- Updated: 2025-11-22
Download the latest version (v1.0.0) from this page.
SKILL.md
--- name: pr description: プロジェクトのブランチ戦略(staging/mainへのPR)に従ってプルリクエストを作成。コミット済みの変更をレビュー依頼する際に使用 allowed-tools: Read, Bash --- # Pull Request Creation Workflow このスキルはコミット済みの変更に対してプルリクエストを作成します。 **前提条件**: 変更が既にコミット・プッシュされていること ## 実行手順 ### 1. ブランチ戦略の確認 まず`README.md`を読み込んで、プロジェクトのブランチ戦略を理解してください: ```bash Read README.md ``` **ベースブランチの確認**: ```bash git branch -a ``` で利用可能なブランチを確認し、以下のルールに従います: **ベースブランチ選択ルール**: - `hotfix/*` → `main`をベースにする - **その他すべて** → `staging`が存在する場合は`staging`、存在しない場合は`main`をベースにする ### 2. 変更内容の確認 ```bash git status git log --oneline -5 git diff origin/main...HEAD # または origin/staging...HEAD ``` でコミット履歴と変更内容を確認します。 ### 3. Test・Linter実行 PR作成前に品質チェックを実行します。 **プロジェクト固有のコマンドを検出**: - `Gemfile`がある場合は`rake test`や`bundle exec rspec`、`bundle exec rubocop`を確認 - `package.json`の`scripts.test`や`scripts.lint`を確認 - `pytest.ini`や`setup.py`がある場合は`pytest`を確認 - `Cargo.toml`がある場合は`cargo test`を確認 - `go.mod`がある場合は`go test ./...`を確認 - README.mdに記載がある場合はそちらを優先 **実行例**: ```bash # Railsプロジェクトの場合 bin/rails test bin/rails rspec bin/rubocop bin/brakeman # Rubyプロジェクトの場合 bundle exec rspec bundle exec rubocop # Node.jsプロジェクトの場合 npm test npm run lint ``` **重要**: test・linterが失敗した場合、PR作成プロセスを中断してください。エラー内容をユーザーに提示し、修正を促してください。 ### 4. PR情報の準備 以下の情報をユーザーに提示し、PR作成の許可を得てください: - **ベースブランチ**: `staging`または`main` - **PRタイトル**: 変更内容を簡潔に表現 - **PR本文**: 以下のテンプレートに従って作成 **PR本文テンプレート**: ```markdown ## 概要 [変更の目的と背景を記述] ## 変更点 - [具体的な変更内容1] - [具体的な変更内容2] - [具体的な変更内容3] ## テスト計画 - [x] [実施済みのテスト] - [ ] [実施予定のテスト(レビュー時に確認)] ``` ### 5. ユーザー確認 PR情報をユーザーに提示し、「はい」「OK」「作成して」などの許可を得てください。 **重要**: ユーザーの許可なしにPRを作成しないでください。 ### 6. PR作成 ユーザーの許可を得てから、以下のコマンドでPRを作成します: ```bash # hotfix/* ブランチの場合のみ gh pr create --base main --title "タイトル" --body "$(cat <<'EOF' ## 概要 ... ## 変更点 ... ## テスト計画 ... EOF )" # その他すべて(feature/*, bugfix/*, refactor/*, chore/*, test/*, docs/*) # stagingが存在する場合 gh pr create --base staging --title "タイトル" --body "$(cat <<'EOF' ... EOF )" # stagingが存在しない場合 gh pr create --base main --title "タイトル" --body "$(cat <<'EOF' ... EOF )" ``` ### 7. PR URLの確認 PR作成後、URLをユーザーに提示します。 ## チェックリスト 実行前に確認すべき項目: - [ ] README.mdを読み込んでブランチ戦略を理解した - [ ] `git branch -a`で利用可能なブランチを確認した - [ ] 変更が既にコミット・プッシュされている - [ ] test・linterを実行し、全て成功したことを確認した - [ ] ベースブランチを正しく選択した(`staging`が存在する場合は`staging`、存在しない場合やhotfixの場合は`main`) - [ ] PR情報をユーザーに提示し、許可を得た - [ ] PR本文に「概要」「変更点」「テスト計画」を含めた ## よくある間違い ❌ **間違い**: testが失敗しているのにPRを作成 ✅ **正解**: test・linterが全て成功してからPR作成 ❌ **間違い**: ユーザーの許可なしにPRを作成 ✅ **正解**: 必ずPR情報を提示してユーザーの許可を得る ❌ **間違い**: `git branch -a`でブランチを確認せずに決め打ちでベースブランチを指定 ✅ **正解**: 必ず`git branch -a`で利用可能なブランチを確認してから指定 ❌ **間違い**: PR作成時にベースブランチを指定しない(デフォルトはmainになる) ✅ **正解**: 必ず`--base staging`または`--base main`を明示的に指定 ❌ **間違い**: `staging`が存在しないプロジェクトで`--base staging`を指定 ✅ **正解**: `git branch -a`で確認し、存在しない場合は`--base main`を指定 ## 使用例 ### 例1: 新機能追加の場合(stagingあり) **ステップ1**: ブランチ確認 ```bash git branch -a # staging が存在することを確認 ``` **ステップ2**: Test・Linter実行 ```bash npm test npm run lint # 全てのテストが成功したことを確認 ``` **ステップ3**: PR情報をユーザーに提示 ``` 以下の内容でPRを作成してよろしいですか? ベースブランチ: staging タイトル: [変更内容を簡潔に表現] 本文: ## 概要 [変更の目的と背景] ## 変更点 - [具体的な変更内容] ## テスト計画 - [x] [実施済みのテスト] - [ ] [実施予定のテスト] ``` **ステップ4**: ユーザーの許可を待つ **ステップ5**: 許可後にPR作成 ```bash gh pr create --base staging --title "ユーザー検索機能を追加" --body "$(cat <<'EOF' ## 概要 ユーザー一覧画面に検索機能を追加しました。 ## 変更点 - 名前・メールアドレスでの検索に対応 - ページネーション実装 - 検索条件の保持機能追加 ## テスト計画 - [x] 単体テスト実施 - [x] 検索機能の動作確認 - [ ] レビュー後に結合テスト実施 EOF )" ``` ### 例2: ドキュメント更新の場合(stagingなし) **ステップ1**: ブランチ確認 ```bash git branch -a # stagingが存在しないことを確認 ``` **ステップ2**: Test・Linter実行 ```bash # ドキュメントのみの変更の場合、testがなければスキップ # 構文チェックなどがあれば実行 ``` **ステップ3**: PR情報をユーザーに提示 ``` 以下の内容でPRを作成してよろしいですか? ベースブランチ: main タイトル: [変更内容を簡潔に表現] 本文: ## 概要 [変更の目的と背景] ## 変更点 - [具体的な変更内容] ## テスト計画 - [x] [実施済みのテスト] - [ ] [実施予定のテスト] ``` **ステップ4**: ユーザーの許可を待つ **ステップ5**: 許可後にPR作成 ```bash gh pr create --base main --title "ユーザー検索機能を追加" --body "$(cat <<'EOF' ## 概要 ユーザー一覧画面に検索機能を追加しました。 ## 変更点 - 名前・メールアドレスでの検索に対応 - ページネーション実装 - 検索条件の保持機能追加 ## テスト計画 - [x] 単体テスト実施 - [x] 検索機能の動作確認 - [ ] レビュー後に結合テスト実施 EOF )" ``` ## PRのマージ(ユーザーから指示があった場合) ```bash gh pr merge <PR番号> --merge --delete-branch ``` **注意**: プロジェクトでは**Merge commit**を使用します(Squash mergeは使用しない)。