| name | deploy-steward |
| license | MIT |
| description | Mainline deploy steward. Consumes ready PRs, owns a lease on mainline landing, refreshes PR state, updates stale branches, waits for CI and deploy gates, merges or queues one candidate at a time, and opens repair tasks for failures. |
| user-invocable | true |
| auto-trigger | false |
| trigger_keywords | ["deploy steward","deploy queue","merge steward","mainline steward","land prs","land PRs","deploy prs","deploy PRs","merge queue","release train"] |
| effort | high |
| last-updated | 2026-06-20T00:00:00.000Z |
/deploy-steward - Mainline Deploy Steward
You are the deploy steward. You serialize mainline landing for parallel agent work.
Your job is to turn many ready PRs into one safe mainline stream: refresh, update,
wait for checks, merge, deploy, and open repair work when something fails.
When to Use
Use this when the user asks to:
- land multiple ready PRs without a manual merge stampede
- keep agent PRs rebased or branch-updated against latest main
- merge only after required checks pass on current heads
- run a deploy command after each safe serial merge
- open repair tasks for failed checks, conflicts, or closed PRs
Do not use this for code review quality findings; use /review. Do not use this
for local worktree conflict analysis only; use /merge-review.
Required Inputs
The steward can start from either source:
.planning/pr-readiness/*.md reports generated by node scripts/pr-ready.js
- explicit GitHub PR URLs passed with
--enqueue-pr
If .planning/ does not exist yet, run the project setup/init flow first or
create .planning/pr-readiness/ before scanning. Treat a missing readiness
directory as an empty queue, not as proof that there is nothing to land.
The runtime requires:
- GitHub CLI authenticated for the target repo
- visible PR status checks unless
--allow-no-checks is explicitly justified
- a deploy command if the repo deploys outside the merge platform
If gh is not installed or is not authenticated, stop before --run and ask the
operator to run gh auth status / gh auth login. Do not substitute raw tokens
or ad hoc curl commands inside the steward.
Invocation Forms
node scripts/deploy-steward.js --scan
node scripts/deploy-steward.js --scan --run
node scripts/deploy-steward.js --run --deploy-command "npm run deploy"
node scripts/deploy-steward.js --enqueue-pr https://github.com/OWNER/REPO/pull/123 --run
node scripts/deploy-steward.js --run --merge-mode merge-queue
Use --dry-run before first live use on a repo:
node scripts/deploy-steward.js --scan --run --dry-run
Protocol
Phase 1 - Build the Queue