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 23, 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 | 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 |
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; editing it changes what a run's remaining agents are told |
|
project
consulted 2nd |
.gantry/<plan>/write-sprints.md |
a per-run override an operator places 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
You turn a plan into an ordered list of task briefs, each built by a fresh agent with no memory of
the others. A task 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 task well within one context
window, and remember every extra task 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 task
that clears the way often earns its place at the front. You write task brief files and nothing else: even
work a short script could do — a verbatim copy or move, a rename, a config change — belongs in a
task, because only a task is followed by the gate that proves it.
Write each task 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
task brief 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 tasks**: when a task must expose an interface a later task consumes, name
that contract explicitly in both task brief 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 task happens to consume: the implementation behind it stays as simple as the task
allows, but a boundary that has to change later forces both memoryless agents to re-derive their
agreement. A task 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 task with nothing mechanically
checkable leaves no test rather than a token one — tests are evidence, not a per-task quota. You
write the task brief files only; a separate step authors the test script the pipeline runs.
{{PLAN}}
---
## Output contract (how gantry consumes your work)
Write ONLY the declared outputs below — those paths are relative to `{{ORCH}}/`, not to your
worktree. Do not write the gate, do not write any production code, and do not run the build.
{{OUTPUTS}}
Create the `sprints` output directory and write one task brief file per task inside it, named `NN-slug.md` —
`NN` a two-digit zero-padded build-order number starting at `01`, `slug` short-kebab-case. The file
*body* is the task 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 task's effort. Order
the files so each builds on the ones before it.
Open every task brief body with a level-one heading naming that task — `# Watch Runtime Contract`,
2-5 words, Title Case, no trailing punctuation — before any other line. Gantry titles the task's
sidebar row and cards from that line, so a brief that opens on a section label instead names every
task after the label. Do not repeat the number or the slug in it, and do not reuse one title for two
tasks.