Tier 1
Tier 1 — Professional Prompting: Write prompts the agent can act on, to get the right result the first time
Reach for this tier when the agent keeps doing almost the right thing — vague asks get literal, wrong results. The single request is your cheapest lever: say what you want so it can't guess wrong.
1. Hand over the outcome, not a file list.
Instead of: "Create these 15 files for auth."
Prefer: "Implement JWT auth following the architecture in @src/auth. No new libraries."
2. Be specific — vagueness is now taken literally.
Instead of: "Clean up the auth code."
Prefer: "Extract token refresh in @src/auth/session.ts into the existing RetryPolicy class."
3. Say what to do, not what to avoid.
Instead of: "Don't be verbose."
Prefer: "Write for senior engineers — lead with the technical specifics."
4. Give the reason; motivation makes it generalize.
Instead of: "Use tabs."
Prefer: "Use tabs — our linter rejects spaces in this repo."
5. Specify the output shape, not just the goal.
Instead of: "Build an auth API."
Prefer: "POST /login and /refresh, Zod validation, a consistent {error, code} envelope."
6. Show examples instead of describing style.
Instead of: "Make the tone professional."
Prefer: "Match these 3 examples:
<example>…</example>" (3–5 work best).
7. Follow the house style, don't invent one.
Instead of: "Write a date parser."
Prefer: "Parse dates using the pattern already in @utils/date.ts."
8. Show, don't tell — use the input channels.
Instead of: describing a layout bug in prose.
Prefer: paste the screenshot +
@Component.tsx; pipe the raw logs straight in.
9. Invite uncertainty instead of forcing an answer.
Instead of: "Implement the caching layer."
Prefer: "Implement caching. List your assumptions first; if a choice is genuinely ambiguous, stop and ask."
10. Paste raw errors, don't paraphrase them.
Instead of: "It throws some null error."
Prefer: paste the full stack trace → "diagnose the root cause before changing anything."
11. Constrain scope — over-engineering is a frontier-model failure mode.
Instead of: "Fix this bug and improve the code."
Prefer: "Fix only this bug. Don't refactor, comment untouched code, or add handling for cases that can't occur."
12. Narrow the edit surface — a small diff is a reviewable diff.
Instead of: "Refactor authentication."
Prefer: "Change only the middleware layer in @src/mw/auth.ts."
13. Dial effort; don't beg for thoroughness.
Instead of: "Think really hard and be exhaustive."
Prefer: leave it at high (the 4.8 default); add
ultrathinkfor one gnarly turn;/effort ultracodefor big async jobs.
14. Front-load turn 1 instead of hand-holding across many.
Instead of: a vague opener followed by ten corrections.
Prefer: one rich brief — goal + constraints + definition of done + "work autonomously; stop only at a real fork."