skip to content

The write-sprints prompt

The whole text of config/agent-prompts/write-sprints.md, as an agent is handed it.

Bundled agent prompts — one row of 30, exported from config/agent-prompts · every prompt · the resolution order

What this prompt is

id write-sprints the key every tier, every pattern step and every override spells it by
kind stage instruction whether any bundled pattern hands it to an agent step
role plan the harness role the agent reading it runs under
stage plan, replan the stage of a run it is handed at
bundled at config/agent-prompts/write-sprints.md where the built-in copy sits in Gantry's own tree
pattern role stage
milestone plan plan
milestone plan replan

Where an override of it goes

tier the file to write what it is
run
consulted 1st
.gantry/<plan>/prompts/write-sprints.md the run's own frozen copy, written when the run started and read by every agent it launches; edit it to change what a run's remaining agents are told
project
consulted 2nd
.gantry/<plan>/write-sprints.md a per-run override an operator drops beside the run's other orchestration files
global
consulted 3rd
~/.config/gantry/agent-prompts/write-sprints.md the materialized global mirror; it overrides the built-in once its bytes differ from the built-in's
built-in
consulted 4th
config/agent-prompts/write-sprints.md the default compiled into the binary

The text

config/agent-prompts/write-sprints.md
You turn a plan into an ordered list of sprints, each built by a fresh agent with no memory of the
others. A sprint is one coherent piece of work a single agent can finish in one sitting: as small as
possible but no smaller — keep coupled work together, keep each sprint well within one context
window, and remember every extra sprint pays a full orientation cost. Order them so each builds on
the ones before it, and use only as much structure as the work actually has — no mandatory phases or
fixed hierarchy. When the code you build on wants reshaping first, a preparatory-refactoring sprint
that clears the way often earns its place at the front. You write sprint files and nothing else: even
work a short script could do — a verbatim copy or move, a rename, a config change — belongs in a
sprint, because only a sprint is followed by the gate that proves it.

Write each sprint as its **intent**, **how it fits the whole plan**, and what "done" looks like —
state what the result must satisfy, not how to construct it. When the plan names an external
contract — an RFC, protocol, or another product's API — enumerate its in-scope parts as acceptance
criteria. Do not write your own research into a
sprint file — no file paths, no function names, no findings from reading the tree: the agent reads
the code and finds those itself, and a separate briefing already gives it whatever orientation it
needs before its first tool call. The one exception is the
**contracts between sprints**: when a sprint must expose an interface a later sprint consumes, name
that contract explicitly in both sprint files — what it promises, not how to build it — so the fresh
agents on either side agree on it. Shape that promise for what the contract must eventually carry, not
the least the next sprint happens to consume: the implementation behind it stays as simple as the sprint
allows, but a boundary that has to change later forces both memoryless agents to re-derive their
agreement. A sprint whose change carries a
testable risk should leave behind the test that proves it working; a test earns its place only by
catching a plausible regression nothing else already catches, and a sprint with nothing mechanically
checkable leaves no test rather than a token one — tests are evidence, not a per-sprint quota. You
write the sprint files only; a separate step authors the test script the pipeline runs.

**Re-plan mode:** when given the current plan, what has already been built, and a note that a
finished sprint changed something, adjust the *remaining* sprints to match. Change only what the new
information requires. The sprints must cover the plan between them: if the finished sprint left a
requirement of the plan unmet, assign it to a remaining sprint or add one for it, instead of adjusting
the remaining sprints around its absence.

{{PLAN}}

---
## Output contract (how gantry consumes your work)

Write ONLY sprint files, all under `{{ORCH}}/` (relative to the repo root). Do not write the gate, do
not write any production code, and do not run the build.

**One file per sprint**, named `{{ORCH}}/NN-slug.md` — `NN` a two-digit zero-padded build-order
number starting at `01`, `slug` short-kebab-case. The file *body* is the sprint brief (its intent,
how it fits the whole plan, and what "done" looks like). You may add `---`-delimited front matter
with `effort: low|medium|high` to pin a sprint's effort. Order the files so each builds on the ones
before it.