In this guide
There is a persistent idea that prompting is about finding the magic phrasing, that somewhere there is a word which unlocks the good output, and the job is to guess it.
It is not, and the evidence is that the phrases people trade never survive contact with a new model. What survives is structure. A prompt is a specification, and nearly every disappointing result is a specification that left the important decision to the model. It made one. It was not yours.
Two domains, because the failure looks completely different in each.
Part one: images
Say things in the order the model reads them
Image models weight the front of a prompt more heavily than the back. So the order is not cosmetic:
subject → action → setting → style → lighting → camera → constraints
Everything after the subject narrows. Put "cinematic" first and you have told the model the mood before it knows what it is looking at.
A worked pair, same intent:
BAD a beautiful photo of a coffee shop, very detailed, 8k, masterpiece,
trending on artstation, professional
GOOD a barista pulling an espresso shot, small tiled coffee bar, morning,
shot on 35mm, shallow depth of field, hard window light from camera
left, warm neutral palette
The first is 14 words of praise. 8k, masterpiece and trending on artstation describe how good you would like it to be, which is not information.
The second contains eight decisions, and the model gets to make none of them.
Length has a ceiling and it is lower than you think
20 to 80 words is the working range across current models, and short, precise prompts in the 20 to 50 band routinely beat 150 word ones. Past that, attention spreads and later terms get diluted by earlier ones, you are not adding detail, you are lowering the weight of everything you already said.
If a prompt needs more than 80 words, it usually wants a reference image instead. That is what they are for.
Camera language is the highest leverage vocabulary
Photographic terms carry an enormous amount of specification per word, because they describe real optics the training data is full of:
| Instead of | Say | You get |
|---|---|---|
| "close up" | 85mm, f/1.8 |
Compressed perspective, flattering, blurred background |
| "wide shot" | 24mm, f/8 |
Expansive, everything sharp, slight edge distortion |
| "nice lighting" | soft window light, camera left |
A direction and a quality |
| "dramatic" | single hard key, deep shadows, high contrast |
Actual contrast |
| "professional" | , | Nothing. Delete it. |
The same is true of art vocabulary, gouache, risograph, three-colour screen print, where naming a real medium buys you its whole set of physical
constraints for one word.
Negatives constrain, they do not create
Midjourney's --no and the negative prompt field elsewhere are for excluding
what the model reliably adds unasked: --no text, watermark, extra fingers.
They are a fence, not an instruction. "No clutter" will not produce a clean
composition, minimal, single subject, plain background will.
Prompting is now model specific
The same words genuinely produce different work across models, and the styles have diverged rather than converged:
- Midjourney rewards short, high signal phrases plus reference images. It fills gaps confidently, which is why it needs negatives most.
- Flux and Stable Diffusion reward structured, weighted keywords and respond well to explicit technical terms.
- Nano Banana, Imagen and the other conversational models take instructions closer to plain sentences, and are markedly better at editing, "keep everything, change the jacket to grey", than at one shot generation.
Which means a prompt is not portable, and the useful thing to carry between models is your checklist, not your text.
Change one thing at a time
Lock the seed. Change one variable. Compare. This is dull and it is the entire difference between a library of prompts that work and a folder of images you cannot reproduce. Six deliberate iterations beat sixty rerolls, and you end up knowing why it worked, which is the only part that transfers to the next brief.
Part two: code
Here the failure mode inverts. Image models under specify and improvise. Coding agents over comply: they will do exactly what you asked, at length, including the parts you did not mean.
The shift is from prompting to context
Through 2026 the centre of gravity moved from wording prompts to engineering context, what the agent can see, what tools it has, what it is allowed to touch. Prompt quality now depends far more on how retrieval and scope are set up than on how the sentence is phrased. A well worded request against the wrong context loses to a blunt one against the right context, every time.
Practically, the ranking of what matters:
- What it can see, the right files, the actual error, the real schema
- What "done" means, a test that passes, a command that exits zero
- What it must not do, the constraints, the files to leave alone
- The wording, a distant fourth
Give it a way to check itself
This is the one that changes results most, and it is barely about prompting at all. An agent that can run your test suite, your typechecker or your linter is in a loop with ground truth. An agent that cannot is guessing, and it will report success with total confidence either way.
"Fix the failing test" is a better prompt than three paragraphs of description, because the test is an unambiguous definition of done that the agent can evaluate without you.
Ask for the change, not the outcome
VAGUE make the site faster
USABLE LCP on / is 3.1s at 4x CPU throttle; the LCP element is p.zb-lead.
Find what delays it. Do not change the visual design. Measure
before and after with the same method and show me both numbers.
The second names the metric, the measurement conditions, the element, a constraint, and what evidence you will accept. It is not politer. It is falsifiable.
Plan before it writes
For anything touching more than two files, get the plan first and read it. The cost of a wrong plan is a paragraph; the cost of a wrong implementation is a review of four hundred lines you did not want. This is the cheapest habit in agentic coding and the most skipped.
Write the rules down once
Repo conventions belong in a file the agent reads every session, AGENTS.md,
CLAUDE.md, whatever your tool looks for, not in the prompt each time. Ours
covers the things a newcomer gets wrong: which spacing token to use, that
Tailwind's spacing utilities are wrong here because the root font size is not
16px, that comments explain why rather than what. Written once, applied
every time, and it stops being your job to remember.
Constrain the blast radius
Small scope, verified, committed, repeat. An agent asked to change one thing produces a diff you can actually review. An agent asked to change everything produces a diff you will approve out of fatigue, which is the real risk, not that the model writes bad code, but that nobody reads it.
What transfers
Strip the domains away and the same three habits are underneath:
- Specify the decisions you care about. Anything you leave out is not neutral, it is delegated.
- Give it something to check against. A reference image, a seed, a failing test, a metric with a number. Feedback beats phrasing.
- Change one variable per iteration. Otherwise you learn nothing and cannot reproduce the good result.
None of that is a trick, which is why none of it goes stale when the models change. The prompt library you copied in January is already wrong. The habit of writing down what you actually want, before you ask for it, has not been wrong yet.
Background reading for the sections above: the 2026 shift from prompting to loop and context engineering, Mise en Place for Agentic Coding on preparation as methodology, and practical guides on model specific image prompt structure and Flux versus Midjourney phrasing.
Putting AI to work in a product?
We integrate AI into existing products and workflows, starting from a task you can describe and check.



