From 2a5bb91c7275bf449780bdf59df03af32c9a7e74 Mon Sep 17 00:00:00 2001 From: Bori-github Date: Tue, 28 Jul 2026 18:00:01 +0900 Subject: [PATCH 1/2] =?UTF-8?q?docs(github):=20PR=20=ED=85=9C=ED=94=8C?= =?UTF-8?q?=EB=A6=BF=EC=9D=84=20=EC=8B=A4=EC=A0=9C=20=ED=8C=A8=ED=82=A4?= =?UTF-8?q?=EC=A7=80=20=EA=B5=AC=EC=A1=B0=C2=B7=EB=A6=B4=EB=A6=AC=EC=A6=88?= =?UTF-8?q?=20=ED=9D=90=EB=A6=84=EC=97=90=20=EB=A7=9E=EA=B2=8C=20=EA=B0=9C?= =?UTF-8?q?=ED=8E=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 범위 체크리스트에 apps/react-zpl만 있어 별도 npm 패키지인 zpl-core와 zpl-viewer를 고를 수 없었다. 제목 규칙도 적혀 있지 않아 squash 제목이 그대로 릴리즈 노트 한 줄이 된다는 사정이 드러나지 않았다. - 범위를 실제 워크스페이스(zpl-core·react-zpl·zpl-viewer·demos·docs· tests·CI)로 교체하고 배포 대상임을 함께 표기 - 제목 규칙 안내 추가 — squash 제목이 main 커밋이자 릴리즈 노트가 되는 사정 - "의도적으로 안 한 것 / 후속" 섹션 추가 — 누락과 의도를 구분 - 검증을 체크박스가 아니라 값으로 적게 변경 (`pnpm verify` 결과) - 공개 패키지 영향(공개 API·ZPL 출력 변화·태그 필요 여부) 섹션 추가 - 리뷰 포인트/위험 지점 섹션 추가 Co-Authored-By: Claude Opus 5 (1M context) --- .github/pull_request_template.md | 58 +++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 13 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 60d4b0d..baba8ea 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,25 +1,57 @@ -## 📝 작업 내용 + - +## 요약 / 의도 + + + +## 범위 + +- [ ] `apps/zpl-core` — 렌더링 코어 (npm 공개) +- [ ] `apps/react-zpl` — React 어댑터 (npm 공개) +- [ ] `apps/zpl-viewer` — 뷰어 웹 (Vercel 배포) +- [ ] `demos` — 웹 · Electron 데모 +- [ ] `docs` — 문서 사이트 (GitHub Pages) +- [ ] `tests` +- [ ] CI · 툴링 · 설정 + +### 이번에 한 것 + +- + +### 의도적으로 안 한 것 / 후속 + + - -## 🔍 변경 범위 +## 공개 패키지 영향 + + - +- 공개 API 변경: <없음 / 추가 / 시그니처 변경 / 제거> +- 생성되는 ZPL 출력이 달라지는가: <아니오 / 예 — 어떤 명령이 어떻게> +- 버전·태그 필요: <불필요 / `zpl-core/vX.Y.Z` / `react-zpl/vX.Y.Z`> -- [ ] `apps/react-zpl` - React ZPL 라이브러리 -- [ ] `docs` - 문서 사이트 -- [ ] `tests` - 테스트 코드 -- [ ] `demos` - 데모 애플리케이션 -- [ ] 기타 (설명 필요) +## 설계 · 결정 -## 📸 스크린샷 (선택사항) + + +- - +## 검증 (체크가 아니라 값으로) -## 📚 추가 정보 +- `pnpm verify`: <통과 / 실패 요약> +- 새 동작에 테스트를 추가했는가: <예 — 파일 / 해당없음 — 이유> +- 자동 검증이 불가능한 항목(확인 방법·이유): - +## 리뷰 포인트 / 위험 지점 + + - + +## 스크린샷 / 생성된 ZPL + + From e44ef844dcfdfd5c9dda16c758afcf8bdc0efd77 Mon Sep 17 00:00:00 2001 From: Bori-github Date: Tue, 28 Jul 2026 18:00:10 +0900 Subject: [PATCH 2/2] =?UTF-8?q?chore(claude):=20PR=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EC=BB=A4=EB=A7=A8=EB=93=9C(/pr)=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR 템플릿은 본문을 제공해 PR을 만들면 아예 거치지 않는다. 실제로 머지된 PR 어디에도 템플릿 섹션이 채워진 흔적이 없다. 템플릿을 읽어 채우는 경로가 있어야 실효가 생긴다. - 본문 구조의 단일 출처는 `.github/pull_request_template.md`. 커맨드는 규칙을 다시 정의하지 않고 채우기만 한다 - 검증은 `pnpm verify` 결과를 값으로 적게 한다 - 공개 패키지 영향은 생성되는 ZPL 문자열 변화를 판정 기준으로 둔다 - push·PR 생성·라벨 부여는 승인 후에만 실행한다 - 라벨은 레포에 정의된 것 중에서 고르고, 애매하면 사용자에게 묻는다 Co-Authored-By: Claude Opus 5 (1M context) --- .claude/commands/pr.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .claude/commands/pr.md diff --git a/.claude/commands/pr.md b/.claude/commands/pr.md new file mode 100644 index 0000000..67f2a40 --- /dev/null +++ b/.claude/commands/pr.md @@ -0,0 +1,41 @@ +--- +description: 현재 브랜치로 Pull Request를 생성한다 (.github PR 템플릿 기반) +argument-hint: '[base 브랜치 — 생략 시 main]' +--- + +현재 브랜치의 변경으로 Pull Request를 만든다. 본문 구조의 단일 출처는 `.github/pull_request_template.md`이며, 이 커맨드는 그것을 채울 뿐 규칙을 다시 정의하지 않는다. + +## 절차 + +1. **base 결정** — 인자로 받은 브랜치, 없으면 `main`. `origin/`가 있으면 그것을 기준으로 삼는다. 현재 브랜치가 base면 "생성할 변경이 없다"고 알리고 멈춘다. +2. **맥락 수집** + - `git log origin/..HEAD --oneline` — 커밋들이 곧 의도다 + - `git diff origin/..HEAD --stat` — 변경 파일 + - 커밋 본문에서 결정·이탈을 읽는다 +3. **본문 작성** — `.github/pull_request_template.md`를 읽어 각 섹션을 diff·커밋을 근거로 채운다. + - **의도적으로 안 한 것 / 후속**, **검증**, **공개 패키지 영향** 세 곳은 반드시 채운다 — diff에 담기지 않는 정보다 + - 확실치 않으면 추측하지 말고 사용자에게 묻는다 + - diff·커밋에서 그대로 읽히는 것은 중복하지 않는다(의도·제외·검증 결과 위주) + - 해당 없는 섹션은 템플릿 주석대로 삭제한다 +4. **제목** — 지배적 변경으로 type을 정한다. 형식은 템플릿 상단 주석(Conventional Commits + 한국어 요약)을 따른다. squash 병합이라 이 제목이 그대로 main의 커밋이자 릴리즈 노트 한 줄이 된다. +5. **범위 체크** — 템플릿의 범위 목록을 `git diff --stat` 경로와 대조해 체크한다. 추측으로 체크하지 않는다. +6. **공개 패키지 영향** — `apps/zpl-core`·`apps/react-zpl`을 건드렸으면 필수다. + - 공개 API가 바뀌었는지: 두 패키지의 `src/index.ts` 및 재export 경로의 diff로 판단한다 + - **생성되는 ZPL 문자열이 달라지는지**: 이 레포에서 사실상 breaking change 판정 기준이다. 달라지면 before/after를 본문에 적는다 + - 버전·태그가 필요한지 (`zpl-core/vX.Y.Z` · `react-zpl/vX.Y.Z` 태그가 npm 발행을 트리거한다) +7. **검증** — `pnpm verify` 결과를 본문에 **값으로** 적는다. 못 돌렸으면 그 이유를 적는다. 통과 여부를 추측해 적지 않는다. +8. **라벨** — `gh label list`로 레포에 정의된 라벨 중에서 고른다. 어떤 라벨이 맞는지 애매하면 임의로 정하지 말고 사용자에게 묻는다. +9. **스크린샷 / 생성된 ZPL** — 다음에 해당할 때만 채운다. + - `apps/zpl-viewer`·`demos` UI가 바뀌면 스크린샷 + - 생성되는 ZPL이 바뀌면 before/after를 코드블록으로 (스크린샷보다 이쪽이 리뷰에 쓸모 있다) + - 둘 다 아니면 섹션을 삭제한다 +10. **다이어그램(mermaid)** — 기본은 **넣지 않는다**. 그림을 위한 그림은 노이즈다. 렌더 파이프라인(React 트리 → `LabelRootNode` → ZPL 문자열) 자체의 흐름이 바뀐 PR에 한해 `flowchart` 하나만 인라인한다. +11. **확인 후 생성** — 초안(제목·본문·라벨)을 사용자에게 보여주고 **승인받은 뒤에만** 실행한다. + - 브랜치가 원격에 없으면 먼저 `git push -u origin ` (승인 후) + - `gh pr create --base --title "…" --body "…" --assignee @me` 후 필요하면 `gh pr edit --add-label