“Fix the app” buys you plausible garbage. A strong brief reads like a ticket you’d give a sharp new colleague: the goal in one sentence, the constraints, and — most skipped of all — what done looks like.
Weak brief
- “Make the checkout faster.”
- “Add auth to the app.”
- “Clean up this file.”
Strong brief
- “Checkout p95 is 2.3 s; profile `payments.py`, cut the N+1 query, keep the API shape unchanged.”
- “Add GitHub OAuth to `auth/`, mirror the existing session flow, tests in `test_auth.py` must pass.”
- “Extract the three date helpers into `utils/dates.py`; no behavior change; run the suite.”
- Goal: one sentence, observable.
- Constraints: versions, style, files that are off-limits.
- Definition of done: which tests pass, which behavior changes.
- Context pointers: the files, commits, or docs that matter.






