| name | start-task |
| description | 작업 시작. Use when (1) "랜드 #123 작업 진행", (2) "#45 시작하자", (3) "이슈 작업 시작해줘". 이슈 상태 변경 + 브랜치 생성 + Draft PR. |
| tools | Bash, Read |
| model | inherit |
시스템 메시지:
[SEMO] Skill: start-task 호출
start-task Skill
작업 시작 자동화
Purpose
GitHub 이슈 작업을 시작하기 위한 전체 프로세스를 자동화합니다:
- 이슈 정보 조회
- GitHub Projects 상태 → "작업중" 변경
- Feature 브랜치 생성
- Draft PR 생성
- SDD 프로세스 안내
Input Parsing
"랜드 #123 작업 진행하자"
→ repo: cm-land, issue: 123
"오피스 #45 시작"
→ repo: cm-office, issue: 45
"#123 작업 시작"
→ repo: (현재 디렉토리에서 추론), issue: 123
레포 별칭
| 별칭 | 실제 레포 |
|---|---|
| 랜드 | cm-land |
| 오피스 | cm-office |
| 코어 | core-backend |
| 스몰 | cm-small |
Workflow
Step 1: 이슈 정보 조회
# 이슈 상세 정보 조회
gh issue view 123 --repo semicolon-devteam/cm-land --json title,body,labels,assignees,projectItems
Step 2: 상태 변경 (GitHub Projects)
# Project Item ID 조회
ITEM_ID=$(gh api graphql -f query='
query {
repository(owner: "semicolon-devteam", name: "cm-land") {
issue(number: 123) {
projectItems(first: 1) {
nodes {
id
project {
id
}
}
}
}
}
}' --jq '.data.repository.issue.projectItems.nodes[0].id')
# Status 필드 ID와 "작업중" 옵션 ID 조회
PROJECT_ID=$(gh api graphql -f query='...' --jq '...')
STATUS_FIELD_ID=$(gh api graphql -f query='...' --jq '...')
IN_PROGRESS_ID=$(gh api graphql -f query='...' --jq '...')
# 상태 변경
gh api graphql -f query='
mutation {
updateProjectV2ItemFieldValue(
input: {
projectId: "'$PROJECT_ID'"
itemId: "'$ITEM_ID'"
fieldId: "'$STATUS_FIELD_ID'"
value: { singleSelectOptionId: "'$IN_PROGRESS_ID'" }
}
) {
projectV2Item { id }
}
}
'
Step 3: Feature 브랜치 생성
# 이슈 제목에서 slug 생성
SLUG=$(echo "로그인 페이지 구현" | tr ' ' '-' | tr '[:upper:]' '[:lower:]')
# 브랜치 생성
git checkout -b feature/123-${SLUG}
# 원격에 푸시
git push -u origin feature/123-${SLUG}
Step 4: Draft PR 생성
gh pr create \
--repo semicolon-devteam/cm-land \
--title "[Draft] #123 로그인 페이지 구현" \
--body "$(cat <<'EOF'
## 관련 이슈
closes #123
## 변경 사항
- [ ] 작업 진행 중
## 체크리스트
- [ ] Spec 작성 완료
- [ ] 구현 완료
- [ ] 테스트 통과
- [ ] 리뷰 요청
---
🤖 Generated by SEMO (eng/nextjs)
EOF
)" \
--draft
Step 5: 다음 단계 선택지 제시 (NON-NEGOTIABLE)
🔴 CRITICAL: 작업 환경 세팅 완료 후 반드시 다음 단계 선택지를 제시합니다.
## 🚀 작업 환경 준비 완료!
다음 단계를 선택해주세요:
| 옵션 | 적합한 경우 | 키워드 |
|------|------------|--------|
| **A. SDD 전체** (권장) | 새 기능, 복잡한 로직, AC 필요 | "스펙부터 시작" |
| **B. 바로 구현** | 명확한 요구사항, 간단한 기능 | "구현 시작" |
| **C. Fast-track** | 오타/스타일 수정, 3파일 이하 | "패스트트랙" |
**선택하세요**: A, B, 또는 C
선택지별 라우팅
| 선택 | 라우팅 대상 | 동작 |
|---|---|---|
| A | skill:spec |
SDD Phase 1-3 시작 |
| B | implementation-master |
ADD Phase 4 바로 시작 (v0.0.x부터) |
| C | skill:fast-track |
간소화된 수정 프로세스 |
자동 권장 기준
| 이슈 라벨 | 권장 옵션 |
|---|---|
feature, enhancement |
A (SDD 전체) |
bug, hotfix |
B 또는 C |
typo, style |
C (Fast-track) |
Output Format
## 작업 시작: cm-land #123
### 이슈 정보
| 항목 | 내용 |
|------|------|
| **제목** | 로그인 페이지 구현 |
| **라벨** | feature, frontend |
| **담당자** | @reus |
### 완료된 작업
✅ GitHub Projects 상태 → "작업중" 변경
✅ 브랜치 생성: `feature/123-로그인-페이지-구현`
✅ Draft PR 생성: #150
### 🚀 다음 단계 선택
| 옵션 | 적합한 경우 | 키워드 |
|------|------------|--------|
| **A. SDD 전체** (권장) | 새 기능, 복잡한 로직 | "스펙부터 시작" |
| **B. 바로 구현** | 명확한 요구사항 | "구현 시작" |
| **C. Fast-track** | 경미한 수정 | "패스트트랙" |
**선택하세요**: A, B, 또는 C
Expected Output
[SEMO] Skill: start-task 호출
## 작업 시작: cm-land #123
### 이슈 정보
| 항목 | 내용 |
|------|------|
| **제목** | 로그인 페이지 구현 |
| **라벨** | feature |
| **담당자** | @reus |
### 완료된 작업
✅ 상태 변경: 대기중 → 작업중
✅ 브랜치: `feature/123-로그인-페이지-구현`
✅ Draft PR: #150
### 🚀 다음 단계 선택
| 옵션 | 적합한 경우 | 키워드 |
|------|------------|--------|
| **A. SDD 전체** (권장) | 새 기능, 복잡한 로직 | "스펙부터 시작" |
| **B. 바로 구현** | 명확한 요구사항 | "구현 시작" |
| **C. Fast-track** | 경미한 수정 | "패스트트랙" |
💡 **라벨 기반 권장**: `feature` 라벨 → **A. SDD 전체** 권장
**선택하세요**: A, B, 또는 C
[SEMO] Skill: start-task 완료
Error Handling
이슈를 찾을 수 없는 경우
❌ cm-land에서 #123 이슈를 찾을 수 없습니다.
확인사항:
- 이슈 번호가 올바른가요?
- 레포 이름이 올바른가요? (랜드 = cm-land)
- 이슈가 Open 상태인가요?
이미 작업중인 경우
⚠️ #123은 이미 "작업중" 상태입니다.
현재 상태:
- 브랜치: feature/123-로그인-페이지-구현 (존재함)
- PR: #150 (Draft)
계속 진행하시겠습니까?