A handed-over task has two readers with opposite needs, and most templates serve only one of them.
When you write a ticket for a person, you can be vague about the obvious parts, because the reader shares your context. When you write one for a coding agent, the obvious parts are exactly what goes wrong — the agent will happily pick the wrong directory, the wrong test runner, or the wrong branch, and it will do it confidently.
But if you write only for the agent, you get a wall of paths and flags that the human reviewing the result cannot skim. They can no longer answer the one question that matters at review time: was this the right thing to build?
So a good spec is really two documents stapled together:
Someone else has written this pattern up more carefully than I will here; if the idea is new to you, start with the dual-prompt write-up on task design, which is where I first saw the split named properly.
npm test -- --run auth beats “tests should pass”.The most expensive spec is not the vague one. It is the one that is precise about the how and silent about the why. You get back exactly what you asked for, it takes forty minutes to review, and only then does someone notice the underlying request was wrong. Intent first, then instructions.