Paperclip에서 실제 브라우저부터 서버, 데이터베이스, runner까지 검증하는 E2E 평가를 추가·확장합니다. 테스트 데이터와 판정 조건, 증거를 기존 보고서에 연결합니다.
- 전체 사용자 작업 흐름의 평가 추가
- 테스트 데이터와 판정 조건 갱신
- 평가 보고서에 스크린샷과 산출물 추가
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.
Paperclip 안정판에 실을 변경 이력을 작성합니다. 이전 안정판 태그부터 출시할 beta의 소스 커밋까지 조사하고 커밋, 변경 기록, 병합된 PR을 사용자용 설명으로 정리합니다. 관련 변경을 묶어 주요 변화, 개선, 수정, 호환성이 깨지는 변경과 필요한 업그레이드 절차를 제시합니다. 이전에 소개한 내용의 반복을 피하고 확인된 PR과 기여자도 기재합니다.
안정판 출시 전에 개발 이력을 바탕으로 릴리스 노트를 준비하는 담당자에게 적합합니다. 선택한 beta 이후의 미출시 커밋이 섞이는 것을 막고, 사용자가 대응해야 할 변경을 명확히 알릴 때도 활용합니다.
Paperclip의 출시 절차와 날짜 기반 버전 체계를 전제로 합니다. Git과 npm을 사용하며 이용 가능하다면 gh로 PR 정보도 가져옵니다. 보통 beta용 파일을 편집하고 수정판은 다른 위치에 저장합니다. 기존 변경 이력은 확인을 거치며 완성된 초안은 사람이 승인합니다. 출시 작업은 수행하지 않습니다.
이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.
AI가 SKILL.md의 내용만을 근거로 4가지 관점에서 판정했습니다. 스타 수나 인기도는 판정에 넣지 않았습니다.
총점은 각 항목을 A=25점, B=15점, C=5점으로 더한 값입니다. 2026년 10월 20일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.
설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Generate the user-facing changelog for the stable Paperclip release.
Paperclip uses calendar versioning (calver):
YYYY.MDD.P (e.g. 2026.318.0)YYYY.MDD.P-canary.N (e.g. 2026.318.1-canary.0)vYYYY.MDD.P for stable, canary/vYYYY.MDD.P-canary.N for canaryThere 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.mdrelease Case, upserted by (caseType, key) when Cases are enabled, with a
body document revision containing the changelog bodyImportant rules:
2026.318.1-canary.0, the changelog file stays releases/v2026.318.1.mdStables 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.
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:
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:
./scripts/release.sh stable --date YYYY-MM-DD --print-versiondoc/RELEASING.mdDo 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.
Collect release data from:
.changeset/*.md filesgh when availableUseful 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
Look for:
BREAKING: or BREAKING CHANGE: commit signalsKey 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.
Use these stable changelog sections:
Breaking ChangesHighlightsImprovementsFixesUpgrade Guide when neededExclude purely internal refactors, CI changes, and docs-only work unless they materially affect users.
Guidelines:
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.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:
Merge pull request #N from user/branch) to map PRs.([#10](url), [#12](url), @user1, @user2).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:
git log v{last}..{beta-src} --oneline --merges — the branch prefix (e.g. from username/branch) gives the GitHub username.user@users.noreply.github.com, the username is the part before @.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.
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.
Before handing it off:
# Paperclip {version} (e.g. # Paperclip v2026.618.0) with the stable version only-canary language in the title or filenamerelease case exists or explain why Cases were unavailableThis skill never publishes anything. It only prepares the stable changelog artifact.
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Paperclip에서 실제 브라우저부터 서버, 데이터베이스, runner까지 검증하는 E2E 평가를 추가·확장합니다. 테스트 데이터와 판정 조건, 증거를 기존 보고서에 연결합니다.
Paperclip Runner의 동작 평가에 판정 조건, 실행 대상, 보고서 검증 데이터를 추가하고 증거와 실행 이력을 남겨 검증합니다.
실제 브라우저로 웹페이지와 앱을 조작하며 화면과 동작을 검증합니다. 스크린샷, 간단한 양식 입력, 오류 및 통신 기록으로 문제 재현과 결과 확인을 돕습니다.
Paperclip에서 할당받은 AgentMail 수신함으로 작업에 연결된 메일을 확인하고, 새 메일 전송과 답장, 전송 결과 확인까지 수행합니다.
GitHub, GitLab, Perforce 변경의 검토 의견, 자동 검사 실패와 설명 누락을 확인하고, 할 일을 정리하며 요청에 따라 수정과 처리된 스레드 해결을 지원합니다.
구상이나 기존 저장소를 바탕으로 AI 에이전트의 역할, 보고 체계, 작업 인계를 정리하고 규격에 맞는 회사 또는 팀 패키지를 만듭니다.