/pr¶
사용자가 "PR 올려줘", "풀 리퀘스트 생성" 등 현재 브랜치를 GitHub Pull Request 로 올리길 요청할 때 사용한다. base branch 는 state·config· 공통 config 순으로 자동 결정하며 사용자 명시 입력 시 state 에 저장한다. 제목·본문 컨벤션은
skills/context/shared/pr.md를 따른다.
현재 git 브랜치의 변경을 PR 로 올린다.
대상 브랜치: 현재 checkout 된 head (다른 브랜치 push 는 지원하지 않음 — 먼저 git checkout).
사전 확인¶
preamble.md 의 P-1, P1 수행 ({PROJECT} 획득).
PR 컨벤션 lookup 순서 (레포지터리 단위 — 워크스페이스 공통): workspace/context/pr.md(워크스페이스 override) → 부재 시 shared/pr.md(플러그인 default). 플러그인 내장이라 이 둘이 모두 부재하는 상황은 정상 설치에서 발생하지 않지만, 만일을 대비한 최종 fallback(라벨·Q-템플릿 없는 Summary+Test plan 2 섹션 최소 본문)은 shared/pr.md § 3 과 동일 구조를 따른다.
Base branch 결정¶
.agent-state.yml 의 pr_base_branch 존재 여부로 분기: 있으면 "타겟: {값} (저장됨). Enter=유지 / 새 입력=변경" 질의(Enter 시 state 미변경) — 없으면 "타겟 브랜치? (Enter={pr_default_base})" 질의(Enter 시 config 의 pr_default_base 사용, state 미저장 — 새 값 입력 시에만 pr_base_branch 신규 기록). pr_default_base 미설정이면 하드 fallback develop.
base 결정 후 PR 생성 전 필수: git ls-remote --exit-code origin <base> 검증. 실패 시 "origin 에 없습니다. 다시 입력하세요" 후 재질의 (최대 3회 후 종료).
수행 절차¶
- 변경 확인 —
git status/git log <base>..HEAD --oneline/git diff <base>...HEAD --stat으로 PR 범위 확인. - uncommitted 차단 — staged·unstaged 있으면
/pilot:commit선행 안내 후 종료. - 광역 회귀 (soft gate) —
config.md의regression_command설정 시 1회 실행. 통과 → 진행 / 실패 → 결과 요약 후 진행 여부 확인(자동 차단 안 함) / 미설정 → skip + INFO 권장. - upstream push — 브랜치가 origin 에 없거나 ahead 면
git push -u origin <branch>. - PR 본문 초안 — pr.md(팀/플러그인) 구조 따라 작성.
git log <base>..HEAD커밋 메시지가 1차 재료.project.md(목표·체크리스트)→Summary,features/*.md→Notes, docs/ Confluence URL→Why. 팀 pr.md 에 Q1~Q6 형식 있으면 그 형식 사용. - 사용자 확인 — 제목·본문·base·head 를 보여주고 승인 받음 (수정 요청 1 라운드 반영).
- PR 생성 —
gh pr create --base <base> --head <branch> --title <title> --body <body>(HEREDOC 사용). - state 갱신 — base 가 명시 입력이면
pr_base_branch기록 (Enter=default 면 미저장). - Slack 알림 —
.slack.env활성 +SLACK_EVENTS에pr포함(default 포함) 시:
python3 ${CLAUDE_PLUGIN_ROOT}/tools/slack-notify.py --event pr --workspace workspace --message "<title> — <pr_url>"
--no-slack 시 skip. 발송 계약(messages.md § Slack 알림 메시지) 대로 실패해도 비차단.
10. 완료 안내 — PR URL 출력.
옵션 (인자)¶
$ARGUMENTS 파싱: (없음) 위 절차 그대로 · --draft → gh pr create --draft · --base <branch> → base 질의 skip(입력값 사용, state 에 명시 입력으로 기록) · --no-slack → Slack skip · --title "..." → 제목 자동 생성 skip.
제약¶
- 현재 브랜치가 base 와 동일하면 종료 ("base 와 head 가 동일").
ghCLI 미인증 시gh auth login안내 후 종료.--no-verify/hook 우회 사용 금지.- base 질의 루프는 최대 3회 — 3회 모두 실패하면 종료.
참조¶
- PR 컨벤션 (default):
shared/pr.md - state 스키마 (
pr_base_branch):lifecycle/state-schema.md - 커밋 선행:
/pilot:commit