Prompt Engineering Best Practices (and the Mistakes That Undo Them)
The practical rules that actually improve AI output, paired with the specific mistakes that cancel them out — for ChatGPT, Claude, and Gemini alike.
Prompt engineering best practices aren't tricks or magic phrases — they're a short list of habits that consistently close the gap between a mediocre AI answer and a genuinely useful one. Six practices do most of the work. Six mistakes quietly undo them. This is the practical version: what to do, and specifically what not to, with the reasoning behind each so you can apply it to prompts these examples don't cover.
The six practices that actually matter
1. Assign a specific role, not a generic one
“You are a helpful assistant” does almost nothing — it's already the model's default posture. “You are a senior tax attorney specializing in pass-through entities” does a lot: it sets vocabulary, depth, and the kind of caveats a real expert would include. Specificity is the whole value of a role; a vague one is wasted words.
2. Front-load the instruction
Models weight the beginning and end of a prompt more heavily than the middle, a pattern often called “lost in the middle.” If your most important constraint is buried in paragraph three of context, it's more likely to get dropped. State the core task early, put supporting context after it.
3. Say what to exclude, not just what to include
“Write a product description” leaves the model free to default to whatever's generic for the category — hype adjectives, exclamation points, the same three adjectives every AI writes. “No hype language, no exclamation points, no superlatives” closes off the lazy option and forces something more specific to survive.
4. Specify the output format, every time
This is the single highest-leverage line in most prompts and the most commonly skipped. Table, numbered list, JSON, three short paragraphs, a specific word count — say it. Without a format instruction the model defaults to prose, which is frequently the wrong container for the information you actually need.
5. Show one example when tone or format is unusual
For anything with a standard shape (a summary, a straightforward email), skip this — it's overhead. For anything with a specific, non-obvious tone or structure, one well-chosen example outperforms a long paragraph describing the pattern. Three or four examples rarely beats one good one.
6. Iterate with targeted critique, not a full rewrite
When an output is close but not quite right, tell the model exactly what to change — “shorter, cut the second paragraph, add a specific number in the close” — instead of restarting with a longer prompt. Targeted critique keeps what was already working and fixes only what wasn't.
The mistakes that undo all six
Following the six practices above only works if you're not simultaneously making one of these. In practice, most weak prompts have one of these mistakes doing the damage, not a missing practice.
Topic instead of task
The most common mistake by far. “Remote work” is a topic. “List four specific challenges of managing async teams across time zones, with one tactic for each” is a task. A role and a format won't save a prompt that never states what kind of output it wants.
Contradictory instructions
“Be concise” followed later by “cover every angle in detail” cancels itself out — the model has to guess which one you meant more, and it usually splits the difference badly. Read your own prompt back before sending it and check for instructions that pull in opposite directions.
Negative framing instead of positive
“Don't be vague” is weaker than “write like a senior engineer explaining to a junior colleague,” because the model has to infer the positive version of your instruction from its negation. State what you want directly rather than what you don't.
Cargo-culting reasoning prompts
Adding “think step by step” to a simple task doesn't help — modern reasoning models already do this internally on anything that benefits from it, and pasting the phrase everywhere just wastes tokens without wasting quality. Reserve it for problems that genuinely need visible, checkable reasoning steps.
No context on the actual constraint
“What's the best marketing channel?” produces an answer that's technically correct for the average business, which is exactly why it's useless for yours. The model has no idea about your budget, audience, or what you've already tried unless you say so.
Restarting instead of iterating
When an output is 80% right, writing an entirely new prompt from scratch throws away the 80% that worked along with the 20% that didn't. Targeted follow-up almost always gets there faster.
Applying this without rewriting every prompt by hand
These six practices and six mistakes are the same pattern, stated two ways: role, task (not topic), constraints (including exclusions), format, and one example when needed. It's a checklist, which means it's mechanical enough to automate — try a real prompt below and see the practices applied for you:
TL;DR
- Six practices: specific role, front-loaded instruction, explicit exclusions, defined output format, one example when needed, targeted iteration.
- Six mistakes that undo them: topic instead of task, contradictory instructions, negative framing, cargo-culted reasoning prompts, missing context, restarting instead of iterating.
- Topic-instead-of-task is the single most common mistake and the highest-leverage one to fix first.
- The practices are identical across ChatGPT, Claude, and Gemini — only the emphasis shifts per model.
- Since it's a checklist, it's mechanical enough for a one-click tool to apply automatically.
Frequently asked questions
What are the best practices for prompt engineering?
Six practices cover most of the gap between a mediocre prompt and a great one: assign a specific role, front-load the most important instruction, state constraints explicitly (especially what to exclude), specify the output format, give one example when tone or format is unusual, and iterate with targeted critique instead of rewriting from scratch. None of these are tricks — they're just completeness.
What's the most common prompt engineering mistake?
Stating a topic instead of a task. 'Marketing strategy' is a topic; 'compare three positioning angles for a $40/month SaaS tool and recommend one, with a one-sentence reason each' is a task. The model can work with a task. A topic forces it to guess what kind of output you want, and it usually guesses generic.
Do prompt engineering best practices differ between ChatGPT, Claude, and Gemini?
The core practices are identical across all three — role, context, constraints, format transfer cleanly. Where they diverge is emphasis: Claude follows format constraints the most literally, so precise formatting instructions pay off most there. Gemini defaults to longer, more hedged answers, so length limits matter more. ChatGPT is the most forgiving of loose structure, which makes it easy to underestimate how much structure would still help.
Should I still use 'think step by step' in my prompts?
Only for problems that genuinely require sequential reasoning — math, multi-constraint decisions, logic puzzles. Current reasoning models do this internally by default on complex problems, so adding the phrase to a simple task adds nothing. Treat it as a tool for a specific job, not a phrase to paste into every prompt.
How long should a well-engineered prompt be?
Long enough to state role, context, task, constraints, and format without padding — for most everyday tasks that's 80 to 250 words. Under 50 words you're usually missing context the model needs. Past 300 words, you risk burying the actual instruction in your own detail. Agent briefs for coding tools run longer because scope and verification steps take more space.
What's a quick way to fix a prompt that isn't working?
Ask what's missing from the five-part pattern: does it have a role, the right context, a specific task (not a topic), explicit constraints, and a defined output format. Nine times out of ten the fix is adding whichever of those five is absent, not rewriting everything else that was already working.
Stop rewriting prompts. Try the one-click enhancer.
Try the PromptAI demoWorks where you do: the AI prompt enhancer everywhere, ChatGPT prompt enhancer in the browser, or the prompt enhancer for Claude Code in your terminal.