release-noteslisted
Install: claude install-skill Kyungjong-kim/claude-code-harness
# Release Notes
> 마일스톤의 배포 내역을 **하나의 큐레이션 리스트**로 정리해 2산출물로 변환:
> ① 요약 이슈(마일스톤 연결) ② 배포 공지 메시지(슬랙 등).
> 저장소는 `gh repo view --json nameWithOwner` 또는 사용자 지정.
**전제**: 마일스톤 이슈는 잡다(내부 작업·QA·SQL 포함). 공지·릴리스노트엔 **사용자-대면 기능만** 선별 → 완전 자동 불가, 큐레이션 단계 필수.
> **쉘 호환**: `for x in $var`/`< <(...)` 금지(zsh 미분리·sh 미지원) → `... | while IFS= read -r` 파이프 사용.
---
## STEP 1 — 마일스톤 식별
```bash
REPO=$(gh repo view --json nameWithOwner --jq .nameWithOwner)
gh api "repos/$REPO/milestones?state=open" --jq '.[] | "\(.number)\t\(.title)\tdue:\(.due_on)\t(open:\(.open_issues) closed:\(.closed_issues))"'
```
- 버전·날짜가 제목에 있으면 제목에서 파싱(`due_on`이 비는 경우 대비). 예: `v1.2.0 06/25 배포`.
- 사용자가 미지정 시: 배포일(due_on 또는 제목 날짜)이 가장 가까운 마일스톤을 후보로 제시·확인.
- 공지 헤더용 요일 계산: `date -j -f "%Y/%m/%d" "2026/06/25" +%u`(mac) / `date -d 2026-06-25 +%u`(linux) → 1=월…7=일.
## STEP 2 — 이슈 수집 + 큐레이션 (핵심)
```bash
gh issue list --repo "$REPO" --milestone "<마일스톤 제목>" --state all --limit 300 \
--json number,title,labels,state,stateReason | cat
```
**선별 원칙 (사용자-대면 기능만):**
- 포함: 신규 기능·고도화·사용성/디자인 개선 — 사용자가 체감하는 변경.
- 제외: 순수 내부 작업(SQL·마이그레이션·리팩터링·테스트·CI), 비가시성 버그픽스, QA 재현·검증 전용.
- **부모(기능) 이슈 단위로 묶는다.** 하위 Task는 부모 아래 들여쓰기 불렛으로.
**분류 (3섹션):** 신규 기능 추가 및 고도화 / 사용성 개선 / 버그 수정(없으면 생략).
큐레이션 드래프트를 사용자에게 제시하고 **확인·수정 받는다**(포함/제외, 그룹, 하위 bullet, 부모 이슈번호). 자동 ���류는 초안.
## STEP 3 — 요약 이슈 생성/갱신
기존 요약 이슈 있으면 갱신, 없으면 생성. **생성은 사용자 확인 후.**
```bash
gh issue create --repo "$REPO" \
--title "chore: <버전/마일스톤> 릴리스 내역 정리" \
--milestone "<마일스톤 제목>"