with one click
release
develop을 main으로 릴리즈하는 release/x.y.z 브랜치 + PR 생성
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
develop을 main으로 릴리즈하는 release/x.y.z 브랜치 + PR 생성
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
gh 명령 직전 GitHub CLI 로그인 상태와 active account 를 확인
항공기 사후 단계 (Landing) — PR 머지 확인 후 워크트리 제거·develop 동기화
항법 단계 (Rejoin) — 워크트리 제거 + 브랜치를 develop 위로 리베이스해 메인 레포 로컬 브랜치로 보존 (원래 항로 재합류)
항공기 이륙 4단계 — develop 리베이스 → push → PR 생성 (원격 영향)
항공기 사후 단계 (Landing) — PR 머지 확인 후 워크트리 제거·develop 동기화
항법 단계 (Rejoin) — 워크트리 제거 + 브랜치를 develop 위로 리베이스해 메인 레포 로컬 브랜치로 보존 (원래 항로 재합류)
| name | release |
| description | develop을 main으로 릴리즈하는 release/x.y.z 브랜치 + PR 생성 |
develop의 변경사항을 모아 release/x.y.z 브랜치를 만들고 main으로 향하는 릴리즈 PR을 자동 생성한다.
$ARGUMENTS로 버전을 반드시 명시해야 한다 (예: /release 0.2.1). 비어 있거나 x.y.z 형식이 아니면 즉시 중단한다.
기존 PR 본문 구조 ground truth: PR #50 (gh pr view 50). 실제 PR 제목과 본문은 영어로 작성한다.
$ARGUMENTS가 비어 있거나 x.y.z 정규식 (^\d+\.\d+\.\d+$) 에 맞지 않으면 사용자에게 "버전을 /release 0.2.1 형식으로 명시해 주세요" 라고 알리고 즉시 중단.git rev-parse --show-toplevel이 Reserviano 루트인지 확인.git status --porcelain 결과가 비어 있어야 한다. uncommitted 변경이 있으면 알리고 중단 (release 작업에 의도치 않게 묶일 위험).git fetch origin main develop --tags.git rev-list --count origin/main..origin/develop이 0이면 "릴리즈할 변경사항 없음"으로 종료.git branch -a | grep release/로 진행 중인 release 브랜치가 있으면 사용자에게 알리고 진행 여부 확인.v<버전>)나 release 브랜치(release/<버전>)가 이미 존재하면 알리고 중단.main..develop 범위의 머지된 PR 메타데이터를 수집한다. 본문 생성 소스로 쓰고, 커밋 메시지 prefix는 보조 신호다.
# 직전 release 시점 (main의 가장 최근 release PR merge 시각)
gh pr list --state merged --base main --search "release in:title" --limit 1 \
--json mergedAt,title,number
# 그 시점 이후 develop으로 머지된 PR 목록
gh pr list --state merged --base develop --search "merged:>=<직전 release merge 시각>" \
--json number,title,body,mergedAt
각 PR에서 추출:
feat, fix, refactor, perf, docs, chore, style, test, ci, build)## Summary 블록이 있으면 그 첫 줄). 원문이 한국어이면 영어로 번역해 사용한다.카테고리 매핑:
feat: → New featuresfix: → Bug fixesrefactor:, perf: → 사용자 가시 변경이면 본인 판단으로 New features 또는 Bug fixes 중 더 적합한 곳에, 아니면 제외docs:, chore:, style:, test:, ci:, build: → 제외$ARGUMENTS로 받은 값을 그대로 사용한다.
PR #50 톤을 참고해 다음 템플릿으로 작성:
## <version>
### New features
- <English user-value summary extracted from feat PRs>
### Bug fixes
- <English problem-oriented summary extracted from fix PRs>
작성 원칙:
신뢰도 높은 정적 분석만 수행한다. prod DB 시뮬레이션·부하 테스트는 시도하지 않는다 (접근권 없음, 로컬 SQLite ↔ Postgres 차이로 안전 신호로 못 씀). 테스트·빌드 통과는 이 스킬의 책임 밖.
가장 중요. AGENTS.md "expand-contract 방식" 규칙 위반을 잡는다.
# main..develop 사이 신규/변경된 마이그레이션 파일
git diff --name-only origin/main..origin/develop -- API/migrations/versions/
각 파일에서 다음 패턴을 grep:
op.drop_column(op.drop_table(op.drop_constraint(op.drop_index(op.alter_column( 호출에서 nullable=False 가 들어가는데 같은 호출 내에 server_default= 가 없는 경우RENAME COLUMN / RENAME TOop.alter_column(... new_column_name=...) (rename)op.alter_column(... type_=...) (타입 변경)위험 신호 1개 이상이면 ⚠️와 함께 어느 파일·어느 패턴인지 표시.
git diff --name-only origin/main..origin/develop -- API/app/scheduler.py
변경이 있으면 ⚠️. Cloud Run 배포 중 구 revision 의 1분 스케줄러가 신규 스키마를 보고 깨질 위험.
git diff origin/main..origin/develop -- API/cloudbuild.yaml API/cloudbuild-preprod.yaml
변경 라인이 있으면 표시. AGENTS.md 의 2026-04-22~04-27 인시던트 재발 방지 — env vars 가 누락되면 컨테이너가 ephemeral SQLite 로 폴백.
릴리즈 사전 체크
✅ 마이그레이션 파괴성: 안전 (신규 파일 N개, 위험 패턴 0)
⚠️ 스케줄러 변경: app/scheduler.py 수정됨 — 구 revision 동시 구동 위험 검토
✅ cloudbuild env vars: 변경 없음
⚠️ 가 1개라도 있으면 5단계 확인 게이트에서 "그래도 진행 / 중단" 을 명시적으로 선택받는다.
확정된 버전, 생성한 본문, 사전 체크 결과를 사용자에게 함께 보여주고 AskUserQuestion으로 확인. 옵션:
버전을 바꾸려면 사용자가 명령을 다시 실행해야 한다 (스킬 내부에서 재추정하지 않는다).
확인 통과 후:
git checkout -b release/<버전> origin/develop
git push -u origin release/<버전>
gh pr create \
--base main \
--head release/<버전> \
--title "Release <version>" \
--body "<5단계에서 확정된 본문>"
생성된 PR URL을 사용자에게 보여주고 종료.
--no-verify, force push, 기타 destructive git 명령 금지.gh CLI 또는 git 명령 실패 시 root cause를 사용자에게 보고하고 멈춘다. 우회·재시도 금지.