Ship plan
You run unattended: nobody answers questions. Never stop to ask. When something needs a decision, take the option closest to the plan's intent, add a divergence note to plan.md saying what you did instead and why, and keep going. Stop early only when an unrecoverable error blocks all progress; then go straight to Report back.
Arguments: the plan folder as an absolute path (a fresh worktree has no .plans/), the loop to run, and optionally the orb pane to report to.
Never: merge, force-push, push to the main line, or touch files outside the repo.
You orchestrate, helpers do the work
Your context is for decisions, not file contents. Run every step below in a fresh subagent and keep only what it reports back. Use subagents, not orb sessions or colonists: helpers must work in this worktree, and a new session would get a different checkout.
- Each helper gets the plan folder, the step's skill and arguments, the unattended rule above (never ask; note divergences in
plan.md), and what to return: at most ten lines on what it did, what it changed, what failed, and what's left open. - You read only those reports,
tasks.md, andgit status. Don't open source files, diffs or test logs yourself. If a report is unclear, send a helper to find out. - One helper at a time, since they share the worktree. The only exception is the review step's three reviewers, which only read.
- Helpers may start their own helpers when their skill says so, like interrogate's reviewers or the phased loop's per-phase agents.
- If you have no subagent tool, run the step yourself.
Pipeline
Run the steps in order. Each step names the skill it uses, so changing this list changes the pipeline.
-
Build. A helper runs the chosen loop:
/run-<loop>-loop <plan folder>. For the phased loop, the helper is that loop's orchestrator, so don't tell it to run solo. -
Spec check. A helper runs check-gaps on the plan folder, fixes every gap it lists, then runs
checkandtestuntil both pass. -
Simplify. A helper runs the
simplifyskill if you have it, then deslop, on the branch's changes, then runstest. -
Review. Three helpers at the same time, read-only:
- the repo's own review skill or agent if it has one, else review-code with
standards-only; - interrogate, so four reviewers check it from different angles;
- check-blast-radius on the branch's diff.
Merge their reports and drop duplicates. Then one helper fixes every finding that is real and would block a PR: interrogate's Act on, a blast-radius risk it confirmed, a broken standard. Keep the rest for the PR.
- the repo's own review skill or agent if it has one, else review-code with
-
Verify. A helper runs
checkandtest, then lints and formats the files that changed, and fixes until everything passes. -
One more review round. If step 4 led to fixes, run step 4 again on just those fixes, then step 5. After this round, stop fixing and carry what's left to the PR.
-
Tidy the branch. A helper runs make-pr-easy-to-review before anything is pushed: it squashes noise into clean commits and writes the PR description (see below) to a file.
-
Open the PR. A helper pushes the branch and opens the PR with that description, using the repo's own PR skill if it has one, else
gh pr create. It returns the link. -
Babysit CI. A helper runs babysit with
ci-onlyon the new PR: it fixes failing checks and merge conflicts, then stops. It never waits for reviewers. -
Report back. You do this one.
The PR description
Put these at the top, before the repo's usual template:
- Divergences: every place the build differs from the plan, and why, from the divergence notes in
plan.md. - Open findings: review findings you didn't fix, one line each, with who raised them.
- How to try it: the commands to run or the pages to open.
Report back
One line: <plan name>: PR <link>. CI <green|red>. <N> divergences, <M> open findings. (or what stopped you, if you stopped early).
- Put the PR on the user's plate (in orb only). When a PR was opened and
$ORB_PANE_IDis set, runorb plate add "Review PR #<n>: <title>" --verb review --link <PR url>before sending the line. If orb refuses withcolonist, you run in a colony: skip it, since your report back covers it. With no PR (you stopped early), add nothing. - With a
report-topane: send it withorb agent prompt <pane> "<line>". That agent tells the user and updates their status board. - Without one: end your final message with it.
