pr
Pull Request creation flow based on GitHub flow. Use whenever the user wants to open a PR, create a pull request, "PR を作って", merge feature work into main, or prepare changes for review. The skill walk
SKILL.md.claude/skills/pr/SKILL.md
GitHubPR Creation Flow (GitHub flow)
GitHub flow ベースの Pull Request 作成スキル。main が常にデプロイ可能な唯一の長命ブランチで、すべての変更は短命の feature / fix ブランチから main への PR としてマージされる。
Branch Strategy
feature/<topic> → main # 新機能・改善
fix/<topic> → main # バグ修正・hotfix(緊急かどうかは関係なく fix で統一)
ブランチ名の命名は短く、目的が読み取れる単語にする(例: feature/dvc-data-control, fix/replay-loser-obs-fields)。 release / develop / hotfix といった長命ブランチは存在しない。リリースは main から直接タグを打って行う(release-tag skill を参照)。
Steps
1. Check Commit History
PR の中身を頭に入れるために、本ブランチが main から派生して以降のコミットを見る。
git log --oneline main..HEAD
git log --graph --oneline main..HEAD
差分も把握しておく:
git diff --stat main..HEAD
2. Verify Branch and Remote State
ブランチ名が feature/* または fix/* であること、リモートに push されていることを確認する。未 push なら最初に push する:
git branch --show-current
git push -u origin "$(git branch --show-current)"
3. Prepare the PR Body
リポジトリのテンプレを使う。既存テンプレに無理に skill 独自セクションを足すと書式が崩れるので、そのままコピーして埋める:
cp .github/PULL_REQUEST_TEMPLATE.md tmp-pull-request-template.tmp
tmp-pull-request-template.tmp を開き、各セクションを以下の流儀で埋める:
- 概要: なぜこの PR が必要か、1〜3 行
- 変更内容: 「変更したファイル」ではなく「読み手が把握しておくべき変化」を箇条書き。コミット単位ではなく論理単位でまとめる
- コメント: レビュアーへの注意点、レビュー観点、後続作業など補足
4. Pick a Label
ラベルは PR の性質を一目で示すために付ける。既存のラベルから選ぶ:
gh label list
迷ったら以下を目安に:
- 機能追加:
enhancement/feature - バグ修正:
bug/fix - リファクタ:
refactor - ドキュメント:
documentation
リポジトリにそのラベルが無ければ --label を省く(無理に作らない)。
5. Create the Pull Request
main を base にして PR を作成する。タイトルは「変更の主旨が独立して読める一文」にする:
gh pr create \
--base main \
--head "$(git branch --show-current)" \
--title "<変更の主旨が読み取れる短いタイトル>" \
--body-file tmp-pull-request-template.tmp \
--assignee @me \
--label "<選んだラベル>"
複数ラベルなら --label を複数回繰り返す。
6. Cleanup
rm tmp-pull-request-template.tmp
PR Template (repo 実体)
.github/PULL_REQUEST_TEMPLATE.md の中身は以下のとおり。skill 内では独自テンプレを定義せず、これをそのまま使う:
#### 概要
#### 変更内容
#### コメント
Commit Message Format
タイトルは絵文字 + 簡潔な説明。本文は必要に応じて追加。
:<emoji>: <description>
<optional body>
| Emoji | Code | Type |
|---|---|---|
| ✨ | :sparkles: |
feat |
| 🐛 | :bug: |
fix |
| ♻️ | :recycle: |
refactor |
| 📚 | :books: |
docs |
| ✅ | :white_check_mark: |
test |
| 🔧 | :wrench: |
chore |
| ⚡ | :zap: |
perf |
| 👷 | :construction_worker: |
ci |
| 🔥 | :fire: |
remove |
| 🎨 | :art: |
style |
Notes
- マージ方式は squash merge を既定 とする(main の履歴を線形に保つため)。リポジトリ設定で squash がデフォルトになっていればそれに従い、わざわざ override しない
- PR は 小さく、1 トピック 1 PR を心がける。複数の関心が混ざっていたらコミットを分けて 2 本に切る方が良い
- レビュー前に
dev/test-backend等の CI 相当チェックをローカルで通しておくと往復が減る - マージ済みの feature / fix ブランチは GitHub 側で削除して構わない(
gh pr merge --delete-branchまたは UI から)
Language
すべてのユーザーへの出力、PR タイトル、PR 本文、コミットメッセージは 日本語 で書く(リポジトリ規約)。