Your first plan
This takes about five minutes and needs nothing installed. Each step is a complete Sprig file; open it in the playground to see what Sprig computes from it, then change it and watch the result move.
The last step takes the same plan to the terminal with the sprig command.
1. A list
Section titled “1. A list”Every item is a line that starts with a mark and a space. - is something to do
and x is done. The first line is the title.
Move flats
- Pack- Book a vanx Tell the landlordThe view shows one of three done. Tick Pack in the view and the source changes too: the file is always the truth.
2. Break it down
Section titled “2. Break it down”Indent to put items inside another. There’s no limit to how deep, and each parent adds up what’s beneath it.
Move flats
- Pack x Books - Kitchen - Bathroom- Book a vanx Tell the landlordPack now shows 1 of 3. A parent keeps the mark you give it: when all its children are done, the view suggests ticking it rather than doing it for you.
3. Say what waits
Section titled “3. Say what waits”Give an item an anchor with ^name, and make another wait on it with
after:^name. Anything waiting is blocked until what it waits on is done.
Move flats
- Pack ^pack x Books - Kitchen- Book a van ^van- Move everything after:^van after:^packSwitch the view to Next up: Kitchen and Book a van are ready, and Move everything is waiting on two things. Tick Pack and Book a van and it moves to ready.
4. Ask, then answer
Section titled “4. Ask, then answer”A line starting with ? is a question. Write the answer underneath with =, and
the question counts as done. The decision stays in the file, next to what it
decided.
Move flats
? Keep the old sofa? = No. It won't fit in the lift.- Sell the sofa5. People and dates
Section titled “5. People and dates”@name says who. It flows down, so a name on the title owns the whole file until
an item names someone else. Dates are written due:2026-10-17; in the
playground you can type due:fri and it becomes a real date when you press
Enter.
Move flats @me
- Book a van due:2026-10-16- Carry the heavy boxes @jo6. Split it into files
Section titled “6. Split it into files”When a plan grows, move a branch into its own file and graft it back with
+ [[name]]. Progress and blockers carry across.
Move flats
+ [[packing]]- Book a vanPacking
x Books- Kitchen- BathroomOpen both files in the playground →
7. In the terminal
Section titled “7. In the terminal”Install the sprig command, with Rust installed (rustup.rs):
cargo install --locked --git https://github.com/oddurs/sprig sprig-cliSave the two files from step 6 as move.sprig and packing.sprig in one
folder, and ask what can be done now. Grafted items come with their file:
$ sprig next move.sprig- Kitchen Packing- Bathroom Packing- Book a van Move flats
3 readysprig check reads the same files and prints nothing when the plan holds
together. Misspell the graft and it says where:
$ sprig check move.sprig$ sprig check move.sprigmove.sprig:3:3: error[S0101]: no file named pakcing.sprigIt exits 1 on an error, so it can guard a repository. In GitHub Actions, the Sprig action checks every plan and summarises what each pull request did to them:
- uses: oddurs/sprig/action@main8. Work it from your editor, and hand it to an agent
Section titled “8. Work it from your editor, and hand it to an agent”Fix the graft again, and tick the van as booked:
$ sprig tick vanmove.sprig:4 x Book a vanA ref is any words that match one item, an ^anchor, or file:line. In VS Code,
Neovim or any editor with a language server, the same tick is one action on the
line, and problems show as you type: set up your editor.
For a project, the plan lives at the root as PLAN.sprig. To have a coding
agent read it before it starts and keep it up to date as it works, add the
instructions to the file the agent reads:
$ sprig mcp --instructions --write AGENTS.mdThen register the MCP server with the agent. sprig mcp --config prints the
snippet for .mcp.json. The agent can then ask what is next, tick what it
finishes and add the steps it plans, and every change it makes shows up as a
diff: plans for coding agents.
That’s the whole idea. From here:
- The specification has every rule, numbered, with an example.
- The settled arguments say why each rule is the way it is.
- The playground has a six-file plan for opening a bakery to explore.