시스템 메시지: 이 Skill이 호출되면
[SEMO] Skill: task-progress 호출 - #{이슈번호}시스템 메시지를 첫 줄에 출력하세요.
task-progress Skill
개발자 업무 진행도를 체크리스트 형태로 표시하고 자동 진행 지원 (Supabase DB 기반)
🔴 데이터 소스 변경 (v2.0.0)
| 버전 | 데이터 소스 | 방식 |
|------|------------|------|
| v1.x | GitHub Projects | GraphQL API |
| v2.0 | Supabase | issues + issue_status_history 조회 |
트리거
/SEMO:task-progress명령어- "어디까지 했어", "현황", "체크리스트", "진행도" 키워드
- 이슈 번호 제공 시 orchestrator가 자동 호출
개발자 전체 프로세스
1. 업무할당 (backlog → todo)
2. 상태 변경 (todo → in_progress)
3. dev 브랜치에서 Spec 작성 (spec.md, plan.md, tasks.md)
4. Spec 커밋 & 푸시 (원격에 Spec 공유)
5. Feature 브랜치 생성 (Spec 완료 후)
6. Draft PR 생성
7. 실제 코드 구현 (ADD Phase 4)
8. 테스트코드 작성 및 테스트 진행
9. 린트 및 빌드 통과
10. 푸시 및 리뷰 요청 (in_progress → review)
11. PR 승인 및 dev 머지 (review → testing)
12. STG 환경 QA 테스트 (testing → done)
상태 흐름
backlog → todo → in_progress → review → testing → done
↓ ↑
확인요청 수정요청
Workflow
Step 1: 이슈 현재 상태 조회
-- 이슈 상세 정보 조회
SELECT
i.number,
i.title,
i.type,
i.status,
i.state,
i.labels,
i.estimation_point,
ap.name AS assignee_name,
TO_CHAR(i.created_at, 'YYYY-MM-DD') AS created_at,
TO_CHAR(i.updated_at, 'YYYY-MM-DD') AS updated_at
FROM issues i
LEFT JOIN agent_personas ap ON i.assignee_id = ap.id
WHERE i.number = 123
AND i.office_id = '{office_uuid}';
Step 2: 상태 변경 이력 조회
-- 상태 변경 히스토리 조회
SELECT
ish.from_status,
ish.to_status,
TO_CHAR(ish.changed_at, 'YYYY-MM-DD HH24:MI') AS changed_at,
ap.name AS changed_by
FROM issue_status_history ish
LEFT JOIN agent_personas ap ON ish.changed_by = ap.id
WHERE ish.issue_id = (
SELECT id FROM issues WHERE number = 123
)
ORDER BY ish.changed_at DESC;
Step 3: 진행도 체크리스트 생성
// Supabase로 조회
const { data: issue, error } = await supabase
.from('issues')
.select(`
number, title, status, body,
assignee:agent_personas(name)
`)
.eq('number', 123)
.eq('office_id', officeId)
.single();
// 상태별 체크리스트 생성
const checklist = generateChecklist(issue.status);
Quick Checks
| Step | Command |
|------|---------|
| 브랜치 | git branch --show-current |
| PR 확인 | gh pr list --head {branch} --json number,isDraft |
| 린트 | npm run lint |
| 타입체크 | npx tsc --noEmit |
| 미푸시 확인 | git log origin/{branch}..HEAD --oneline |
Output Format
[SEMO] Skill: task-progress 호출 - #123
## 📋 작업 진행 현황: #123
### 이슈 정보
| 항목 | 내용 |
|------|------|
| **제목** | 로그인 페이지 구현 |
| **유형** | feature |
| **상태** | in_progress |
| **담당자** | @reus |
| **작업량** | 4 points |
### 진행도 체크리스트
- [x] 1. 업무 할당
- [x] 2. 상태 변경 (todo → in_progress)
- [x] 3. Spec 작성
- [x] 4. Feature 브랜치 생성
- [x] 5. Draft PR 생성
- [ ] 6. 코드 구현
- [ ] 7. 테스트 작성
- [ ] 8. 린트/빌드 통과
- [ ] 9. 리뷰 요청
- [ ] 10. PR 머지
### 상태 변경 이력
| 시간 | 변경 | 변경자 |
|------|------|--------|
| 2025-01-10 14:30 | todo → in_progress | @reus |
| 2025-01-10 10:00 | backlog → todo | @pm |
### 다음 단계
🎯 **현재 단계**: 코드 구현
📌 **권장 액션**: `skill:write-code` 호출
[SEMO] Skill: task-progress 완료
자동 상태 변경
리뷰 요청 시 (Step 9)
PR Ready 상태가 되면 자동으로 상태를 "review"로 변경:
-- 상태를 review로 변경
SELECT * FROM update_issue_status(
123,
'{office_uuid}'::uuid,
'review',
'{actor_uuid}'::uuid
);
[SEMO] Skill: task-progress → 상태 자동 변경
📋 **이슈**: #123
🔀 **PR**: #150 Ready for Review
🔄 **상태 변경**: in_progress → **review**
✅ 상태 변경 완료
Error Handling
이슈 미발견
❌ #123 이슈를 찾을 수 없습니다.
확인사항:
- 이슈 번호가 올바른가요?
- Office ID가 올바른가요?
상태 이력 없음
⚠️ #123의 상태 변경 이력이 없습니다.
아직 상태가 변경된 적이 없는 새 이슈입니다.
현재 상태: backlog
GitHub Projects Fallback
Supabase 연결이 불가능한 경우:
# Fallback: GitHub Projects GraphQL로 상태 조회
gh api graphql -f query='
query {
repository(owner: "semicolon-devteam", name: "semo") {
issue(number: 123) {
projectItems(first: 1) {
nodes {
fieldValueByName(name: "Status") {
... on ProjectV2ItemFieldSingleSelectValue {
name
}
}
}
}
}
}
}
'
Related Skills
- project-status - 상태 변경
- start-task - 작업 시작
- assign-task - 업무 할당
References
- issues 테이블 마이그레이션
- Verification Steps - 12단계 검증 로직 상세
- Automation - 자동화 명령, 출력 형식