ZenHub Conventions - Project-Specific Configuration
repository:
# ZenHub Conventions - Project-Specific Configuration
# Auto-generated by Load ZenHub Context, or manually created from this template.
# Path: {project-root}/bmad/zenhub-conventions.yaml
#
# NOTE: cc-dev's /cc-dev:zenhub:init-workspace generates an analogous cache at
# `.claude/config/bmad/zenhub-conventions.yaml` (different path, different schema).
# The two are independent caches, not shared — if both plugins are used in the
# same repo, each re-queries and re-generates its own file.
#
# This file caches ZenHub workspace IDs to reduce MCP calls and enable
# offline/MCP-unavailable workflows. Values are populated automatically
# when Load ZenHub Context runs with MCP available.
# GitHub Repository
repository:
id: "" # GitHub GraphQL node ID (e.g., "R_kgDO...")
owner: "{{REPO_OWNER}}" # GitHub org or user
name: "{{REPO_NAME}}" # GitHub repo name
# ZenHub Organization
organization:
id: "" # ZenHub org ID (for setDatesForIssue)
# ZenHub Issue Types (from getIssueTypes)
issue_types:
initiative: "" # Issue type ID for Initiative (Level 1, optional — wraps Projects)
project: "" # Issue type ID for Project (Level 2, optional — wraps Epics)
epic: "" # Issue type ID for Epic (Level 3)
feature: "" # Issue type ID for Feature (Level 4, used for Stories)
task: "" # Issue type ID for Task (Level 4, optional)
bug: "" # Issue type ID for Bug (Level 4, optional)
sub_task: "" # Issue type ID for Sub-task (Level 5 — preferred for sub-tasks;
# falls back to "task" above only if this type doesn't exist in the workspace)
# ZenHub Pipelines (from getWorkspacePipelinesAndRepositories)
pipelines:
product_backlog: "" # "Product Backlog" pipeline ID
sprint_backlog: "" # "Sprint Backlog" pipeline ID
in_progress: "" # "In Progress" pipeline ID
review_qa: "" # "Review/QA" pipeline ID
# Done pipeline is not used — issues are automatically closed via GitHub "Closes #" keyword on PR merge
# Active Sprint (from getSprint / getUpcomingSprint)
sprints:
active:
id: ""
name: ""
start_date: ""
end_date: ""
upcoming:
id: ""
name: ""
start_date: ""
end_date: ""
# Issue Creation Settings
issue_creation:
method: "github" # "github" (createGitHubIssue) or "zenhub" (createZenhubIssue)
# 제목/본문 접두사 규칙은 여기서 설정하지 않는다 — SoT: cc-dev/rules/zenhub-conventions.md
# → "Issue Title Conventions" (fix:/feat:/chore:, Project/Epic/Story는 접두사 없음)
# 본문 = 계약, 서술 = 저장소 HTML
# SoT: cc-dev/rules/zenhub-conventions.md → Issue Body HTML Contract / Unified Issue Body Template
body_html:
enabled: true # false 면 종전 전량 마크다운 본문 사용
# 어느 계층에서 상세 기획 HTML 을 만들지 — Sub-task 는 규약상 항상 제외
levels: ["initiative", "project", "epic"] # 항상 만든다
narrative_line_threshold: 20 # Feature/Bug/Task 는 서술이 이 행수를 넘을 때만
path: ".claude/docs/{scope}/issue-{number}.html" # 이슈 번호로 고정 — 갱신은 같은 파일
# 이슈를 만든 뒤 로컬에 쓰고, 그 이슈의 작업 브랜치 첫 커밋으로 넣은 다음 본문에 링크를 덧붙인다
# (저장소 권한이 곧 공개 범위 — SoT: cc-dev/rules/artifact-publishing.md)
# Sub-task Configuration
sub_tasks:
enabled: false # Set to true if workspace has a "Sub-task" (preferred) or "Task" (fallback) issue type
auto_generate: false # Auto-generate sub-tasks from story AC/technical tasks
min_story_points: 5 # Only suggest sub-tasks for stories >= this point value
# Last Updated
last_updated: "" # ISO 8601 timestamp of last MCP sync