Walkthrough: a calculator app
A real build in OpenCode, recorded as it happened. Each chapter is a short clip of the actual session, and each caption quotes the transcript and links to the line.
Model: DeepSeek V4.1 Flash (max thinking) in OpenCode 2.0.18. Nothing is staged.
1. Writing the spec
no cards yet/gw starts with the smallest useful version, not a blank prompt. It asks a few specific
questions in small batches and offers choices; you pick one or type your own.
When the answers are in, the agent writes .groundwork/SPEC.md and reads it back in plain words,
including the calls it made where you didn't specify anything.
2. Planning the cards
six cards, all to dogw-plan turns the spec into phases of small cards, each small enough for one session, with
acceptance criteria you can check. Nothing is written until you say the plan looks right.
Then the card files land in .groundwork/cards/, and the next step is handed back to you.
One more step before the loop: the planning files are committed on their own, so card 1.1's commit holds only card 1.1's work.
3. Building the first card
being tested/gw starts card 1.1 and hands it to the tester: a subagent with fresh context whose only job
is tests that fail for the right reason. The runner doesn't write them, and the implementer won't
be allowed to change them.
When the tests come back failing for the right reason, the runner checks them itself, the card moves to being built, and the implementer gets it with the tester's evidence attached.
4. Approval and commit
waiting for youThe reviewer reran everything and passed the card, so the runner stops and shows you the same three-part summary every time: what changed, how to check it yourself, and the caveats.
Only you can approve. /gw-approve checks the evidence first, marks the card
done, commits it, and names the next card.
5. The finished calculator
six cards doneSix cards across two phases: arithmetic, clear and error states, 10-digit formatting, and a responsive keypad. The second phase ran in a new chat, which picked up from the handoff file. The app is live, and the whole project (spec, cards, decisions, evidence) is public.

Try it live → · Source and cards →
By the numbers
| What | Measured |
|---|---|
| Building it | $0.586 · 1.33M fresh tokens (41% of them reasoning) |
| Also in the chats | deploying to GitHub Pages $0.020 · exporting the transcripts $0.061 |
| Sessions | 20: 2 main chats, 18 role sessions |
| Work | 6 cards in 2 phases · 14 commits · 58 tests passing |
Where the tokens went, why the cost per card stayed flat, and the one part that didn't: the proof. Every session, as it ran: the receipts.