@zeix/cause-effect
Version:
Cause & Effect - reactive state management primitives library for TypeScript.
69 lines (57 loc) • 2.82 kB
Markdown
name: changelog-keeper
description: >
Maintain CHANGELOG.md for the @zeix/cause-effect library. Use after meaningful code
changes, when asked to add release notes, or to prepare a release.
user_invocable: true
<objective>
Maintain `CHANGELOG.md` following [Keep a Changelog](https://keepachangelog.com) conventions,
adapted to this project's style: technically precise, developer-focused entries that include
implementation detail when it explains *why* behavior changed or *how* to migrate.
</objective>
<structure>
The changelog uses this heading hierarchy:
```markdown
# Changelog
## [Unreleased] ← only present when unreleased changes exist
### Added
### Fixed
## 1.0.0 ← released versions use bare version numbers, no brackets
### Changed
...
```
- `## [Unreleased]` is only present when there are documented changes not yet released.
Create it at the top (below `# Changelog`) when documenting the first new change after a release.
It does not exist between releases.
- Released versions use bare version numbers: `## 1.0.0`, `## 0.18.5`, etc. No brackets.
- Only include category headings (`### Added`, `### Changed`, etc.) that have entries.
- `## 0.18.0` is the baseline. Do not document changes before it.
</structure>
<adding_entries>
1. Read `CHANGELOG.md`.
2. Inspect the diff to identify changes: `git diff main..HEAD -- src/ index.ts` or as directed.
3. If there is no `## [Unreleased]` section, create one immediately below `# Changelog`.
4. Classify each change into exactly one category: Added, Changed, Deprecated, Removed, Fixed, or Security.
5. Write entries following the style guide below.
6. Do not duplicate existing entries.
7. Edit the file in place using the Edit tool.
</adding_entries>
<preparing_a_release>
When asked to release a version:
1. Rename `## [Unreleased]` to `## X.Y.Z` — do not leave an empty `[Unreleased]` section behind.
2. Update `version` in `package.json` to match.
3. Update the `@version` tag in `index.ts` to match.
</preparing_a_release>
<entry_style>
- **One behavior change per bullet.**
- **Bold the API name or short summary** at the start, followed by a colon:
`- **\`createMemo\` \`watched\` option**: description…`
- **Include implementation details** when they explain *why* the behavior changed, *how* the
fix works, or *what internal invariant* is preserved. This changelog is read by developers
and AI agents integrating or contributing to the library — precision is expected.
- **Use before/after framing for Fixed entries**: "Previously, X. Now, Y."
- **Include migration notes** under Changed or Removed when behavior breaks compatibility.
State clearly what consumers must change and why.
- Use backticks for all public API names, internal types, flags, and file names.
</entry_style>