deliver
Skill0 starsChanged 29 days agoApache-2.0View on GitHub
Take a feature from scoping to its PRs in one session: run `/scope` with `--intent=continue` and then `/execute` on the PLAN it produces, merging (when the repository's own rules allow it, and in an interactive run only after a review pause) unless run with `--no-merge`. Use it when the author wants a topic done end to end without re-invoking anything between the two -- "scope and build this", "deliver the plugin-system feature", "take this from idea to PR" -- and to pick such a topic up again, since every invocation re-enters through `/scope`, which knows where the topic stopped. Do NOT use it to write only the documents (`/scope`), to run a PLAN that already exists and needs no re-scoping (`/execute`), or to fix one known issue (`/work-on`).
25 other projects use a version of this.
Adopted by
Most recently taken up by
- zahidakhyar/skillstheir own version, first seen Nov 8, 2026
- frostney/knipstheir own version, first seen Nov 8, 2026
- domengabrovsek/agent-configtheir own version, first seen Nov 8, 2026
- domengabrovsek/claudetheir own version, first seen Nov 8, 2026
- mblauberg/provenanttheir own version, first seen Nov 8, 2026
- AcKeskin/contexturetheir own version, first seen Nov 1, 2026
Used with
Projects with it also use prune, create-issue and 9 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
matthewpSkillprune
Find and remove unused CSS in a Tideway project — classes defined in stylesheets but never referenced in markup. Use whenever the user wants to prune dead CSS, find unused styles or classes, clean up or slim a stylesheet, find orphaned BEM classes, or "tree-shake" hand-written CSS.
Also in 3 projects that use this
sahinSkillcreate-issue
Also in 3 projects that use this
SentrySkillspec
Produce a verified spec — problem, desired outcome, and acceptance criteria — before building. Use when given a GitHub/Linear issue link, when starting from a fuzzy in-conversation idea, or asked to "figure out what to do" / "scope this" / "what should I build" — whenever the *what* isn't yet pinned down. Grills the ambiguities, checks the premise against the code, and produces acceptance criteria you sign off on — then hands to design-first.
Also in 4 projects that use this
AWSSkillship
Finalize dev work on an issue branch — update docs, push, and open a PR.
Also in 5 projects that use this
AWSSkillwait-what
Stop. That last message did not land: re-pitch it.
Also in 3 projects that use this
Hugging FaceSkillimplement
Make tests pass. Invoke after /write-tests produces failing tests.
Also in 5 projects that use this
Other versions25 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 25
- google-gemini/gemini-managed-agents-templates★ 99same name
- domengabrovsek/agent-config★ 22same name
- domengabrovsek/claude★ 22same name
- domitriusclark/claude-skills★ 11same name
- coder-xieshijie/dev-skills★ 5same name
- AcKeskin/contexture★ 2same name
- andeeplus/aplus★ 2same name
- MarkTripoli/skills★ 2same name
- matiopala/skills★ 2same name
- dcguim/skills★ 1same name
15 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository23 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- briefSkill
- charterSkill
- compSkill
- coordinateSkill
- decisionSkill
- designSkill
- executeSkill
- exploreSkill
- inflightSkill
- planSkill
- prdSkill
- private-contentSkill
- public-contentSkill
- releaseSkill
- review-planSkill
- roadmapSkill
- scopeSkill
- strategySkill
- visionSkill
- work-onSkill
- writing-styleSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 0 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 25 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 111
Keep the two requests apart.
- Very specific: line 131
Write $ARGS_DIR/args.json with the Write tool or jq, never by pasting tokens into a shell command and never with eval: a token is data, and …
- Very specific: line 150
Tick: Call koto next deliver-<topic> --no-cleanup, do what the directive says, submit the evidence it asks for, and repeat.
- Very specific: line 159
Report: When koto next answers "action": "done", print the report, verbatim, and compose no line of your own:
- Very specific: line 166
Every outcome= token it can print, and what each one means, is listed in the header of skills/deliver/scripts/deliver-report.sh.
- Very specific: line 180
If you lose a directive, koto status deliver-<topic> returns the current state's directive without ticking.
“Common” is measured: kept by at least 6 in 10 of the 25 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
!${CLAUDE_PLUGIN_ROOT}/scripts/skill-preflight.sh deliver 2>&1 || true
Deliver
/deliver <topic> runs /scope <topic> --intent=continue and then
/execute docs/plans/PLAN-<topic>.md in one session, without the author
re-invoking anything. It passes --merge to /execute unless --no-merge is
given. An --auto run ends merged wherever the repository's protection lets
/execute merge, and in a named, resumable state everywhere else. An
interactive run, the default when neither flag nor the repository's
## Execution Mode: header asks for auto, stops before the merge, at
paused-for-review: /execute's review pause, with the home PR still draft.
/deliver is a koto workflow, and it is thin in behaviour: it writes nothing
to the repository itself. /scope and /execute do all of that, as the same
root sessions (scope-<topic>, execute-<topic>) a person running them
directly would get. Visibility is checked where content is written: each
child checks its writes against the repository it writes to, so /deliver
runs in private repositories as well as public ones. What /deliver adds is the sequence and the checks
between the two, and those live in its template,
skills/deliver/koto-templates/deliver.md, not in this file. koto's request
store is local, so a /deliver run, children included, happens on one machine.
Flags
| Flag | Effect |
--auto / --interactive | The execution mode, resolved once and passed to both children. With neither, the repository's ## Execution Mode: header in CLAUDE.md decides, and without one the run is interactive. Interactive runs get one confirmation from /deliver before /execute starts, naming the PLAN's mode. |
--no-merge | /execute runs without --merge, so the run ends at best ready-awaiting-merge. Without it, /execute gets --merge. |
--upstream <path>, --max-rounds=N, --coordinated / --no-coordinated | Forwarded to /scope unchanged. |
--review-floor=<level>, --review-ceiling=<level> | The review-level bound (light, standard or full), forwarded to /execute unchanged, which hands it to every /work-on run it starts. Without them /execute gets neither. |
--koto-leg=<request-id>:deliver | Binds this run's deliver-<topic> session to a leg of a caller's koto request; see Answering a Caller's Leg. Not forwarded to either child. |
koto checks every argument a koto variable can express, not this file: a
repeated flag, both mode flags, both coordination flags, a malformed topic or
upstream, a --max-rounds outside 1 to 50, or a --review-floor or
--review-ceiling that isn't light, standard or full is refused at koto init with
exit 2 and no session. --koto-leg is the one exception: deliver-open.sh
checks it before any koto call, because without a well-formed value there is
no leg to record a refusal on (see Answering a Caller's Leg).
--merge and the mode belong to one invocation. Nothing is remembered from an
earlier run: a re-invocation without --no-merge merges, and one with it
doesn't, whatever the previous run did.
Answering a Caller's Leg
--koto-leg=<request-id>:deliver (or --koto-leg <request-id>:deliver) lets
a coordinator run /deliver as a worker and read its result from koto's
request store instead of from what the worker says. The leg must be named
deliver; that is the one leg /deliver answers. A value given twice, a leg
with another name, or a request id outside ^[a-z0-9_][a-z0-9_-]{0,63}$ is
refused by deliver-open.sh itself, with step=deliver:refused and no koto
call, because without a well-formed value there is no leg to record anything
on.
With a well-formed value, the one koto init that opens the fresh
deliver-<topic> session carries --koto-leg, and koto either binds the
session to the leg or records its refusal there: result_source: refused
(source: refused on a request-leg gate), with outcome: refused and a
reason such as invalid-var:TOPIC. A same-named session this run won't
touch (another worktree's, or one from another template) is refused with the
code the run prints, origin-mismatch or template-mismatch on the leg. Once
bound, the run's terminal result reaches the leg by promotion on the terminal
tick, --no-cleanup notwithstanding: the same outcome, step, reason,
pr, and other keys deliver-report.sh prints.
What the coordinator puts on the leg, so koto admits the session:
| Leg field | Value |
| name | deliver |
template | deliver.md |
inputs | TOPIC: the topic slug, as passed to /deliver. Optionally COORDINATION and UPSTREAM, which must then equal the value the invocation resolves to: COORDINATION is coordinated, no-coordinated, or none when neither flag is given; UPSTREAM is the --upstream value, or the empty string when it isn't given. |
koto compares only the inputs the leg names, and only against variables that
aren't rebind: MODE, MERGE, MAX_ROUNDS, and PLUGIN_ROOT are
re-applied per invocation and can't be pinned from the leg, so an input for
one of them is never compared. A leg whose TOPIC differs from the
invocation's is refused as input-mismatch on the leg.
A leg is named deliver and nothing else, so one request holds at most one
/deliver worker; a coordinator running several gives each its own request.
koto records a refusal only on a leg that is still open and unbound. koto's
refusal of this run's open reaches the leg, including a same-named session the
probe stopped on. Nothing that stops before that open does: no topic, a failed
preflight, deliver-open.sh's usage refusals, failed=jq_missing, or
failed=cleanup. Neither does a run that stops before its terminal. In those
cases the leg stays open, and a request-leg gate would wait on it
indefinitely, so the coordinator needs its own fallback for a worker that
ended without a result.
Keep the two requests apart. The caller's request and its deliver leg
belong to the caller: /deliver never lists, closes, or abandons it, and the
Close step below touches only the run's own request. That inner request,
under coordinator deliver-<topic>, still carries the scope and execute
legs its children answer, exactly as it does without the flag. The one thing
the caller must not do is create its request under coordinator-of-record
deliver-<topic>: every open request under that name is abandoned when the
run opens its own. The flag changes where this run's own result goes and
nothing else.
Running the Workflow
Write the args file. Split
$ARGUMENTSinto tokens as typed, the topic included, and write them in order as a JSON array of strings to a private directory outside the work tree:ARGS_DIR=$(${CLAUDE_PLUGIN_ROOT}/scripts/koto-open.sh --alloc-dir)Write
$ARGS_DIR/args.jsonwith the Write tool orjq, never by pasting tokens into a shell command and never witheval: a token is data, and the file is the only route by which it reaches koto. If$ARGUMENTSholds no topic, ask the author for one and stop instead.Open the session.
${CLAUDE_PLUGIN_ROOT}/skills/deliver/scripts/deliver-open.sh --plugin-root ${CLAUDE_PLUGIN_ROOT} "$ARGS_DIR/args.json"It maps each token to a variable with
jq, resolves the mode, and opens a freshdeliver-<topic>session. The args file and its directory are removed on every exit path, refusals included. On success it printssession=deliver-<topic>. A refusal prints koto's reason on stderr and thenoutcome=errorandstep=deliver:refused; print them and stop. A same-named session from another worktree or another template is refused this way and left untouched.- Tick. Call
koto next deliver-<topic> --no-cleanup, do what the directive says, submit the evidence it asks for, and repeat. Everykoto nextcarries--no-cleanup, on every tick. The flag keeps the run's record readable after its terminal; see${CLAUDE_PLUGIN_ROOT}/references/koto-session-retention.md. The directives tell you when to run/scopeand/execute(as Skill calls, with the exact arguments they list) and when to ask the one confirmation. Run each child to its end as its own directives say, then tick/deliveragain. Report. When
koto nextanswers"action": "done", print the report, verbatim, and compose no line of your own:koto status deliver-<topic> | ${CLAUDE_PLUGIN_ROOT}/skills/deliver/scripts/deliver-report.shEvery
outcome=token it can print, and what each one means, is listed in the header ofskills/deliver/scripts/deliver-report.sh.Close the request. On the way out, close this run's request:
koto request list --coordinator-of-record deliver-<topic> --state open koto request close <request-id>A request left open is abandoned by the next
/deliver <topic>anyway, so a run that stops before this step leaves nothing that can be mistaken for a later run's.
If you lose a directive, koto status deliver-<topic> returns the current
state's directive without ticking. Never run a cleanup or cancel verb against
a session this run did not open, and never koto request resolve a leg by
hand: the one value /deliver ever writes to a leg is its own fixed
child-absent record, written by the template.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

