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 10 monorepo subcommands and supports all 14 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 | Skip auto-commit of workspace.toml |
#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 | Project name (defaults to directory name) | |||
--target | str | Target registry | |||
--watch | str | Comma-separated glob patterns to watch | |||
--subtree-remote | str | Subtree remote URL | |||
--depends-on | str | Comma-separated dependency project names | |||
--library | str | Mark as library (true/false) | |||
--no-commit | bool | Skip auto-commit of workspace.toml and suppress commits from auto-triggered scaffold/sync |
#Arguments
| Name | Required | Description |
|---|---|---|
path | yes | Path to the project directory |
#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 | Path to the project to remove |
#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 | Skip auto-commit of synced workflow files |
#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 | Target registry (npm, pypi, or go) | |||
--prefix | str | Prefix to prepend to project names | |||
--suffix | str | Suffix to append to project names | |||
--delay | str | 200 | Delay between checks in ms |
#monorepo release-order
Compute and display the topological release order for all projects in the monorepo workspace based on their declared depends-on relationships. Projects with no dependencies are listed first, followed by projects that depend on them, ensuring each project is released only after its dependencies. Detects and reports circular dependency errors.
#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 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 | Output format: json, dot, or text (default: json) | ||
--output | str | Write output to file instead of stdout | |||
--root | str | Show only transitive deps from this package | |||
--reverse | str | Show only transitive rdeps of this package | |||
--depth | int | Limit traversal depth |
#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 format: json or text (default: text) | ||
--depth | int | Limit traversal depth | |||
--since | str | Git ref to diff against HEAD (e.g. HEAD~3, v1.0.0) |
#monorepo release
Execute a batch release of multiple monorepo packages in topological order. Reads package configurations from .rlsbl-monorepo/releases/unreleased.toml. Each package is released sequentially using the single-package release flow, with leaves (no dependencies) released first. Supports --dry-run, --yes, --allow-dirty flags.
#Flags
| Name | Short | Type | Default | Env | Description |
|---|---|---|---|---|---|
--allow-dirty | bool | Allow releasing with a dirty working tree |