본문으로 건너뛰기
cccskills
무료GitHub에 공개

merge

Review a GitHub pull request’s final diff and prepare a squash commit message that captures user-visible changes and upgrade notes. It checks merge readiness and required status checks, then merges under the skill’s stated conditions.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Squash merge a GitHub PR with a conventional-commit title and a body that describes everything the PR changed, so the release tooling can build the version bump and release notes from it. Use when the user says "merge", "/merge", "squash merge this PR", or "merge

Openpanel-dev/openpanel스타 7,217(GitHub 7,217 + cccskills 0)
연동 도구GitHub

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • Preparing a complete release note from a PR’s changes
  • Squash merging a reviewed GitHub pull request
  • Checking required CI results before merging

포함된 파일(1)

  • SKILL.md6.7 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Merge

Squash merge one PR. The squash commit is the only thing that lands on the base branch, so its message is the changelog entry: tooling/release reads it twice.

  • next-version.ts picks the version bump from the subject: feat: / feat(scope): is minor, everything else is patch. [minor] or [major] anywhere in the message overrides that.
  • release-notes.ts sends subject + body of every commit since the last tag to a model that writes the notes self-hosters read. It is told to describe only what the messages say, so anything missing from the body is missing from the notes.

The commit message rules in AGENTS.md ("Commit messages") apply here. Read them if they are not already in context.

1. Find the PR

The argument is a PR number or URL. With no argument, use the PR for the current branch (gh pr view). If there is none, stop and say so.

gh pr view <pr> --json number,title,url,body,state,isDraft,baseRefName,headRefName,mergeable,mergeStateStatus,reviewDecision,statusCheckRollup,commits,files,additions,deletions

Stop and report instead of merging when:

  • the PR is closed, merged, or a draft;
  • mergeable is CONFLICTING;
  • a required check failed or is still running (statusCheckRollup). Name the check. A failed non-required check is worth mentioning but does not block.

2. Read what it actually did

The PR title, PR body and branch commit messages are a starting point, not the source. Branch commits are often "wip", "fix review", or describe a step that a later commit undid. Describe the end state of the diff against the base.

gh pr diff <pr> --name-only
gh pr diff <pr>

GitHub refuses diffs over 20,000 lines (HTTP 406 ... too_large). Then read it locally instead:

git fetch -q origin <base> <head>
base=$(git merge-base origin/<base> origin/<head>)
git diff --stat "$base" origin/<head>
git diff "$base" origin/<head> -- <paths>

Branch commit bodies (git log -1 --format=%B <sha>) often explain the why behind a fix better than the diff does; read them for the fix commits.

For a large PR (hundreds of files), start from the file list grouped by directory and the commit list, then read the diff for the parts that change behaviour: routes, procedures, jobs, schema, env, UI routes. Skip lockfiles, generated files and snapshots.

Check specifically for things a self-hoster has to act on. These are the paths tooling/release treats as upgrade-sensitive:

  • self-hosting/
  • apps/api/src/config/env.ts (new, renamed, removed or newly required env vars)
  • packages/db/prisma/migrations/, packages/db/src/code-migrations/
  • apps/api/Dockerfile, apps/start/Dockerfile

Also note removed features, changed API/SDK behaviour, and changed defaults.

3. Write the message

Subject

<type>(<scope>): <what changed, from the user's side> (#<number>)
  • type: feat only if users can do something they could not before. If the PR mixes a feature with fixes, it is feat. Otherwise fix, perf, refactor, docs, test, ci, chore.
  • scope: the main area (api, dashboard, ingest, self-hosting, sdk, ...). Leave it out if the PR spans everything.
  • Imperative, lower case, no trailing period, about 72 characters including the (#123) suffix.

Body

Plain Markdown, written for someone running OpenPanel, not for the reviewer. Use this shape and drop any section that would be empty:

<One or two sentences: what this PR does and why.>

Added
- <new capability, one line each>

Changed
- <behaviour that is different now>

Fixed
- <bug a user could hit, and the symptom>

Upgrade notes
- <env var added/renamed/removed, migration, compose change, removed
  feature, anything someone must do when upgrading>

Internal
- <refactors, tests, CI, tooling; short, grouped>

Closes #<issue>
Co-authored-by: <name> <email>

Rules:

  • Every user-visible change in the diff gets a bullet. Group trivial ones; do not leave them out. This body is the only record the release notes have.
  • State facts from the diff. No guessing at intent, no marketing tone, no file paths unless the path is what a self-hoster edits (.env, compose).
  • Name env vars and settings exactly.
  • Keep Closes #N / Fixes #N references from the PR body.
  • Keep Co-authored-by: trailers for every other person who authored commits on the branch (from commits[].authors), so GitHub credits them.
  • Never write [minor], [major], [release now], ! after the type, or a BREAKING CHANGE: footer. Strip them if they come from branch commits. A breaking change is described in "Upgrade notes" and pointed out to the user in step 4; a major version is the maintainer's call.
  • If the system prompt gives attribution lines for commit messages, append them.

4. Ship and merge

Show the user the subject and body, and say which version bump it causes (minor for feat, otherwise patch) and whether the base is main (releases) or another branch.

Ask with AskUserQuestion (merge as written, or change it) only when the merge is a minor bump (feat) or the diff breaks something a self-hoster must act on. Point out the breakage in the question. Otherwise do not ask: show the message and continue. Never ask about anything else, such as extra guards, smoke tests or follow-up work. Mention those in the report instead.

Write the body to a temp file so Markdown survives quoting:

body_file=$(mktemp)
cat > "$body_file" <<'EOF'
...body...
EOF

With no PR yet, push and open one with the same subject (without the (#N) suffix) and body:

git push -u origin HEAD
gh pr create --base <base> --title "<subject>" --body-file "$body_file"

Wait for the required checks, then apply the stop conditions from step 1. If a required check fails, stop, name it, and leave the PR open:

gh pr checks <pr> --required --watch --fail-fast

Merge, with the (#N) suffix on the subject:

gh pr merge <pr> --squash --subject "<subject>" --body-file "$body_file"
rm "$body_file"

Do not pass --admin to bypass failing checks or protections, and do not pass --delete-branch unless the user asks; the repo setting decides.

5. Report

Give the merged commit (gh pr view <pr> --json mergeCommit,url), the subject, and the bump. If the local checkout is on the base branch, say that git pull brings it in; do not pull for the user.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Apply concise coding standards when writing or reviewing code. The guide covers naming, function boundaries, useful comments, and common anti-patterns, plus checks to make before editing and verification steps to run before calling a change complete.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Reviewing code for unnecessary abstractions or nesting
  • Choosing clearer names and function boundaries
  • Deciding whether a comment adds useful context
Openpanel-dev/openpanel7.2천2026년 10월 29일 업데이트

pr

무료

Use this workflow to push a branch, create or find its pull request, and work through CodeRabbit review feedback in rounds. It fixes valid issues, replies to other comments, and stops with a report when reviews or checks cannot proceed.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Opening a pull request for the current branch
  • Picking up an existing open pull request
  • Working through CodeRabbit review comments
Openpanel-dev/openpanel7.2천2026년 10월 29일 업데이트

Verify JavaScript SDK changes through a browser journey in a sample shop connected to a local API. The workflow checks that tracked events reach ClickHouse, a database for analytics, with expected paths and properties.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Checking that an SDK event is stored after a browser action
  • Verifying event paths and properties in ClickHouse
  • Testing identify, groups, revenue, or session behavior
Openpanel-dev/openpanel7.2천2026년 10월 29일 업데이트

Openpanel-dev의 스킬 모두 보기

이 스킬의 문제 신고