Prompting fundamentals
How to get expert-quality work out of a chat assistant (ChatGPT, Claude, Gemini and similar) in a field you don't know: what the model is actually doing, one prompt skeleton you fill in for any task, placeholders that teach a field's vocabulary as you fill them, the prompt chain (interview, options, produce, review) that makes up for missing expertise, then structure, examples, output control, iteration, verification, image and video prompts, a starter prompt library and what never to paste. Every domain sheet in Prompting applies this method to one field; the map is in Use the domain sheets. Products and features change quickly, so check your tool's current help pages for anything product-specific.
What a language model does
A large language model (LLM) is a program trained on a very large amount of text to predict what text comes next, one token at a time (a token is a word or a piece of one; in English a token averages roughly three-quarters of a word, varying by model). A chat assistant is an LLM tuned to follow instructions and hold a conversation, usually wrapped in an app that adds tools such as web search, file reading and code execution.
| Fact | What it means for your prompts |
|---|---|
| It predicts plausible text from context | your prompt is most of the context; whatever you leave out, it fills with the most typical answer. Generic output is the default, not a malfunction |
| Context window | everything it can see at once: the conversation so far, pasted documents, the app's instructions. It is large, but very long chats degrade: early details get missed or contradicted. Start a fresh chat per task |
| No memory between chats | each chat starts blank unless the app adds a memory feature, project files or custom instructions. Those are app features, not the model, and you can usually view and delete what is stored |
| Knowledge cutoff | it learned from data up to a date. Later events, prices, versions, laws and product features are unknown unless the app searches the web or you paste them in |
| Confident errors | it produces fluent text whether or not the text is true: invented citations, wrong numbers, nonexistent functions, made-up product features. These are called hallucinations. A confident tone tells you nothing about accuracy |
| Randomness | the same prompt gives different answers. Regenerate to see the range; one answer is a sample, not the answer |
| It follows your framing | "Isn't X better than Y?" gets "yes". Models also tend to praise your drafts and agree with you (sycophancy). Ask neutral questions and ask for criticism explicitly |
| Tools change what it can know | with web search on, it can cite pages it actually read; with search off, any citation comes from memory and may be invented |
| Reasoning modes | some assistants can "think" before answering (often labeled thinking, reasoning or extended thinking). Use them for multi-step problems; they are slower and you don't need to write "think step by step" |
The skeleton
Every full prompt on these sheets has the same eight slots, written as tags, in the same order. One fixed structure does three jobs:
- You learn it once. The slots are the same for an email, an ADR or a capacity estimate, so moving to a new field means learning what goes in them, not a new way of asking.
- Long material goes first and the request last. That is the order Anthropic's guide recommends for long inputs: in its tests, putting the query at the end improved response quality by up to 30%, especially with complex, multi-document input.
- Tags mark where pasted material starts and ends, so the model doesn't mistake a document's sentences for your
instructions, and you can point at parts by name ("using only the figures in
<materials>"). Anthropic's and OpenAI's guides both suggest XML-style tags for this; any consistent delimiter works.
| Slot | What goes in it | Drop it when |
|---|---|---|
<materials> | pasted documents, data, drafts, transcripts, code; long material always goes here, first | you have nothing to paste |
<context> | your situation: who you are, the project, who the output is for and what they know, what exists, what you tried and why it failed | almost never: it is the slot only you can fill |
<examples> | 1–3 samples you like and 1 you don't, each with why | the format is standard (an ADR, a JSON schema) or taste doesn't matter |
<task> | the deliverable by its professional name, and the decision or action it feeds | never in a full prompt |
<requirements> | musts and must-nots: length, scope, constraints, named standards, the no-invention line | the task has no constraints worth stating |
<quality_bar> | 3–5 checks an expert in the field would apply, which the model runs on its draft before answering | never in a full prompt |
<output_format> | the exact shape: sections, table columns, file type, length | any shape will do |
<process> | how to work: ask questions first, or give options and stop; then the assumptions line | never in a full prompt |
The full skeleton, ready to copy:
<materials>
[optional: pasted documents, data, drafts;
long material always goes first]
</materials>
<context>
[your situation: who you are, the project,
what exists, what you tried]
</context>
<examples>
[optional: 1–3 samples you like and 1 you don't,
each with why]
</examples>
<task>
[the deliverable by its professional name,
and the decision or action it feeds]
</task>
<requirements>
- [musts and must-nots: length, scope, constraints,
named standards]
- Never invent numbers, names, quotes or sources:
write [NEEDS SOURCE] where support is missing.
</requirements>
<quality_bar>
Before answering, check your draft against:
- [3–5 checks an expert in this field would apply]
</quality_bar>
<output_format>
[the exact shape: sections, table columns,
file type, length]
</output_format>
<process>
[optional: how to work, e.g. give 3 options
and stop before drafting]
Ask me up to 3 questions first if anything missing
would change your answer; otherwise go on.
End with a list of the assumptions you made.
</process>The structure matters less than what you put in it. Tags help the model parse a long prompt; they add no knowledge, and a tidy skeleton with nothing specific in it still gets a generic answer. Four things change results:
- context only you have: your audience, data, constraints and history. Whatever you leave out, the model fills with the most typical answer;
- the deliverable named: "a win-back email", "an ADR", "a capacity estimate", not "something about X";
- the quality bar: the checks a professional would apply, named so the model can run them and you can verify that it did;
- staging: questions and options before a draft, a review in a fresh chat after it (The prompt chain).
Most questions don't need all eight slots. A quick prompt keeps three things: the deliverable, the facts only you have, and one check. Every entry in the Prompt library has a Quick and a Full version.
The standard lines
Three lines go in every full prompt, in these words:
| Line | Slot | Why it matters |
|---|---|---|
Never invent numbers, names, quotes or sources: write [NEEDS SOURCE] where support is missing. | <requirements> | a model writes fluent text whether or not it has the fact; the marker turns a hidden invention into a visible gap you can search for and fill. Fields use variants: [NEEDS PROOF] for marketing claims, [CHECK LOCAL CODE] for building codes, [VERIFY] for figures to check in a filing |
End with a list of the assumptions you made. | <process> | every answer rests on guesses about what you didn't say; listed, they are the quickest part to check, and correcting one wrong assumption often fixes the whole answer |
Ask me up to 3 questions first if anything missing would change your answer; otherwise go on. | <process> | models rarely ask on their own; they guess. The condition stops questions for their own sake, and the cap stops a questionnaire. Use it where missing context would change the answer |
Placeholders
A placeholder is a gap in a saved prompt that you fill before sending. The prompts on these sheets use three forms and no others:
| Form | Use it for | Examples |
|---|---|---|
[label: option | option | option] | a choice between the field's own terms | [awareness: unaware | problem-aware | solution-aware | product-aware | most aware] (marketing); [consistency: strong | read-your-writes | eventual] (system design); [ADR format: MADR | Nygard] (software architecture); [shot: wide | medium | close-up | extreme close-up] (video) |
[label, e.g. example value] | an open answer where a newcomer wouldn't know what a good one looks like | [audience, e.g. a CFO who reads only the first paragraph]; [response measure, e.g. p95 under 300 ms at 200 requests/s]; [print size, e.g. A2 poster with 3 mm bleed] |
[paste …] | material you supply | [paste the exit-survey results]; [paste the diff]; [paste the floor plan notes] |
Enumerated options teach the vocabulary. Each option is a term you may not have known existed, and choosing
between them makes you ask what each means: the question an expert would want answered before starting. Picking
read-your-writes over eventual tells the model exactly which guarantee you need, where "it should feel instant"
leaves it to guess. Delete the options you didn't choose before sending; if you can't choose, ask: "Explain these
options for my case and recommend one."
The examples in the second form do the same job for open answers: "p95 under 300 ms at 200 requests/s" shows what a measurable target looks like, so you don't write "fast".
A bare placeholder such as [awareness level] or [consistency model] is not allowed: it assumes you already know
the vocabulary you came to learn.
Before:
Write a [tone] email to [audience] about [topic].
After:
Write a [tone: plain | warm | formal | playful] email to
[audience, e.g. customers who canceled in the last 90 days]
about [topic, e.g. our new $4/month plan].Named standards over personas
Many prompt guides open with "Act as a senior …" or "You are an expert …". The published evidence that this makes answers more accurate is weak:
- A study of 162 personas on 2,410 factual questions across four open-source model families (Zheng and others, Findings of EMNLP 2024) found that adding a persona to the system prompt did not improve accuracy over no persona, and that choosing the best persona for each question automatically did about as well as choosing one at random.
- Wharton's Generative AI Labs tested expert personas on six models with graduate-level science, engineering and law questions (Prompting Science Report 4, December 2025): no consistent gain, and mismatched or low-knowledge personas sometimes lowered accuracy.
- Vendor guides still suggest a role. Anthropic's says a role in the system prompt focuses the model's behavior and tone; OpenAI's suggests describing the assistant's identity (purpose, communication style, goals) in developer messages. That is about register and behavior, which the studies above didn't measure.
These studies score accuracy on question sets, not long deliverables, and models change, so read them as "a persona
is no substitute for content", not "personas always hurt". A persona only gestures at what matters:
the standard a professional would apply. Name it in <requirements> or <quality_bar>, and say who the output is for
in <context>. A named standard is a specific, documented checklist you can hold the output to; "senior" is not.
| Instead of | Write | Slot |
|---|---|---|
| "Act as a senior software architect." | "Record each hard-to-reverse decision as an ADR in MADR format; draw C4 context and container diagrams." | <requirements> |
| "You are a world-class copywriter." | "Use the PAS structure (problem, agitate, solution) and one call to action." | <requirements> |
| "Act as an accessibility expert." | "Check text contrast against WCAG 2.2 AA: at least 4.5:1 for body text." | <quality_bar> |
| "You are a site reliability engineer." | "Define SLOs with 30-day error budgets; dashboards by the RED and USE methods." | <requirements> |
| "You are a strict editor." | "Before answering, check every sentence against the evidence list; cut any it doesn't support." | <quality_bar> |
| "Act as a CFO." | "It is for a CFO who reads only the first paragraph." | <context> |
If you don't know the field's standards yet, that is what the first stage of the chain and the Teach me the field prompt are for; each domain sheet's Vocabulary lists them.
The prompt chain
To prompt well in a field you need to know what to ask for: the names of the deliverables, the vocabulary, the standards a professional applies. If you don't, the fix is to stage the work so the model supplies the expertise while you supply the facts and make the decisions. Every domain sheet runs the same four stages for its field's main deliverable, each one a prompt in the skeleton:
| Stage | What the model does | What you do |
|---|---|---|
| 1. Interview | asks the questions a professional would ask before starting: at most 10, grouped, each with why it matters and typical answers. No deliverable yet | answer; the typical answers teach you the field's terms |
| 2. Options | proposes 2–4 materially different approaches with trade-offs and a recommendation, then stops | choose one, or ask what would change the recommendation |
| 3. Produce | writes the deliverable from a full skeleton prompt built on your answers and your choice | read the assumptions list first |
| 4. Review | in a fresh chat, critiques the output against the field's rubric and ranks the fixes; doesn't rewrite | take the top fixes back to the first chat |
The chain is the borrow-the-expert loop written as four prompts. The loop has six steps: interview me, teach me the terms, options with trade-offs, draft, critique against an expert rubric, revise. The Interview stage covers the first two (its typical answers are the lesson), Options is the third, Produce is the draft, and Review is the critique; the revise step is your follow-up in the original chat.
Generic versions of each stage are in the Prompt library: Interview me, Options before a draft, the skeleton itself for Produce, and Critique in a fresh chat. The domain sheets shortcut stages 1 and 2: their vocabulary tables, brief checklists and deliverable names are what the interview would have taught you. In an agent that can check its own work, such as Claude Code, stage 3 can run unattended until the quality bar is met: see Goals and loops.
Questions that surface hidden expertise at any stage:
- "What would an expert ask for here that I haven't?"
- "What is the professional name for the document or artifact that does this?"
- "What do beginners usually get wrong with this?"
- "What would make a professional reject this immediately?"
- "Which of my assumptions is most likely to be wrong?"
Chains inside a stage
A long deliverable can be its own chain: each prompt does one job, and its output, checked by you, becomes the next prompt's input. A chain for a report:
Prompt 1: From the notes in <materials>,
list every claim and the evidence for it.
Mark claims with no evidence [NEEDS SOURCE].
Prompt 2: Using only the supported claims from the previous
answer, propose a 5-section outline for [audience, e.g. the
board, who read only headings and the summary].
Prompt 3: Write section 2 of the outline, 300 words.
Prompt 4 (fresh chat): Here are a section and the
evidence list. Quote every sentence the evidence
doesn't support, and say why. Don't rewrite anything.1/4
Prompt 1 turns your notes into a list of claims and their evidence, with the unsupported ones marked. Check the list before going on.
Worked example
Weak prompt
Write a marketing email for my app.What's wrong
- No product facts, so the model invents features.
- No audience and no goal: sign-up, upgrade or win-back?
- No tone, length or call to action, and nothing that says what good looks like.
- The result will read like every marketing email ever written.
Strong prompt
<materials>
Exit-survey answers from users
who canceled in the last 90 days:
- "too expensive": 62%
- "too much manual entry": 21%
- other reasons: 17%
</materials>
<context>
Our product: a budgeting app for US freelancers. Since these
users left we added automatic invoice reminders, quarterly
tax estimates (US only) and a cheaper $4/month plan.
The readers: US freelancers, 25–45, who canceled in the last
90 days. They know the app; they don't know what changed.
</context>
<task>
A win-back email that gets them
to restart a free 14-day trial.
</task>
<requirements>
- Under 150 words; friendly, not pushy; one call to action.
- No fake urgency and no invented discounts
or features: only the facts above.
- Answer the top two exit reasons, in that order.
- Never invent numbers, names, quotes or sources:
write [NEEDS SOURCE] where support is missing.
</requirements>
<quality_bar>
Before answering, check your draft against:
- It names the reason they left in the first two sentences.
- It gives one concrete reason to
return, tied to that reason.
- It has a single clear call to action.
- Every product claim appears in <context>.
</quality_bar>
<output_format>
3 subject lines (under 45 characters), preview
text (under 90 characters), then the body.
</output_format>
<process>
Ask me up to 3 questions first if anything
missing would change your answer; otherwise go
on. End with a list of the assumptions you made.
</process>Each slot closes a gap the weak prompt left open: the survey numbers aim the copy at the real objections, the product facts stop invented features, the requirements rule out the usual tricks, the quality bar says how an expert will judge it, and the format gives options to compare.
What came back
An illustrative, abridged response:
Subject lines:
1. You told us why you left. We listened.
2. Less typing, and now $4/month
3. Your invoices can chase themselves now
Preview: Automatic invoice reminders and a cheaper plan.
Hi {first_name},
When people canceled, most told us two things: it cost too
much, and it meant too much typing. We've fixed both.
There's now a $4/month plan, and for $4/month you get
automatic invoice reminders, so clients get nudged without
you writing a single email. Quarterly tax estimates (US)
are built in too.
Restart your free 14-day trial and see the difference.
[Restart my trial]
Assumptions:
1. The $4/month plan includes invoice reminders and tax
estimates.
2. Emails support a first-name merge field.How an expert judged it
Checked against the prompt's own quality bar:
- Names the reason they left: passes, in the first sentence, with both survey reasons in order.
- One concrete reason to return: passes. Reminders answer "too much manual entry"; the cheaper plan answers "too expensive".
- A single call to action: passes; one button.
- Every product claim appears in the context: fails. "For $4/month you get automatic invoice reminders" joins two separate facts into a claim the brief never made. The model flagged it as assumption 1, which is the assumptions line doing its job; skip the list and you'd send it. If the cheap plan doesn't include reminders, the email promises a feature to the very people most likely to feel misled a second time.
- Subject lines: 1 and 3 are specific; 2 leads with price, which suits the 62% who left over cost. Test 2 against 3.
Verdict: one factual fix; everything else meets the bar.
The follow-up
Assumption 1 is wrong: the $4/month plan does not
include invoice reminders; they are on the $9/month
plan. Tax estimates are on both. Rewrite only the second
paragraph so each feature is tied to the right plan,
keep everything else word for word, then check the draft
against the quality bar again, one line per check.Structure long prompts
| Technique | How | Why |
|---|---|---|
| Skeleton tags | wrap each part in its slot's tag: <materials>, <context>, <task> and the rest | separates instructions from material; easy to edit later; you can refer to a part by name ("using the figures in <materials>") |
| Nested tags for documents | inside <materials>, one <document> per file with a <source> line; or <notes>, <data>, <draft> | the model can tell where each pasted item starts and ends, and cite it by index |
| Delimiters | triple quotes, --- lines or code fences around pasted text, where tags would be awkward | stops pasted text from being read as instructions to follow |
| Material first, request last | paste long documents at the top, then the task and requirements | Anthropic's guide reports that putting the query at the end can improve answers by up to 30% with long, multi-document input |
| One task per prompt | split unrelated asks into separate prompts | mixed asks get half-done |
| Listed requirements | one bullet per must or must-not | the model can check each one, and you can say "the third requirement was ignored" |
| Say what to do | "write in flowing paragraphs" rather than "don't use bullets" | positive instructions are followed more reliably; naming the unwanted thing can prime it, especially in image and video tools |
| Explain why | "no jargon: readers are high-school students" | the model generalizes from the reason to cases you didn't list |
| Ask for quotes first | "find the passages relevant to X and quote them, then answer using only those" | anchors long-document answers in the text instead of memory |
<materials>
<documents>
<document index="1">
<source>Q3 customer interviews, notes.txt</source>
[paste the interview notes]
</document>
<document index="2">
<source>Support tickets, September.csv</source>
[paste the ticket export]
</document>
</documents>
</materials>
<context>
We are a 5-person product team choosing which onboarding
problem to fix next quarter. The founders will read this.
</context>
<task>
The top 3 onboarding problems, with the evidence
for each, so we can choose next quarter's fix.
</task>
<requirements>
- Use only the documents above, not general knowledge.
- First quote the 10 passages most relevant to onboarding
problems, with the document index for each; then group
them into themes ranked by how often they appear.
- Never invent numbers, names, quotes or sources:
write [NEEDS SOURCE] where support is missing.
</requirements>
<quality_bar>
Before answering, check your draft against:
- Every theme cites at least 2 quoted passages.
- Counts come from the documents, not estimates.
- Where the documents don't support a claim, you say so.
</quality_bar>
<output_format>
The quotes (index | passage), a theme table (theme |
count | example quote), then the top 3 in one line each.
</output_format>
<process>
End with a list of the assumptions you made.
</process>Examples and few-shot
A zero-shot prompt gives instructions only; a few-shot (or multishot) prompt adds a few worked examples of input
and output. Examples are the most reliable way to set a format, tone or house style that is easier to show than
describe. They go in the skeleton's <examples> slot.
| Rule | Why |
|---|---|
| 3–5 examples for a repeated format or style (Anthropic's guidance) | one example gets copied too literally |
| For taste (a page, a logo brief, a voice), 1–3 you like and 1 you don't, each with why | the reasons teach the model what to copy; the bad one marks the boundary |
| Make them differ in length, topic and structure | otherwise the model copies surface features: the same opening, the same length |
Wrap each in its own <example> tag inside <examples> and say what to copy | "match the tone and structure, not the topic" |
| Try zero-shot first with reasoning models (OpenAI's guidance) | they often don't need examples; add them only for complex output |
| Show a bad example only with a label and a reason | an unlabeled bad example is just another example |
| No examples to hand? Generate them | "Write 3 contrasting samples: plain, warm, witty." Then: "More like 2, shorter." |
<materials>
[paste this release's raw notes]
</materials>
<examples>
<example>
Before: Fixed bug where export failed for large files.
After: Exports over 2 GB now finish
instead of stopping halfway.
</example>
<example>
Before: Added dark mode.
After: Dark mode is here: Settings > Appearance.
</example>
<example>
Before: Performance improvements to search.
After: Search results now appear about
twice as fast on large workspaces.
</example>
</examples>
<task>
Release notes in our house style for the raw notes above.
</task>
<requirements>
- Match the tone and structure of
the examples, not their content.
- Lead with what the user can now do; one line per change.
- Never invent numbers, names, quotes or sources:
write [NEEDS SOURCE] where support is missing.
</requirements>
<quality_bar>
Before answering, check your draft against:
- Every line names a change the user
can see, not an internal one.
- No number appears that isn't in the raw notes.
</quality_bar>
<output_format>
A bullet list, one change per bullet, each under 20 words.
</output_format>
<process>
End with a list of the assumptions you made.
</process>Reasoning, decomposition and chaining
| Technique | Use when | Say |
|---|---|---|
| Answer only | lookups, rewrites, simple facts | "Answer in one sentence." |
| Show the working | you need to check the logic: math, estimates, diagnosis, plans | "List your assumptions, then each step, then the answer." |
| Reasoning mode | hard multi-step problems, if the app offers it | switch it on; keep the prompt direct |
| Plan first | large deliverables | "Outline the sections and key points first. Wait for my OK before writing." |
| Decompose | the task has distinct stages | "Break this into steps. Do step 1 only, then stop." |
| Prompt chaining | each stage needs its own instructions or your review | prompt A's output becomes prompt B's input; the four-stage prompt chain and its report example are both chains |
| Self-check | facts and numbers | "Recompute every number. List any claim you are not sure of." The <quality_bar> slot makes this a standing step |
Control the output
| You want | Say |
|---|---|
| Length | "under 150 words", "3 bullets", "one page"; models count words and items roughly, characters poorly, so leave a margin |
| Shape | "a table with columns Option | Cost | Risk | Verdict", "H2 headings per section", "plain paragraphs, no lists" |
| Order | "recommendation first, then the 3 reasons, then risks" |
| Options | "5 headline options, numbered, each with a one-line rationale" |
| Reading level | "plain English, reading age 12", "for a board: no implementation detail" |
| Definitions | "define each technical term the first time it appears" |
| No invention | the standard line: "Never invent numbers, names, quotes or sources: write [NEEDS SOURCE] where support is missing." |
| Visible guesses | the standard line: "End with a list of the assumptions you made." |
| Uncertainty | "mark anything you are unsure of with (?)" |
| Machine-readable | "return only JSON matching this schema, no prose"; developer APIs offer structured-output modes that enforce a schema |
| Files | "as CSV I can paste into a spreadsheet", "as a Mermaid diagram", "as an SVG", "as a Markdown table" |
| Less filler | "no preamble, no summary at the end, no restating the question" |
In machine-readable output the standard lines change form: the no-invention marker becomes null, and the
assumptions list becomes a field, so the result still parses.
<materials>
<notes>
[paste the meeting notes]
</notes>
</materials>
<task>
Every action item in the notes, as
JSON to import into our task tracker.
</task>
<requirements>
- Never invent owners, dates or tasks:
use null where the notes don't say.
- Do not infer dates from words like "soon".
</requirements>
<quality_bar>
Before answering, check your output against:
- Every item's quote appears word for word in the notes.
- The output parses as JSON, with
nothing before or after it.
</quality_bar>
<output_format>
Only JSON, matching:
{"items": [{"owner": "string or null",
"task": "string, imperative, under 15 words",
"due": "YYYY-MM-DD or null",
"quote": "the sentence it came from"}],
"assumptions": ["string"]}
</output_format>
<process>
Put any assumption you made in "assumptions", not in prose.
</process>Iterate
First answers are drafts. Improve them with targeted follow-ups; start a fresh chat (with a summary) when the conversation has drifted or grown long. Change one thing at a time when a prompt misbehaves, and save versions that worked.
| Situation | Follow-up |
|---|---|
| Too generic | "This could apply to anyone. Make it specific to the audience, product and constraints in my context." |
| Too long | "Cut it by half. Keep whatever the quality bar needs." |
| Wrong direction | "Stop. The goal is X, not Y. Go back to the outline and start again." |
| Part good, part bad | "Keep sections 1–2 word for word. Rewrite section 3 so that …" |
| You can't say what's wrong | "Give me 3 very different versions: safe, bold and unexpected." Then: "Like 2, but …" |
| You don't know if it's good | open a fresh chat and run Critique in a fresh chat |
| It skipped the quality bar | "Check your draft against each quality-bar item, one line each: pass or fail, with the evidence. Then fix the fails." |
| It agreed too easily | "Argue the opposite case as strongly as you can." |
| It ignored an instruction | "You missed the third requirement (…). Redo only that part." |
| It invented something | "Where did the claim that … come from? If it isn't in what I gave you, replace it with [NEEDS SOURCE]." |
| A wrong assumption | "Assumption 2 is wrong: … Redo only what depends on it, and list what changed." |
| You want to learn from it | "Briefly explain why you made each choice." |
| The chat is long and muddled | "Summarize this conversation as a handoff brief for a new chat: goal, audience, key facts I gave you, decisions (with reasons), rejected options, open questions and the current version of the deliverable. Under 400 words, in a form I can paste as the first message." |
Editing and resubmitting your earlier message (most chat apps allow it) is often better than piling corrections on top: the bad answer leaves the context instead of anchoring the next one.
Goals and loops
In a chat you iterate by hand. An agent that can run commands and check its own work can iterate for you: you say when the work is done and it keeps going until it is. The skill then shifts from writing the next prompt to writing a good completion condition. In Claude Code:
| Command | Does | Use it for |
|---|---|---|
/goal <condition> | after every turn a separate, small model checks the condition; while it isn't met, Claude starts another turn instead of handing back to you | finishing one task to a verifiable end: tests green, a validator passing, every item on a list done |
/loop [interval] <prompt> | runs the prompt (or a skill, as /loop 20m /name) again every interval; without an interval, Claude picks the next wait itself, from 1 minute to 1 hour | watching something that changes: a deploy, CI, review comments on a pull request |
claude -p "/goal …" | the same goal, run to the end without the interactive interface | scripts and scheduled jobs |
/goal clear (or stop) ends a goal early; one goal is active per session. The condition-writing below applies to
any agent that keeps working until a check passes.
Write a completion condition
The checker reads only the conversation: it can't run commands or open files. So the condition has to be something Claude's own output can show. Give it four parts:
| Part | Example |
|---|---|
| One measurable end state | "npm test exits 0" |
| The check that proves it, printed | "show its summary line" |
| Constraints that must still hold | "without changing any test file" |
| A bound | "or stop after 20 turns" |
| Weak condition | Strong condition |
|---|---|
| "Fix the tests." | "npm test passes with 0 failures, shown by its summary line; no test file changed; or stop after 20 turns." |
| "Make the report good." | "report.md has every section of the template, every figure cites a row of data.csv (list them), and python validate.py report.md prints OK; or stop after 10 turns." |
| "Make checkout faster." | "npm run bench shows checkout p95 under 200 ms in two runs in a row; no feature flag removed; or stop after 15 turns." |
The <quality_bar> of a skeleton prompt is usually the raw material: turn each check into something
Claude prints. The Goal condition prompt in the library writes one for you.
Prompts that run in a loop
A /loop prompt runs again and again, so write it for the tenth run, not the first:
- Safe to repeat: check before acting ("if the reminder is already posted, do nothing").
- Quiet when nothing changed: "If everything is green, say so in one line."
- A stop rule: "Stop once two rounds in a row find nothing new."
- State outside the chat when it matters: a file the loop reads and updates, because long sessions get summarized and details drop out.
Bounds and cost
Every extra turn spends usage. Bound every goal (a turn limit, or "stop when two rounds in a row make no progress"),
try a small slice of the work first, and in scripts cap the run with --max-turns and --max-budget-usd. A goal
doesn't change permissions: Claude still asks before actions your settings don't allow, so unattended runs need a
permission mode you trust, such as auto mode with its safety checks.
Verify
| Risk | Check |
|---|---|
| Invented sources | open every link; ask it to quote the passage it relied on; without web search, treat references as leads to look up, not sources |
| Numbers and arithmetic | recompute in a spreadsheet or calculator; ask for formulas, not just results; use the app's code tool if it has one |
| Stale facts | ask for its knowledge cutoff; check prices, laws, versions and API details against the official current source |
| Plausible technical errors | run the code, test the command somewhere safe, compare with the docs |
| Hidden guesses | read the assumptions list first (the standard line asks for it); correct the wrong ones and ask for only the dependent parts to be redone |
| Overconfidence | "List the factual claims in your answer, rate each high, medium or low confidence, and say how I could verify it." |
| One opinion | ask a fresh chat or a second assistant without your framing; disagreement shows you where to look |
| Agreement bias | ask neutrally; ask "what would make this wrong?" |
| Inconsistency | run the same prompt 3 times (or regenerate); claims that change between runs are the ones to check first |
| Drift from your sources | "Use only the documents I provided, not general knowledge; cite the passage for each claim and remove any claim you can't support." |
| Forced answers | allow "I don't know": "If you are not sure, say so rather than guess." Anthropic's guide lists this as a way to reduce hallucinations |
Image prompts
Image generators (Midjourney, Flux, Ideogram, Adobe Firefly, and the image modes of chat assistants) respond to visual description, not to instructions or arguments, and they don't read the skeleton. Write what the camera or the painter would see, in one paragraph. To get that paragraph, give a chat assistant the brief in the skeleton and let it write the image prompts: Image prompt from a brief.
| Element | Specify | Example words |
|---|---|---|
| Subject | who or what, how many, key details, pose | "two elderly fishermen mending a red net" |
| Medium | photo, oil painting, watercolor, 3D render, vector illustration, linocut, pencil sketch | "risograph print" |
| Style | movement, era, genre; describe the traits rather than leaning on a living artist's name | "1960s travel poster: flat shapes, limited palette, bold sans-serif feel" |
| Composition | framing, viewpoint, placement, negative space | "wide shot, subject in the lower third, lots of empty sky above" |
| Camera and lens | for photographic looks: focal length, depth of field, angle | "85mm portrait lens, shallow depth of field", "24mm wide angle, low angle", "macro" |
| Lighting | source, direction, quality, time of day | "soft window light from the left", "golden-hour backlight", "hard on-camera flash" |
| Color | palette, temperature, contrast | "muted teal and orange", "monochrome blue", "pastel, low contrast" |
| Mood | the feeling | "quiet and melancholic", "busy and joyful" |
| Aspect ratio | the shape the destination needs | 1:1 square, 4:5 feed post, 16:9 widescreen, 9:16 vertical story, 2:3 poster |
| Negative prompt | what to exclude, where the tool supports it | list nouns ("text, watermark, frame"), not "no …" sentences |
| Seed | the random starting point, in tools that expose it | reuse a seed while changing one word to get controlled variations |
| Reference images | image prompts, style references, character references, image-to-image, inpainting (editing one region) | "match the style of the attached image", "keep the same character" |
| Text in the image | keep it very short and put the exact words in quotes | Google's Imagen guide suggests 25 characters or fewer; expect misspellings and add real type in a design tool |
[medium: photo | oil painting | watercolor | 3D render] of
[subject, e.g. two elderly fishermen mending a red net],
[action or pose, e.g. laughing mid-conversation], in
[setting, e.g. a small harbor at dawn], [composition, e.g.
wide shot, subjects in the lower third], [camera and lens,
e.g. 35mm, eye level],
[lighting: window light | golden hour | overcast | flash],
[palette, e.g. muted teal and orange], [style or era, e.g.
1970s documentary photo], [mood, e.g. quiet and warm].
Aspect ratio [ratio: 1:1 | 4:5 | 16:9 | 9:16 | 2:3].
Exclude: [nouns to avoid, e.g. text, watermark, frame].Product photo of a matte black ceramic coffee mug with a
thin gold rim, steam rising, on a pale oak table by a
window. Close-up, mug slightly left of center with empty
space on the right for text. 50mm lens, shallow depth of
field. Soft morning window light from the left. Warm
neutral palette, cream and walnut tones. Calm, minimal
mood. Aspect ratio 4:5.
Exclude: text, logos, hands, clutter.Common failures: exact counts above three or four, hands, legible text, the same character across several images (use the tool's character-reference feature) and precise layouts (generate the image, then lay it out in a design tool). Check the tool's terms before commercial use, and don't generate real people's likenesses or others' trademarks without the rights.
Video prompts
Video generators (Runway, Veo, Sora, Kling) make short clips, usually seconds rather than minutes per generation, with limits that vary by tool and change often. Prompt one shot at a time, the way a director writes a shot list; plan the list itself with a chat assistant using Video shot list.
| Element | Specify | Example words |
|---|---|---|
| Shot | framing and angle | "close-up", "wide establishing shot", "low angle", "over the shoulder", "aerial" |
| Subject | who or what, with fixed details you will repeat in every shot | "a woman in a yellow raincoat with short black hair" |
| Action | one clear action and its pace | "turns and walks slowly toward the camera" |
| Setting | place, time, weather | "a rain-soaked night market in Taipei" |
| Camera move | one primary move per shot | static (locked off), pan, tilt, dolly in or out, tracking, crane, handheld, orbit, zoom |
| Lens and focus | depth of field, focus changes | "shallow depth of field", "rack focus from her face to the sign behind" |
| Duration and pacing | clip length, speed | "5 seconds", "slow motion", "real time" |
| Style | look and grade | "35mm film grain, warm grade", "stop-motion", "hand-drawn animation" |
| Lighting and color | as for images | "neon reflections, teal and magenta" |
| Audio | for tools that generate sound: dialogue, effects, ambience, each in its own sentence | "Rain patters on canvas. A vendor calls out prices." |
| Continuity | what must match across shots | identical character and wardrobe descriptions, the same reference image, the previous clip's last frame as the next clip's first frame |
[shot: wide | medium | close-up | over the shoulder] of
[subject with fixed details, e.g. a woman in a yellow
raincoat with short black hair], [one action with its
pace, e.g. turns and walks slowly toward the camera],
in [setting, e.g. a rain-soaked night market at night].
Camera:
[move: static | pan | dolly in | tracking | handheld].
Lens: [focus, e.g. shallow depth
of field, rack focus to the sign].
Style: [look, e.g. 35mm film grain, warm grade]. Lighting:
[light, e.g. neon reflections, teal and magenta].
Duration: [seconds, e.g. 5] seconds. Audio: [sounds,
one per sentence, e.g. Rain patters on canvas.]Tool guides agree on a few rules: one camera move per shot (Runway's guide warns that several produce chaotic motion); describe what you want ("smooth, stable camera") rather than what you don't ("no camera shake"); in image-to-video, describe the motion, not what the image already shows; keep changes subtle in short clips. Generate shot by shot, then cut it together in an editor (see Video editing and App animation & motion).
System prompts and prompt libraries
A system prompt is a set of instructions given to the model before the conversation starts; developers use it to set the rules and format for every reply. In chat apps the user-facing versions are custom instructions (personalization settings applied to every chat) and projects or custom assistants (ChatGPT projects and GPTs, Claude projects, Gemini Gems): a space with its own instructions and reference files. Names and limits change; the idea is persistent context you don't retype.
| Put in custom instructions | Example |
|---|---|
| Who you are and your level | "I run a 3-person design studio; I'm new to finance and law." |
| How to treat unknowns | "Ask before assuming. Mark uncertain claims. Say 'I don't know' when you don't." |
| Default format | "Lead with the answer. Tables for comparisons. No preamble." |
| Style | "Plain US English; define jargon on first use." |
| Standing rules | the standard lines: no invention with [NEEDS SOURCE], assumptions listed, up to 3 questions first |
About me: I run a small product studio.
I'm expert in visual design, a beginner in
finance, law, marketing and engineering.
How to answer: lead with the answer, then
reasons. Use tables for comparisons. Define
technical terms the first time. Use US spelling.
Standing rules: Never invent numbers, names, quotes or
sources: write [NEEDS SOURCE] where support is missing.
Ask me up to 3 questions first if anything missing would
change your answer; otherwise go on. When an answer rests
on guesses, end with a list of the assumptions you made.A prompt library is your collection of prompts that worked, saved with their placeholders. Keep each as a Quick and a Full version, like the Prompt library below, and note when to use it, which tool it was tested in, the date, and one good output. Review them when you switch tools or models: what worked before may need adjusting.
prompts/custom-instructions.mdmethod/skeleton.mdimprove-my-prompt.mdinterview-me.mdoptions-before-a-draft.mdcritique-in-a-fresh-chat.mdfact-check.mdwriting/edit-for-clarity.mdimages/product-photo.mdvideo/shot-list.mdPrivacy
What you paste may be stored in chat history, seen by the provider's staff under their policies, and, on some consumer plans and settings, used to train future models unless you opt out. Business and enterprise plans usually exclude your data from training by default, but read your plan's terms and your employer's rules.
| Don't paste | Why | Instead |
|---|---|---|
| Passwords, API keys, tokens, private keys | they end up in logs and history | use placeholders like [API_KEY]; rotate any secret you pasted by mistake |
| Other people's personal data (customers, patients, staff) | privacy law (GDPR, HIPAA and others) and contracts | anonymize: replace names, emails, addresses and IDs with labels |
| Confidential business information (unreleased financials, client data under NDA, trade secrets) | may breach agreements | use your organization's approved tool and plan; summarize instead of pasting raw |
| Your own sensitive identifiers (ID numbers, bank details, medical records) | no answer needs them | describe the situation without the identifiers |
| Untrusted documents into an assistant that can act (send email, browse, edit files) | text in a document or web page can contain hidden instructions: prompt injection, ranked first in the OWASP Top 10 for LLM applications | review actions before they run; don't give agents more access than the task needs |
Prompt library
Generic prompts for the method itself, in any field. Quick is the minimum that still works; Full is the skeleton filled in. Replace each placeholder: pick one option, or write your own value. The domain sheets have a library each for their own deliverables.
Improve my prompt
Stage: produce · Use when: you have a rough prompt and want it rebuilt in the skeleton before you use it.
Quick
Rewrite this prompt in the skeleton (materials, context,
examples, task, requirements, quality_bar, output_format,
process): [paste your prompt]. Where it needs facts only
I have, write [NEEDS SOURCE: what's missing] instead of
inventing them. Then list the 3 changes that matter most.Full
<materials>
<draft_prompt>
[paste your prompt]
</draft_prompt>
</materials>
<context>
I'll use it in [tool, e.g. a chat assistant with web
search on], [use: once | as a template I reuse]. I
know [my level: nothing | the basics | a lot] about
[field, e.g. email marketing].
</context>
<task>
My draft rebuilt as a strong prompt in this
skeleton: materials, context, examples, task,
requirements, quality_bar, output_format, process.
</task>
<requirements>
- The task names the deliverable by its
professional name, and the decision it feeds.
- Replace any "act as" or "you are" line with
the standards, frameworks or methods the
field uses, and say who the output is for.
- Turn vague words into placeholders in one of
two forms: [label: option | option] using the
field's own terms, or [label, e.g. example].
- Keep the three standard lines: no invention with [NEEDS
SOURCE], up to 3 questions first, assumptions at the end.
- Never invent numbers, names, quotes or sources:
write [NEEDS SOURCE] where support is missing.
</requirements>
<quality_bar>
Before answering, check your rewrite against:
- Everything in my draft survives, or is
cut on purpose with the reason given.
- The quality bar holds 3–5 checks a professional
in the field would actually apply.
- Every placeholder is something only I can fill.
</quality_bar>
<output_format>
The rewritten prompt in one text block; the 3 changes
that matter most, and why; the placeholders I must fill.
</output_format>
<process>
Ask me up to 3 questions first if anything
missing would change your answer; otherwise go
on. End with a list of the assumptions you made.
</process>Interview me
Stage: interview · Use when: you don't know what a good brief for this deliverable contains.
Quick
I want [rough goal, e.g. a pricing page for my app].
I'm new to [field, e.g. conversion copywriting]. Before
producing anything, ask me the questions a professional
would ask a client first: at most 10, grouped, each
with why it matters and 2–3 typical answers. Then stop.Full
<context>
I want [rough goal, e.g. a pricing page for my budgeting
app]. I'm
[my level: new to | familiar with | experienced in] [field,
e.g. conversion copywriting]. What exists: [current state,
e.g. a draft page and last month's analytics].
</context>
<task>
Interview me before you produce anything. The
end result will be [deliverable, e.g.
landing-page copy with layout notes]; first you
need the brief a professional would collect.
</task>
<requirements>
- At most 10 questions, grouped by topic, in
the order a professional would ask them.
- For each: one line on how the answer changes
the deliverable, and 2–3 typical answers I
can pick from, in the field's own terms.
- No deliverable, outline or options yet.
- Never invent numbers, names, quotes or sources:
write [NEEDS SOURCE] where support is missing.
</requirements>
<quality_bar>
Before answering, check your questions against:
- Each answer would change the deliverable;
drop any question that wouldn't.
- Nothing I already told you is asked again.
- The typical answers teach me the
vocabulary I'll need to judge the result.
</quality_bar>
<output_format>
Numbered questions under group headings, and nothing else.
</output_format>
<process>
Ask all the questions in one message, then stop. When I
answer, write the brief back as a bullet list for me to
confirm, and end with a list of the assumptions you made.
</process>Teach me the field
Stage: interview · Use when: you need the vocabulary and the standards before you can judge anything.
Quick
I'm about to work on [task, e.g. choosing a database]
in [field, e.g. backend engineering] and know nothing
about it. Teach me the 12 terms I'll hear most, the 3
named standards or frameworks professionals use, and
the 5 beginner mistakes, applied to my case, in under
600 words. Check every framework is a real, named one.Full
<context>
I'm about to work on [task, e.g. choosing a database
for an app with 10,000 users] in [field, e.g. backend
engineering]. My background: [background, e.g. product
designer who can read code]. I'll use this to [use,
e.g. brief a contractor and judge their proposal].
</context>
<task>
A one-page primer on this field, applied to my task.
</task>
<requirements>
- The 12 terms I'll hear most, one line
each, with an example from my case.
- The 3 named frameworks, standards or methods
professionals use to decide here, and what each checks.
- The 5 mistakes beginners make, and 5 questions to
ask any expert or AI before accepting their answer.
- Sources to read next: official
docs, standards, well-known books.
- Never invent numbers, names, quotes or sources:
write [NEEDS SOURCE] where support is missing.
</requirements>
<quality_bar>
Before answering, check your draft against:
- Every term is one I'll meet on this task
in the next month, not textbook trivia.
- Each framework is real and named, and
described the way its authors describe it.
- A professional would agree with
the list of beginner mistakes.
</quality_bar>
<output_format>
Four short sections, with tables where they
help; under 600 words; plain US English.
</output_format>
<process>
End with a list of the assumptions you made about my task.
</process>Options before a draft
Stage: options · Use when: there are several reasonable ways to do something and you don't know them.
Quick
For [goal, e.g. onboarding emails for a new app],
give me 3 genuinely different approaches a
professional might take, a comparison table (best for
| effort | main risk) and a recommendation for my
situation: [constraints, e.g. one person, two weeks].
Check they differ in method, not wording. Then stop.Full
<materials>
[paste the brief from the interview, or your notes]
</materials>
<context>
Constraints: [constraints, e.g. one person, two
weeks, no budget for paid tools]. What matters most:
[priority: speed | cost | quality | low risk].
</context>
<task>
2–4 materially different approaches to
[goal, e.g. onboarding emails for our app],
so I can choose before anything is drafted.
</task>
<requirements>
- Approaches that differ in method or
structure, not just in wording or tone.
- For each: a one-paragraph summary, what it's best for,
effort, main risk, and what it looks like done well.
- Name the standard, framework or method
each approach follows, if it has one.
- Never invent numbers, names, quotes or sources:
write [NEEDS SOURCE] where support is missing.
</requirements>
<quality_bar>
Before answering, check your draft against:
- A professional would see each option
as a real choice, not a straw man.
- The trade-offs say what each approach makes worse.
- The recommendation follows from my constraints
and priority, and says what would change it.
</quality_bar>
<output_format>
One short section per approach; a comparison
table (approach | best for | effort | main
risk); a recommendation in under 80 words.
</output_format>
<process>
End with a list of the assumptions you made. Then
stop and wait for my choice; don't draft anything.
</process>Critique in a fresh chat
Stage: review · Use when: you have a draft (yours or the model's) and need an expert's red pen. Open a new chat first.
Quick
This is a fresh chat. Review this draft for [audience, e.g.
a CFO deciding on next year's budget]: [paste draft]. Write
the 5–7 criteria a professional would judge it on, score it
1–5 on each with evidence, then list the 5 worst problems
with fixes. Do not rewrite it and do not praise it.Full
<materials>
<draft>
[paste the draft]
</draft>
<brief>
[paste the brief or prompt the draft was written from]
</brief>
</materials>
<context>
This is a fresh chat: you did not write this
draft. It is for [audience, e.g. a CFO who reads
only the first paragraph], who will use it to
[decision, e.g. approve or cut the budget].
</context>
<task>
A critique of the draft against the
brief and the standards of its field.
</task>
<requirements>
- First the rubric a professional would use: 5–7
criteria, naming any standard the field uses.
- Score the draft 1–5 on each, with
one line of evidence quoted from it.
- The 5 most important problems, worst
first, each with a concrete fix.
- Do not rewrite the draft. Do not praise it.
- Never invent numbers, names, quotes or sources:
write [NEEDS SOURCE] where support is missing.
</requirements>
<quality_bar>
Before answering, check your critique against:
- Every problem points at a specific passage.
- The ranking follows the reader's decision, not your taste.
- If there are fewer than 5 real problems,
you say so instead of padding the list.
</quality_bar>
<output_format>
The rubric; a score table (criterion | score |
evidence); the ranked problems (problem | where | fix).
</output_format>
<process>
End with a list of the assumptions you made.
</process>Take the top fixes back to the chat that wrote the draft: Apply fixes 1–3. Keep everything else unchanged. List what you changed.
Fact-check an answer
Stage: review · Use when: an answer contains claims, numbers or sources you plan to rely on.
Quick
List every factual claim, number and citation in this
answer as a table (claim | confidence high/medium/low
| how to verify | primary source to check): [paste
answer]. Redo any arithmetic step by step, and check
for anything that looks invented or out of date.Full
<materials>
<answer>
[paste the answer]
</answer>
</materials>
<context>
I plan to use this in [use, e.g. a board update
next week]; a wrong number would [consequence,
e.g. undermine the whole update].
</context>
<task>
A fact-check of the answer before I rely on it.
</task>
<requirements>
- Every factual claim, number,
date, name and citation in it.
- For each: confidence (high, medium or low), how
to verify it, and the primary source to check.
- Redo every calculation step by step, or
with your code tool if you have one.
- Flag anything that may be out of date given your knowledge
cutoff, and any citation you can't confirm exists.
- Never invent numbers, names, quotes or sources:
write [NEEDS SOURCE] where support is missing.
</requirements>
<quality_bar>
Before answering, check your table against:
- No claim from the answer is missing.
- "High" means you could say where it is documented.
- Corrected numbers show the working.
</quality_bar>
<output_format>
A table: claim | confidence | how to verify
| primary source | corrected value (if
any). Then the 3 claims to check first.
</output_format>
<process>
If web search is on, check the 5 riskiest
claims and cite the pages you read. End
with a list of the assumptions you made.
</process>Image prompt from a brief
Stage: produce · Use when: you know what an image is for but not how to describe it to a generator.
Quick
Write 4 prompts for [tool, e.g. Midjourney] for [use,
e.g. a blog header, 16:9] showing [idea, e.g. a calm desk
at dawn]: subject, medium, composition, lighting, color,
mood, aspect ratio; vary one element per prompt. Check
any in-image text is under 25 characters, in quotes.Full
<materials>
[paste brand guidelines, or describe 1–3 reference images]
</materials>
<context>
The image is for [use, e.g. a blog header, 16:9, with
the title overlaid on the right]. The message: [idea,
e.g. freelancing doesn't have to be chaotic]. The
audience: [audience, e.g. freelancers aged 25–45]. The
brand feels [adjectives, e.g. calm, warm, competent].
</context>
<examples>
Like: [paste a prompt, or describe
an image you like, and why]
Not like: [paste or describe one you don't, and why]
</examples>
<task>
4 image prompts for
[tool: Midjourney | Flux | Ideogram | Adobe Firefly],
ready to paste.
</task>
<requirements>
- Each prompt is one descriptive paragraph: subject,
[medium: photo | 3D render | illustration | watercolor],
composition and framing, camera and lens for photographic
looks, lighting, color palette, mood, aspect ratio.
- Each varies one element from the first:
lighting, viewpoint, palette or style.
- Describe style traits rather than naming living artists.
- A negative list of nouns to exclude.
- Never invent numbers, names, quotes or sources:
write [NEEDS SOURCE] where support is missing.
</requirements>
<quality_bar>
Before answering, check your prompts against:
- They describe what a camera or painter would
see, with no instructions or arguments.
- Space is left where the title goes.
- Any in-image text is under 25 characters and in quotes.
</quality_bar>
<output_format>
4 numbered prompts, each followed by one line on
what it changes; the negative list; then any tool
syntax (aspect ratio, exclusions) separately.
</output_format>
<process>
End with a list of the assumptions you made about the brief.
</process>Video shot list
Stage: produce · Use when: you want a short generated video and need shots that cut together.
Quick
Write a shot list for a [length, e.g. 20]-second
video about [idea, e.g. our app's launch] for
[platform, e.g. Instagram Reels, 9:16]. Per shot:
type, subject, one action, setting, one camera move,
duration, style, lighting, audio. Check recurring
characters have the same description, word for word.Full
<materials>
[paste the script, storyboard
notes or reference images, if any]
</materials>
<context>
The video: [idea, e.g. a 20-second teaser for our
budgeting app's launch] for [platform, e.g. Instagram
Reels, 9:16]. Tool: [tool: Runway | Veo | Sora | Kling];
each generation is a few seconds long. Look:
[look: live action | 3D | stop-motion | hand-drawn].
Audience: [audience, e.g. freelancers who hate admin].
</context>
<task>
A shot list, then one standalone generator
prompt per shot, so the clips cut together.
</task>
<requirements>
- [number of shots, e.g. 5] shots; for each: shot type,
subject, one action with its pace, setting, one primary
camera move, duration, style, lighting and color, audio.
- Recurring characters and props get one fixed
description, repeated word for word in every shot.
- Describe what you want, not what you don't:
"smooth, stable camera", not "no shake".
- Never invent numbers, names, quotes or sources:
write [NEEDS SOURCE] where support is missing.
</requirements>
<quality_bar>
Before answering, check your shot list against:
- The durations add up to the total length.
- Each prompt stands alone: pasted by itself, it
gets the right character, setting and look.
- Each shot has exactly one action and one camera move.
</quality_bar>
<output_format>
A shot table (shot | type | action | camera | duration
| audio), then each shot's prompt as its own paragraph.
</output_format>
<process>
Ask me up to 3 questions first if anything
missing would change your answer; otherwise go
on. End with a list of the assumptions you made.
</process>Goal condition
Stage: produce · Use when: you're about to let an agent finish a task on its own with /goal.
Quick
/goal [end state, e.g. npm test exits 0], shown by [printed check, e.g.
its summary line]; without [constraint, e.g. changing test files]; or
stop after [turns: 10 | 20 | 30] turns.Full
<materials>
[paste the task, its quality bar, and how the work is checked: test
commands, validators, templates]
</materials>
<context>
I'll run this as a goal in [agent: Claude Code | another agent that
re-checks a condition after every turn]. The checker reads only the
conversation: it can't run commands or open files.
</context>
<task>
Write a completion condition for this task, under 4,000 characters.
</task>
<requirements>
- One measurable end state, and the exact check whose printed output
proves it.
- The constraints that must still hold: files not to touch, behavior
to keep.
- A bound: [bound: a turn limit | no progress in two rounds | both].
- Never invent commands or file names: write [NEEDS SOURCE] where you
don't know them.
</requirements>
<quality_bar>
Before answering, check your draft against:
- Could someone reading only the conversation decide met or not met?
- Is "done" one state, not a list of hopes ("better", "clean")?
- Does it stop in a bounded number of turns even if the task turns out
to be impossible?
</quality_bar>
<output_format>
The condition as one paragraph, then the /goal line to paste, then one
line saying what Claude must print each turn.
</output_format>
<process>
Ask me up to 3 questions first if anything missing would change the
condition. End with a list of the assumptions you made.
</process>Use the domain sheets
Every domain sheet has the same backbone, in this order, with the field's own sections (trade-off tables, capacity estimates, print specs and the like) between Vocabulary and Brief the model:
| Section | What it gives you | Where you use it |
|---|---|---|
| How experts think | the decisions and questions a professional runs through first | your answers in the Interview stage |
| Vocabulary | 25+ terms, each with a phrase to drop into a prompt | the options in enumerated placeholders; <requirements> |
| The field's own sections | the methods, formats and numbers that field works with | <requirements>, <output_format>, <quality_bar> |
| Brief the model | the inputs to provide, each with the skeleton slot it goes in | <materials>, <context>, <requirements> |
| What to ask for | deliverables by their professional names, by stage | <task> |
| The prompt chain | four prompts (Interview, Options, Produce, Review) for the field's main deliverable | run them in order; Review in a fresh chat |
| Goals and loops | completion conditions for the field's tasks, the loops that fit it, and what a checker can't judge there | /goal and /loop in an agent such as Claude Code |
| Prompt library | 6–8 prompts, one per deliverable a professional produces, each in a Quick and a Full version | the deliverables outside the chain |
| Worked example | a weak prompt rebuilt in the skeleton, what came back, how an expert judged it, and the follow-up | a model of the whole loop |
| Judge the output | the expert's rubric, the same checks every <quality_bar> on that sheet asks for | reading the output; the Review stage |
| Pitfalls | where AI output in that field is usually wrong or generic | <quality_bar>; what to look for in review |
The sheets:
| Sheet | Helps you with |
|---|---|
| Game mechanics & visual design | core loops, mechanics, balance, game feel, art direction, concept-art prompts |
| Posters & print | layout, hierarchy, typography, print specs, poster and flyer prompts |
| Video editing | pacing, cuts, story structure, edit notes, captions, generated footage |
| Content generation | social posts, blogs, scripts and newsletters at volume without sounding generic |
| UI/UX | flows, wireframes, usability, accessibility, design critiques |
| App animation & motion | transitions, easing, timing, micro-interactions, motion specs |
| Branding | positioning, naming, voice, identity systems, logo briefs |
| Marketing | audience, messaging, channels, campaigns, landing pages, metrics |
| Sales | prospecting, discovery calls, objections, proposals, follow-ups |
| Software architecture | modules and boundaries, patterns, quality attributes, ADRs, C4 diagrams |
| System design | distributed systems: estimates, storage, caching, scaling, failure modes |
| Startups & ideation | idea generation, validation, business models, pitches |
| Architectural design | buildings and spaces: briefs, plans, massing, materials, renders |
| 3D printing | printable design, materials, slicer settings, troubleshooting prints |
| City design & planning | land use and zoning, streets and transit, housing, resilience, the planning process |
| Financial analysis | statements, ratios, models, valuation, scenario analysis |
| Writing | structure, clarity, voice and editing for any kind of prose |
References
- Anthropic: prompt engineering overview (opens in a new tab): where to start and how to test prompts
- Anthropic: prompting best practices (opens in a new tab): clarity, examples, XML tags, roles, long-context ordering, chaining
- Anthropic: reduce hallucinations (opens in a new tab): allowing "I don't know", quoting before answering, verifying with citations
- Anthropic: interactive prompt engineering tutorial (opens in a new tab): exercises, chapter by chapter
- OpenAI: prompt engineering guide (opens in a new tab): message roles, Markdown and XML formatting, few-shot examples, context
- OpenAI: reasoning best practices (opens in a new tab): how to prompt models that think before answering
- OpenAI: image generation guide (opens in a new tab): generating and editing images, with prompting tips
- Google: prompt design strategies (Gemini API) (opens in a new tab): instructions, constraints, few-shot, breaking prompts into components, iteration
- Google Workspace: Gemini prompting guide (opens in a new tab): everyday prompts for non-developers
- Google Cloud: Imagen prompt and image attribute guide (opens in a new tab): subject, context, style, photography modifiers, aspect ratios, text in images
- Google Cloud: Veo video prompt guide (opens in a new tab): shot, camera, lens, style, audio and negative prompts for video
- Midjourney documentation (opens in a new tab): prompt basics, parameters, image and style references
- Runway: AI video prompting guide (opens in a new tab): prompt structure and camera movement for video
- Adobe Firefly: writing effective text prompts (opens in a new tab): describing subject, style and composition for image generation
- OWASP Top 10 for LLM applications (opens in a new tab): prompt injection, sensitive information disclosure and the other main risks
- Zheng et al.: personas in system prompts do not improve performance (Findings of EMNLP 2024) (opens in a new tab): 162 personas tested on 2,410 factual questions
- Claude Code: Keep Claude working toward a goal (opens in a new tab): writing
/goalcompletion conditions, the checker, bounds - Claude Code: Run prompts on a schedule (opens in a new tab):
/loop, intervals and self-pacing - Wharton Generative AI Labs: Playing Pretend, expert personas don't improve factual accuracy (opens in a new tab): Prompting Science Report 4, six models on GPQA Diamond and MMLU-Pro
- Prompt Engineering Guide (DAIR.AI) (opens in a new tab): techniques from zero-shot to chaining, with research links