Skip to main content

changeset

Write and verify package release changesets, registry changelog entries, and the PR’s managed auto-release choice. Use before deciding whether a package edit needs a changeset, including skipping one.

소스 정보

저장소
udecode/plate
최근 소스 활동
2026년 10월 12일 22:51
감지된 SKILL.md 언어
영어
스타
16,655
포크
994

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
description
Write and verify package release changesets, registry changelog entries, and the PR’s managed auto-release choice. Use before deciding whether a package edit needs a changeset, including skipping one.
name
changeset
metadata
{"skiller":{"source":".agents/rules/changeset.mdc"}}
# Changeset Release notes document user-visible changes: package changesets for published packages, and [registry changelog entries](./references/registry.md) for copied registry code under `apps/www/src/registry/**`. Concise bullets, imperative voice, user impact only. **Core principle:** one action verb + one impact statement = one bullet. ## Critical Rules ### 1. Core packages: no `minor` **Forbidden:** `minor` changesets for: - `@platejs/core` - `@platejs/slate` - `platejs` Use `patch` instead. `minor` on those explodes version bumps across dependents. ```yaml # Wrong --- "platejs": minor --- # Correct --- "platejs": patch --- ``` Only real breaking changes get `major`. Target branch by bump: - Major changesets target `next` for beta before stable promotion. - Minor changesets target `main`, not `next`. - Patch changes may target `main`; use `next` patch changes only for active beta-lane fixes or direct-sync beta metadata. ### 2. One package per file Never combine packages in one changeset. ```bash # Wrong --- "platejs": patch "@platejs/code-block": patch --- # Correct .changeset/plate-fix-types.md .changeset/code-block-add-option.md ``` ### 3. Always relative to the release baseline, never last commit NEVER write a changeset relative to the last commit, staged diff, current working tree, branch-local plan, or the change you just made. Those are agent breadcrumbs, not release truth. The release baseline is what users already have. For a package released from `main`, it is `main` / `origin/main`. For a package that does not exist on `main` yet, such as one in prerelease on `next`, it is that package's last published version, and `.changeset/pre.json` lists the changesets that already shipped in it. Before creating or editing a changeset, answer one question: > What will a user upgrading from the release baseline observe? If a symbol, option, behavior, file, or bug never existed in the release baseline, do **not** write a removal, migration, or breaking changeset for it. Instead, describe only the final user-visible delta from the baseline, or write no changeset if there is no published package delta. Amend an unreleased changeset that already describes the change instead of adding a duplicate. Write changesets for the user-visible delta from the release baseline. That means: - describe what users upgrading from the baseline need to know - describe migration steps only when the user actually has to do something - prefer API shape, runtime behavior, serialized data shape, or config changes - check whether any named removed/renamed API actually exists in the baseline before writing removal or migration prose Do not write: - last-commit-relative removals for APIs introduced and deleted on the same branch - implementation diary - architecture rationale - internal ownership or boundary language - test coverage notes - "editor-owned", "normalize path", "wrap semantics", or similar internal phrasing unless the public API literally uses those words If a package changed internally on this branch but has no user-visible delta from the baseline, do not write a changeset for that package. ### 4. Registry work gets a registry changelog entry If changes are only under `apps/www/src/registry/`, do **not** write a package changeset; add a registry changelog entry per the [registry reference](./references/registry.md). Mixed package and registry work may need both. `sync-plate-ui` is for downstream user apps consuming the generated JSON. Do not use it to produce upstream Plate changelog entries. ### 5. Style Use imperative voice: - `Add support for X` - `Fix Y behavior` - `Remove deprecated Z` Do not use: - `Added ...` - `We fixed ...` Keep simple changes to one line: ```md - Fix `asChild` TypeScript error - Add `disabled` prop to Button ``` Use code examples only when needed: ```tsx // Before import { LegacyPlugin } from 'platejs'; // After import { ExamplePlugin } from 'platejs'; ``` Focus on user impact only. No implementation diary. Copy API calls from the accepted, shipped source. Changesets report an API decision; they never make one. Route unresolved shape to `best-api`. Prefer this shape: - one summary sentence - optional short `**Migration:**` block - optional before/after example only when migration would be ambiguous If a sentence would sound stupid in release notes, cut it. Breaking change: ````md --- "platejs": major --- Remove `LegacyPlugin`; use `ExamplePlugin` **Migration:** Replace `LegacyPlugin` in your plugin list: ```tsx const plugins = [ExamplePlugin]; ``` ```` ## Managed auto-release choice For PR-body edits, preserve the existing `auto-release` marker block and its checked state. `tooling/scripts/auto-release-pr.mjs` owns normalization; `.github/workflows/changeset-auto-release.yml` supplies the default for a new block and excludes Version Packages PRs. Do not copy that policy into another rule or hand-toggle a release choice during prose cleanup. Creating or changing the release choice still requires the active request's authority. Read these owners when the task actually changes auto-release behavior.
GitHub에서 보기