with one click
finish-pr
// When the user has finished all commits for a milestone PR and wants to run self-review, fill the PR body from the template, push, and open a PR via gh, use this skill.
// When the user has finished all commits for a milestone PR and wants to run self-review, fill the PR body from the template, push, and open a PR via gh, use this skill.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | finish-pr |
| description | When the user has finished all commits for a milestone PR and wants to run self-review, fill the PR body from the template, push, and open a PR via gh, use this skill. |
End-of-PR inner-loop: self-review checklist → PR body → push → gh pr create.
.github/pull_request_template.md)Run automated parts and report each:
check skill (lint + format part)check skill (typecheck part)check skill (pytest tests/unit part). M5 이후 표준.uv run alembic upgrade head && uv run alembic downgrade -1 && uv run alembic upgrade headcoderabbit-respond after push)grep -rnE 'datetime\.(now|utcnow)\s*\(|: Any\b' apps/ packages/ for A/B (repo uses apps/ + packages/ workspace layout, not src/; the now|utcnow alternation catches both naive form and the deprecated utcnow, and \s*\( works whether or not arguments follow — \b after ) is unreliable because ) is non-word so the boundary may not match). manual scan for C (HTTP timeout+retry), D (SecretStr / no plaintext), E (ko-KR error+log), F (no AskUserQuestion calls).git diff --shortstat main..HEAD (2-dot, branch-only changes; 3-dot main...HEAD reports the merge-base diff which includes any main commits the branch hasn't picked up — wrong for unrebased branches). Subtract auto-generated / data-only files (CSV seeds, openapi.json snapshot, uv.lock) before judging — surface the breakdown to the user. If real-code LoC over 800, ask whether to split via stacked PRs (feat(scope): M<n>.1, M<n>.2).If any required check fails, stop and report. User decides to fix or override.
docs/.local/<branch>/PR.mdFill .github/pull_request_template.md slots and write to docs/.local/<branch>/PR.md (NOT directly to gh):
docs/plans/backend.md PR map for this milestone's 의존 rowgit log --oneline main..HEAD (one bullet per commit subject)docs/ARCHITECTURE.md §9 row, quote verbatimAfter write, ask the user with a numbered text question (CLAUDE.md Absolute Rule F):
Q1. PR.md 초안 작성 완료. 다음 단계는?
1) Reviewer 세션에 PR.md 리뷰 요청 (권장)
2) 바로 push + gh pr create
3) 사용자가 직접 수정 후 다시 호출
apply-critic for PR.mdIf the user chose option 1 above, the Reviewer session appends findings to critic.md ## PR.md 리뷰 section (separate from ## 코드 리뷰). The Worker then runs /apply-critic — that skill batch-triages all unprocessed findings across both sections in one message; Worker can answer PR.md items as Apply and code items as Won't fix (or vice versa) in the same batched reply. PR.md is updated by the Edit step of each Apply.
Step 2's git log --oneline main..HEAD (2-dot, branch-only) feeds the 변경 내용 section. If the branch has been rebased recently, the SHAs in the bullet list will be fresh — that's expected. Squash-merged PRs do not need to map back to original SHAs in the body.
After the user confirms PR.md is final:
git push -u origin HEAD
gh pr create --title "<commit subject>" --body-file docs/.local/<branch>/PR.md
PR title format: feat(<scope>): M<n> <short desc>. Stacked PRs use M<n>.1, M<n>.2, ...
Print the resulting PR URL. Stop. CodeRabbit auto-reviews on PR open; user invokes coderabbit-respond skill afterwards.