PR 본문을 에이전트에 쓰게 하려면

에이전트 PR 본문은 “PR을 열었다”가 아니라 리뷰어가 첫 화면에서 의도·범위·검증을 읽을 수 있게 채우는 일입니다. 에이전트에게 고정 템플릿, diff 기반 요약 규칙, 리뷰어용 체크리스트를 주면 빈 본문·파일 나열만 있는 PR이 줄어듭니다.

인접 글과 축을 나눕니다. multi-agent-pr-workflow는 브랜치 소유·병렬·머지 게이트이고, linear-to-agent-pr는 Linear 이슈 패킷 → 위임 → 리뷰 요청 시점입니다. 이 글은 본문 작성만 다룹니다. 요금·플랜·제휴 링크는 없습니다. 근거는 GitHub Creating a pull request, gh pr create입니다.

템플릿은?

한 줄 답: 레포에 PR 템플릿(또는 에이전트 지시용 마크다운) 을 두고, 에이전트에게 “칸을 비우지 말고 채운 뒤 --body-file/gh pr create로 제출”하라고 고정합니다. 제목은 결과 한 줄, 본문은 의도·검증·리스크입니다.

GitHub는 기본 브랜치에 .github/pull_request_template.md(또는 PULL_REQUEST_TEMPLATE/)를 두면 새 PR 본문에 채웁니다. CLI는 gh pr create --title "…" --body-file path로 같은 구조를 강제할 수 있습니다.

에이전트에 넣을 최소 칸:

칸에이전트가 채울 것금지
Summary무엇을/왜 2–4불릿파일 경로 나열만
Motivation이슈·버그·요청 한 줄장황한 슬랙 전문
Changes관심사별 그룹(API/UI/CI)“여러 파일 수정”만
Test plan실제 돌린 명령·결과“테스트함” 한 단어
Risk / rollback데이터·API·플래그빈 칸
Out of scope이번엔 안 한 것침묵
Reviewer notes볼 포인트·트레이드오프“LGTM 부탁”만

지시 문장 예:

Write the PR body from this template. Fill every section.
Do not invent Test plan results — only commands you ran.
Do not paste secrets, tokens, or raw PII.
Title: <ticket-or-type>: <outcome in one line>
Then open PR with gh pr create --body-file <path> (or paste body).
Do not request reviewers until the human says so.

템플릿 파일 예(레포 공용이면 .github/pull_request_template.md에 두고, 에이전트 전용이면 docs/pr-body-agent.md로 복제해도 됩니다):

## Summary
-

## Motivation / linked issue
-

## Changes (by concern)
-

## Test plan
- [ ] `<command>` → result:
- [ ] Manual:

## Risk & rollback
- Risk:
- Rollback:

## Out of scope
-

## Notes for reviewers
-

팀이 Conventional Commits·티켓 ID를 쓰면 제목만 fix(auth): … / ENG-1234: …로 맞추고, 본문 칸은 그대로 둡니다. Linear 전용 칸이 필요하면 linear-to-agent-pr 템플릿을 쓰되, 이 글의 Summary·Test·Risk 규칙은 공유합니다.

diff 요약은?

한 줄 답: 에이전트에게 git diff <base>...HEAD를 읽고 관심사로 묶어 요약하라고 하고, 줄 수·파일명 덤프가 아니라 의도·경계·깨질 수 있는 계약을 쓰게 합니다.

좋은 diff 요약의 신호:

신호예
의도 먼저“로그인 재시도 한도를 3→5로 올려 flaky를 줄임”
관심사 그룹API 계약 / UI 카피 / 테스트 fixture
계약 변경 명시응답 필드 추가·기본값·에러 코드
비변경 명시“스키마 마이그레이션 없음”
근거 링크이슈·실패 CI·스크린샷(민감정보 가림)

나쁜 요약(에이전트에 금지):

  1. src/a.ts, src/b.ts, … 파일 목록만.
  2. “리팩터링함 / 클린업”처럼 관찰 불가.
  3. diff에 없는 기능을 Summary에 적기(환각).
  4. 테스트 실패를 숨기고 “all green”이라고 쓰기.

에이전트 워크플로 스케치:

1. git fetch && git diff origin/main...HEAD --stat
2. git diff origin/main...HEAD  (또는 path allowlist만)
3. Group hunks by concern (not by file path alone)
4. Fill Summary + Changes from those groups
5. List contracts touched (API, flags, migrations)
6. Paste only commands you actually ran into Test plan

gh pr diff·로컬 git diff 중 팀 표준 하나를 고릅니다. 큰 PR이면 “Changes”를 모듈/패키지 단위로만 쓰고, 리뷰어가 볼 1–3개 핫스팟 경로만 Notes에 적습니다. 멀티 에이전트 병렬·경로 락은 multi-agent-pr-workflow로 넘깁니다—여기는 한 PR 본문의 요약 품질만입니다.

Diff summary rules for the agent:
- Lead with why / outcome
- Group by concern (max ~5 bullets)
- Call out breaking or behavioral changes
- Never claim tests you did not run
- If unsure, write "Unknown — needs human" in Notes

리뷰어 체크는?

한 줄 답: 본문 안에 리뷰어가 바로 쓸 체크리스트를 넣고, 에이전트는 초안·셀프체크만 하며 Approve·머지는 사람(또는 CODEOWNERS)에게 둡니다.

리뷰어 체크(본문 Notes for reviewers 또는 별도 절) 예:

Reviewer checklist (human):
[ ] Intent matches linked issue / AC
[ ] Scope matches allowlist — no surprise paths
[ ] Contracts (API/flags/migrations) called out above
[ ] Test plan commands are reproducible
[ ] Secrets / PII / debug dumps absent from diff
[ ] Rollback path is believable
[ ] Out of scope is honest (or follow-up linked)

에이전트 셀프체크(PR 열기 직전, 사람에게 넘기기 전):

항목통과 기준
템플릿 빈 칸Summary·Test·Risk에 -만 남지 않음
Test plan실행한 명령 문자열이 본문에 있음
diff ↔ SummarySummary에 없는 대규모 변경이 diff에 없음
시크릿.env, 키, 토큰 문자열 없음
리뷰 요청사람 지시 전 --reviewer 자동 호출 금지

운영 팁:

  1. 체크리스트는 팀이 합의한 최소만. 칸이 늘면 에이전트가 형식만 채웁니다.
  2. CODEOWNERS·필수 상태 검사는 리뷰어 체크를 대체하지 않습니다. 본문은 “어디를 볼지”를 압축합니다.
  3. 에이전트가 “셀프 Approve” 문구를 넣지 않게 합니다. 초안 품질과 승인 권한을 섞지 않습니다.
  4. 실패 CI가 있으면 Test plan에 실패 사유·무시 가능 여부를 한 줄로 적습니다. 침묵이 가장 비쌉니다.

한 줄 정리: 템플릿으로 칸을 고정하고, diff에서 의도·계약을 요약하며, 리뷰어 체크로 사람이 볼 포인트를 남깁니다. 브랜치 병렬·Linear 핸드오프 글과 축이 다릅니다.

FAQ

PR 템플릿이 이미 있는데 에이전트 지시가 또 필요한가요?

예. UI 템플릿은 빈 칸을 주고, 에이전트 지시는 채우는 규칙(diff 요약·금지 항목·--body-file)을 줍니다. 둘 다 있을 때 본문 품질이 안정됩니다.

Summary와 Changes를 어떻게 나누나요?

Summary는 왜/결과(2–4불릿), Changes는 어디에 손댔는지 관심사 그룹입니다. Summary에 파일 트리를 넣지 마세요.

multi-agent-pr·linear-to-agent-pr와 무엇이 다른가요?

multi-agent-pr-workflow = 브랜치·경로·머지 게이트. linear-to-agent-pr = 이슈 패킷·리뷰 요청 시점. 이 글은 PR 본문 작성(템플릿·diff 요약·리뷰어 체크) 만입니다.

에이전트가 리뷰어를 자동 지정해도 되나요?

팀이 허용한 기본 리뷰어가 있어도, 본문이 채워지고 사람이 OK한 뒤가 안전합니다. 빈 본문 + 자동 리뷰 요청은 노이즈입니다.

출처 (Sources)