CLI Reference
Global flags
Section titled “Global flags”These flags can be used with any subcommand.
| Flag | Short | Description |
|---|---|---|
--interactive | Enable interactive TUI (default) | |
--no-interactive | Disable interactive prompts | |
--verbose | -v | Increase log verbosity. Repeat (-vv) for trace output |
--silent | -s | Suppress all output except errors |
--dry-run | -n | Preview changes without modifying files or running registry commands |
--verbose and --silent are mutually exclusive.
cursus init
Section titled “cursus init”Initialise a new Cursus configuration using the interactive setup wizard.
cursus initCreates .cursus/config.toml with your chosen package managers and settings. This command is interactive-only.
The wizard walks through:
- Package managers: select Cargo, npm, or both (auto-detected from the repo root).
- Manifest paths: enter a subdirectory for each manifest if not at the git root.
- Git automation: enable, then choose
pushorbranchstrategy. - Forge: pick GitHub, GitLab, or Neither.
- Forge configuration: for the chosen forge, edit auto-detected
owner/repo(GitHub) orgroup/project(GitLab). The GitLab screen additionally surfaces a self-managed host field for non-gitlab.com instances. - Editor: optionally open the generated config in
$EDITOR.
The generated config emits the chosen forge’s section as enabled = true and the other forge as a commented-out template, so switching forges later only requires uncommenting and editing.
cursus change
Section titled “cursus change”Record a change to the project. This is the default subcommand — running cursus with no subcommand is equivalent to cursus change.
cursus change [OPTIONS]| Flag | Short | Description |
|---|---|---|
--change-type <TYPE> | -t | Change type: major, minor, or patch |
--message <TEXT> | -m | Description of the change |
--project <NAME> | -p | Package(s) to apply to. Repeatable. Defaults to git-changed projects, or all if none detected |
--auto | Derive changeset from the most recent Conventional Commit | |
--no-git | Skip commit and push (requires --auto) |
--auto is mutually exclusive with --change-type and --message.
Examples
Section titled “Examples”# Very simplecursus
# Interactivecursus change
# Non-interactive, specific packagecursus change --no-interactive -t minor -m "Add retry logic" -p my-lib
# From Conventional Commitcursus change --no-interactive --autocursus prepare
Section titled “cursus prepare”Prepare a release: aggregate changesets, bump versions, generate changelogs, and manage branches.
cursus prepare [OPTIONS]| Flag | Short | Description |
|---|---|---|
--package <NAME> | -p | Package(s) to prepare. Repeatable. Defaults to all |
--no-git | Skip git lifecycle automation | |
--branch <NAME> | Override release branch name (branch strategy only) |
Examples
Section titled “Examples”# Prepare all packagescursus prepare --no-interactive
# Prepare specific packagescursus prepare --no-interactive -p my-lib -p my-cli
# Preview without changescursus prepare --no-interactive --dry-runcursus publish
Section titled “cursus publish”Publish packages to their registries, create Git tags, and optionally create forge releases (GitHub or GitLab).
cursus publish [OPTIONS]| Flag | Short | Description |
|---|---|---|
--package <NAME> | -p | Package(s) to publish. Repeatable. Defaults to all |
--no-git | Skip Git tags, tag pushing, and forge releases |
Examples
Section titled “Examples”# Publish all packagescursus publish --no-interactive
# Publish without Git operationscursus publish --no-interactive --no-gitcursus ci
Section titled “cursus ci”Auto-detect repository state and run prepare or publish as needed. Designed for CI pipelines.
This command is always non-interactive.
cursus ci [OPTIONS]| Flag | Short | Description |
|---|---|---|
--package <NAME> | -p | Package(s) to operate on. Repeatable. Defaults to all |
--branch <NAME> | Override release branch name | |
--no-git | Skip git and forge (GitHub/GitLab) operations |
Detection logic:
- If changeset files exist in
.cursus/→ runs prepare - If no changesets but packages have versions without matching Git tags → runs publish
- Otherwise → exits successfully (no-op)
cursus verify
Section titled “cursus verify”Verify that the current branch adds at least one changeset compared to a base ref. Designed for CI to enforce changeset discipline on pull requests.
cursus verify [OPTIONS]| Flag | Description |
|---|---|
--base <REF> | Base Git ref to compare against (default: origin/HEAD) |
Exit codes:
| Code | Meaning |
|---|---|
| 0 | Changeset(s) found |
| 1 | Error |
| 2 | No changesets found |