GitHub Issueの確認事項(最後のコメント・descriptionの両方)を、コードベース・ドキュメント・そこから参照されている外部リンク(仕様書・ライブラリ公式ドキュメント等)まで調査し、根拠に基づいた回答をコメントに追記するスキル。調査しても事実で決まらず人間の意思決定が必要な項目は、固定セクションで明示して後続のトリアージへ引き渡す。
create-epic-pr
Create an aggregated Epic PR from a `cc-epic-<Issue number>` branch to the default branch. Takes the Epic Issue number as argument, assumes sub-PRs have already been merged into the epic branch, and automatically generates the PR title and description from the commit log against the base branch (including sub-PR / sub-Issue references). The PR is posted via `gh pr create` with no label and `Closes #<Epic Issue>`.
インストール方法を見る含まれるファイル(1)
- SKILL.md9.4 KB
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Create Epic Pull Request
引数の Epic Issue 番号 $0 に対応する cc-epic-$0 ブランチ(複数サブIssueの実装PRをまとめてマージする集約用ブランチ)から、デフォルトブランチへの集約PR(Epic PR)を作成するスキル。呼び出し時点でサブPRはすべて epic ブランチへマージ済みが前提(本スキルは epic ブランチも個別コミットも作らない)。ベースブランチとの差分コミットログからPR descriptionを自動生成し、gh pr create で投稿する。
ユーザーへの確認は行わず、判断はすべて本スキル内のルールで自動決定する。中断条件に該当した場合のみ、理由を出力して終了する。
Instructions
GitHub アクセス
本スキルの GitHub 参照/更新は gh コマンドを優先し、gh が使えない場合に GitHub MCP へフォールバックする(本文中の gh コマンド例はそのまま第一手段として読む)。クラウド実行時のみ優先順位が逆転して GitHub MCP が第一手段になるが、その指示は起動プロンプトで渡されるので、指示が無ければローカル実行として扱う。判定手順・gh ↔ MCP の対応表・MCP に代替が無い操作は ${CLAUDE_PLUGIN_ROOT}/references/github-access.md を参照する。
実行モードの制約
本スキル固有のリスク: 本スキルは claude-task-worker の epic-issue ワーカー(cc-epic-issue ラベル)から自動起動され、ワーカーはスキルプロセスの同期完了を根拠にラベル遷移や後続処理を進める。処理が未完のままターンを終えると、PR URL 未取得のまま報告されたり、Epic PR 未作成のまま cc-epic-issue が外れる状態壊れが起きる。
フェーズ0: 引数判定と事前チェック
0-1. 引数の妥当性確認
$0 が数値のみのIssue番号であること(例: 123)を確認する。引数が空、または数値以外を含む場合は中断する。以降、$0 をそのままIssue番号として扱う。
0-2. Epic Issueの存在確認
GitHub MCP が使える場合は
issue_read(method:get)を使う。以下は MCP 利用不可時のフォールバック。
gh issue view $0 --json number,title,state,url
Issueが存在しない、または state が CLOSED の場合は中断する。title は後続のPRタイトル生成、url は最終報告で使うため保持する。
0-3. 作業ディレクトリと未コミット変更の確認
pwd でカレントを確認する。git status --short で未コミット変更があれば中断する。本スキルはコードを編集しないため、未コミット変更はユーザーの作業中ファイルの可能性が高く、退避操作も行わない。
0-4. デフォルトブランチ名の取得
リポジトリ情報の単独取得ツールが MCP に無いため gh-compat.sh default-branch(REST優先・失敗時のみ gh へフォールバック)を使う。
bash ${CLAUDE_PLUGIN_ROOT}/scripts/gh-compat.sh default-branch
失敗した場合は中断する。取得した値を <BASE> と呼ぶ。
完了条件: $0 / Epic Issueタイトル / <BASE> が確定し、未コミット変更が無いこと。
フェーズ1: epicブランチへのチェックアウト
1-1. リモートからの最新取得
git fetch origin --prune
1-2. ブランチの特定とチェックアウト
対象ブランチ名は cc-epic-$0。以下の優先順で処理する:
- リモートに存在する場合(
git rev-parse --verify origin/cc-epic-$0が成功):git checkout cc-epic-$0(ローカルに無ければ自動で tracking branch が作られる)→git pull --ff-only origin cc-epic-$0で最新化。ff-only 失敗時は中断 - ローカルのみに存在する場合(リモートに無く、
git rev-parse --verify cc-epic-$0が成功):git checkout cc-epic-$0 - どちらにも存在しない場合は中断する。サブPRマージ前の早すぎる呼び出しを防ぐため、自動作成せず止める
完了条件: git rev-parse --abbrev-ref HEAD が cc-epic-$0 を返すこと。git pull は ff-only でのみ実行し、マージコンフリクトが発生した場合は手動解決を促す。
フェーズ2: ベースブランチとの差分ログ取得
2-1. merge-base から HEAD までのコミット一覧
BASE_REF=$(git merge-base origin/<BASE> HEAD)
git log ${BASE_REF}..HEAD --pretty=format:'%h%x09%s'
差分コミットが0件の場合は中断する(PR にする変更がない)。
2-2. サブPR / サブIssue 番号の抽出
各コミットメッセージから以下のパターンで PR / Issue 番号を抽出する:
Merge pull request #<番号>パターン → サブPR(#<番号>)パターン(squash merge の慣習)→ サブPRCloses #<番号>/closes #<番号>/Closed #<番号>/Fixes #<番号>/fixes #<番号>/Resolves #<番号>パターン → サブIssue
$0 自身は除外し、重複も除去する。順序はコミットログ順を維持する。
完了条件: 差分コミット一覧と、サブPR / サブIssue 番号の抽出結果が得られていること。
フェーズ3: PR 本文の生成
3-1. PR タイトル
Epic: <Epic Issueタイトル> 形式とする。
3-2. PR 本文の組み立て
以下のフォーマットで組み立てる。サブPR / サブIssue が無いセクションは省略せず「なし」と1行書く(後続レビューが「未記入」と「該当なし」を区別できるようにするため)。
## 概要
Epic Issue #$0「<Epic Issueタイトル>」に紐づくサブタスクをまとめた集約PRです。
## 含まれる変更
- `<short hash>` <subject>
- `<short hash>` <subject>
...
## 含まれるサブPR
- #<番号>
- #<番号>
(なければ "なし")
## 含まれるサブIssue
- #<番号>
- #<番号>
(なければ "なし")
Closes #$0
Closes #$0 を必ず含める(Epic PR マージ時に Epic Issue を自動 close させるため)。
フェーズ4: PR の作成(gh-compat.sh create-pr 実行)
PR の作成は gh-compat.sh create-pr だけで行う(ローカル・クラウドとも)。gh pr create は GraphQL 経由でクラウドでは 403 になり、GitHub MCP の create_pull_request は assignees の引数を持たないため Assignee が欠落する。
本文渡しは --body-file - + heredoc(<<'EOF' クォート版)を使う。--body "..." 形式は本文中のバッククォート・$・改行でエスケープが壊れやすいため使わない。heredoc は <<'EOF' でシェル展開を抑止するため、本文中の $0 などのプレースホルダは heredoc に渡す前に実値へ置換しておくこと。head は現在のブランチ(cc-epic-$0)になる。
bash ${CLAUDE_PLUGIN_ROOT}/scripts/gh-compat.sh create-pr \
--title "Epic: <Epic Issueタイトル>" \
--base "<BASE>" \
--head "cc-epic-$0" \
--assignee "@me" \
--body-file - <<'EOF'
## 概要
Epic Issue #$0「<Epic Issueタイトル>」に紐づくサブタスクをまとめた集約PRです。
## 含まれる変更
- `<short hash>` <subject>
...
## 含まれるサブPR
- #<番号>
...
## 含まれるサブIssue
- #<番号>
...
Closes #$0
EOF
ラベルは付与しない(--label フラグを使わない)。
URL が出力されずに失敗した場合は失敗ログを最終報告に含めて終了する。再試行は1回まで。URL が出力されたうえで非0の場合は PR 作成済みで Assignee の付与だけが失敗しているので、PR を作り直さず gh-compat.sh add-assignee <PR番号> @me を1回だけ再実行する。
フェーズ5: 最終報告
gh pr create が返した PR URL と、以下を1-3行で報告して終了する:
- ブランチ名(
cc-epic-$0) - 差分コミット数
- 含まれたサブPR / サブIssue の件数
中断条件
以下のいずれかに該当する場合のみ、理由を1-2行で出力して即中断する。
- 引数が空、または Issue 番号として解釈できない
gh issue viewで Issue が見つからない、またはCLOSED- 未コミット変更が存在する
- デフォルトブランチ名の取得失敗
cc-epic-$0ブランチがローカル / リモートのいずれにも存在しないgit pull --ff-onlyが ff-only で失敗(ローカルとリモートの乖離)- ベースブランチとの差分コミットが0件
gh pr createが失敗し、再試行しても解消しない
レビュー
まだレビューはありません。使ってみた感想をお寄せください。
同じリポジトリのスキル
概要と使いどころ
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まで実施します。