skills/plan-epic/SKILL.md
CEO が指定したテーマを複数の子タスクに分解し、親 Issue(エピック)と子 Issue を一括起票して GitHub 公式の sub-issue API で親子関係を構築する。full プリセット専用。 「/plan-epic」「エピック化」「Issue を分解して」と言った時に使用。
npx skillsauth add hirokimry/vibecorp plan-epicInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
[!IMPORTANT] full プリセット専用。CEO が指定したテーマを子タスクに分解し、親 Issue(エピック)+ 子 Issue 群を一括起票して GitHub 公式 sub-issue API で親子関係を構築する。 コード変更は一切行わない(起票と紐付けのみ)。子 Issue 実装は
/vibecorp:shipで別途実行する。 結果のみを簡潔に返す。途中経過は出力しない。
CEO が「このテーマをエピック化して」と依頼した時、plan mode で子タスク分解を提示し、承認後に親 Issue + 子 Issue 群を一括起票する。子 Issue は GitHub 公式 sub-issue API で親に紐付ける。
親 Issue・子 Issue のタイトル・本文は CEO が読むため .claude/rules/communication.md に従って 動作主語 で書く(「〜になった/〜できるようになった」)。関数名・ファイルパスを並べるのではなく、ソフトウェアのふるまいの変化を 30 秒で掴める形にする。
/vibecorp:plan-epic <テーマ> # plan mode で分解 → 親+子 Issue 起票 → sub-issue 紐付け
/vibecorp:plan-epic <テーマ> --dry-run # 分解と起票プレビューのみ(実際には起票しない)
<テーマ> が省略された場合は CEO にヒアリングする。
/vibecorp:issue が full プリセットの判定機能を要求する)gh) が認証済みであることvibecorp.yml の preset を確認する。full 以外の場合は以下を出力して終了する:
/vibecorp:plan-epic は full プリセット専用です。現在のプリセット: <preset>
awk '/^preset:/ { print $2 }' "$CLAUDE_PROJECT_DIR/.claude/vibecorp.yml"
引数でテーマが渡されていない場合は CEO に確認する。
EnterPlanMode でプラン mode に入り、テーマを以下の観点で子タスクへ分解する。
分解結果を以下のフォーマットで CEO に提示する。
## 🎯 エピック: <テーマ>
### 📦 子タスク
| # | タイトル | 概要 | 依存 |
|---|---------|------|------|
| 1 | <子1> | <概要> | — |
| 2 | <子2> | <概要> | #1 |
| 3 | <子3> | <概要> | — |
### 🗺️ 実装順序
- 並行実装可能: <子1>, <子3>
- 直列: <子2>(<子1> 完了後)
ExitPlanMode で承認待ちにする。CEO が承認しなかった場合は終了する。
承認後、親 Issue を gh issue create で直接起票する。
🎯 epic: <テーマ>epic(リポジトリに存在する場合のみ付与)## 🎯 エピック概要
<テーマと背景>
## 📦 子 Issue(実装は /vibecorp:ship で別途)
- [ ] #<子1番号>
- [ ] #<子2番号>
- [ ] #<子3番号>
## ✅ 完了基準
<エピック全体の完了条件>
## 📍 関連ファイル
<!-- エピック全体で触れるファイル・モジュールのパス一覧(relevant file locations)。 -->
<!-- Anthropic 公式推奨の初回プロンプト 4 要素のうち relevant file locations を起票時点で揃える。 -->
- `<対象ファイル 1>`
- `<対象ファイル 2>`
---
この Issue は /vibecorp:plan-epic により起票されました。
子 Issue 番号は次のステップで決まるため、起票時点では空のチェックリスト(後段で更新)にしてもよい。実装上は「子 Issue 起票完了 → 親 Issue 本文を gh issue edit で更新」の順で構わない。
gh issue create --title "🎯 epic: <テーマ>" --body "<本文>" --label "epic"
epic ラベルがリポジトリに存在しない場合は --label を省略する(gh label list で確認)。
親エピックの feature ブランチを作成し、origin に push する。/ship が git ls-remote で自動検出するために必要。
5-1. default branch を取得:
gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name'
5-2. ブランチを作成して push:
git switch -c "feature/epic-<親番号>_<要約>" "origin/<default_branch>"
git push -u origin "feature/epic-<親番号>_<要約>"
feature/epic-{親Issue番号}_{要約} 形式(docs/specification.md のブランチ命名規約に準拠)<要約> は親 Issue タイトルからスラッシュ・スペースを _ に置換し、英数字・アンダースコア・ハイフンのみにサニタイズする/ship の git ls-remote --heads origin "feature/epic-<親番号>_*" で確実に検出されるステップ 3 で分解した子タスクを 1 件ずつ /vibecorp:issue スキル経由で起票する。
子タスクの本文末尾に親エピックへの参照として Refs #<親番号> を必ず含める。Closes ではなく Refs を使うことで、子 PR がマージされても親エピックは auto-close されず、/vibecorp:release-epic のリリース PR で最終的に close される(Refs #<親エピック番号> 形式も等価)。
/vibecorp:issue を使って以下の子 Issue を起票してください:
タイトル: <子タスクのタイトル>
本文: <子タスクの本文>
---
## 📍 関連
Refs #<親エピック番号>
/vibecorp:issue の 3 者承認ゲート(CISO + CPO + SM)が自動で走るCloses #N / Refs #N の運用は .claude/rules/workflow.md「PR 本文の Issue リンク(auto-close キーワード)」を参照各子 Issue を GitHub 公式の sub-issue API で親 Issue に紐付ける。
gh api \
--method POST \
-H "Accept: application/vnd.github+json" \
"/repos/<owner>/<repo>/issues/<親番号>/sub_issues" \
-f sub_issue_id=<子の数値ID>
<owner>/<repo> は gh repo view --json owner,name --jq '.owner.login + "/" + .name' で取得<子の数値ID> は gh issue view <子番号> --json id --jq '.id' で取得(issue 番号ではなく内部 ID が必要)公式仕様: https://docs.github.com/en/rest/issues/sub-issues
親 Issue の本文のチェックリストを実際の子 Issue 番号に書き換える。
gh issue edit <親番号> --body "<更新後の本文>"
## /vibecorp:plan-epic 完了
### 🎯 親 Issue(エピック)
- <親 URL>: <タイトル>
### 📦 子 Issue
| # | タイトル | URL | sub-issue 紐付け |
|---|---------|-----|------------------|
| 1 | <子1> | <URL> | ✅ |
| 2 | <子2> | <URL> | ✅ |
| 3 | <子3> | <URL> | ⚠️ 失敗(要手動紐付け) |
### サマリ
- 起票: <親1 + 子N> 件
- スキップ(3 者承認ゲートで除外): <n> 件
- sub-issue 紐付け失敗: <n> 件
以下の状況では CEO に報告して判断を委ねる(自動でスキップしない)。
| 状況 | タイミング | |------|-----------| | full プリセットでない | ステップ 1 | | CEO が plan を承認しない | ステップ 3 | | 子 Issue 起票で 3 者承認ゲートが「除外」と判定 | ステップ 6 | | sub-issue API がエラーを返した | ステップ 7 | | gh CLI が認証されていない | 全ステップ共通 |
--dry-run が指定された場合は以下のみ実行する。
ステップ 4 以降の起票・ブランチ作成・API 呼び出しは行わない。
/vibecorp:ship で別途起動する(本スキルでは ship を呼ばない)。--force / --hard / --no-verify は使用しない。\(...) を使わない — Bash 上で \ がエスケープ文字、() がサブシェルとして解釈されパースエラーを引き起こす。必ず + で結合する。2>/dev/null / || echo / ; echo 等のリダイレクトやフォールバックを付加しない(根拠)。/vibecorp:issue のゲートに依存する。| 種別 | 参照先 |
|------|--------|
| 設計判断 | .claude/knowledge/cpo/decisions/2026-Q2.md 2026-04-18 「Issue 親子関係: 条件付き Go」 |
| GitHub sub-issue API | https://docs.github.com/en/rest/issues/sub-issues |
| 自律実行不可領域 | .claude/rules/autonomous-restrictions.md |
| CEO 向け文面規約 | .claude/rules/communication.md |
| プロンプト作成基準 | .claude/rules/prompt-writing.md |
| マークダウン規約 | .claude/rules/markdown.md |
| 関連スキル | /vibecorp:issue(子 Issue 起票)/ /vibecorp:ship(子 Issue 実装)/ /vibecorp:release-epic(親エピック close) |
data-ai
skills/**/SKILL.md 内に embed された 5 行以上のエージェント呼出プロンプトテンプレ・長文ブロックを .claude/rules/notification-prompt-extraction.md 基準で skills/<skill>/prompts/<name>.md に切り出す migration skill。「/prompts-extract-all」「プロンプト切り出し」「プロンプト extract」「SKILL.md プロンプト migration」と言った時に使用。検出は awk でフェンスコードブロックを抽出して行数カウント、要否判定は LLM が閾値・用途軸・命名規約と照合。diff 提案 → CEO 承認 → 書換の 2 段階で挙動を壊さず適用する。自動マージ禁止、自律ループ対象外。
documentation
.github/workflows/**/*.{yml,yaml} の --body 通知文と hooks/**/*.sh の長文 echo/printf/heredoc を .claude/rules/notification-prompt-extraction.md 基準で個別 .md ファイルに切り出す migration skill。「/notifications-extract-all」「通知文切り出し」「通知文 extract」「workflow 通知 migration」と言った時に使用。検出は grep で機械絞り込み、要否判定は LLM が閾値・命名規約と照合。diff 提案 → CEO 承認 → 書換の 2 段階で挙動を壊さず適用する。自動マージ禁止、自律ループ対象外。
development
`**/*.sh` / `**/*.js` / `**/*.ts` / `**/*.py` / `**/*.rb` / `**/*.go` / 設定ファイル等のコード内コメントを一括棚卸しし、 `.claude/rules/code-comments.md` と機械的に照合する。 diff 提案 → CEO 承認 → 書換の 2 段階で自動マージを禁じる。 生成コード・`node_modules`・`vendor`・`dist`・`build` 等は除外する。 「/vibecorp:comments-rewrite-all」「コメント全書き直し」「コード内コメント棚卸し」 と言った時に使用。
development
skills/**/SKILL.md・agents/*.md・.claude/rules/*.md を .claude/rules/prompt-writing.md 基準で一括書き直し提案するスキル。「/prompts-rewrite-all」「プロンプト書き直し」「スキル一括書き直し」「エージェント書き直し」と言った時に使用。claude-code-guide サブエージェントで Claude Code 公式仕様(docs.claude.com)を確認し、prompt-writing.md の指針 MUST / 禁止パターンと照合する。diff 提案 → CEO 承認 → 書き換えの 2 段階で挙動を壊さず適用する。自動マージ禁止。