create-pr
현재 브랜치와 develop의 차이를 분석하여 코드 리뷰를 수행한 뒤, 프로젝트 PR 템플릿에 맞는 설명을 작성하고 Pull Request를 생성합니다. "PR 만들어줘", "pull request 생성", "PR 올려줘", "PR 작성" 등의 요청에 응답합니다.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
현재 브랜치와 develop의 차이를 분석하여 코드 리뷰를 수행한 뒤, 프로젝트 PR 템플릿에 맞는 설명을 작성하고 Pull Request를 생성합니다. "PR 만들어줘", "pull request 생성", "PR 올려줘", "PR 작성" 등의 요청에 응답합니다.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
This skill should be used when the user asks to "Preview 만들어줘", "Preview 추가해줘", "composable preview 생성", "@Preview 함수 만들어줘", "compose preview 붙여줘", or wants to generate @Preview functions for a Composable file or function. Also trigger autonomously (without user request) whenever a new top-level @Composable function is written or completed in a .kt file — generate @Preview functions immediately after writing the composable, before moving on. Takes a file path or composable function name as $ARGUMENTS.
Nevera PR Auto Assign 워크플로우 가이드 (GitHub Actions). assignee/reviewer 자동 등록 구조, 설계 결정 근거, 팀원 추가 방법에 대한 질문에 사용한다. pr-auto-assign.yml 수정 요청, 팀원 추가, 조건 변경 시 참조한다. Responds to: "PR auto assign", "reviewer 자동 등록", "assignee 자동 등록", "pr-auto-assign.yml", "팀원 추가", "reviewer 추가", "github-script"
upstream의 develop·main 브랜치를 로컬에 merge하고 origin에 자동 push합니다. "upstream sync", "브랜치 동기화", "sync", "최신화" 등의 요청에 응답합니다.
Nevera Typography 디자인 시스템 가이드. NeveraTypography 토큰, NeveraTheme.typography 사용법, 텍스트 스타일 선택 기준에 대한 요청에 사용한다. Responds to: "which typography token", "text style", "font size", "NeveraTheme.typography", "NeveraTypography", "typography token", "텍스트 스타일", "타이포그래피 토큰", "폰트 사이즈", "글자 크기", "heading", "body", "label", "caption" 등.
Nevera 컬러 디자인 시스템 가이드. 컬러 토큰, 시맨틱 컬러, NeveraTheme.colors 사용법, ColorPalette와 NeveraColor의 역할 차이, 컬러 매핑 추가/변경, 다크모드 컬러 매핑, UI 코드에서 어떤 디자인 시스템 색상을 써야 하는지에 대한 요청에 사용한다. Responds to: "which color token should I use", "design system color", "semantic color", "NeveraTheme colors", "add a new color token", "컬러 토큰", "시맨틱 컬러", "디자인 시스템 색상", "무슨 색 써야 해", "다크모드 컬러" 등.
Nevera Android CI 설정 가이드 (GitHub Actions). CI 구조, 설계 결정 근거, Gradle 지식, 미래 확장 방향에 대한 질문에 사용한다. ci.yml 수정 요청, CI 관련 개념 질문, 새 Job 추가 계획 시 참조한다. Responds to: "CI 수정", "GitHub Actions", "ci.yml", "assembleDebug", "Gradle 데몬", "unit test CI", "lint CI", "UI 테스트 추가", "CD 추가", "--no-daemon", "continue-on-error"
| name | create-pr |
| description | 현재 브랜치와 develop의 차이를 분석하여 코드 리뷰를 수행한 뒤, 프로젝트 PR 템플릿에 맞는 설명을 작성하고 Pull Request를 생성합니다. "PR 만들어줘", "pull request 생성", "PR 올려줘", "PR 작성" 등의 요청에 응답합니다. |
| user-invocable | true |
| argument-hint | [작업 배경 설명] — 생략 시 diff/커밋에서 자동 추론 |
develop 브랜치의 차이를 분석한다.PR 생성 전 반드시 사용자 확인을 받는다. 무단으로 gh pr create를 실행하지 않는다.
git branch --show-current
develop 또는 main이면 즉시 중단한다:
현재 브랜치가
{브랜치명}입니다. feature/fix 브랜치에서 PR을 생성해주세요.
if git remote | grep -q upstream; then
git fetch upstream
BASE="upstream/develop"
else
git fetch origin
BASE="origin/develop"
fi
Fork 환경(upstream = 원본 팀 저장소, origin = 본인 fork)을 고려해 동적으로 BASE를 결정한다.
로컬 develop이 stale한 경우 커밋 목록·diff·PR 본문이 오래된 기준으로 계산되는 것을 방지한다.
이후 모든 비교 기준은 $BASE를 사용한다.
git log $BASE..HEAD --oneline
develop 브랜치와 차이가 없습니다. 변경사항을 커밋 후 다시 시도해주세요.
git diff $BASE...HEAD
변경된 파일 목록과 내용을 파악한다.
set -o pipefail
./gradlew compileDebugKotlin 2>&1 | tail -30
compileDebugKotlin을 선택한 이유: 전체build보다 빠르고, Kotlin 컴파일 오류·import 오류·타입 불일치를 모두 잡을 수 있다.
아래 크리티컬 기준으로 diff를 검토한다. 크리티컬 문제가 1개라도 발견되면 → Step 5-A로 이동. 모두 통과하면 → Step 5-B로 이동.
코드 리뷰와 동시에 아래 기준으로 라벨과 PR 제목을 추론한다. 추론 결과는 Step 6 확인 단계에서 함께 제시한다.
| diff 특징 | 추천 라벨 |
|---|---|
| 새 화면·기능 추가 (새 파일, 새 라우트 등) | feat |
| 기존 버그·예외 처리 수정 | fix |
| Composable 레이아웃·색상·폰트만 변경 | design |
| 속도·메모리·쿼리 최적화 | perf |
| 리팩토링·의존성·CI·빌드 설정 변경 | chore |
| 테스트·문서·주석만 변경 | skip-changelog |
PR 제목은 Firebase 릴리즈 노트에 그대로 표시된다. 아래 규칙을 지켜 추론한다.
ViewModel, Repository, UiState, Composable 등)를 사용하지 않는다[feat]:, fix: 등 타입 prefix를 붙이지 않는다 (라벨이 타입을 표현한다)| ❌ 피해야 할 제목 | ✅ 올바른 제목 |
|---|---|
[feat]: fridge-ingredient-list | 냉장고 식재료 목록 화면 추가 |
fix: NeveraTheme Shape remember 캐싱 제거 | 테마 변경 시 버튼 모양이 바뀌지 않던 문제 수정 |
[design]: update notification icon | 앱 알림 아이콘 변경 |
| 분류 | 체크 항목 |
|---|---|
| 보안 | 하드코딩된 비밀번호, API 키, 토큰 |
| 크래시 | 강제 언래핑(!!) 남용, NPE 위험 경로 |
| 메모리 누수 | ViewModel/Coroutine에서 lifecycle 미고려, Context 장기 보유 |
| 비즈니스 로직 | UseCase/Repository 계층 역할 혼용, 도메인 규칙 위반 |
| 네트워크 | 에러 핸들링 완전 누락 (try-catch도 없고 Result도 없는 경우) |
| 빌드 파괴 | import 오류, 미정의 참조, 시그니처 불일치 |
| 디자인 시스템 | NeveraTheme 미사용, 하드코딩된 Color/TextStyle (dp 수치값은 애니메이션 offset 등 디자인 토큰이 없는 특수 목적의 경우 예외 허용) |
| 아키텍처 | Composable에서 직접 Repository 호출, UI 레이어에서 데이터 직접 파싱 |
아래 형식으로 출력하고 종료한다. PR은 생성하지 않는다.
## 코드 리뷰 결과 — 크리티컬 문제 발견
PR 생성을 중단합니다. 아래 문제를 수정한 뒤 다시 시도해주세요.
---
### 🔴 [문제 제목]
- **파일**: `경로/파일명.kt` (Line N)
- **원인**: [왜 문제인지 설명]
- **수정 방향**: [어떻게 고쳐야 하는지]
---
### 🔴 [문제 제목]
...
.github/pull_request_template.md 템플릿을 기준으로 PR 본문을 작성한다.
작업 배경($ARGUMENTS)이 비어 있으면 develop..HEAD diff와 커밋 메시지를 기반으로 추론하여 작성한다.
## 🌁 작업 배경
$ARGUMENTS
## ✨ 주요 변경 사항
- [변경 사항 1]: [간결한 설명]
- [변경 사항 2]: [간결한 설명]
## 🔥 중점 리뷰 사항
- [리뷰어가 집중해서 봐야 할 부분]
(코드 리뷰 중 비크리티컬 지적사항 또는 주요 설계 결정 포함)
## 📸 스크린샷(Optional)
> UI 변경이 있는 경우 스크린샷을 첨부해주세요. 없으면 이 섹션을 삭제해도 됩니다.
## ⚓️ References
- [관련 문서, 이슈, PR 링크 등 — 없으면 `-`로 남긴다]
아래 형식으로 출력하고 반드시 사용자의 명시적 승인을 기다린다:
## 코드 리뷰 통과 ✅
비크리티컬 사항이 있다면 함께 표시한다.
---
## PR 생성 준비
**제목**: `[Step 4에서 추론한 사용자 친화적 한국어 제목]`
**라벨**: `[Step 4에서 추론한 라벨]` ← Release Drafter 릴리즈 노트에 반영됨
**Base**: `develop` ← **Head**: `현재 브랜치명`
**본문 미리보기**:
---
[작성된 PR 본문 전체]
---
위 내용으로 PR을 생성할까요? (Yes / No)
수정이 필요하면 원하는 내용을 말씀해주세요.
사용자가 Yes 또는 수정 후 재확인을 하면 아래 순서로 PR을 생성한다.
줄바꿈·따옴표·백틱 등 특수문자가 포함된 멀티라인 Markdown 본문은 --body 직접 전달 시 shell quoting 문제가 발생할 수 있으므로, 임시 파일을 사용한다:
cat > /tmp/pr_body.md << 'EOF'
[작성된 PR 본문 전체]
EOF
gh pr create --base develop --title "[PR 제목]" --label "[라벨]" --body-file /tmp/pr_body.md
--label값은 Step 4에서 추론한 라벨 이름 그대로 사용한다 (예:feat,fix,design). 저장소에 해당 라벨이 없으면gh가 오류를 반환한다. Release Drafter 가이드의 Step 1-1에서 라벨을 먼저 생성해야 한다.
생성 후 PR URL을 출력한다.
PR 제목은 Firebase 릴리즈 노트에 그대로 표시되므로 브랜치명에서 기계적으로 변환하지 않는다. diff와 커밋 메시지를 분석해 사용자가 이해할 수 있는 한국어 제목을 추론한다.
[feat]:, fix: 등을 제목에 포함하지 않는다. 타입은 라벨이 담당한다ViewModel, Repository, UiState, Composable, 클래스명 등 사용 금지브랜치명은 힌트로만 사용하고, 실제 제목은 diff/커밋에서 추론한다.
| 브랜치 패턴 힌트 | 추론 방향 |
|---|---|
feature/xxx | 새 기능 — diff에서 어떤 기능인지 파악 |
fix/xxx | 버그 수정 — 어떤 문제를 고쳤는지 사용자 언어로 |
hotfix/xxx | 긴급 수정 — 어떤 문제를 고쳤는지 |
refactor/xxx, chore/xxx | 내부 작업 — chore 또는 skip-changelog 라벨 권장, 제목은 간략히 |
Step 6 확인 단계에서 함께 노출한다:
### 🟡 참고 사항 (PR 차단 안 함)
- `파일명.kt` Line N: [내용]