| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| Invoke | /product:epic |
| Category | pipeline |
| Complexity | moderate |
| MCP Servers | zenhub |
/product:epic โ ์ค๊ณ๋ฅผ "ํ ์ผ ๋ชฉ๋ก"์ผ๋ก ์ชผ๊ฐ๋ ๋จ๊ณ#
ํ์ดํ๋ผ์ธ 5๋จ๊ณ(Epic Creation). ์ค๊ณ ๊ฒฐ๊ณผ๋ฌผ์ ZenHub์ ProjectยทEpicยทStory ๊ฐ์ ์ค์ ์์ ๋จ์๋ก ์ชผ๊ฐ๊ณ , ์ฐ์ ์์์ ๋ฐ๋ผ ์งํ ์์๊น์ง ์ ๋ฆฌํฉ๋๋ค.
ํ๋ง๋๋ก#
ํฐ ์ค๊ณ๋๋ฅผ ๋ณด๊ณ "์ค์ ๋ก ๋๊ฐ, ๋ฌด์์, ์ด๋ค ์์๋ก ๋ง๋ค์ง"๋ฅผ ์นด๋ ํ ์ฅ์ฉ ๋์ด ์ ๋ฆฌํ๋ ๋จ๊ณ์ ๋๋ค. ์ด์ฌ ๊ณํ์๋ฅผ ๋ณด๊ณ "ํฐ ์ง ์ฎ๊ธฐ๊ธฐ โ ๊ฐ๊ตฌ ๋ฐฐ์น โ ์ ๋ฆฌ"์ฒ๋ผ ํ ์ผ์ ์ชผ๊ฐ๊ณ ๊ธํ ์์๋๋ก ์ค ์ธ์ฐ๋ ๊ฒ๊ณผ ๊ฐ์์.
๋๊ฐยท์ธ์ ์ฐ๋์#
- ์ค๊ณ(Design) ๋จ๊ณ๊ฐ ๋๋์, ์ด์ ๊ฐ๋ฐํ ์์ (์ด์)์ ๋ง๋ค์ด์ผ ํ๋ ๊ฒฝ์ฐ
- ์ํคํ ์ฒยทUX ์ค๊ณ ๋ฌธ์๋ฅผ ์ค์ ๋ก ์๋ ์ ์๋ ์์ ์์ ๋จ์๋ก ๋๋๊ณ ์ถ์ ๋
- ์ฌ๋ฌ ๊ธฐ๋ฅ์ด ๋ฌถ์ธ ํ๋ก์ ํธ๋ผ์, Epic๋ค์ ๊ฐ์ธ๋ ์์ Project ๋จ์๊ฐ ํ์ํ ๋
๐ ์ค๋น๊ฐ ์ ๋๋ฉด ์งํํ ์ ์์ด์: ์ค๊ณ(Design) ๋จ๊ณ๊ฐ ๋๋๊ณ (Solutioning Gate ํต๊ณผ), ์ํคํ ์ฒ ๋ฌธ์ยทUX ๋ช ์ธ๊ฐ ์์ด์ผ ์์๋ฉ๋๋ค.
๋ฌด์์ ํด์ฃผ๋์#
ZenHub์ ์์ ์ด์๋ค์ด ๋ง๋ค์ด์ง๊ณ , ๊ทธ ๊ฒฐ๊ณผ๊ฐ ํ์ผ์๋ ๊ธฐ๋ก๋ฉ๋๋ค.
- ZenHub Project โ ์ฌ๋ฌ Epic์ ๊ฐ์ธ๋ ์์ ๋ฌถ์ (
--project-level๋ก ๋ง๋ค ๋, ์ด์ ๋ฒํธ ๊ธฐ๋ก) - ZenHub Epic โ ๊ธฐ๋ฅ ๋จ์์ ํฐ ์์ ๋ฉ์ด๋ฆฌ (์ด์ ๋ฒํธ ๊ธฐ๋ก)
- ์ฐ๊ฒฐ๋ Story๋ค โ Epic ์๋ ์ค์ ๋ก ๊ฐ๋ฐํ ์์ ์์ ์นด๋ ๋ชฉ๋ก (์ด์ ๋ฒํธ ๋ชฉ๋ก)
- ์ฐ์ ์์ ํ โ
.claude/docs/{feature}/zenhub/priority.md์ ์ ๋ฆฌ - ์ํ ํ์ผ ๊ธฐ๋ก โ
.pipeline/{slug}.yaml์ Project/Epic ๋ฒํธ ๊ธฐ๋ก
์ด๋ป๊ฒ ์ฐ๋์#
# ๊ธฐ๋ณธ โ ์ค๊ณ ๊ฒฐ๊ณผ๋ก EpicยทStory ์์ฑ
/product:epic
# ์ด๋ฒ ์คํ๋ฆฐํธ์ ๋ฐฐ์
/product:epic --sprint current
# ํน์ ๊ธฐ๋ฅยท์ํฐํฐ ์ง์
/product:epic --feature community --entity Post
# ์์ Project ์ด์๋ฅผ ๋จผ์ ๋ง๋ค๊ณ Epic๋ค์ ํ์๋ก ์ฐ๊ฒฐ
/product:epic --project-level
# ๊ธฐ์กด Project ์ด์์ Epic ์ฐ๊ฒฐ
/product:epic --parent-project 1024
์ฐ์ ์์ ๊ฒํ ์ ํ์ดํ๋ผ์ธ ์ ๋ ฌ์ ๊ฑด๋๋ฐ๊ณ ์ถ์ผ๋ฉด --no-sort๋ฅผ ๋ง๋ถ์ด์ธ์.
์์์ ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๋์#
์ค๊ณ ๋ฌธ์๋ฅผ ์ฝ์ด ์์ ์ ์ชผ๊ฐ๊ณ , ์ฐ์ ์์๋๋ก ์ค ์ธ์ด ๋ค ๊ฒ์๊น์ง ๋ง์นฉ๋๋ค.
- ์ฐ์ ์์ ๋จผ์ ๋งค๊ธฐ๊ธฐ โ ๋ง๋ค EpicยทStory๋ง๋ค ์์กด์ฑยท์ฌ์ ๊ฐ์นยท์ํยท์์ ๋์ ๋ฐ์ ธ p0/p1/p2 ๋ฑ๊ธ์ ์ ํฉ๋๋ค. (๋ฑ๊ธ ๋ผ๋ฒจ์ ์์ฑ ํ ๋ฐ๊ฟ ์ ์์ด ๊ฐ์ฅ ๋จผ์ ํฉ๋๋ค.) ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๊ณ ํ์ธ๋ฐ์ต๋๋ค.
- ProjectยทEpic ๋ง๋ค๊ธฐ โ ํ์ํ๋ฉด ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๊ฐ์ธ๋ Project ์ด์๋ฅผ ๋ง๋ค๊ณ , ์ํคํ ์ฒ ๋ฌธ์๋ฅผ ๋ฐํ์ผ๋ก Epic์ ๋ง๋ค์ด ์ค๊ณ ๊ฒฐ๊ณผ๋ฌผ์ ์ฐ๊ฒฐํฉ๋๋ค.
- Story ์ฐ๊ธฐ โ UX ๋ช ์ธ์์ ํ๋ฉด ๋จ์ Story๋ฅผ, ์ํคํ ์ฒ์์ ๊ธฐ์ Story๋ฅผ ๋ฝ์๋ด๊ณ , BDD ์๋๋ฆฌ์ค๋ฅผ ํฉ๊ฒฉ ๊ธฐ์ค์ผ๋ก ๋ถ์ ๋๋ค. ์คํ๋ฆฐํธ๋ ๋ฐฐ์ ํฉ๋๋ค.
- PM ๊ฒ์ โ Story ํฌ์ธํธ ์ถ์ , ๋ผ๋ฒจ๋ง, ์์กด์ฑยทํฉ๊ฒฉ ๊ธฐ์ค ์์ฑ๋๋ฅผ ์ ๊ฒํฉ๋๋ค.
- ํ์ดํ๋ผ์ธ ์ ๋ ฌ โ ์ฐ์ ์์๋๋ก Story๋ฅผ ๋ฐฐ์นํฉ๋๋ค. (P0๋ Sprint Backlog, P1์ Product Backlog, P2๋ Icebox ์์ผ๋ก.)
- Planning Gate ํต๊ณผ ํ์ธ โ ๊ณ์ธต ๊ตฌ์กฐยทํฌ์ธํธยท๋ผ๋ฒจยท์์กด์ฑยทํ์ดํ๋ผ์ธ ๋ฐฐ์น๊ฐ ๋ชจ๋ ๋ง๋์ง ์ต์ข ํ์ธํฉ๋๋ค.
๋๋๋ฉด ๋ค์์?#
์์
์ด์๋ค์ด ZenHub์ ๋ง๋ค์ด์ง๊ณ ๊ฒฐ๊ณผ๊ฐ ํ์ผ๋ก ๊ธฐ๋ก๋ ๋ค, ๋ค์ ๋จ๊ณ์ธ ๊ฐ๋ฐ(/product:develop) ๋ก ๋์ด๊ฐ๋๋ค.
์์
์ด ๊ธธ์ด ๋ํ๊ฐ ๋์ด๋ฌ๋ค๋ฉด ๋ํ๋ฅผ ๋น์ฐ๊ณ (/clear) ์๋ก ์์ํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค โ ๊ฒฐ๊ณผ๋ ํ์ผ์ ๋จ์ ์์ด ์ฌ๋ผ์ง์ง ์์ต๋๋ค.
โ๏ธ ์์ธ ์ต์ ยท์คํ ๋ช ์ธ (๊ฐ๋ฐ์ / AI ์์ด์ ํธ์ฉ)
Triggers#
- When creating development issues after Design stage completion
- When splitting architecture/UX specs into actionable work units
- When the pipeline covers multiple features โ create a Project-level issue wrapping the Epics
Usage#
/product:epic
/product:epic --sprint current
/product:epic --feature community --entity Post
/product:epic --project-level # Project ์ด์ ์์ฑ ํ Epic๋ค์ ํ์๋ก ์ฐ๊ฒฐ
/product:epic --parent-project 1024 # ๊ธฐ์กด Project ์ด์์ Epic ์ฐ๊ฒฐOptions#
| Option | Default | Description |
|---|---|---|
--sprint | None | Sprint assignment (current, next, number) |
--feature | slug | Feature name (snake_case) |
--entity | Auto-inferred | Entity name (PascalCase) |
--initiative-level | off | Create an Initiative-level issue (one level above Project) and link the Project (or Epic, if no --project-level) as a child |
--parent-initiative | None | Existing Initiative issue number to link under |
--project-level | off | Create a Project-level issue (title from .pipeline/{slug}.yaml) and link Epics as children |
--parent-project | None | Existing Project issue number to link Epics under |
--no-sort | off | Skip priority review/pipeline sorting |
Initiative/Project issue type availability is checked dynamically via
getIssueTypes()โ if the workspace has no Initiative/Project type, falls back to the next level down (Project, then Epic) top-level, with a warning.
Prerequisites#
- Design stage completed (Solutioning Gate passed)
- Architecture Doc, UX Spec artifacts exist
Execution Flow#
Phase 0: Hierarchy & Priority Review (before creation)#
Source: cc-dev-cycle
- Hierarchy decision + priority scoring
- With
--project-level: derive Project title/scope from.pipeline/{slug}.yaml - Score every Epic/Story to be created: dependency (blocker) / business value / risk / effort
- Assign tiers
p0/p1/p2โ labels are immutable after creation, so this must precede Phase 1 - Present the priority table to the user for confirmation
- With
Phase 1: Initiative/Project/Epic Creation#
Source: cc-dev-cycle
- ZenHub Initiative creation (with
--initiative-level, /zenhub:epic --initiative)- One Initiative issue wrapping the Project (or Epics directly, if no
--project-level)
- One Initiative issue wrapping the Project (or Epics directly, if no
- ZenHub Project creation (with
--project-level, /zenhub:epic --project)- One Project issue wrapping all feature Epics
- Goals, Epic list, and priority table in the Project description
- Linked to the Initiative via
parentIssueIdwhen--initiative-level/--parent-initiativeis used
- ZenHub Epic creation (/zenhub:epic)
- Structure Epic based on Architecture Doc
- Feature/Entity mapping
- Link design artifacts in Epic description
- Linked to the Project via
parentIssueIdwhen applicable
Phase 2: Story Writing#
Source: cc-product
Individual Story writing (/product:create-story)
- Screen-based Stories from UX Spec
- Technical Stories from Architecture
- Connect BDD scenarios as Acceptance Criteria
- Set dependency relationships
- Apply Phase 0 priority labels at creation
Sprint planning (/product:sprint-planning)
- Story priority determination
- Sprint assignment
- Capacity planning
Phase 3: PM Review#
Source: cc-product (PM persona)
- Story quality verification
- Story point estimation
- Labeling (type, scope, priority)
- Dependency verification
- Acceptance Criteria completeness check
Phase 3.5: Pipeline Sorting (skipped with --no-sort)#
Source: cc-dev-cycle (rules/zenhub-conventions.md โ Priority Review and Pipeline Sorting)
- Priority-based pipeline placement
- Project/Epic โ Product Backlog
- Story P0 โ Sprint Backlog (+ sprint assignment when
--sprint) - Story P0/P1 (no sprint) โ Product Backlog, P2 โ Icebox
- Move in descending priority order (P0 โ P1 โ P2) โ
moveIssueToPipelinehas no position param, so ordering is approximated by move sequence and recorded as a priority table in the Epic/Project body
Phase 4: Planning Gate#
BMAD Planning Gate verification:
- Project/Epic/Story hierarchy (epic_story_structure)
- Story points (story_point)
- Labeling incl. priority tiers (labeling)
- Dependencies (dependencies)
- Pipeline placement matches priority matrix (pipeline_sorting)
Artifacts#
- ZenHub Project (issue number recorded, with
--project-level) - ZenHub Epic (issue number recorded)
- Linked Stories (issue number list)
- Priority table (
.claude/docs/{feature}/zenhub/priority.md) - Project/Epic numbers recorded in
.pipeline/{slug}.yaml
After Completion#
- Verify Planning Gate passed
- Record Project/Epic/Story numbers in state file
- Present context-clear handoff:
โ
Epic Creation stage complete (Planning Gate PASSED).
Project #{project_number} (optional) / Epic #{epic_number} created with {story_count} Stories.
Pipeline sorting: P0 ร{n} โ Sprint Backlog, P1 ร{n} โ Product Backlog, P2 ร{n} โ Icebox
**Option 1 (Recommended)**: Clear context and continue to Development
/clear
Then run: /product:develop --epic {epic_number}
**Option 2**: Continue in current context
Proceed directly to /product:develop --epic {epic_number}