--- description: Use when writing changesets for releases name: changeset metadata: skiller: source: .agents/rules/changeset.mdc --- # Changeset Writing Always mirror @packages/kitcn/CHANGELOG.md tone and structure. ## 0) Reuse existing changeset - Before creating a new changeset, check `.changeset/` for an existing unreleased changeset. - If one exists, UPDATE it instead of creating a new file. Nothing in it has been released yet, so treat it as a living draft. - Replace outdated content — don't append "also added..." or track progress. Write the latest state as if from scratch. ## 1) Versioning (project is still v0) - Breaking change => `minor` - Non-breaking change => `patch` - If a release has both breaking and non-breaking work, use `minor`. ## 2) Required body structure - Split the body into explicit sections: - `## Breaking changes` - `## Features` - `## Patches` - Omit empty sections, but never mix categories in one section. - Keep bullets concise and user-facing. ## 3) Migration snippets (required for breaking changes) - Every breaking change must include a short `Before/After` code snippet immediately under that section. - Include changed imports, renamed exports, or changed call signatures. - If a symbol is renamed, include a dedicated rename snippet. ## 4) Bullet quality rules - Start bullets with action verbs: `Add`, `Support`, `Fix`, `Improve`, `Deprecate`, `Remove`, `Drop`. - Describe what users can do now, not internals. - Do not mention file paths, private implementation details, or algorithm notes. - Keep each bullet to one concrete outcome. ## 5) Copy-paste template ````md --- "kitcn": minor --- ## Breaking changes - Drop ... ```ts // Before ... // After ... ``` ## Features - Add ... ## Patches - Improve ... ``` ````