5 min welcome, 70 min writing a good spec, with a live interview, the rest together
I am available for feedback and meetings.
Between sessions too. Just ask.
Questions, feedback, a call with your team: any time, between sessions too.
Your CLAUDE.md says how you work.
The spec says what to build this time.
At the end of this session, you will go from engineer to conductor.
Part one
The task, the limits, and how to tell it is done.
A ticket is written for people who share your context.
The agent does not.
The change, the reason, where it lands.
Interfaces, data model, what not to touch.
Criteria that something can check. The part most tickets leave out.
"The checkout works well on mobile."
"At 375 px width the pay button is visible without scrolling. checkout.mobile.spec passes."
Say what not to touch.
Scope drift happens because nothing said stop.
Point, do not describe.
pages/account/orders.vue: same data loading, same error states. Beats a paragraph describing them.URLs of the Figma frames, one per state. The agent reads them through the Figma MCP server. Not a screenshot.
The new or extended fields as a type or schema, with one example record. Not a sentence.
A table: input, expected result, one row per case. Not a paragraph.
Part two
When you do not know enough to write it yet.
From ticket to spec
A throwaway run that reads the code and reports options.
Its output feeds the spec. It is not code to merge.
Spike, change nothing: how could we add a wishlist to the account area? Read the code, then list two or three options with trade-offs and open questions.
The agent maps where a change will land:
callers, tests, configuration.
Before we change the checkout total: find every caller of calculateTotal, the tests that cover it and the configuration it reads. Add the map to the spec.
You think through the corner cases yourself. When you know the domain best and a wrong guess is expensive.
It asks, you answer, it writes the spec. When the knowledge is in your head, not on paper.
In plan mode it explores, makes every call and writes them into a plan. You review and approve before any code changes. When the risk is low.
I want to build [short description]. Interview me in detail. - Ask about technical implementation, UI and UX, edge cases, concerns and tradeoffs. - Ask what must not change, and how we will know it is done. - Decide the obvious questions yourself. Keep going until we have covered everything, then write a complete spec to specs/01_INITIAL_SPEC.md: the task, the limits, and acceptance criteria as tests.
Business rules go into the spec before any code exists.
They write or check the acceptance criteria.
Against the criteria, not the diff.
Spec size follows risk,
not ticket size.
Part three
One line, then a spec written live.
Build a Snake game. Don't ask any questions. Just do it.
I want to build a Snake game for the browser. It works great on mobile phones and desktop. Professional, tasteful animations. Limits: one HTML file, no dependencies. No sound, no high scores. Done: game logic separate from drawing, every rule covered by a test. Interview me in detail. Ask about technical implementation, UI and UX, edge cases, concerns and tradeoffs. Decide the obvious questions yourself. Keep going until we have covered everything, then write a complete spec to specs/01_INITIAL_SPEC.md: the task, the limits, and acceptance criteria as tests.
Claude time!
Demo time.
The big reveal.
What a spec is
Before the spec
One game, two specs
One real ticket, run twice: as written, then from a spec. Refine the spec, not the chat.
One spec written with whoever wrote the ticket, before any code.
Create a /discovery and a /spike skill that customize a shared and agreed-upon approach to your team's codebase(s). Commit them to main, or add them to the plugin.
Be ready to show in 5 minutes: ticket and final spec side by side, what changed between the two runs, and the questions the ticket did not answer.
/discovery and /spike are in main, or in the plugin, and used on two tickets. As a team, before the next session.Next session:
feedback loops.
Arndt Voges Consulting · arndt@arndtvoges.com · arndtvoges.com
<stop>