Course outline
Agentic Engineering: the hands-on course · Module 3: Planning & task design
Writing task briefs with acceptance criteria
A brief is a contract. Learn the six parts of a brief that works, and how to write acceptance criteria the agent can check on its own.
Lesson 10 / 24 · ⏱ 8 min
In Module 1 you wrote a four-part brief: goal, context, a “done when” check, and a “don’t” line. That works for small tasks. For anything bigger, the part that makes or breaks the result is the “done when”, and it deserves more care.
A brief is a contract. The acceptance criteria are the clauses you can actually enforce.
Anatomy of a brief
Not every brief needs all six at full length. A small task can have one line per part. But when a result disappoints me, I can almost always trace it to a missing part, usually 4 or 5.
What makes a criterion checkable
A good acceptance criterion is something either you or the agent can verify without asking anyone. The best ones are a command with an expected result. The next best are observable behavior. The worst are adjectives.
✕ Vague
- –The export works well
- –Code is clean
- –Handles edge cases
- –Fast enough
✓ Checkable
- +GET /reports/export?format=csv returns a CSV with a header row and one line per order
- +The linter and type checker pass with no new warnings
- +An empty date range returns a header-only file, and a range over 366 days returns a 400
- +Export of 10,000 orders completes in under 2 seconds in the existing perf test
Notice the right column names the edge cases instead of hoping the agent guesses them. Writing them down is also how I find out I hadn’t decided what should happen.
A full brief
Goal
Add CSV export to the orders report so finance can stop copy-pasting
from the screen.
Context
- Report endpoint: src/api/reports/orders.ts
- Follow the existing PDF export in src/api/reports/pdf.ts for structure
- CSV helper already exists: src/lib/csv.ts
Constraints
- No new dependencies
- Reuse the report's existing query; don't write a new one
Acceptance criteria
- GET /reports/orders/export?format=csv returns text/csv
- Header row matches the columns shown on screen, same order
- Empty range → header-only file; range > 366 days → 400 with a message
- New tests cover these three cases; full test suite passes
- Linter and type checker pass
Out of scope
- The UI button (separate task)
- Changing the PDF export
Report back
- Files changed, and any decision you made that isn't in this brief
Check yourself
🧠 Briefs and acceptance criteria
Score: 0 / 4
1. Which acceptance criterion is the most checkable?
2. Why include an “out of scope” section?
3. You can’t write a checkable criterion for a task. What does that usually mean?
4. What’s the point of asking the agent to report decisions that weren’t in the brief?
Before you move on
✅ Key takeaways
0 / 4 completed