본문으로 건너뛰기
cccskills
무료GitHub에 공개한국어 소개

release-changelog

Paperclip 안정판 출시를 위해 커밋, 변경 기록, 병합된 PR을 사용자용 변경 이력으로 정리합니다. 호환성이 깨지는 변경과 필요한 업그레이드 절차도 설명합니다.

원문원문 설명 보기

Generate the stable Paperclip release changelog at releases/vYYYY.MDD.P.md by reading commits, changesets, and merged PR context since the last stable tag.

연동 도구GitHub
AI 평가90점/ 100설치 방법 보기

이럴 때 유용합니다

  • 안정판 변경 이력을 준비합니다
  • 호환성 변경과 업그레이드 절차를 정리합니다
  • 이전 안정판 이후의 차이를 요약합니다
  • PR과 기여자 정보를 기재합니다

한국어 소개

할 수 있는 일

Paperclip 안정판에 실을 변경 이력을 작성합니다. 이전 안정판 태그부터 출시할 beta의 소스 커밋까지 조사하고 커밋, 변경 기록, 병합된 PR을 사용자용 설명으로 정리합니다. 관련 변경을 묶어 주요 변화, 개선, 수정, 호환성이 깨지는 변경과 필요한 업그레이드 절차를 제시합니다. 이전에 소개한 내용의 반복을 피하고 확인된 PR과 기여자도 기재합니다.

이럴 때 유용합니다

안정판 출시 전에 개발 이력을 바탕으로 릴리스 노트를 준비하는 담당자에게 적합합니다. 선택한 beta 이후의 미출시 커밋이 섞이는 것을 막고, 사용자가 대응해야 할 변경을 명확히 알릴 때도 활용합니다.

사용 예시

  • “이번 beta를 바탕으로 안정판 변경 이력을 작성해 주세요.”
  • “이전 안정판과의 차이를 조사하고 호환성이 깨지는 변경과 업그레이드 절차를 정리해 주세요.”

주의 사항

Paperclip의 출시 절차와 날짜 기반 버전 체계를 전제로 합니다. Git과 npm을 사용하며 이용 가능하다면 gh로 PR 정보도 가져옵니다. 보통 beta용 파일을 편집하고 수정판은 다른 위치에 저장합니다. 기존 변경 이력은 확인을 거치며 완성된 초안은 사람이 승인합니다. 출시 작업은 수행하지 않습니다.

이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.

객관 평가

AI가 SKILL.md의 내용만을 근거로 4가지 관점에서 판정했습니다. 스타 수나 인기도는 판정에 넣지 않았습니다.

지시의 명확성언제 쓰고 무엇을 하는지 알 수 있는가
A양호안정판 변경 이력 작성을 목적으로 하며 이전 태그부터 beta 소스 커밋까지로 범위를 명시합니다.
절차의 구체성절차·입출력·예시가 구체적으로 적혀 있는가
A양호Git, npm, gh 명령과 변경 분류, PR 표기 예시, 저장 위치 예외를 지정합니다.
안전성전송·삭제·명령 실행 등을 명시하고 있는가
A양호기존 파일을 먼저 읽고 변경 전 확인을 요청하며 무단 덮어쓰기를 금지합니다.
도입의 용이성필요한 도구나 API 키가 적고 적혀 있는가
B일부 부족Git, npm과 기존 출시 스크립트를 사용하지만 환경 설치 절차는 없습니다.

총점은 각 항목을 A=25점, B=15점, C=5점으로 더한 값입니다. 2026년 10월 20일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.

평가가 다르다고 생각되면 재검토를 요청하기

어느 항목이 왜 다르다고 생각하는지 적어 주세요. 로그인은 필요 없습니다. SKILL.md와 대조해 평가를 다시 만들고 이곳에 반영합니다.

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

포함된 파일(1)

  • SKILL.md11.8 KB

SKILL.md(원문)

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

Release Changelog Skill

Generate the user-facing changelog for the stable Paperclip release.

Versioning Model

Paperclip uses calendar versioning (calver):

  • Stable releases: YYYY.MDD.P (e.g. 2026.318.0)
  • Canary releases: YYYY.MDD.P-canary.N (e.g. 2026.318.1-canary.0)
  • Git tags: vYYYY.MDD.P for stable, canary/vYYYY.MDD.P-canary.N for canary

There are no major/minor/patch bumps. The stable version is derived from the intended release date (UTC) plus the next same-day stable patch slot.

Output:

  • releases/vYYYY.MDD.P.md
  • a release Case, upserted by (caseType, key) when Cases are enabled, with a body document revision containing the changelog body

Important rules:

  • even if there are canary releases such as 2026.318.1-canary.0, the changelog file stays releases/v2026.318.1.md
  • do not derive versions from semver bump types
  • do not create canary changelog files

Channel Process — Source Commit and File Location

Stables promote a soaked beta, so the changelog describes the beta's source commit, not the tip of master:

  • The release source is the commit the newest beta/v<beta-version> tag points at ({beta-src} below). Resolve it with:

    git fetch origin --tags
    npm view paperclipai dist-tags   # the beta dist-tag names the version
    git rev-parse 'beta/v{beta-version}^{commit}'
    
  • Commits on master after {beta-src} ship in the next release. Never include them; they are input for a "what's next" section, not the changelog.

  • During the soak, the file lives at releases/beta/v{beta-version}.md on the branch release-notes/v{beta-version} (PR to master). The release workflow pushes that branch with a generated skeleton when the beta publishes; work on it and rewrite the skeleton in place. If the branch does not exist (a beta cut before the automation), create it from origin/master and seed the skeleton:

    ./scripts/draft-stable-notes.sh {beta-version}
    
  • The PR must merge to master before the stable is dispatched: the stable preflight reads the file from master and fails without it.

  • Never create releases/vYYYY.MDD.P.md yourself on this path — after the stable ships, the workflow opens a canonicalization PR that renames the beta-keyed file to it.

  • Fix path exception (patch releases from a candidate/release-* branch): there the notes do go directly on the candidate branch as releases/vYYYY.MDD.P.md, committed alongside the cherry-picked fixes.

Step 0 — Idempotency Check

Before generating anything, check whether the changelog already exists:

ls releases/beta/v{beta-version}.md 2>/dev/null   # soak-window home
ls releases/vYYYY.MDD.P.md 2>/dev/null            # canonicalized / fix path
git ls-remote origin 'refs/heads/release-notes/v{beta-version}'

A release-notes/v{beta-version} branch holding only the generated skeleton is the normal starting state, not a conflict — rewrite it in place.

If it exists:

  1. read it first
  2. present it to the reviewer
  3. ask whether to keep it, regenerate it, or update specific sections
  4. never overwrite it silently

Step 1 — Determine the Stable Range

Find the last stable tag and the beta source commit:

git tag --list 'v*' --sort=-version:refname | head -1
beta_src="$(git rev-parse 'beta/v{beta-version}^{commit}')"
git log v{last}..${beta_src} --oneline --no-merges

The changelog range is always v{last}..{beta-src} — never ..HEAD and never ..origin/master.

The stable version comes from one of:

  • an explicit maintainer request
  • ./scripts/release.sh stable --date YYYY-MM-DD --print-version
  • the release plan already agreed in doc/RELEASING.md

Do not derive the changelog version from a canary tag or prerelease suffix. Do not derive major/minor/patch bumps from API intent — calver uses the date and same-day stable slot.

Step 2 — Gather the Raw Inputs

Collect release data from:

  1. git commits since the last stable tag
  2. .changeset/*.md files
  3. merged PRs via gh when available

Useful commands:

git log v{last}..{beta-src} --oneline --no-merges
git log v{last}..{beta-src} --format="%H %s" --no-merges
ls .changeset/*.md | grep -v README.md
gh pr list --state merged --search "merged:>={last-tag-date}" --json number,title,body,labels

Step 3 — Detect Breaking Changes

Look for:

  • destructive migrations
  • removed or changed API fields/endpoints
  • renamed or removed config keys
  • BREAKING: or BREAKING CHANGE: commit signals

Key commands:

git diff --name-only v{last}..{beta-src} -- packages/db/src/migrations/
git diff v{last}..{beta-src} -- packages/db/src/schema/
git diff v{last}..{beta-src} -- server/src/routes/ server/src/api/
git log v{last}..{beta-src} --format="%s" | rg -n 'BREAKING CHANGE|BREAKING:|^[a-z]+!:' || true

If breaking changes are detected, flag them prominently — they must appear in the Breaking Changes section with an upgrade path.

Step 4 — Categorize for Users

Use these stable changelog sections:

  • Breaking Changes
  • Highlights
  • Improvements
  • Fixes
  • Upgrade Guide when needed

Exclude purely internal refactors, CI changes, and docs-only work unless they materially affect users.

Guidelines:

  • group related commits into one user-facing entry
  • write from the user perspective
  • keep highlights short and concrete
  • spell out upgrade actions for breaking changes
  • write at full stable depth from the first pass: the beta-keyed draft ships verbatim as the stable's notes, so the previous stable's file is the density bar the moment the draft is first written — never leave it at generated-skeleton density for the soak. The skeleton's nested PR summaries are raw material to rewrite, not a format to keep.
  • describe deltas, not repeats: read the previous stable's notes (releases/v<last-stable>.md) before writing. When they already introduced a feature, this release's entry covers only what changed — a default flip, a hardening, a completion — phrased against the prior release ("last release introduced X; this release makes it the default"), never re-describing the feature as if it debuted. A theme that headlined the previous release does not headline again for follow-through work; demote it to Improvements.

Inline PR and contributor attribution

When a bullet item clearly maps to a merged pull request, add inline attribution at the end of the entry in this format:

- **Feature name** — Description. ([#123](https://github.com/paperclipai/paperclip/pull/123), @contributor1, @contributor2)

Rules:

  • Only add a PR link when you can confidently trace the bullet to a specific merged PR. Use merge commit messages (Merge pull request #N from user/branch) to map PRs.
  • List the contributor(s) who authored the PR. Use GitHub usernames, not real names or emails.
  • If multiple PRs contributed to a single bullet, list them all: ([#10](url), [#12](url), @user1, @user2).
  • If you cannot determine the PR number or contributor with confidence, omit the attribution parenthetical — do not guess.
  • Core maintainer commits that don't have an external PR can omit the parenthetical.

Step 5 — Write the File

The file path is the beta-keyed one from the Channel Process section (releases/beta/v{beta-version}.md), but the content is titled with the planned stable version. Resolve it with ./scripts/release.sh stable --date {planned-promotion-date} --print-version (promotion is normally the beta publish date plus the 3-day soak). If the promotion date slips, the version re-resolves at dispatch — the beta-keyed filename makes that harmless; refresh the title when it happens.

The opening line of the changelog must be an H1 of the format # Paperclip {version} (no braces), e.g. # Paperclip v2026.618.0. Always include the Paperclip prefix and the v on the version.

Template:

# Paperclip vYYYY.MDD.P

> Released: YYYY-MM-DD

## Breaking Changes

## Highlights

## Improvements

## Fixes

## Upgrade Guide

## Contributors

Thank you to everyone who contributed to this release!

@username1, @username2, @username3

Omit empty sections except Highlights, Improvements, and Fixes, which should usually exist.

The Contributors section should always be included. List every person who authored commits in the release range, @-mentioning them by their GitHub username (not their real name or email). To find GitHub usernames:

  1. Extract usernames from merge commit messages: git log v{last}..{beta-src} --oneline --merges — the branch prefix (e.g. from username/branch) gives the GitHub username.
  2. For noreply emails like user@users.noreply.github.com, the username is the part before @.
  3. For contributors whose username is ambiguous, check gh api users/{guess} or the PR page.

Never expose contributor email addresses. Use @username only.

Exclude bot accounts (e.g. lockfile-bot, dependabot) from the list. Exclude specific folks from the list — the Contributors section credits community contributors only. The canonical exclusion list (keep it here; the Discord skill defers to it): cryppadotta, forgottendev, devinfoley, sockmonster, scotttong, nguyenm7, nickyleach, tonio-alucema

List contributors in alphabetical order by GitHub username (case-insensitive).

If there are no contributors left after exclusions, then just skip this section and don't mention it.

Step 5b — Upsert The Release Case

After writing releases/vYYYY.MDD.P.md, emit or refresh the top-level release case when the run has Paperclip API context. Use skills/paperclip/references/cases.md as the API contract. If the API returns 403 Cases are disabled, report that Cases must be enabled and continue with the changelog file only.

Request:

POST /api/companies/:companyId/cases
{
  "caseType": "release",
  "key": "paperclip-release:vYYYY.MDD.P",
  "title": "Paperclip vYYYY.MDD.P release",
  "summary": "Stable Paperclip release notes for vYYYY.MDD.P.",
  "status": "in_progress",
  "fields": {
    "schema_version": 1,
    "version": "vYYYY.MDD.P",
    "release_date": "YYYY-MM-DD",
    "release_patch": 0,
    "stable": true,
    "channels": ["changelog", "blog_post", "tweet_storm"],
    "artifacts": {
      "changelog_path": "releases/vYYYY.MDD.P.md",
      "github_release_url": null
    },
    "verification": {
      "typecheck": "unknown",
      "tests": "unknown",
      "build": "unknown",
      "smoke": "unknown"
    },
    "notes": null
  }
}

This fields schema deliberately exercises every generic field value type: string, number, boolean, array, object, and null. Keep the keys stable across runs and send the full object on every upsert because fields are replaced, not deep-merged.

Then write the changelog into the case body document:

PUT /api/cases/:releaseCaseId/documents/body
{
  "title": "Paperclip vYYYY.MDD.P changelog",
  "format": "markdown",
  "body": "<contents of releases/vYYYY.MDD.P.md>",
  "changeSummary": "Initial stable changelog"
}

If updating an existing body document, fetch the case first and pass the latest baseRevisionId. On 409 stale_base_revision, refetch, merge intentionally, and retry once.

Step 6 — Review Before Release

Before handing it off:

  1. confirm the H1 heading is # Paperclip {version} (e.g. # Paperclip v2026.618.0) with the stable version only
  2. confirm there is no -canary language in the title or filename
  3. confirm any breaking changes have an upgrade path
  4. confirm the release case exists or explain why Cases were unavailable
  5. present the draft for human sign-off

This skill never publishes anything. It only prepares the stable changelog artifact.

리뷰

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

댓글

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

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

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

0 / 1,000자

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

같은 저장소의 스킬

add-product-e2e-eval

무료요약 있음AI 평가 90점

Paperclip에서 실제 브라우저부터 서버, 데이터베이스, runner까지 검증하는 E2E 평가를 추가·확장합니다. 테스트 데이터와 판정 조건, 증거를 기존 보고서에 연결합니다.

  • 전체 사용자 작업 흐름의 평가 추가
  • 테스트 데이터와 판정 조건 갱신
  • 평가 보고서에 스크린샷과 산출물 추가
paperclipai/paperclip10.6만2026년 10월 22일 업데이트

add-runner-eval

무료요약 있음AI 평가 90점

Paperclip Runner의 동작 평가에 판정 조건, 실행 대상, 보고서 검증 데이터를 추가하고 증거와 실행 이력을 남겨 검증합니다.

  • Runner 동작 평가를 추가합니다
  • 정상 및 잘못된 증거로 판정을 검증합니다
  • 실행 대상 목록과 지속 평가를 갱신합니다
paperclipai/paperclip10.6만2026년 10월 22일 업데이트

agent-browser

무료요약 있음AI 평가 90점

실제 브라우저로 웹페이지와 앱을 조작하며 화면과 동작을 검증합니다. 스크린샷, 간단한 양식 입력, 오류 및 통신 기록으로 문제 재현과 결과 확인을 돕습니다.

  • UI 변경 후 화면을 확인합니다
  • JavaScript로 렌더링된 내용을 읽습니다
  • 화면 문제와 오류를 재현합니다
paperclipai/paperclip10.6만2026년 10월 22일 업데이트

agentmail

무료요약 있음AI 평가 100점

Paperclip에서 할당받은 AgentMail 수신함으로 작업에 연결된 메일을 확인하고, 새 메일 전송과 답장, 전송 결과 확인까지 수행합니다.

  • 담당 작업에 연결된 메일을 확인합니다
  • 할당된 수신함에서 새 메일을 보냅니다
  • 대화의 특정 메시지에 답장합니다
paperclipai/paperclip10.6만2026년 10월 22일 업데이트

check-pr

무료요약 있음AI 평가 80점

GitHub, GitLab, Perforce 변경의 검토 의견, 자동 검사 실패와 설명 누락을 확인하고, 할 일을 정리하며 요청에 따라 수정과 처리된 스레드 해결을 지원합니다.

  • 변경 사항을 제출하기 전에 점검합니다
  • 실패한 검사와 수정할 항목을 확인합니다
  • 사람과 봇의 검토 의견을 정리합니다
paperclipai/paperclip10.6만2026년 10월 22일 업데이트

company-creator

무료요약 있음AI 평가 100점

구상이나 기존 저장소를 바탕으로 AI 에이전트의 역할, 보고 체계, 작업 인계를 정리하고 규격에 맞는 회사 또는 팀 패키지를 만듭니다.

  • 구상에서 에이전트 회사를 만듭니다
  • 저장소를 팀 구성으로 정리합니다
  • 역할 분담과 작업 인계를 설계합니다
paperclipai/paperclip10.6만2026년 10월 22일 업데이트

paperclipai의 스킬 모두 보기

이 스킬의 문제 신고