Deliver pr
Skills to orchestrate coding agents to do long horizon tasks with little to no steering
npx -y skills add ronaknnathani/relay --skill deliver-prAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Deliver one change end to end as a single pull request — clarify → plan → implement → simplify → review → validate → open-pr — resuming from wherever it left off. Use to take a task from intent to an open, mergeable PR with each phase run as a focused sub-agent. This is the default workflow the binary launches when you create a new project (`relay "<task>"`).
SKILL.md
6.1 KB, as published. Nobody here has run it
Deliver PR
Drive one change from a task to an open PR by orchestrating the foundation skills, one phase at a time, with durable resumable state. You are a router, not a worker: you read state, dispatch the next phase as a sub-agent, record the result, and move on. You do not do the phase work yourself, and you stay context-light — you read digests and state, never file dumps.
Resume-first — always start here
<slug> is the argument this skill was invoked with — bind it to $SLUG before anything else. Every
invocation (first run or resume) then begins by asking the binary where this run is. State is owned by
relay state; never hand-edit it.
PHASE=$(relay state next "$SLUG" 2>/dev/null)
if [ $? -ne 0 ]; then # no state yet → first run: initialize, then ask again
relay state init "$SLUG" --workflow deliver-pr \
--phases "clarify,plan,implement,simplify,review,validate,open-pr"
PHASE=$(relay state next "$SLUG")
fi
Never assume a fresh start: an interrupted run returns its in-progress phase and continues it. When
relay state next prints empty, every phase is done — go to Done.
The phase pipeline
Each phase is a foundation skill. Run the one relay state next reports, in this order:
| Phase | Skill | Consumes | Produces |
|---|---|---|---|
| clarify | clarify | the task | requirements + acceptance criteria |
| plan | plan | requirements | a blueprint + phased build sequence |
| implement | implement | the plan | code + tests, green (commits as it goes) |
| simplify | simplify | the diff | a cleaner diff, behavior unchanged |
| review | review (report mode) | the diff + criteria | a severity-ranked findings report |
| validate | validate | the diff + criteria | a pass verdict on the repo's gates |
| open-pr | open-pr | the committed branch | an open PR |
Per-phase loop (the router contract)
For the phase relay state next reported:
relay state set "$SLUG" "$PHASE" in-progress- Dispatch a sub-agent (when available; otherwise run inline) to run the
$PHASEskill on this project. Hand it the task and the upstream artifact only — not your own conclusions. It does the work and returns a structured digest: what it produced, the artifact path, test/gate results, and any blocking question — never a file dump. - On a blocking author-decision (the sub-agent surfaces a real design/scope choice it shouldn't
guess): surface it to the author (use an interactive prompt when available; otherwise write it to
questions.mdin the project dir, alongsidetask.md/notes.md, and stop). Do not advance. Resume when the author answers. - On success:
relay state log "$SLUG" "$PHASE done: <one-line digest>", thenPHASE=$(relay state advance "$SLUG")— this marks the current phase done and prints the next one. IfPHASEis empty, go to Done; otherwise loop back to step 1 with the newPHASE.
Phase gates (where judgment applies)
- After
plan: if the design left genuine ambiguity, get author sign-off on the plan beforeimplement; otherwise proceed with the smallest-change default and log the call. - review → address: run
reviewin report mode. By the timereviewruns,implementandsimplifyare already marked done, so addressing findings means reopening the owning phase — the CLI allows a backward move. Whilereviewreturns Critical or Important findings:relay state set "$SLUG" implement in-progress(orsimplify), dispatch a sub-agent scoped to those findings,relay state set "$SLUG" implement done, then re-dispatchreview. Thereviewphase stays in-progress throughout — use explicitset, notadvance, for the reopened phase. Suggestions are non-blocking. Onlyadvanceout ofreviewonce it is clean of Critical/Important. - No merge gate here.
deliver-prends at an open PR. Watching CI, handling review comments, and merging belong topr-monitor/stack-ship— not this skill.
Delegation contract
Every sub-agent prompt: name the worktree/branch, give it the task + the one upstream artifact, demand
a structured digest back (not prose, not file contents), and tell it to surface a blocking question
rather than guess. Keep yourself blind to file dumps — you route on digests and relay state.
Done
When relay state next "$SLUG" is empty, run a final check that the PR is open and its acceptance
criteria are met, then stop. Report the PR URL (recorded via relay state pr). Newly discovered
out-of-scope work goes to follow-ups, not into this run — do not expand scope or start the next change.
Red flags
- Doing a phase's work yourself instead of dispatching it (you are a router).
- Reading file contents into your own context instead of routing on digests.
- Hand-editing
state.json/progress.mdinstead of usingrelay state. - Advancing past
reviewwith Critical/Important findings unaddressed. - Guessing an author decision instead of surfacing it and pausing.
- Assuming a fresh start instead of resuming from
relay state next. - Merging, or watching CI — that is
pr-monitor/stack-ship, notdeliver-pr.
Verification checklist
- Started from
relay state next(initialized state only if absent) — never assumed a fresh run. - Each phase ran as a delegated sub-agent that returned a digest; state advanced via
relay state. -
plangot author sign-off when the design was ambiguous. -
reviewran and every Critical/Important finding was addressed beforevalidate. -
validatepassed on the repo's own gates beforeopen-pr. - Ended at an open PR with its URL recorded; stopped without expanding scope or merging.