On this page
Manage a monorepo workspace of independently-versioned projects: init, add or remove projects, sync CI, list, lint, and compute release order.
#rlsbl monorepo
Manage monorepo workspaces with multiple independently-versioned projects. Initialize workspaces, add or remove projects, sync CI workflows, check name availability, and analyze dependency graphs. Provides 15 monorepo subcommands plus a release subgroup, and supports all 18 release targets in a single workspace.toml.
#monorepo init
Create a new monorepo workspace by generating the .rlsbl-monorepo directory and an empty workspace.toml configuration file at the current directory. This must be run at the repository root before adding individual projects with the add subcommand. Each workspace tracks multiple independently-versioned projects that share a single git repository.
#Flags
| Name | Short | Type | Default | Env | Description |
|---|---|---|---|---|---|
--no-commit | bool | Create the workspace.toml file without auto-committing it to git |
#monorepo add
Register a project directory in the monorepo workspace.toml configuration. The path argument specifies the project's location relative to the repo root. Optionally set a display name, target registry for publishing, glob patterns for change detection, a subtree remote URL for split publishing, inter-project dependencies, and a library flag to mark shared code packages.
#Flags
| Name | Short | Type | Default | Env | Description |
|---|---|---|---|---|---|
--name | str | Display name for the project in workspace.toml (defaults to directory name) | |||
--target | str | Registry this project publishes to (e.g. npm, pypi, go, cargo) | |||
--watch | str | Comma-separated glob patterns for change detection in CI workflows | |||
--subtree-remote | str | Git remote URL for split-publishing this project as a standalone repo | |||
--depends-on | str | Comma-separated names of workspace projects this project depends on | |||
--library | str | Mark as a shared library consumed by other workspace projects (true/false) | |||
--dev-only | str | Mark as a dev-only leaf node excluded from the dependency boundary guardrail (true/false) | |||
--releasable | str | Releasable group this project belongs to (name of a [[releasables]] entry, or 'false' to opt out of versioning) | |||
--no-commit | bool | Skip auto-commit of workspace.toml and suppress commits from auto-triggered scaffold/sync |
#Arguments
| Name | Required | Description |
|---|---|---|
path | yes | Relative path from the repo root to the project directory to register |
#monorepo remove
Unregister a project from the monorepo workspace.toml by its path. This removes the project entry from the workspace configuration file but does not delete any files, directories, or git history on disk. The project's code remains intact and can be re-added later with the add subcommand if needed.
#Arguments
| Name | Required | Description |
|---|---|---|
path | yes | Relative path from the repo root of the project to unregister from workspace.toml |
#monorepo list
Display all projects registered in the monorepo workspace.toml file. For each project, shows the project name, relative path from the repo root, target registry for publishing, and any configured options such as watch patterns, subtree remotes, inter-project dependencies, and whether the project is marked as a library.
#monorepo sync
Copy and merge CI workflow files from each project's individual scaffold into the shared .github/workflows directory at the repository root. This ensures that every project in the workspace has its publish and test pipelines properly configured as GitHub Actions workflows, even when projects use different target registries or have custom workflow steps.
#Flags
| Name | Short | Type | Default | Env | Description |
|---|---|---|---|---|---|
--no-commit | bool | Write merged workflow files to .github/workflows/ without auto-committing |
#monorepo status
Show the current version, last release tag, and number of unreleased commits for every project in the monorepo workspace. Provides a quick overview of which projects have pending changes and are ready for their next release. Projects with zero unreleased commits are shown as up-to-date.
#monorepo check-names
Check package name availability on a target registry for all projects in the monorepo workspace. Queries the registry API for each project name and reports whether it is available or already taken. Supports optional prefix and suffix arguments to test naming conventions like scoped packages, with a configurable delay between registry queries to avoid rate limiting.
#Flags
| Name | Short | Type | Default | Env | Description |
|---|---|---|---|---|---|
--target | str | Registry to query for name availability across all workspace projects (npm, pypi, go, or github) | |||
--prefix | str | String to prepend to each project name before checking availability | |||
--suffix | str | String to append to each project name before checking availability | |||
--delay | str | 200 | Milliseconds to wait between consecutive registry API queries (default: 200) |
#monorepo outdated
Scan all projects in the monorepo workspace for intra-workspace dependencies that reference older versions than what is currently available in the workspace. Lists each outdated dependency with the referenced version and the latest available version, helping identify which downstream projects need a version bump after upstream releases.
#monorepo snapshot
Generate a committed JSON artifact at .rlsbl-monorepo/snapshot.json summarizing all packages, versions, dependencies, and graph structure. Use --check to verify the snapshot is up-to-date without regenerating it (exits 1 if stale).
#Flags
| Name | Short | Type | Default | Env | Description |
|---|---|---|---|---|---|
--check | bool | Verify snapshot.json is up-to-date (exit 1 if stale) |
#monorepo mirror
Initialize a subtree mirror repository for a monorepo project by performing a full git subtree split of the project's history, pushing the extracted tree to the configured subtree_remote URL, cloning the resulting standalone mirror repository, running rlsbl scaffold to generate CI workflows for independent publishing, and pushing the scaffolded mirror to its remote.
#Arguments
| Name | Required | Description |
|---|---|---|
project | yes | Name of the workspace project to split and push as a standalone mirror repo |
#monorepo graph
Export the monorepo dependency graph in JSON, DOT (Graphviz), or indented text tree format. Supports filtering by a root package (transitive deps) or reverse package (transitive rdeps), with optional depth limiting. Use --output to write to a file instead of stdout.
#Flags
| Name | Short | Type | Default | Env | Description |
|---|---|---|---|---|---|
--format | str | json | Serialization format for the dependency graph: json, dot (Graphviz), or text | ||
--output | str | File path to write the graph output to instead of printing to stdout | |||
--root | str | Filter to show only transitive dependencies reachable from this package | |||
--reverse | str | Filter to show only transitive reverse dependencies of this package | |||
--depth | int | Maximum number of dependency hops to traverse from the root or reverse node |
#monorepo impact
Analyze the impact of changes to a package, file, or git diff range on the monorepo dependency graph. Shows direct and transitive dependents, test scope, and release candidates. Supports package names, file paths, and --since for git-based change detection.
#Flags
| Name | Short | Type | Default | Env | Description |
|---|---|---|---|---|---|
--format | str | text | Output serialization format for the impact report: json or text (default: text) | ||
--depth | int | Maximum number of dependency hops to traverse when computing transitive impact | |||
--since | str | Git ref to diff against HEAD (e.g. HEAD~3, v1.0.0) |
#monorepo extract
Extract a package from the monorepo into a new standalone repository. Clones the monorepo, runs git filter-repo to keep only the package's history, migrates changelog entries, creates .rlsbl/ config in the new repo, and removes the project from workspace.toml.
#Arguments
| Name | Required | Description |
|---|---|---|
target_path | yes | Filesystem path where the new standalone repository will be created |
package_name | yes | Name of the package in workspace.toml to extract |
#monorepo absorb
Absorb an external repository as a package in the monorepo. Runs git subtree add to import the source repo's history under the package name, adds the project to workspace.toml, and migrates changelog entries from the source repo's .rlsbl/changes/ directory.
#Flags
| Name | Short | Type | Default | Env | Description |
|---|---|---|---|---|---|
--releasable | str | Releasable group to assign the absorbed package to |
#Arguments
| Name | Required | Description |
|---|---|---|
package_name | yes | Name for the package in the monorepo workspace |
source_path | yes | Filesystem path to the external git repository to absorb |
#monorepo extract-releasable
Extract all member packages of a releasable into a new repository. If the releasable has one member, creates a single-project repo. If it has multiple members, creates a new monorepo with workspace.toml. Migrates changelog entries for each member and removes all extracted projects from the source workspace.
#Arguments
| Name | Required | Description |
|---|---|---|
target_path | yes | Filesystem path where the new repository will be created |
releasable_name | yes | Name of the releasable group in workspace.toml to extract |
#monorepo migrate-releasable
Migrate a releasable from per-package release state to the releasable model. Detects current state, consolidates per-package changelogs and versions into the releasable directory, creates a releasable-format migration tag, and removes orphaned per-package .rlsbl/changes/ and .rlsbl/releases/ directories. Requires the workspace to be in explicit mode (with [[releasables]] in workspace.toml).
#Arguments
| Name | Required | Description |
|---|---|---|
releasable_name | yes | Name of the releasable group in workspace.toml to migrate |