Skip to main content

rollout-cli

Cross-repo propagation workflow built on refactor-cli — apply a transformation across many repos at once.

What you get

  • An agent-first CLI cited from teken (afi-cli) — the runtime package has no third-party dependencies.
  • A mesh identity — culture.yaml (suffix + backend) and the matching prompt file (CLAUDE.md for backend: claude).
  • The canonical guildmaster skill kit (12 skills) under .claude/skills/, vendored cite-don't-import, plus the remember / recall memory skills vendored directly from eidetic-cli. See docs/skill-sources.md.
  • A build + deploy baseline — pytest, lint, the agent-first rubric gate, and PyPI Trusted Publishing wired into GitHub Actions.

Quickstart

uv sync
uv run pytest -n auto                 # run the test suite
uv run rollout-cli whoami  # identity from culture.yaml
uv run rollout-cli learn   # self-teaching prompt (add --json)
uv run teken cli doctor . --strict    # the agent-first rubric gate CI runs

CLI

Verb What it does
whoami Report this agent's nick, version, backend, and model from culture.yaml.
learn Print a structured self-teaching prompt.
explain <path> Markdown docs for any noun/verb path.
overview Read-only descriptive snapshot of the agent.
doctor Check the agent-identity invariants (prompt-file-present, backend-consistency).
cli overview Describe the CLI surface itself.

Every command supports --json. Results go to stdout, errors/diagnostics to stderr (never mixed). Exit codes: 0 success, 1 user error, 2 environment error, 3+ reserved.

Rollout Engine

Operator vs Agent Roles

  • Operator — defines the recipe, selects targets (--org / --repos), reviews the plan output, and confirms the apply. The operator is the only party that can merge PRs.
  • Agent — executes the deterministic steps: resolve targets, classify repos, branch, apply scripts, bump versions, commit, push, and open PRs. The agent never merges and never makes edits not declared by a recipe.

Recipe Model

A recipe is a directory containing:

  • manifest.toml — metadata (name, touched_files, bump_level, changelog_text).
  • apply.sh — idempotent script that applies the transformation.
  • check.sh — pre-flight script that classifies a repo as done, ok, or needs-attention.

The recipe model ensures every file change is declared up-front; rollout never writes to the worktree outside of apply.sh and the deterministic version bumper.

Two-Phase Flow: Plan → Apply

  1. rollout plan — dry-run. Resolves targets, classifies each as clean, already-done, or needs-attention, and renders per-repo diffs. No branches, no pushes.
  2. rollout apply — after operator confirmation (or --yes), applies the recipe to clean targets only: branch from origin/main, run apply.sh, bump version, commit, push, and open one PR per repo. A summary table of PR URLs is printed.

Boundary

  • Rollout never merges PRs — that is the operator's responsibility.
  • Rollout never makes edits not declared by a recipe's apply.sh or the deterministic version bumper.
  • CI is each repo's own — each target repo runs its own CI pipeline; rollout does not gate on CI results.

Make it your own

  1. Rename the package rollout/ and the rollout-cli CLI/dist name throughout pyproject.toml, the package, tests/, sonar-project.properties, and this README.md. The name is hard-coded in ~100 places, so list every occurrence first — see the git grep discovery command in CLAUDE.md, the authoritative rename procedure.
  2. Edit culture.yaml with your suffix and backend.
  3. Rewrite CLAUDE.md for your agent and run /init.
  4. Re-vendor only the skills you need from guildmaster (see docs/skill-sources.md).

See CLAUDE.md for the full conventions (version-bump-every-PR, the cicd PR lane, deploy setup).

License

Apache 2.0 — see LICENSE.

Metadata

Release files for rollout-cli 0.9.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rollout-cli 0.9.1
File Size Uploaded Provenance
rollout_cli-0.9.1.tar.gz 273.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for rollout-cli 0.9.1
File Interpreter ABI Platform
rollout_cli-0.9.1-py3-none-any.whl Python 3 none any Details

Total release size: 310.9 kB

Release files / rollout_cli-0.9.1.tar.gz

Download URL rollout_cli-0.9.1.tar.gz
Size 273.9 kB
Tags Source
SHA-256 checksum
How to use checksums
37efdfd7170d18fb89faa340c9a8fa4dfb5529d78ff9c6c89d663845bee81c49
BLAKE2b-256 checksum
How to use checksums
0d0b030c1675f0827808e4157a6440508bb0bd3363736a9d1ad0ffe3febdd1ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rollout_cli-0.9.1-py3-none-any.whl

Download URL rollout_cli-0.9.1-py3-none-any.whl
Size 37.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
58fb51d8caa237457d631f8d62d1288e9ea0006d93377a22226a85b077216469
BLAKE2b-256 checksum
How to use checksums
81135969c7627fcc0838eba5b21cf2694398a0c27be961d42bfb4621c4324e25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for rollout-cli 0.9.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page