Quick answer
A good AI prompt has six elements: a role, a clear task, relevant context, an explicit output format, examples where useful, and constraints on what to avoid. Get all six right and the model will reliably produce good output. Skip any of them and you get the generic, robotic response everyone complains about. The rules differ slightly across ChatGPT, Claude, Gemini, and Midjourney — but the framework is the same.
The biggest gap between people who get great output from AI and people who do not is not which model they use. It is how they prompt. After watching hundreds of prompts on both sides of that gap, the difference is almost always the same six elements. Get them in, and you are 80% of the way to a good response, regardless of which model you are talking to. Here they are, in order of impact.
1. Role — tell the model who it is
Adding an explicit role at the start is the single highest-leverage change you can make. "Write a product description" produces generic copy. "You are a senior copywriter at a specialty coffee brand. Write a product description" produces voice. The model behaves like the role you give it.
- Be specific: "senior copywriter" beats "writer"
- Add context to the role: "senior copywriter at a specialty coffee brand" beats just "senior copywriter"
- For technical tasks, include experience level: "staff engineer with 10 years in distributed systems"
- For creative work, add aesthetic markers: "minimalist designer who admires Dieter Rams"
When to skip a role: quick factual questions ("what year did X happen?"), simple lookup tasks, voice queries to a phone. Adding a role to those just slows the model down.
2. Task — specific action, specific output
The task is the verb plus the deliverable. "Help me with my essay" is not a task. "Rewrite the introduction of my essay to open with a specific anecdote instead of a general claim" is a task. The more specific the task, the less the model has to guess at what you actually want.
A useful test: could a freelancer working from your prompt know exactly when they were done? If not, the task is too vague.
3. Context — what the model cannot guess
Context is the background that turns a generic response into a useful one. Audience, brand voice, project constraints, the platform the output will live on, what came before this in the conversation. Include the context the model could not possibly infer from the task alone.
- Audience: "for senior engineers" vs "for high school students" changes everything
- Voice: paste a sample of your existing writing if you want the model to match it
- Platform: a tweet, a LinkedIn post, and an email all have different conventions
- Constraints from the world: deadlines, budgets, dependencies, what has already been tried
4. Format — the exact output shape
Specifying the format is the difference between getting back something you can paste straight into your work and something you have to reformat first. "A bulleted list of five items" beats "some examples". "A JSON object with keys title, body, tags" beats "the article". "200 words, no headings" beats "make it short".
For programmatic use (calling AI from code), describing the format in detail is the single biggest reliability win. Most "AI is unreliable" complaints from developers turn out to be "AI returned a slightly different format than I expected" — solvable with a more explicit format spec.
5. Examples — show, do not tell
One concrete example of the right output is worth a paragraph of instructions. This is called "few-shot prompting" in the literature, but the idea is simple: the model is much better at pattern-matching than at following instructions. If you can demonstrate what you want with even one example, do it.
- For tone: paste an example sentence in the voice you want
- For structure: give one filled-in example and ask for ten more in the same format
- For taste: show one bad example and one good example, and explain the difference
- When NOT to use examples: simple tasks, or when the example might bias the model toward copying it too closely
6. Constraints — what to avoid
Telling the model what NOT to do is as important as telling it what to do. Constraints prevent the model from drifting into the same generic patterns everyone is tired of: corporate filler, tricolons, hedging openers, hashtags, emoji you did not ask for, balanced "on the other hand" conclusions.
A surprisingly effective constraint list for almost any writing task: "Avoid: corporate buzzwords (leverage, delve, navigate, unlock), tricolons (fast, efficient, and reliable), hedging openers (it is important to note), and the construction 'not just X, but Y'."
How the rules differ across models
The framework is the same. The conventions differ.
- ChatGPT / GPT-5: explicit role, plain-English headings (Task, Context, Format), inline examples
- Claude: XML tags work exceptionally well — <role>, <task>, <context>, <format>, <examples>, <constraints>
- Gemini: clearer with concise input. Open with the instruction, not a role. Numbered constraints
- Midjourney: comma-separated descriptors only, no full sentences. Order matters: subject, action, environment, lighting, style, parameters
When to bend the rules
The six-element framework is for production work — anything where you want predictable, high-quality output. For exploration, bend it. A loose prompt sometimes produces more interesting results than a tight one. For creative drift, casual conversation, voice queries, and quick lookups, do not overthink it.
Want this done for you?
Writing prompts that hit all six elements every time is a habit. While you are building it, we have a free tool that does the rewriting for you. Paste your draft into the AI Prompt Improver and it will identify what is missing, add it, and show you exactly what was changed and why. It is tuned for ChatGPT, Claude, Gemini, and Midjourney — you pick the target model.
Try it at /prompt-improver. The "what changed" breakdown is genuinely useful for learning — every result shows you which of the six elements got added, so you can start spotting them in your own drafts before you click Improve.
Related reading
Bottom line
Six elements: role, task, context, format, examples, constraints. Hit those and you will get good output from any frontier model. Skip them and you will get the generic, robotic responses everyone is tired of. The framework is the same across ChatGPT, Claude, Gemini, and Midjourney — only the conventions differ. Practice the habit, or use the tool. Either works.




