라벨, 태그 설정
체계적인 라벨과 태그 시스템으로 이슈를 효율적으로 분류하고 관리할 수 있습니다.
🏷️ 기본 라벨 시스템
타입별 라벨
bug:
color: "#d73a49"
description: "버그 및 오류"
feature:
color: "#0366d6"
description: "새로운 기능"
enhancement:
color: "#28a745"
description: "기존 기능 개선"
documentation:
color: "#6f42c1"
description: "문서 관련"
task:
color: "#e99695"
description: "일반 작업"
우선순위 라벨
priority-critical:
color: "#b60205"
description: "즉시 처리 필요"
priority-high:
color: "#d93f0b"
description: "높은 우선순위"
priority-medium:
color: "#fbca04"
description: "보통 우선순위"
priority-low:
color: "#0e8a16"
description: "낮은 우선순위"
컴포넌트별 라벨
frontend:
color: "#1d76db"
description: "프론트엔드 관련"
backend:
color: "#0e8a16"
description: "백엔드 관련"
api:
color: "#5319e7"
description: "API 관련"
database:
color: "#b60205"
description: "데이터베이스 관련"
mobile:
color: "#0366d6"
description: "모바일 관련"
infrastructure:
color: "#795548"
description: "인프라 관련"
상태 라벨
status-review:
color: "#fbca04"
description: "리뷰 대기 중"
status-blocked:
color: "#d93f0b"
description: "다른 작업에 의해 차단됨"
status-wontfix:
color: "#6a737d"
description: "수정하지 않음"
status-duplicate:
color: "#cfd3d7"
description: "중복 이슈"
🎨 라벨 설계 원칙
색상 코딩 전략
의미 기반 색상
- 빨간색 계열: 긴급, 버그, 차단
- 파란색 계열: 기능, 개선, 정보
- 초록색 계열: 완료, 승인, 안전
- 노란색 계열: 주의, 대기, 검토
- 보라색 계열: 문서, 설계, 아키텍처
- 회색 계열: 비활성, 취소, 중복
계층적 색상 시스템
/* 우선순위 - 빨간색 계열 */
critical: #b60205 /* 진한 빨강 */
high: #d93f0b /* 주황 */
medium: #fbca04 /* 노랑 */
low: #0e8a16 /* 초록 */
/* 타입 - 파란색 계열 */
bug: #d73a49 /* 빨강 (예외) */
feature: #0366d6 /* 파랑 */
enhance: #28a745 /* 초록 */
task: #6f42c1 /* 보라 */
라벨 네이밍 규칙
일관된 접두사 사용
# 좋은 예
type: bug
type: feature
type: enhancement
priority: critical
priority: high
priority: medium
area: frontend
area: backend
area: mobile
# 나쁜 예
bug # 접두사 없음
high-priority # 하이픈 위치 불일치
front-end # 일관성 없는 표기
명확한 설명 작성
good-examples:
- name: "security"
description: "보안 취약점 및 보안 관련 이슈"
- name: "performance"
description: "성능 개선 및 최적화 관련"
- name: "accessibility"
description: "접근성 개선 관련"
bad-examples:
- name: "misc" # 너무 모호함
- name: "stuff" # 의미 불분명
- name: "urgent" # priority 라벨과 중복
🔄 자동 라벨링
파일 경로 기반 자동 라벨링
# .collabops/labeler.yml
area: frontend:
- "src/components/**/*"
- "src/pages/**/*"
- "public/**/*"
area: backend:
- "server/**/*"
- "api/**/*"
- "database/**/*"
area: mobile:
- "mobile/**/*"
- "android/**/*"
- "ios/**/*"
type: documentation:
- "docs/**/*"
- "README.md"
- "*.md"
제목 기반 자동 라벨링
// 자동 라벨링 규칙
const autoLabelRules = {
// 제목에 키워드가 포함된 경우
titleKeywords: {
'fix': ['type: bug'],
'feat': ['type: feature'],
'docs': ['type: documentation'],
'perf': ['type: performance'],
'security': ['type: security'],
'test': ['type: testing']
},
// 본문에 키워드가 포함된 경우
bodyKeywords: {
'API': ['area: api'],
'database': ['area: backend', 'component: database'],
'mobile': ['area: mobile'],
'performance': ['type: performance'],
'crash': ['priority: high', 'type: bug']
}
};
브랜치 기반 자동 라벨링
# Git 브랜치명에 따른 자동 라벨링
branch-labels:
feature/*:
- "type: feature"
bugfix/*:
- "type: bug"
hotfix/*:
- "type: bug"
- "priority: critical"
docs/*:
- "type: documentation"
refactor/*:
- "type: enhancement"
📊 라벨 분석 및 관리
라벨 사용 통계
라벨별 이슈 분포:
- type: bug ████████████░░ 85% (42/50)
- type: feature ████████░░░░░░ 60% (30/50)
- priority: high ██████░░░░░░░░ 45% (22/50)
- area: frontend ███████░░░░░░░ 50% (25/50)
- area: backend ████████░░░░░░ 64% (32/50)
미사용 라벨:
- performance (3개월간 미사용)
- legacy (6개월간 미사용)
→ 삭제 검토 필요
라벨 정리 및 최적화
정리_작업:
중복_라벨_통합:
- "bug" + "defect" → "type: bug"
- "new-feature" + "enhancement" → "type: feature"
색상_일관성_개선:
- priority 라벨들의 색상 체계 통일
- area 라벨들의 색상 구분 명확화
설명_개선:
- 모든 라벨에 명확한 설명 추가
- 사용 예시 및 가이드라인 포함
라벨 거버넌스
라벨_관리_규칙:
생성_권한:
- Admin: 모든 라벨 생성/수정/삭제
- PM: 프로젝트별 라벨 생성/수정
- Developer: 제안만 가능
승인_프로세스:
1. 라벨 제안 (이슈 또는 토론)
2. 팀 피드백 수집 (3일)
3. PM/Admin 승인
4. 라벨 생성 및 문서 업데이트
정기_검토:
- 월간: 사용률 낮은 라벨 검토
- 분기: 전체 라벨 체계 리뷰
- 연간: 라벨 전략 재수립
🎯 라벨 활용 전략
검색 및 필터링
# 복합 조건 검색
label:"type: bug" label:"priority: high" is:open
# 제외 조건
label:"area: frontend" -label:"status: wontfix"
# OR 조건
label:"priority: critical" OR label:"priority: high"
# 날짜 범위와 조합
label:"type: feature" created:2024-01-01..2024-01-31
라벨 기반 자동화
자동화_규칙:
우선순위_알림:
- trigger: label added "priority: critical"
- action: notify team leads immediately
보안_검토:
- trigger: label added "security"
- action: assign to security team
문서_리뷰:
- trigger: label added "type: documentation"
- action: assign to tech writer
대시보드 및 리포팅
라벨_기반_메트릭:
버그_추세:
- 주간 신규 bug 라벨 이슈 수
- 해결된 bug 라벨 이슈 수
- 미해결 critical/high 버그 수
기능_개발_현황:
- feature 라벨 이슈의 완료율
- 평균 기능 개발 시간
- 컴포넌트별 기능 분포
팀별_작업량:
- area 라벨별 이슈 분포
- 팀별 평균 해결 시간
- 팀 간 협업 이슈 비율
🏗️ 고급 라벨 시스템
계층적 라벨 구조
epic-labels:
"epic: user-management":
child-labels:
- "story: user-registration"
- "story: user-profile"
- "story: user-preferences"
"epic: payment-system":
child-labels:
- "story: payment-gateway"
- "story: billing-history"
- "story: subscription-management"
조건부 라벨 적용
// 라벨 조합 규칙
const labelCombinationRules = {
// security + critical = 보안팀 즉시 알림
["security", "priority: critical"]: {
actions: ["notify-security-team", "create-incident"]
},
// bug + frontend + critical = 프론트엔드 리드 알림
["type: bug", "area: frontend", "priority: critical"]: {
actions: ["assign-frontend-lead", "notify-product-team"]
},
// feature + backend = 백엔드 아키텍트 리뷰 필요
["type: feature", "area: backend"]: {
actions: ["request-architecture-review"]
}
};
동적 라벨 시스템
# 상태 기반 자동 라벨 변경
dynamic-labels:
time-based:
- condition: "created > 30 days ago AND status: open"
action: add "status: stale"
- condition: "priority: critical AND created > 24 hours ago"
action: add "status: overdue"
progress-based:
- condition: "has commits in last 7 days"
action: add "status: active"
- condition: "no activity for 14 days"
action: add "status: inactive"
📋 라벨 베스트 프랙티스
Do's (권장사항)
- ✅ 일관된 네이밍 규칙 사용
- ✅ 색상 의미를 직관적으로 설정
- ✅ 라벨 설명을 명확하게 작성
- ✅ 자동화 규칙 적극 활용
- ✅ 정기적인 라벨 정리 수행
- ✅ 팀원 교육 및 가이드 제공
Don'ts (주의사항)
- ❌ 너무 많은 라벨 생성 (관리 복잡도 증가)
- ❌ 모호한 라벨명 사용
- ❌ 중복 의미의 라벨 생성
- ❌ 색상 의미 혼재 사용
- ❌ 사용하지 않는 라벨 방치
- ❌ 라벨 규칙 문서화 누락
다음 단계: Git 엔진 - 저장소 생성 및 브랜치 정책