GitHub Issueの確認事項(最後のコメント・descriptionの両方)を、コードベース・ドキュメント・そこから参照されている外部リンク(仕様書・ライブラリ公式ドキュメント等)まで調査し、根拠に基づいた回答をコメントに追記するスキル。調査しても事実で決まらず人間の意思決定が必要な項目は、固定セクションで明示して後続のトリアージへ引き渡す。
create-pr
GitHubでPull Request(PR)を作成します。PRのdescriptionには指定されたテンプレートを使用し、必要な情報を記載します。PR作成後、PRのURLを報告します。
インストール方法を見る含まれるファイル(1)
- SKILL.md9.3 KB
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Create Pull Request
GitHubでPull Request(PR)を作成するスキルです。Instructionsに従ってPRを作成してください。
Instructions
GitHub アクセス
本スキルの GitHub 参照/更新は gh コマンドを優先し、gh が使えない場合に GitHub MCP へフォールバックする(本文中の gh コマンド例はそのまま第一手段として読む)。クラウド実行時のみ優先順位が逆転して GitHub MCP が第一手段になるが、その指示は起動プロンプトで渡されるので、指示が無ければローカル実行として扱う。判定手順・gh ↔ MCP の対応表・MCP に代替が無い操作は ${CLAUDE_PLUGIN_ROOT}/references/github-access.md を参照する。
ステップ0: Issue番号の確定
引数($ARGUMENTS)から Issue 番号を取り出し、以降のすべてのステップで ${ISSUE_NUMBER} を使う。
ISSUE_NUMBER=$(printf '%s' "$ARGUMENTS" | grep -oE '[0-9]+' | head -1)
先頭トークンを指すプレースホルダを直接使わないこと。呼び出し元が
Issue #1948 の実装PRを作成してください。ブランチ: ... のような自然文を渡すと
先頭トークンは Issue になり、Closes #Issue という壊れた本文が生成されて
マージしてもIssueが自動クローズされない(セッションログの実測で 392 件中 15 件発生し、
Closes 行が欠落したPRが実際に作られている)。呼び出し元はIssue番号だけを渡す規約だが、
本スキル側で数字を抽出して壊れないようにする。
数字が1つも取れない場合は ISSUE_NUMBER を空のままにし、後続のステップは
「Issue番号が渡されなかった場合」として扱う(ベースブランチはステップ2以降で決定し、
Closes 行は書かない)。
PR作成ルール
- PRのdescriptionのテンプレートは
.github/PULL_REQUEST_TEMPLATE.mdを参照し、それに従うこと - テンプレート内でコメントアウトされている箇所は必ず削除すること
- PRのdescriptionには
Closes #${ISSUE_NUMBER}と記載すること(ISSUE_NUMBERが空の場合はCloses行を書かない) - 実行中のユーザー(
@me)をAssigneesに追加すること - PRのベースブランチは「ベースブランチの決定」の手順で決定したブランチにすること
- PRに
cc-triage-scopeラベルを付与すること - PRの作成は「Command Examples」の
gh-compat.sh create-prだけで行う(ローカル・クラウドとも)。gh pr createと GitHub MCP のcreate_pull_requestは使わない。gh pr createは GraphQL 経由でクラウドでは 403 になり、create_pull_requestには labels / assignees の引数自体が無いため、Assignee とcc-triage-scopeが欠落する(triage-prはこの2つで PR を拾うので、欠けた PR は放置される)
ベースブランチの決定
ベースブランチは以下の優先順で決定する。必ず 1 → 2 → 3 の順に試すこと。
- Epicブランチの確定的導出: Issue
${ISSUE_NUMBER}が parent(Epic Issue)を持つ場合、cc-epic-<parent番号>をベースにする - upstream(追跡ブランチ)からの確定的導出: 現在のブランチの upstream が origin の別ブランチを指している場合、それをベースにする(ワーカーが worktree 作成時に
--trackで分岐元を記録している) - 分岐元ブランチの推定(fallback): 1・2 のいずれでも決まらない場合のみ、merge-base距離で分岐元を推定する
1. Epicブランチの確定的導出
サブIssue(parentを持つIssue)の作業ブランチは cc-epic-<parent番号> から派生しているため、PRも同ブランチへ向ける。後述のmerge-base推定は同点タイブレークで誤ったepicブランチを選ぶことがあるため、parentからの確定的導出を必ず先に試す。
git fetch origin --prune
BASE_BRANCH=""
# Issue 番号を取り出せた場合のみ実行
if [ -n "${ISSUE_NUMBER}" ]; then
# parent の取得が失敗した場合はエラーを報告して中断
# `gh issue view --json parent` は GraphQL 経由でクラウドでは 403 になるため、REST を第一手段にする
PARENT=$(bash ${CLAUDE_PLUGIN_ROOT}/scripts/gh-compat.sh issue-parent "${ISSUE_NUMBER}") || {
echo "Error: Failed to retrieve Issue #${ISSUE_NUMBER}" >&2
exit 1
}
if [ -n "${PARENT}" ] && git rev-parse --verify --quiet "refs/remotes/origin/cc-epic-${PARENT}" >/dev/null; then
BASE_BRANCH="cc-epic-${PARENT}"
fi
fi
Issue番号を取り出せなかった場合(ISSUE_NUMBER が空)は本ステップをスキップし、BASE_BRANCH を空のままステップ2へ進む。Issue番号が指定されているが parent の取得に失敗した場合(ネットワークエラー・権限不足等)はエラーメッセージを出力して処理を中断する。
2. upstream(追跡ブランチ)からの確定的導出
ワーカーは worktree 作成時に git worktree add --track で分岐元ブランチを upstream として記録している(例: デフォルトブランチ由来なら origin/main、epic 由来なら origin/cc-epic-<N>)。手動で git checkout -b <branch> origin/<base> した場合も既定で同じ upstream が付く。これは「どのブランチから派生したか」の確定情報なので、merge-base 推定より必ず先に使う。
if [ -z "${BASE_BRANCH}" ]; then
CURRENT=$(git rev-parse --abbrev-ref HEAD)
UPSTREAM=$(git rev-parse --abbrev-ref --symbolic-full-name '@{upstream}' 2>/dev/null || true)
UPSTREAM=${UPSTREAM#origin/}
# upstream が未設定・自分自身(push -u した作業ブランチ)・origin に実在しない場合は採用しない
if [ -n "${UPSTREAM}" ] && [ "${UPSTREAM}" != "${CURRENT}" ] \
&& git rev-parse --verify --quiet "refs/remotes/origin/${UPSTREAM}" >/dev/null; then
BASE_BRANCH="${UPSTREAM}"
fi
fi
3. 分岐元ブランチの推定(fallback)
「現在のブランチの分岐元ブランチ」は、リモートトラッキングブランチ(refs/remotes/origin/配下)のうち、現在のブランチ自身を除き、HEADから最も近い merge-base を持つものとして推定する。Epic ブランチや任意の中間ブランチから派生した作業ブランチでも、その派生元へPRを向けられるようにするための仕組み。
距離が同点の場合はデフォルトブランチを最優先すること。デフォルトブランチと同一コミットを指すブランチ(作成直後の epic ブランチや並行タスクのPRブランチ)が存在すると距離が同点になり、単純なアルファベット順タイブレークでは origin/cc-epic-* が origin/main より先に来て無関係な epic ブランチがベースに選ばれるため。
if [ -z "${BASE_BRANCH}" ]; then
DEFAULT_BRANCH=$(bash ${CLAUDE_PLUGIN_ROOT}/scripts/gh-compat.sh default-branch)
CURRENT=$(git rev-parse --abbrev-ref HEAD)
BASE_BRANCH=$(
git for-each-ref --format='%(refname:short)' refs/remotes/origin/ |
grep '^origin/' | grep -v '^origin/HEAD$' |
while read b; do
[ "$b" = "origin/${CURRENT}" ] && continue
mb=$(git merge-base "$b" HEAD 2>/dev/null) || continue
[ -n "$mb" ] || continue
dist=$(git rev-list --count "${mb}..HEAD" 2>/dev/null) || continue
if [ "$b" = "origin/${DEFAULT_BRANCH}" ]; then pref=0; else pref=1; fi
echo "$dist $pref $b"
done | sort -k1,1n -k2,2n -k3,3 | head -1 | awk '{print $3}' | sed 's|^origin/||'
)
# 候補が見つからない場合(孤立ブランチ等)はデフォルトブランチに fallback する
if [ -z "${BASE_BRANCH}" ]; then
BASE_BRANCH="${DEFAULT_BRANCH}"
fi
fi
同点時の優先度はデフォルトブランチ → refname のアルファベット順。期待しないブランチがベースに選ばれた場合は --base を明示的に指定して上書きする。
Command Examples
gh-compat.sh create-pr は REST で PR を作成し、続けてラベルと Assignee を付けて PR の URL を出力する(head は現在のブランチ)。本文は --body-file - + heredoc(<<'EOF' でシェル展開を抑止)で渡すので、${ISSUE_NUMBER} などは heredoc に渡す前に実値へ置換しておくこと。
bash ${CLAUDE_PLUGIN_ROOT}/scripts/gh-compat.sh create-pr \
--title "PRタイトル" \
--base "${BASE_BRANCH}" \
--label "cc-triage-scope" \
--assignee "@me" \
--body-file - <<'EOF'
Closes #<ISSUE_NUMBER>
PRの本文
EOF
非0で終わっても URL が出力されていれば PR は作成済み(ラベルか Assignee の付与だけが失敗している)。PR を作り直さず、gh-compat.sh add-label <PR番号> cc-triage-scope / gh-compat.sh add-assignee <PR番号> @me を1回ずつ再実行する。
レビュー
まだレビューはありません。使ってみた感想をお寄せください。
同じリポジトリのスキル
概要と使いどころ
Write the merged Pencil design reference back into a UI implementation Issue's description. Takes the Issue number as argument, resolves the merged design PR on the `cc-ui-design-<Issue number>` branch, collects the `.pen` and snapshot paths it added, and appends (or replaces) the `## UIデザイン` section at the end of the Issue body using a lost-update-safe edit.
依頼された内容(自然言語の説明、または既存のIssue番号)を要件とTODOに分解し、タスクごとにGitHub Issueを作成するスキル。タスクの整理・分解、複数Issueの一括作成、依存関係の明示が必要な場合に使用する。「この機能をIssueに分けて」「タスクを洗い出してIssueにして」「PRDのIssue #123 を分解して」といったリクエストで発動する。
claude-task-worker のカスタムワーカー(`workerFiles` に登録する TS 定義)を、`AskUserQuestion` で要件を全項目確定させてから生成し、`claude-task-worker list-workers` でロード検証までするスキル。「カスタムワーカーを作って」「独自のワーカーを追加したい」「新しいラベルで動くワーカーを定義したい」といったリクエストで使用する。
claude-task-workerプラグインのバージョンをインクリメントし、commit-pushでコミット・プッシュしたうえでPRを作成する。引数で `major` / `minor` / `patch` を受け取り、対応する部分をインクリメントする(省略時は `patch`)。「バージョンを上げて」「バージョンアップ」「bump version」「メジャーバージョンを上げて」などのリクエストで使用する。
指定されたPR番号のDependabot PRを確認し、依存ライブラリのバージョンアップ内容をCHANGELOGとcontext7から取得して、コード修正が必要かを判定します。修正が必要な場合は修正を行い、pushまで実施します。