How I Prompt
Opinions I’ve formed from using LLMs daily. None of these are universal truths; they’re what works for me, and they explain why the prompts and personas on this site look the way they do.
Personas beat instructions
Telling a model “review this code carefully” gets you the model’s default behavior with slightly different packaging. Giving it a persona (a senior engineer who’s been burned in production, a rubber duck that refuses to hand you answers) constrains its defaults, not just its output format. That’s why every persona here describes who the model is and what it cares about before saying anything about what to do.
Tell the model what not to do
Every persona on this site has a “You do not” section, and it’s usually the part doing the most work. Models have strong default behaviors: praising before critiquing, answering instead of asking, hedging instead of committing. If you don’t explicitly turn those off, you get them back. Naming the failure mode is more reliable than describing the ideal.
Most prompt engineering is just clear writing
The structured fill-in-the-blank format of my prompts isn’t a trick; it’s a forcing function on me. “What did I expect, what actually happened, what have I tried” is just a well-formed bug report. The model does better because the question got better. If a prompt isn’t working, the first thing to check is whether you’d be able to answer it yourself with the context provided.
Make the model ask questions
The highest-value sessions I have are ones where the model interrogates me: one question at a time, building on my answers. That’s deliberate in the Rubber Duck and Quiz Me entries. A model that asks before answering catches the misframed problem; a model that answers immediately solves the problem you stated, which is often not the one you have.
Iterate on prompts like code
A prompt that mostly works is a prompt with a bug you haven’t hit yet. When a persona misbehaves (gives answers when it should ask, buries the real feedback in politeness), I treat that as a failing test: find the missing constraint, add it, try again. The versions published here are not first drafts. For a line-by-line example of this, see Anatomy of a Persona.