/cc-product:breakdown — 설계를 "할 일 목록"으로 쪼개는 단계#
| 항목 | 내용 |
|---|---|
| 실행 명령 | /cc-product:breakdown |
| 분류 | 파이프라인 |
| 난이도 | ●●○ 보통 |
| MCP 서버 | zenhub |
파이프라인 5단계(Issue Breakdown). 설계 결과물을 ZenHub의 Project·Epic·Feature/Bug/Task 같은 실제 작업 단위로 쪼개고, 우선순위에 따라 진행 순서까지 정리합니다. 어디까지 계층을 만들지는 설계 규모를 보고 자동으로 정합니다.
한마디로#
큰 설계도를 보고 "실제로 누가, 무엇을, 어떤 순서로 만들지"를 카드 한 장씩 끊어 정리하는 단계입니다. 이사 계획서를 보고 "큰 짐 옮기기 → 가구 배치 → 정리"처럼 할 일을 쪼개고 급한 순서대로 줄 세우는 것과 같아요.
누가·언제 쓰나요#
- 설계(Design) 단계가 끝나서, 이제 개발할 작업(이슈)을 만들어야 하는 경우
- 아키텍처·UX 설계 문서를 실제로 손댈 수 있는 작은 작업 단위로 나누고 싶을 때
- 여러 기능이 묶인 프로젝트라서, Epic들을 감싸는 상위 Project 단위가 필요할 때
👉 준비가 안 되면 진행할 수 없어요: 설계(Design) 단계가 끝나고(Solutioning Gate 통과), 아키텍처 문서·UX 명세가 있어야 시작됩니다.
무엇을 해주나요#
ZenHub에 작업 이슈들이 만들어지고, 그 결과가 파일에도 기록됩니다. 설계 규모를 보고 어디까지 계층을 만들지 자동으로 판단합니다 — 작은 범위면 Epic 없이 Feature/Bug/Task만, 여러 기능을 아우르면 Project까지.
-
ZenHub Project — 여러 Epic을 감싸는 상위 묶음 (자동 추론되거나
--project-level로 만들 때, 이슈 번호 기록) - ZenHub Epic — 기능 단위의 큰 작업 덩어리 (이슈 번호 기록, 범위가 작으면 생략될 수 있음)
- 연결된 작업 항목들 — Epic 아래(또는 Epic 생략 시 최상위) 실제로 개발할 작은 작업 카드 목록, 성격에 따라 Feature/Bug/Task로 분류 (이슈 번호 목록)
- 우선순위 표 —
.claude/docs/{feature}/zenhub/priority.md에 정리 - 상태 파일 기록 —
.pipeline/{slug}.yaml에 Project/Epic 번호 기록 - 기획 문서 PR — 여기까지 파이프라인이 만든 문서(조사·명세·기획·설계 문서 + 우선순위 표 + 상태 파일)를 PR 로 올려 기본 브랜치에 머지합니다. 이 단계 전까지 그 문서들은 작업하던 컴퓨터 한 대에만 있었고, 다음 개발 단계는 문서가 없는 기준점에서 갈라져 나갔습니다
어떻게 쓰나요#
# 기본 — 설계 결과 규모에 맞춰 계층 자동 생성
/cc-product:breakdown
# 이번 스프린트에 배정
/cc-product:breakdown --sprint current
# 특정 기능·엔티티 지정
/cc-product:breakdown --feature community --entity Post
# 상위 Project 이슈를 먼저 만들고 Epic들을 하위로 연결 (자동 추론을 명시적으로 오버라이드)
/cc-product:breakdown --project-level
# 기존 Project 이슈에 Epic 연결
/cc-product:breakdown --parent-project 1024
# Epic 없이 Feature/Bug/Task만 생성하도록 강제 (작은 범위 오버라이드)
/cc-product:breakdown --no-epic
우선순위 검토와 파이프라인 정렬을 건너뛰고 싶으면 --no-sort를 덧붙이세요.
안에서 무슨 일이 벌어지나요#
설계 문서를 읽어 규모를 판단하고, 작업을 쪼개 우선순위대로 줄 세운 뒤 검수까지 마칩니다.
-
계층 스케일 추론 — 설계 문서 규모(여러 Epic 필요/시스템 전체 개편/단일 기능 등)를 보고 Initiative~Epic 중 어디를 최상위로 만들지, 혹은 Epic 없이 Feature/Bug/Task만 만들지 자동으로 정합니다.
--initiative-level/--project-level/--no-epic같은 명시적 플래그가 있으면 항상 그것이 우선합니다. - 우선순위 먼저 매기기 — 만들 Epic·작업 항목마다 의존성·사업 가치·위험·작업량을 따져 p0/p1/p2 등급을 정합니다. (등급 라벨은 생성 후 바꿀 수 없어 가장 먼저 합니다.) 추론된 계층과 우선순위 표를 사용자에게 함께 보여주고 확인받습니다.
- Project·Epic 만들기 — 필요하면 여러 기능을 감싸는 Project 이슈를 만들고, 아키텍처 문서를 바탕으로 Epic을 만들어 설계 결과물을 연결합니다. (범위가 작으면 이 단계는 생략됩니다.)
- 작업 항목 쓰기 — UX 명세에서 화면 단위 Feature를, 아키텍처에서 기술 Task를, 결함 보고에서 Bug를 뽑아내고, 성격에 맞는 실제 타입(Feature/Bug/Task)으로 생성합니다. Feature는 BDD 시나리오를 합격 기준으로 붙이고, Bug/Task는 재현 절차·완료 정의 템플릿을 씁니다. 스프린트도 배정합니다.
- PM 검수 — 작업량(Story Point) 추정, 라벨링, 의존성·합격 기준 완성도를 점검합니다.
- 파이프라인 정렬 — 우선순위대로 작업 항목을 배치합니다. (P0는 Sprint Backlog, P1은 Product Backlog, P2는 Icebox 식으로.)
- Planning Gate 통과 확인 — 계층 구조·포인트·라벨·의존성·파이프라인 배치가 모두 맞는지 최종 확인합니다.
- 기획 문서 PR 올리고 머지 — 지금까지 만들어진 문서를 모아 PR 을 만들고 기본 브랜치에 합칩니다. 게이트를 통과한 시점이라 문서가 더 흔들리지 않고, 바로 다음 개발 단계가 브랜치를 딸 때 그 문서가 이미 기준점에 들어 있게 됩니다. 이미 올려 둔 PR 이 있으면 새로 만들지 않습니다.
끝나면 다음은?#
작업 이슈들이 ZenHub에 만들어지고 결과가 파일로 기록된 뒤, 다음 단계인 개발(/cc-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 (auto-inferred, or forced via
--project-level) - When the scope is small enough that no Epic wrapper is warranted (auto-inferred, or forced via
--no-epic)
Usage#
/cc-product:breakdown
/cc-product:breakdown --sprint current
/cc-product:breakdown --feature community --entity Post
/cc-product:breakdown --project-level # Project 이슈 생성 후 Epic들을 하위로 연결 (자동 추론 오버라이드)
/cc-product:breakdown --parent-project 1024 # 기존 Project 이슈에 Epic 연결
/cc-product:breakdown --no-epic # Epic 생략, Feature/Bug/Task만 생성 (자동 추론 오버라이드)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 | Auto-inferred | Create an Initiative-level issue (one level above Project) and link the Project (or Epic, if no --project-level) as a child. Explicit flag always overrides the Hierarchy Scale Inference (Phase 0) |
--parent-initiative | None | Existing Initiative issue number to link under |
--project-level | Auto-inferred | Create a Project-level issue (title from .pipeline/{slug}.yaml) and link Epics as children. Explicit flag always overrides the Hierarchy Scale Inference (Phase 0) |
--parent-project | None | Existing Project issue number to link Epics under |
--no-epic | Auto-inferred | Skip the Epic level entirely — create Feature/Bug/Task (+ Sub-task) directly. Explicit flag always overrides the Hierarchy Scale Inference (Phase 0) |
--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. When none of--initiative-level/--project-level/--no-epicis given, Phase 0's Hierarchy Scale Inference decides the top-level anchor from the design artifacts' scope — this replaces the old "Epic is always created" default.
Prerequisites#
- Design stage completed (Solutioning Gate passed)
- Architecture Doc, UX Spec artifacts exist
Execution Flow#
Phase 0: Hierarchy Scale Inference + Priority Review (before creation)#
Source: cc-dev (delegates to /cc-dev:zenhub:breakdown's Step 1.5/1.6 — see
zenhub-integration-agent.md)
-1. Hierarchy scale inference
- Explicit
--initiative-level/--project-level/--no-epicalways wins - Otherwise infer from the design artifacts' scope (multi-Epic signals → Project; multi-quarter/company-wide signals → Initiative; single small scope → no Epic wrapper)
- With
--project-level(or inferredproject): derive Project title/scope from.pipeline/{slug}.yaml
- Priority scoring
- Score every Epic/work item 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 inferred hierarchy and the priority table to the user together for one confirmation
- Write the table to
.claude/docs/{feature}/zenhub/priority.md— this is the fileconfig/pipeline.json→stages.breakdown.artifactsdeclares, so it is produced here, not in Phase 3.5.--no-sortskips the pipeline placement (Phase 3.5), never this table
Phase 1: Initiative/Project/Epic Creation#
Source: cc-dev
- ZenHub Initiative creation (inferred, or
--initiative-level;/cc-dev:zenhub:breakdown --initiative)- One Initiative issue wrapping the Project (or Epics directly, if no Project level)
- ZenHub Project creation (inferred, or
--project-level;/cc-dev:zenhub:breakdown --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 (
/cc-dev:zenhub:breakdown; skipped when scale=no-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: Work Item Writing#
Source: cc-product
Individual work item writing (/cc-product:create-story)
- Screen-based Feature items from UX Spec
- Technical Task items from Architecture
- Defect-driven Bug items where applicable
- Type resolved per item (Feature/Bug/Task) — never hardcoded, see
references/helpers.md→ "Sync Story to ZenHub" - Connect BDD scenarios as Acceptance Criteria (Feature items); Bug/Task items use the repro/DoD template instead
- Set dependency relationships
- Apply Phase 0 priority labels at creation
Sprint planning (/cc-product:sprint-planning)
- Work item priority determination
- Sprint assignment
- Capacity planning
Phase 3: PM Review#
Source: cc-product (PM persona)
- Work item 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 (rules/zenhub-conventions.md → Priority Review and Pipeline Sorting)
- Priority-based pipeline placement
- Project/Epic → Product Backlog
- Work item P0 → Sprint Backlog (+ sprint assignment when
--sprint) - Work item 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:
- Issue hierarchy is appropriate for the request scale (issue_hierarchy_structure)
- Story points (story_point)
- Labeling incl. priority tiers and resolved type (labeling)
- Dependencies (dependencies)
- Pipeline placement matches priority matrix (pipeline_sorting)
Phase 5: Planning Docs PR (after the gate, before Development)#
Source: cc-product (references/helpers.md → Publish Pipeline Docs PR — that block is the
single definition of the protocol; nothing here restates its steps)
- Publish the pipeline's documents
- Call the helper with
stage_set = discovery, specification, planning, design, scaffold, breakdownandscope = planning. It collects each stage's declaredartifactsplus.pipeline/{slug}.yaml, branches from the default branch, opens the PR and squash-merges it scaffoldis in the set but contributes nothing: its artifacts are source paths, and the helper keeps onlydocs/·.claude/docs/·.pipeline/— scaffolded code reaches the repository through the Story PRs that implement it, not through a docs PR- Runs only after the Planning Gate passes (
unmet(planning) == 0). UnderL-gate-revisea failed gate re-runs this stage and overwrites the same artifact paths — publishing before the verdict would put a document on the default branch that the next attempt contradicts - Runs before Development for a mechanical reason:
/cc-product:developbranches each Story off the default branch. If the documents are not there yet, every Story branch is cut from a base that lacks the very architecture/UX spec its DoD cites, and the documents reach the repository only by being dragged into an unrelated code PR — or not at all - Idempotent: an already-merged planning docs PR for this slug is detected and not re-created, so
a re-run of
/cc-product:breakdowndoes not open a second one - Degradation (no gh CLI, no remote, empty document set) is recorded and reported, never silent, and never blocks the Planning Gate result — the gate has already passed at this point
- Call the helper with
Documents produced after this point: the development stage's documents ride along with the code PR
/cc-dev:runalready opens (no separate publication), and/cc-product:launchpublishes its own with the same helper. No pipeline document is left uncommitted at the end of the pipeline.
Artifacts#
- ZenHub Initiative (issue number recorded, when inferred/
--initiative-level) - ZenHub Project (issue number recorded, when inferred/
--project-level) - ZenHub Epic (issue number recorded, unless scale=no-epic)
- Linked work items — Feature/Bug/Task (issue number list)
- Priority table (
.claude/docs/{feature}/zenhub/priority.md) - Project/Epic numbers recorded in
.pipeline/{slug}.yaml - Planning docs PR (
docs/{slug}-planning→ default branch, squash-merged) carrying the discovery~breakdown documents; its number recorded atstages.{stage}.docs_prfor each stage in the set
After Completion#
- Verify Planning Gate passed
- Record Project/Epic/work item numbers in state file
- Verify the planning docs PR merged (or that its degradation is recorded at
stages.{stage}.docs_prwith a reason) — Development must not start from a base whose missing documents nobody noticed - Present context-clear handoff:
✅ Issue Breakdown stage complete (Planning Gate PASSED).
Project #{project_number} (optional) / Epic #{epic_number} (optional) created with {item_count} work items (Feature ×{f}, Bug ×{b}, Task ×{t}).
Pipeline sorting: P0 ×{n} → Sprint Backlog, P1 ×{n} → Product Backlog, P2 ×{n} → Icebox
Planning docs PR #{docs_pr_number} merged → {doc_count} documents are on {default_branch}
**Option 1 (Recommended)**: Clear context and continue to Development
/clear
Then run: /cc-product:develop {epic_number}
**Option 2**: Continue in current context
Proceed directly to /cc-product:develop {epic_number}