Create Verified PR to Develop

VerifiedCaution

Creates a PR to develop after running code review, biome check, typecheck, build, and tests. Uses Korean Angular convention.

Sby Skills Guide Bot
DevelopmentIntermediate
7/22/2026
Claude Code
#pull-request#code-review#git-workflow#quality-gates#bun

Recommended for

Automated summary

Creates a pull request from the current work branch to develop only after enforcing five verification steps (code review, biome check, tsc, bun build, bun test) ahead of the push.

Strengths

  • Enforces the full verification chain before pushing and halts on the first failure rather than bypassing it with --force or --no-verify
  • Runs precise pre-flight checks: develop as base, HEAD on a work branch, commits ahead of origin/develop, gh authentication, and a clean tree or explicit user confirmation
  • Avoids duplicate PRs by detecting an already-open PR on the branch and simply reporting its URL after the push
  • Builds a Korean Angular-convention title and body from the commit log, including a structured test checklist

Limitations

  • Tightly coupled to the kbo-cli setup (bun scripts, biome, develop base) and not directly reusable elsewhere
  • Assumes an authenticated gh CLI and the availability of the code-review skill, with no fallback if it is missing
  • Treats bun test with zero test files as a pass, so the absence of tests is never flagged
  • Never resolves a rejected push or a rebase/merge; it stops and hands the decision back to the user
When to use it

Use it when a feature branch is finished and the user wants to open a PR to develop with verification enforced.

When not to use it

Avoid it for a plain git push request, or in repositories that do not follow this bun/biome/develop setup.

Security analysis

Caution
Quality score90/100

The skill uses git, gh CLI, and project build/test scripts for a legitimate PR creation workflow. It does not perform destructive actions, exfiltration, or obfuscation. However, it modifies remote state and executes arbitrary project scripts, so it warrants caution rather than safe.

Findings
  • •Executes git push and gh pr create, modifying the remote repository and notifying reviewers after pre-flight checks; consent is assumed from the user's PR request.
  • •Runs project scripts (bun run check/typecheck/build/test) which may execute arbitrary code defined in package.json.
  • •Automatically stages and commits changes from /code-review --fix and biome check without per-file user review, though the user is informed afterward.
How this analysis is made

Examples

Open a PR with full validation
작업 다 끝났으니까 develop 으로 PR 올려줘. 검증 단계 다 통과시켜줘.
Put it up for review
리뷰 받게 올려줘 — diff 검토하고 biome, typecheck, build, test까지 돌린 다음에 PR 만들어줘.
Skip the review step only
리뷰 없이 그대로 올려줘. 대신 biome check, typecheck, build, test는 꼭 돌려줘.

name: pr description: kbo-cli 의 작업 브랜치에서 develop 으로 향하는 새 PR 을 만든다. 단순 push+gh pr create 가 아니라, /code-review 로 diff 검토 → biome check (format+lint) → tsc typecheck → bun build → bun test 5단계 검증을 통과시킨 뒤에 PR 을 올린다. PR 제목·본문은 모두 한국어 Angular 컨벤션 (CLAUDE.md 참조). 사용자가 "PR 올려줘", "pull request 만들어줘", "PR 생성해줘", "이거 PR 로 정리해줘", "리뷰 받게 올려줘" 같은 PR 생성 의도를 보이거나, 기능 작업이 끝나서 머지 흐름을 시작하려는 맥락이면 반드시 이 스킬을 쓴다. push 만 하고 끝나는 단순 push 요청과 다르다 — push 직전에 검증을 강제하는 게 핵심이다.

/pr

작업 브랜치 → develop PR 을 올린다. 단순 push + gh pr create 래퍼가 아니다. PR 직전에 코드 검증을 강제해서, 머지 후 develop 이 깨지는 일을 막는다. 검증 도중 실패가 나오면 PR 생성까지 가지 않고 중단한다.

브랜치 정책

  • 베이스는 항상 develop (CLAUDE.md 의 브랜치 정책). main 으로 직접 PR 하지 않는다.
  • HEAD 는 main / develop 이외의 작업 브랜치여야 한다.
  • 커밋 메시지·PR 제목·PR 본문은 모두 한국어, Angular 컨벤션 (<type>(<scope>): <한국어 제목>).

실행 절차

각 단계는 실패 시 중단하고 사용자에게 원인을 보고한다. --force, --no-verify 같은 강제 옵션은 절대 쓰지 않는다 — 검증 실패는 우회 대상이 아니라 수정 대상이다.

1. Pre-flight 검증

다음을 모두 확인한다. 하나라도 어긋나면 중단.

  • 현재 브랜치: git rev-parse --abbrev-ref HEAD 결과가 develop 또는 main 이면 중단 (작업 브랜치를 만들고 다시 시도하라고 안내).
  • HEAD 가 develop 보다 앞서 있어야 함: git fetch origin develop 후 git rev-list --count origin/develop..HEAD 가 1 이상.
  • gh CLI 인증: gh auth status 가 통과해야 함. 실패하면 gh auth login 안내 후 중단.
  • 워킹 트리 상태:
    • 깨끗하면 그대로 진행.
    • dirty 면 git status -s 와 git diff 를 보여주고, "현재 변경분도 PR 에 포함하시겠어요?" 한 번 묻는다.
      • 동의 → 변경 성격을 보고 Angular 타입을 추론해 한 줄 한국어 메시지로 커밋 (예: feat(watch): 진행중 경기 좌우 전환). scope 모호하면 생략.
      • 거부 → 중단.

2. /code-review --fix 호출

Skill 도구로 code-review 스킬을 --fix 로 호출해, develop..HEAD diff 를 correctness 버그 관점에서 검토하고 findings 를 워킹 트리에 바로 반영한다 (effort 는 low/medium — 고신뢰 findings 위주). /code-review 가 실제로 파일을 수정했다면:

git diff --stat
git add -u
git commit -m "fix: /code-review 결과 반영"

scope 가 명확하면 fix(<scope>): /code-review 결과 반영 형태로. 수정이 없으면 커밋 없이 다음 단계로. 어떤 findings 가 반영됐는지는 §8 보고에 요약한다.

사용자가 "리뷰 없이 그대로 올려줘" 라고 미리 요청했다면 이 단계를 건너뛴다. 이후 단계(검증)는 그래도 모두 실행한다.

3. 코드 검증

순서대로 실행. 중간 결과를 절대 무시하지 않는다. 한 단계라도 실패하면 멈추고 보고.

bun run check        # biome check --write . (format + 안전한 lint 자동 수정)
  • check 가 파일을 변경했으면:
    git add -u
    git commit -m "style: biome check 자동 수정"
    
  • check 가 0 이 아닌 코드로 종료했으면 자동으로 못 고치는 lint 위반이 남은 것이다. 출력을 그대로 보여주고 중단 — 코드 수정은 사용자가 결정한다 (스킬이 임의로 lint 룰을 비활성화하거나 우회하지 않는다).

이어서:

bun run typecheck    # tsc --noEmit
bun run build        # bun run scripts/build.ts → dist/kbo.js
bun test             # bun 내장 테스트 러너 (테스트 0개여도 0 종료)
  • typecheck/build/test 실패는 자동 수정하지 않는다. 첫 실패 시점에 멈추고 사용자에게 위임한다.
  • dist/ 는 .gitignore 에 들어 있어 build 산출물이 워킹 트리에 남아도 PR 에 안 섞인다.
  • bun test 가 테스트 파일 0 개일 때 stderr 로 error: 0 test files matching ... 를 찍고 exit 0 으로 끝낸다. 이건 정상 — 실패로 다루지 말고 통과로 처리한다 (실제로 bun 의 종료 코드만 본다). 사용자에게 이 경고는 굳이 노출하지 않는다.

4. Push

upstream 이 없으면 -u 로 등록, 있으면 그대로 push.

BR=$(git rev-parse --abbrev-ref HEAD)
if git rev-parse --abbrev-ref --symbolic-full-name @{u} >/dev/null 2>&1; then
  git push
else
  git push -u origin "$BR"
fi

push 가 비-ff 로 거부되면 (원격에 다른 커밋이 있으면) 중단하고 보고 — --force / --force-with-lease 자동 사용 금지. 사용자에게 rebase/merge 결정을 위임한다.

5. 기존 PR 확인

같은 브랜치에 이미 열린 PR 이 있는지:

gh pr view --json number,url,state 2>/dev/null
  • 열린 PR (state=OPEN) 이 이미 있으면 새로 만들지 않는다 — 위 push 만으로 갱신됨. URL 만 보고하고 종료.
  • 없으면 다음 단계.

6. PR 메타데이터 작성

title — git log origin/develop..HEAD --pretty=format:"%s" 으로 본 커밋 제목들에서 한국어 Angular 컨벤션 한 줄 제목을 만든다:

  • 의미 있는 커밋이 1 개면 그 메시지를 그대로 사용 (chore/style 만 모인 경우는 제외하고 가장 의미 있는 type 우선).
  • 여러 개면 type 다수결 + 핵심을 종합한 한국어 제목. 50자 이내, 마침표 없음.
  • 예: feat(watch): 진행중 경기 좌우 전환 추가, fix(api): 응답 success=false 시 에러 처리.

body — 다음 한국어 템플릿:

## 요약
- <변경 핵심 1~3 bullet, 한국어>

## 테스트
- [x] `bun run check` (biome format + lint)
- [x] `bun run typecheck`
- [x] `bun run build`
- [x] `bun test`
- [ ] CLI 동작 확인 (`bun run dev today`, `bun run dev watch --game <id>`)
- [ ] fixture 화면 검증 (`bun run render:fixture` — 라이브 없을 때 STARTED/RESULT/BEFORE 한 프레임씩)

## 관련
- (이슈 / 문서 / 외부 컨텍스트 링크가 있으면, 없으면 섹션 통째로 생략)

세부 규칙:

  • UI/렌더(src/render.ts, src/watch.ts) 또는 CLI 동작(src/index.ts)이 바뀌지 않았다면 "CLI 동작 확인" 과 "fixture 화면 검증" 두 체크박스를 제외.
  • UI/렌더가 바뀐 PR 이고 라이브 경기가 없는 시간대라면, "CLI 동작 확인" 체크박스는 제외하고 "fixture 화면 검증" 만 남긴다 — 라이브 없이도 모드별 렌더를 그려볼 수 있도록 scripts/snapshot.ts / scripts/render-fixture.ts 가 준비돼 있다 (CLAUDE.md 자주 쓰는 명령 참조).
  • src/api.ts, src/types.ts 가 수정된 PR 이라면 "테스트" 섹션 끝에 --debug 로 raw 응답 확인 항목을 추가한다 — Naver 비공식 API 응답 구조 변경 위험이 있어서 (CLAUDE.md 데이터 소스 항목).
  • 본문은 한국어. 머릿글 ## 요약, ## 테스트 는 그대로 유지 — 리뷰어가 빠르게 스캔할 수 있게 형식이 일관되어야 한다.

7. PR 생성

gh pr create \
  --base develop \
  --head "$BR" \
  --title "$TITLE" \
  --body "$(cat <<'EOF'
$BODY
EOF
)"

HEREDOC 으로 본문을 전달해 따옴표·백틱이 깨지지 않게 한다.

8. 사용자에게 보고

다음을 한 번에 정리:

  • 거친 검증 단계와 각각의 결과 (✓ code-review, ✓ check, ✓ typecheck, ✓ build, ✓ test)
  • /code-review 가 --fix 로 반영한 findings 요약 (있었으면)
  • 스킬이 만든 추가 커밋 목록 (fix: /code-review 결과 반영, style: biome check 자동 수정 등)
  • push 한 브랜치 이름과 upstream
  • 생성된 PR URL (또는 이미 열려있던 PR URL)

주의사항

  • /code-review --fix 와 biome check 가 만드는 자동 수정 커밋은 PR diff 를 어지럽힐 수 있다. 사용자가 "자동 수정 커밋 없이 가고 싶다" 고 미리 말했으면 §2 와 §3 의 자동 수정 단계를 건너뛴다 — 단, typecheck/build/test 는 반드시 통과해야 PR 을 만든다 (검증 자체를 건너뛰지는 않는다).
  • biome 이 처음 적용되는 PR 은 포매팅 변경이 광범위할 수 있다. 첫 PR 에서는 검증 커밋이 큰 게 정상 — 사용자에게 미리 알린다.
  • 작업 브랜치가 origin 에 없을 수 있다. 첫 push 는 -u origin <branch> 로 upstream 을 만들어 둔다.
  • PR 본문에 본인이 만든 커밋 SHA 를 나열하지 않는다 — gh 가 자동으로 commits 탭에 보여주고, 본문 중복은 노이즈다.
  • 코드 식별자(함수명, 옵션명) 는 영문 그대로. 한국어 번역하지 않는다.
  • 이 스킬은 git push 와 gh pr create 를 실행한다 — 둘 다 사용자 외 영향 (원격 갱신, 리뷰어 알림). pre-flight 검증을 다 통과한 뒤에야 push 하므로, 사전 동의는 "PR 올려줘" 발화 자체로 보고 별도 확인은 묻지 않는다. 단 dirty 워킹 트리를 PR 에 포함할지(§1)는 명시적으로 한 번 묻는다.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/create-verified-pr-to-develop-mrwak8w6/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/create-verified-pr-to-develop-mrwak8w6' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/create-verified-pr-to-develop-mrwak8w6/download' --output '.skill-downloads/create-verified-pr-to-develop-mrwak8w6/SKILL.md.part' && mv '.skill-downloads/create-verified-pr-to-develop-mrwak8w6/SKILL.md.part' '.skill-downloads/create-verified-pr-to-develop-mrwak8w6/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/create-verified-pr-to-develop-mrwak8w6/SKILL.md' && test -s '.skill-downloads/create-verified-pr-to-develop-mrwak8w6/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/pr' && cp -R '.skill-downloads/create-verified-pr-to-develop-mrwak8w6' '.claude/skills/pr'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/create-verified-pr-to-develop-mrwak8w6'

openskills read 'create-verified-pr-to-develop-mrwak8w6'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/create-verified-pr-to-develop-mrwak8w6/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills