2026-03-05 11:21:44 -06:00
|
|
|
---
|
|
|
|
|
name: release-changelog
|
|
|
|
|
description: >
|
2026-03-18 07:50:33 -05:00
|
|
|
Generate the stable Paperclip release changelog at releases/vYYYY.MDD.P.md by
|
2026-03-09 08:49:42 -05:00
|
|
|
reading commits, changesets, and merged PR context since the last stable tag.
|
2026-03-05 11:21:44 -06:00
|
|
|
---
|
|
|
|
|
|
|
|
|
|
# Release Changelog Skill
|
|
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Generate the user-facing changelog for the **stable** Paperclip release.
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-18 07:50:33 -05:00
|
|
|
## 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.
|
|
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Output:
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-18 07:50:33 -05:00
|
|
|
- `releases/vYYYY.MDD.P.md`
|
2026-03-09 08:49:42 -05:00
|
|
|
|
2026-03-18 07:50:33 -05:00
|
|
|
Important rules:
|
2026-03-09 08:49:42 -05:00
|
|
|
|
2026-03-18 07:50:33 -05:00
|
|
|
- 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
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-05 11:38:09 -06:00
|
|
|
## Step 0 — Idempotency Check
|
|
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Before generating anything, check whether the file already exists:
|
2026-03-05 11:38:09 -06:00
|
|
|
|
|
|
|
|
```bash
|
2026-03-18 07:50:33 -05:00
|
|
|
ls releases/vYYYY.MDD.P.md 2>/dev/null
|
2026-03-05 11:38:09 -06:00
|
|
|
```
|
|
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
If it exists:
|
2026-03-05 11:38:09 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
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
|
2026-03-05 11:38:09 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
## Step 1 — Determine the Stable Range
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Find the last stable tag:
|
2026-03-05 11:21:44 -06:00
|
|
|
|
|
|
|
|
```bash
|
2026-03-09 08:49:42 -05:00
|
|
|
git tag --list 'v*' --sort=-version:refname | head -1
|
|
|
|
|
git log v{last}..HEAD --oneline --no-merges
|
2026-03-05 11:21:44 -06:00
|
|
|
```
|
|
|
|
|
|
2026-03-18 07:50:33 -05:00
|
|
|
The stable version comes from one of:
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
- an explicit maintainer request
|
2026-03-18 07:50:33 -05:00
|
|
|
- `./scripts/release.sh stable --date YYYY-MM-DD --print-version`
|
2026-03-09 08:49:42 -05:00
|
|
|
- the release plan already agreed in `doc/RELEASING.md`
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Do not derive the changelog version from a canary tag or prerelease suffix.
|
2026-03-18 07:50:33 -05:00
|
|
|
Do not derive major/minor/patch bumps from API intent — calver uses the date and same-day stable slot.
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
## Step 2 — Gather the Raw Inputs
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Collect release data from:
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
1. git commits since the last stable tag
|
|
|
|
|
2. `.changeset/*.md` files
|
|
|
|
|
3. merged PRs via `gh` when available
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Useful commands:
|
2026-03-05 11:21:44 -06:00
|
|
|
|
|
|
|
|
```bash
|
2026-03-09 08:49:42 -05:00
|
|
|
git log v{last}..HEAD --oneline --no-merges
|
|
|
|
|
git log v{last}..HEAD --format="%H %s" --no-merges
|
2026-03-05 11:21:44 -06:00
|
|
|
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
|
|
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Look for:
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
- destructive migrations
|
|
|
|
|
- removed or changed API fields/endpoints
|
|
|
|
|
- renamed or removed config keys
|
|
|
|
|
- `BREAKING:` or `BREAKING CHANGE:` commit signals
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Key commands:
|
2026-03-05 11:21:44 -06:00
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
git diff --name-only v{last}..HEAD -- packages/db/src/migrations/
|
|
|
|
|
git diff v{last}..HEAD -- packages/db/src/schema/
|
|
|
|
|
git diff v{last}..HEAD -- server/src/routes/ server/src/api/
|
2026-03-09 08:49:42 -05:00
|
|
|
git log v{last}..HEAD --format="%s" | rg -n 'BREAKING CHANGE|BREAKING:|^[a-z]+!:' || true
|
2026-03-05 11:21:44 -06:00
|
|
|
```
|
|
|
|
|
|
2026-03-18 07:50:33 -05:00
|
|
|
If breaking changes are detected, flag them prominently — they must appear in the
|
|
|
|
|
Breaking Changes section with an upgrade path.
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
## Step 4 — Categorize for Users
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Use these stable changelog sections:
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
- `Breaking Changes`
|
|
|
|
|
- `Highlights`
|
|
|
|
|
- `Improvements`
|
|
|
|
|
- `Fixes`
|
|
|
|
|
- `Upgrade Guide` when needed
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Exclude purely internal refactors, CI changes, and docs-only work unless they materially affect users.
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Guidelines:
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
- 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
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 13:55:30 -05:00
|
|
|
### 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.
|
|
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
## Step 5 — Write the File
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Template:
|
2026-03-05 11:21:44 -06:00
|
|
|
|
|
|
|
|
```markdown
|
2026-03-18 07:50:33 -05:00
|
|
|
# vYYYY.MDD.P
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-18 07:50:33 -05:00
|
|
|
> Released: YYYY-MM-DD
|
2026-03-05 11:21:44 -06:00
|
|
|
|
|
|
|
|
## Breaking Changes
|
|
|
|
|
|
|
|
|
|
## Highlights
|
|
|
|
|
|
|
|
|
|
## Improvements
|
|
|
|
|
|
|
|
|
|
## Fixes
|
|
|
|
|
|
|
|
|
|
## Upgrade Guide
|
2026-03-09 13:55:30 -05:00
|
|
|
|
|
|
|
|
## Contributors
|
|
|
|
|
|
|
|
|
|
Thank you to everyone who contributed to this release!
|
|
|
|
|
|
|
|
|
|
@username1, @username2, @username3
|
2026-03-05 11:21:44 -06:00
|
|
|
```
|
|
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Omit empty sections except `Highlights`, `Improvements`, and `Fixes`, which should usually exist.
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 13:55:30 -05:00
|
|
|
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}..HEAD --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.
|
|
|
|
|
|
[codex] Refresh docs and agent skills (#4693)
## Thinking Path
> - Paperclip orchestrates AI agents through a company-scoped control
plane
> - Contributors and agents need docs and skills that match the current
V1 behavior
> - The source branch included documentation updates alongside
implementation work
> - Keeping docs and skill guidance separate makes the implementation PR
easier to review
> - This pull request refreshes the V1 docs and agent-operating guidance
without changing runtime behavior
> - The benefit is current contributor guidance that can merge
independently from code changes
## What Changed
- Refreshed V1 product, goal, implementation, database, and development
documentation.
- Updated the Paperclip heartbeat skill guidance and create-agent skill
references.
- Added the Paperclip plan-to-task conversion skill.
- Updated release changelog skill guidance.
## Verification
- `git diff --check public-gh/master..HEAD` passed in the PR worktree
after the Greptile fix.
- Greptile Review passed on head `673317ed` with zero unresolved review
threads.
- GitHub PR checks passed on head `673317ed`: `policy`, `verify`, `e2e`,
and `security/snyk (cryppadotta)`.
## Risks
- Low runtime risk because this branch only changes docs and skill
guidance.
- Documentation may need follow-up wording adjustments if reviewers want
a different framing for V1 behavior.
> For core feature work, check [`ROADMAP.md`](ROADMAP.md) first and
discuss it in `#dev` before opening the PR. Feature PRs that overlap
with planned core work may need to be redirected — check the roadmap
first. See `CONTRIBUTING.md`.
## Model Used
- OpenAI Codex, GPT-5 coding agent, tool-enabled terminal/GitHub
workflow. Exact runtime context window was not exposed by the harness.
## Checklist
- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] If this change affects the UI, I have included before/after
screenshots
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] I will address all Greptile and reviewer comments before
requesting merge
---------
Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-04-28 16:12:03 -05:00
|
|
|
Exclude bot accounts (e.g. `lockfile-bot`, `dependabot`) from the list.
|
|
|
|
|
Exclude Paperclip founders from the list (e.g. `cryppadotta`, `forgottendev`, `devinfoley`, `sockmonster`, `scotttong`)
|
|
|
|
|
|
|
|
|
|
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.
|
2026-03-09 13:55:30 -05:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
## Step 6 — Review Before Release
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
Before handing it off:
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
1. confirm the heading is 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. present the draft for human sign-off
|
2026-03-05 11:21:44 -06:00
|
|
|
|
2026-03-09 08:49:42 -05:00
|
|
|
This skill never publishes anything. It only prepares the stable changelog artifact.
|