Section 4: 自作 Claude スキルによる、プルリク作成提案
使うツール: /pr-create スキル
目的
- PR の真面目に書こうとすると意外と時間がかかる
- テンプレートを毎回埋める作業をAIにやらせて効率化する
- レビュアーに渡す前に自分のコミットをAIが読み、要約する
完成形
- フィーチャーブランチで作業完了
/pr-createを実行- AI が
git log base..HEADとgit diff base...HEADを読み、PRを提案 - 承認して
gh pr createを実行 - PR が open されると、Section 3 で設定した Gemini Code Assist が自動でレビューコメントを投稿する
手順
1. スキル登録
以下の内容で ~/.claude/skills/pr-create/SKILL.md を作成 (右上のコピーボタン)。
mkdir -p ~/.claude/skills/pr-create
vi ~/.claude/skills/pr-create/SKILL.mdmd
---
name: pr-create
description: |
現在のブランチの変更内容を読み、PR タイトル / Summary / Test plan を生成し、
ユーザー承認後に `gh pr create` で PR を作成する。
disable-model-invocation: true
allowed-tools: Bash(gh *), Bash(git *)
argument-hint: "[base-branch] [--draft]"
---
## 起動時コンテキスト
- 現在ブランチ: !`git branch --show-current`
- リモート同期状況: !`git status -sb`
- デフォルトブランチ: !`gh repo view --json defaultBranchRef -q .defaultBranchRef.name 2>/dev/null || echo main`
- ベースからのコミット一覧: !`git log --oneline $(gh repo view --json defaultBranchRef -q .defaultBranchRef.name 2>/dev/null || echo main)..HEAD`
- ベースからの変更範囲: !`git diff --stat $(gh repo view --json defaultBranchRef -q .defaultBranchRef.name 2>/dev/null || echo main)...HEAD`
- PR テンプレート有無: !`ls .github/PULL_REQUEST_TEMPLATE.md 2>/dev/null || echo "(テンプレートなし)"`
ベースブランチは引数 `$ARGUMENTS` の有無で分岐するため、起動時コンテキストはデフォルトブランチ仮定の参考値として扱う。
## 事前チェック
1. `git branch --show-current` で現在ブランチを取得。`main` / `master` / `release/*` なら中止。
2. `gh auth status` で認証確認。
3. リモート追跡ブランチが無ければ `git push -u origin <branch>` を提案 (ユーザー承認必須)。
4. ベースブランチを決定:
- 引数 `$ARGUMENTS` のうち `--draft` 以外の最初のトークンが指定されていればそれを採用 (例: `/pr-create develop` なら `develop`、`/pr-create release/x --draft` なら `release/x`)。`git rev-parse --verify <base>` または `gh api repos/:owner/:repo/branches/<base>` で存在確認し、見つからなければユーザーに正しいブランチ名を聞き直す。
- 引数が無ければ `gh repo view --json defaultBranchRef -q .defaultBranchRef.name` の結果を採用。topic ブランチ運用の可能性があればユーザーに確認。
5. 採用するベースブランチをユーザーに 1 行で提示し、明示的に承認を取る。例: `ベースは main で進めます。よいですか?` (引数で指定された場合は `指定どおり <base> で進めます。` と短く確認する)
6. `gh pr create` 実行時は `--base <base>` を必ず付与する。
## 本文生成
1. `git log <base>..HEAD` でブランチ差分コミットを全取得。
2. `git diff <base>...HEAD` で差分を読む (長大なら `--stat` から重要ファイルだけ `diff`)。
3. 次のテンプレートで出力:
```markdown
## Summary
- <WHY を 1 行で>
- <WHAT を 1-2 行で>
- <補足があれば>
## Test plan
- [ ] <テストケース 1>
- [ ] <テストケース 2>
## 関連
- Closes #<issue>
```
4. リポジトリに `.github/PULL_REQUEST_TEMPLATE.md` があればその構造を尊重。
## 実行
- タイトルは 70 文字以内、プレフィックスは最新コミット or Conventional Commits を継承。
- 本文は必ず here-doc で渡す:
```bash
gh pr create --base <base> --title "..." --body "$(cat <<'EOF'
...
EOF
)"
```
- draft で作るかどうかはユーザーに確認 (`$ARGUMENTS` に `--draft` が含まれていれば `--draft` を付与)。
## 禁止事項
- ユーザー承認なしの PR 作成
- main / master / release/\* ブランチからの PR 作成
- PR body に `.env` や秘密情報を含めない。2. ブランチ切り替え
bash
cd svelte-todo
# 用意している練習用ブランチに切り替え
git switch -c feat/edit-todo origin/feat/edit-todo3. スキル実行
claude
/pr-create main引数にベースブランチを指定して呼び出す。 承認したらPRが作成される。
次のコマンドでPRを開く
gh pr view --web