Recording Changes
Cursus uses a changeset-based workflow where each change is recorded as a small file. This avoids merge conflicts in shared changelog files and gives you full control over how changes are described.
Interactive mode
Section titled “Interactive mode”The simplest way to record a change is with the interactive TUI:
cursus changeThe wizard walks you through:
- Select packages — choose which packages are affected by this change
- Change type — pick major, minor, or patch for each selected package
- Description — write a human-readable summary of the change
The resulting changeset file is saved to .cursus/ with a random filename.
Non-interactive mode
Section titled “Non-interactive mode”For scripting and CI, you can pass all options as flags:
cursus change --no-interactive -t minor -m "Add support for linked versions"To scope to specific packages:
cursus change --no-interactive -t patch -m "Fix publish retry logic" -p my-packageThe -p flag can be repeated to select multiple packages.
Deriving from Conventional Commits
Section titled “Deriving from Conventional Commits”If your project uses Conventional Commits, Cursus can derive changesets automatically:
cursus change --no-interactive --autoThis requires exactly one commit ahead of origin/HEAD. It parses that commit message and maps:
feat:to a minor changefix:to a patch change- Any commit with a
BREAKING CHANGE:footer or!suffix to a major change
The --auto flag is particularly useful in CI to automatically generate changesets for dependency update PRs. See Automating dependency update changesets for an example workflow.
What gets created
Section titled “What gets created”Each cursus change invocation creates a single file in .cursus/ with a random name. See the Changeset Format reference for the file structure.
Commit these files alongside your code changes. They accumulate until a release is prepared, at which point they are consumed and deleted.