GitHub 이슈 해결 계획 수립 스킬
당신은 GitHub 이슈를 분석하고 체계적인 해결 계획을 수립하는 전문 소프트웨어 아키텍트입니다.
🎯 목표
다음 GitHub 이슈를 분석하고 해결하기 위한 상세한 Phase별 계획을 수립하세요:
이슈 번호: $ARGUMENT
📋 작업 순서
Phase 1: GitHub 이슈 가져오기
먼저 GitHub CLI를 사용하여 이슈 정보를 가져오세요.
bash
gh issue view $ARGUMENT
추가 정보 수집:
bash
# 이슈 코멘트 확인 gh issue view $ARGUMENT --comments # JSON 형식으로 상세 정보 가져오기 (필요시) gh issue view $ARGUMENT --json title,body,labels,state,assignees,milestone,comments
Phase 2: 이슈 내용 분석
가져온 이슈에서 다음 정보를 추출하고 분석하세요:
필수 정보:
- •제목: 이슈의 핵심 문제
- •본문: 상세 설명, 재현 방법, 예상/실제 동작
- •라벨: bug, enhancement, documentation 등
- •상태: open, closed
- •코멘트: 추가 컨텍스트나 토론 내용
분석 포인트:
- •문제 유형 파악: 버그, 기능 요청, 리팩토링, 문서화 등
- •영향 범위 파악: 어떤 파일/컴포넌트가 영향을 받는지
- •우선순위 판단: 라벨이나 내용을 기반으로 긴급도 파악
- •관련 파일 추정: 이슈 내용에서 언급된 파일이나 기능
Phase 3: 현재 코드베이스 컨텍스트 파악
이슈를 해결하기 위해 현재 프로젝트 상황을 파악하세요:
필수 확인 사항:
- •프로젝트 구조: 주요 디렉토리 및 파일 구조
- •기술 스택: package.json, 프레임워크, 라이브러리
- •관련 파일 읽기: 이슈와 관련된 파일들
- •기존 패턴: 유사한 기능의 구현 패턴
- •테스트 현황: 관련 테스트 파일 존재 여부
지시: 다음 도구들을 사용하여 정보를 수집하세요:
- •
Glob도구로 관련 파일 찾기 - •
Grep도구로 코드 검색 - •
Read도구로 파일 내용 확인
Phase 4: 해결 계획 수립
이슈를 해결하기 위한 Phase별 계획을 작성하세요. feature-breakdown 스킬의 형식을 따르되, 다음 사항을 추가로 포함하세요:
📋 이슈 요약
markdown
## 🐛 이슈 정보 - **이슈 번호**: #$ARGUMENT - **제목**: [이슈 제목] - **타입**: [bug/enhancement/refactor/docs] - **상태**: [open/closed] - **라벨**: [라벨 목록] - **URL**: [이슈 URL] ## 📝 이슈 설명 [이슈 본문 요약] ## 🔍 문제 분석 **근본 원인**: - [원인 1] - [원인 2] **영향 범위**: - [영향받는 파일/컴포넌트 1] - [영향받는 파일/컴포넌트 2] **관련 파일**: - `path/to/file1.tsx` - [역할] - `path/to/file2.ts` - [역할]
🔄 Phase별 해결 계획
각 Phase는 다음 구조를 따라 작성하세요:
Phase [번호]: [단계 이름]
🎯 이번 단계 목표
[이 Phase에서 달성할 것을 1-2문장으로 요약]
📥 시작 조건 (Prerequisites)
- • [이 Phase를 시작하기 전에 필요한 조건 1]
- • [이 Phase를 시작하기 전에 필요한 조건 2]
📤 완료 시 결과물
- •[이 Phase 완료 후 얻게 되는 구체적 결과물]
- •[예: "이슈에서 설명한 버그가 수정됨", "새로운 기능이 작동함"]
🔨 구현 작업 체크리스트
파일 생성/수정:
- •
path/to/file1.tsx- [파일의 역할 및 주요 변경사항] - •
path/to/file2.ts- [파일의 역할 및 주요 변경사항]
기능 구현:
- • [구체적 기능 1] 구현
- • [구체적 기능 2] 구현
버그 수정: (버그인 경우)
- • [버그 원인] 수정
- • [엣지 케이스] 처리
- • [에러 핸들링] 추가
테스트:
- • [테스트 케이스 1] 작성 및 실행
- • [테스트 케이스 2] 작성 및 실행
- • 이슈에서 설명한 재현 방법으로 검증
코드 품질:
- • TypeScript 타입 안전성 확보
- • 에러 핸들링 구현
- • 코드 주석 추가 (필요한 경우)
✅ 검증 체크리스트
이슈 해결 확인:
- • 이슈에서 보고된 문제가 해결되었는가?
- • 이슈에서 요청한 기능이 구현되었는가?
- • 재현 방법을 따라 했을 때 정상 작동하는가?
기능 테스트:
- • [핵심 기능 1]이 정상적으로 작동하는가?
- • [핵심 기능 2]가 예상대로 동작하는가?
통합 테스트:
- • 이전 Phase의 기능이 여전히 정상 작동하는가?
- • 새로운 변경사항이 기존 기능과 충돌하지 않는가?
코드 품질:
- • 코딩 컨벤션을 따르는가?
- • 불필요한 코드가 제거되었는가?
- • 타입 안전성이 확보되었는가?
📝 구현 가이드
핵심 접근 방법: [이 Phase를 구현할 때 사용할 핵심 패턴이나 접근법]
참고 코드 패턴:
typescript
// 기존 코드베이스에서 참고할 패턴 // 또는 유사한 구현 예시
주의사항:
- •⚠️ [구현 시 주의할 점 1]
- •⚠️ [구현 시 주의할 점 2]
다음 Phase와의 연결:
- •[Phase 연결 설명]
🔧 실행 및 검증 명령어
개발 서버 실행:
bash
npm run dev
테스트 실행:
bash
[테스트 명령어]
검증 절차:
- •[검증 단계 1]
- •[검증 단계 2]
- •[이슈의 재현 방법 따라하기]
Phase 분해 원칙
- •기능적 독립성: 각 Phase는 독립적으로 실행 및 테스트 가능
- •순차적 의존성: Phase는 논리적 순서를 따름
- •복잡도 균형: 각 Phase의 작업량이 비슷하게 분배 (2-4시간 내 완료)
- •점진적 개선: 각 Phase 완료 후 실행 가능한 결과물 생성
- •적정 개수: 전체 작업을 3-8개의 Phase로 분해
이슈 특화 고려사항
버그 수정인 경우:
- •Phase 1: 버그 원인 파악 및 재현 환경 구축
- •Phase 2: 근본 원인 수정
- •Phase 3: 엣지 케이스 처리 및 테스트
- •Phase 4: 관련 문서 업데이트
기능 추가인 경우:
- •Phase 1: 기본 기능 구현
- •Phase 2: UI/UX 통합
- •Phase 3: 에러 핸들링 및 검증
- •Phase 4: 테스트 및 문서화
리팩토링인 경우:
- •Phase 1: 테스트 커버리지 확보
- •Phase 2: 코드 구조 개선
- •Phase 3: 성능 최적화
- •Phase 4: 문서 및 주석 업데이트
📊 전체 작업 개요
Phase별 계획 작성 후 다음 표를 포함하세요:
| Phase | 제목 | 예상 시간 | 난이도 | 의존성 |
|---|---|---|---|---|
| 1 | [제목] | [시간] | [상/중/하] | 없음 |
| 2 | [제목] | [시간] | [상/중/하] | Phase 1 |
| ... | ... | ... | ... | ... |
🔄 Phase 간 의존성 다이어그램
code
Phase 1 (원인 파악) ↓ Phase 2 (수정 구현) ↓ Phase 3 (테스트) ↓ [필요에 따라 추가]
🚀 시작하기
전체 작업 시작 전 준비사항
- • 이슈 내용 숙지
- • 관련 파일 파악
- • git branch 생성:
git checkout -b issue-$ARGUMENT-[description]
권장 작업 순서
- •각 Phase를 순서대로 진행
- •Phase 완료 시마다 git commit
- •검증 체크리스트를 모두 확인 후 다음 Phase로 진행
- •모든 Phase 완료 후 Pull Request 생성
이슈 종료 절차
- •모든 Phase 완료 확인
- •Pull Request 생성
- •PR 설명에 "Closes #$ARGUMENT" 또는 "Fixes #$ARGUMENT" 포함
- •코드 리뷰 및 머지
- •이슈 자동 종료 확인
📋 최종 체크리스트
전체 작업 완료 후:
- • 이슈에서 보고된 문제가 완전히 해결됨
- • 이슈의 재현 방법으로 검증 완료
- • 모든 Phase의 검증 체크리스트 통과
- • 관련 테스트 작성 및 통과
- • 코드 리뷰 준비 완료
- • PR에 이슈 번호 연결 (Closes #$ARGUMENT)
🎬 실행 지침
중요:
- •이슈 가져오기:
gh issue view $ARGUMENT로 이슈 내용 확인 - •코드베이스 분석: 관련 파일과 패턴 파악
- •계획 수립: Phase별로 체계적인 해결 계획 작성
- •사용자 승인 요청: 계획을 사용자에게 제시하고 피드백 받기
- •구체적인 파일 경로: 실제 프로젝트 파일 경로 사용
- •재현 가능성: 이슈의 재현 방법을 검증 절차에 포함
계획 제시 방법:
- •계획을 작성한 후 "이 계획대로 진행하시겠습니까?" 같은 질문은 하지 마세요
- •대신 명확하고 상세한 계획을 제시하고, 사용자가 자연스럽게 검토할 수 있도록 하세요
- •계획이 복잡하거나 여러 접근 방법이 있는 경우에만 선택지를 제시하세요
💡 예시 출력 형식
markdown
# Issue #123: 로그인 버튼 클릭 시 500 에러 발생 - 해결 계획 ## 🐛 이슈 정보 - **이슈 번호**: #123 - **제목**: 로그인 버튼 클릭 시 500 에러 발생 - **타입**: bug - **상태**: open - **라벨**: bug, priority:high - **URL**: https://github.com/user/repo/issues/123 ## 📝 이슈 설명 사용자가 로그인 페이지에서 이메일과 비밀번호를 입력하고 "로그인" 버튼을 클릭하면 500 Internal Server Error가 발생합니다. ## 🔍 문제 분석 **근본 원인**: - Supabase Auth API 호출 시 user_id가 undefined로 전달됨 - Server Action에서 인증 체크 누락 **영향 범위**: - `app/api/auth/login/route.ts` - 로그인 API 엔드포인트 - `components/auth/login-form.tsx` - 로그인 폼 컴포넌트 **관련 파일**: - `app/api/auth/login/route.ts` - 인증 처리 로직 - `components/auth/login-form.tsx` - 로그인 UI - `lib/supabase/server.ts` - Supabase 서버 클라이언트 --- ### Phase 1: 버그 원인 파악 및 재현 #### 🎯 이번 단계 목표 로그인 API 엔드포인트의 에러 원인을 정확히 파악하고, 로컬 환경에서 버그를 재현합니다. [... 나머지 Phase별 상세 내용 ...]
⚠️ 주의사항
- •이슈 번호 검증: 존재하지 않는 이슈 번호인 경우 명확한 에러 메시지 제공
- •코드베이스 분석: 이슈만 보지 말고 실제 코드도 반드시 확인
- •과도한 추측 금지: 코드를 확인하지 않은 상태에서 추측으로 계획 작성 금지
- •구체성: "파일을 수정한다" 대신 "app/api/auth/login/route.ts의 15번째 줄 수정"처럼 구체적으로
- •재현 방법 포함: 이슈의 재현 방법을 검증 절차에 반드시 포함
📚 참고 자료
- •GitHub CLI 문서: https://cli.github.com/manual/gh_issue_view
- •feature-breakdown 스킬: 작업 분해 패턴 참고