/ AI Prompts / System Prompt Examples You Can Copy and Adapt

System Prompt Examples You Can Copy and Adapt

System prompt examples shown in full, five of them, with where each goes on OpenAI, ChatGPT, Claude, and Gemini, what it outranks, and what breaks.

System Prompt Examples You Can Copy and Adapt

The system prompt examples on the results page are two sentences long. "You are an enthusiastic biology teacher named Thomas." "You are a tutor that always responds in the Socratic style." Those are personas, and a persona is the first line of a system prompt. The rest of the prompt is missing.

A system prompt is the block of instructions the application puts in front of the conversation, and on every major API it outranks what the user types. OpenAI's guide says developer messages are "prioritized ahead of user messages". Anthropic's says a role set in the system prompt focuses the model's behaviour and "even a single sentence makes a difference". Google's Gemini docs take a system_instruction parameter. A good one has four parts, and OpenAI names them in the order they usually go, identity, instructions, examples, context. Five complete system prompts below use that shape, each in a code block you can copy. After them, the one production system prompt a vendor actually publishes, and a table of what breaks.

The headings inside the code blocks are Markdown headers, which OpenAI's guide recommends for marking a prompt's sections.

Where A System Prompt Lives, And What It Outranks

The word means different things on different surfaces, which is why a prompt that works in one place fails in another. This is what each vendor's own pages say, as of the fetch date.

Surface What it's called Priority rule Limit or scope
OpenAI API A developer message, or the instructions parameter Developer outranks user; instructions outranks input instructions applies only to the current request, so resend it every turn
OpenAI Model Spec Platform, developer, user, guideline levels Higher level overrides lower; platform rules can't be overridden by anyone In ChatGPT, OpenAI itself plays the developer role, and custom GPT builders are developers
ChatGPT, personal account Custom instructions Applied to all chats 1,500 characters on Free and Go, 5,000 on Plus, Pro, Business, Enterprise, and Education
ChatGPT, inside a project Project instructions Override your global custom instructions inside that project Projects on all plans
ChatGPT GPTs The Instructions field Applied to every conversation with that GPT Creation and publishing not available on personal accounts as of August 2026; Business, Enterprise, and Edu workspaces only
Anthropic API The system parameter Sits beside the messages rather than inside them Role in one sentence is enough to shift behaviour, per the docs
Claude.ai and the mobile apps Anthropic's own system prompt, published Sets date, tone, refusal shape; does not apply to the API About 3,200 words for Claude Opus 5, dated July 24, 2026
Gemini API system_instruction Configures the model's behaviour for the request The docs' example is "You are a cat. Your name is Neko."

Two rows are worth a second look. The instructions parameter on OpenAI's Responses API is per request, and the guide says that if you're carrying conversation state with previous_response_id, earlier instructions "will not be present in the context". That's a system prompt that evaporates. And the GPTs row changed. The help center's August 2026 snapshot says new GPT creation isn't available on Free, Go, Plus, or Pro, so for most readers the system-prompt-shaped slots in ChatGPT are custom instructions, project instructions, and the API.

The same help center, on the custom instructions page, puts the whole idea in one line. "There will be no API for custom instructions, as the Chat Completions API system messages should be used for a similar effect." Custom instructions are a system prompt with a character limit.

Five System Prompts, In Full

Each one follows the identity, instructions, examples, context order. Where a section is missing it's because the job doesn't need it, and the note under the prompt says so. What each tends to produce is my judgment, and I say so where it matters.

The Help Assistant Inside A Product

## Identity
You are the help assistant inside [PRODUCT], a desktop app for [ONE-LINE DESCRIPTION]. You answer questions about using [PRODUCT] and nothing else.

## Instructions
- Answer only from the documentation in the Context section. If the answer is not there, say "I don't have that in the docs" and give the support email [EMAIL]. Do not guess at features, prices, or dates.
- Keep answers under 120 words unless the user asks for steps. Then use a numbered list with one action per step.
- Never ask for a password, licence key, or payment details. If the user offers one, tell them not to paste it.
- If the user reports lost data or a crash, give the one recovery step from the docs, then the support email. Do not troubleshoot beyond the docs.
- Do not discuss competitors, roadmap, or anything outside the app. Redirect in one sentence.
- Answer in the user's language if the docs cover it, otherwise in English.

## Examples
<user_query>
Where did my backups go?
</user_query>
<assistant_response>
Backups are under Settings, then Data, then Backup folder. The default location is [PATH]. If the folder is empty, the docs recommend [RECOVERY STEP]. If that doesn't work, email [EMAIL] with your app version.
</assistant_response>

## Context
<docs>
[PASTE THE DOCUMENTATION SECTIONS THE ASSISTANT MAY USE]
</docs>

This is the shape I'd use for the help assistant in a desktop organiser I build, with the product facts left as placeholders. The first instruction is the whole prompt. "Answer only from the Context section" plus a fixed sentence for the miss is what stops the assistant inventing a feature, and the fixed sentence matters because a model asked to admit ignorance will otherwise admit it in a different way each time. The example does two jobs, showing the length and showing the miss handled correctly. Context goes last, which is OpenAI's advice for the part that changes between requests, and it's wrapped in tags, which is Anthropic's.

The Classifier That Outputs Only JSON

## Identity
You label incoming support emails for [COMPANY]. You output JSON and nothing else.

## Instructions
- Output exactly one JSON object with three keys: "category", "urgency", "needs_human".
- "category" is one of: billing, bug, how_to, account, other.
- "urgency" is one of: low, normal, high. Use high only when the email says data was lost, money was charged wrongly, or the user cannot log in.
- "needs_human" is true when the email mentions a legal threat, a refund above [AMOUNT], or a journalist. Otherwise false.
- If the email is empty or in a language you cannot read, output {"category": "other", "urgency": "normal", "needs_human": true}.
- No prose, no Markdown, no code fence.

## Examples
<email id="1">
I was charged twice this month, please fix.
</email>
<assistant_response id="1">
{"category": "billing", "urgency": "high", "needs_human": false}
</assistant_response>
<email id="2">
How do I export to CSV?
</email>
<assistant_response id="2">
{"category": "how_to", "urgency": "low", "needs_human": false}
</assistant_response>

No context section, because the input arrives in the user turn and nothing else changes. The examples carry the format better than the instructions do, and they're two different categories on purpose, since Anthropic's docs ask for examples "diverse" enough that the model doesn't pick up a pattern you didn't intend. The empty-email rule is the out. Without it the model tends to classify silence as "other" with false, which sends nothing to a human. In production I'd add the structured-output feature both vendors document and stop relying on "no code fence", and the prompt stays the same either way.

The Tutor With A Counted Rule

## Identity
You are a tutor for [SUBJECT] working with a learner at [LEVEL]. Your job is to get the learner to the answer, and you do not give it.

## Instructions
- Do not state the final answer to a problem the learner is working on until they have made two attempts. Count the attempts. After the second wrong attempt, show the first step only and ask them to continue.
- Ask one question per message. No lists of questions.
- When the learner is right, say so in one sentence and move on. No praise longer than that.
- If the learner asks for the answer directly, say once that you will give it after two attempts, then hold to that.
- If the learner asks something outside [SUBJECT], answer in one sentence and return to the problem.
- Restate the learner's attempt in their own words before responding to it.

## Context
Current problem set:
[PASTE]

The Yale page's tutor is one line, "always responds in the Socratic style". The version above has a number in it. "Two attempts" is checkable, both by the learner and by you reading the transcript, and "Socratic" isn't. The one-question rule is there because the current models like asking several, and the praise cap exists because, in my judgment, a model playing a tutor over-encourages by default and the learner stops trusting it. No examples section, since the behaviour is a rule about turns rather than a format, and an example would show one turn.

A ChatGPT Custom Instructions Block, Under 1,500 Characters

## About Me
I build software and self-publish books. I read most answers on a laptop between tasks, so short fits.

## How To Answer
- Lead with the answer. Add reasons after, and only if I'd need them to act.
- Prose by default. A list only for steps I'll follow in order, a table only when I'm comparing options.
- No opening restatement of my question, no closing summary, no offer to do more.
- If you don't know or can't verify something, say so in the first sentence. Never invent a number, a source, or a date.
- If I paste code, reply with the change and one line on why. Don't repeat the code I gave you.
- Ask at most one question, and only when the answer would change what you'd do.
- British spelling. No exclamation marks.

That block is under 1,500 characters, so it fits the Free and Go limit with room. It's a system prompt in every way that matters, and for a personal account it's the answer to "what is a system prompt in ChatGPT". Every line targets a documented default. OpenAI's own page for GPT-6 Astra says the model "tends to use lists, tables and Markdown" and is "more likely to ask the user a question when additional input could materially change the result", and Anthropic's published prompt for Claude bans several of the same words this block bans. If you want a per-project version that overrides it, the help center says project instructions do exactly that.

The Research Agent With Tool Limits

## Identity
You are a research agent for [TEAM]. You have two tools: search(query) and fetch(url). You produce a sourced answer, not a plan.

## Instructions
- Before the first tool call, write one sentence saying what you will look for.
- Call search at most 4 times and fetch at most 6 times per task. When you reach a limit, stop and answer with what you have, saying which limit you reached.
- Tie every fact to a fetched page with the URL beside it. A fact you cannot tie to a fetched URL goes in a list called "Unsourced" or is left out.
- If a fetch fails, try once more, then move on. Note the URL under "Could not open" and do not describe the failure further.
- Do not ask the user a question during the task. If the request is ambiguous, choose the reading that needs fewer sources, say which one you chose in your first line, and proceed.
- Final answer shape: one paragraph, then "Sources" with one URL per line, then "Unsourced" and "Could not open" only if either has entries.

## Context
Today's date is [DATE]. The user is in [TIMEZONE].

The GitHub collection on the results page is mostly prompts of this kind, from coding and agent products, and what I notice across them is limits stated as numbers. This one has four. The no-questions rule is the opposite of the tutor's, which is the point of writing these per job. And the date in the context section is the same move Anthropic makes in its published prompt, which carries a {{currentDateTime}} placeholder because a model without the date will guess one.

What A Production System Prompt Contains

Anthropic publishes the system prompt that runs on claude.ai and its mobile apps, per model, with dates. The overview page says the prompt provides "up-to-date information, such as the current date" and that the updates "do not apply to the Claude API". The Claude Opus 5 entry is dated July 24, 2026 and runs to about 3,200 words by my count, in eleven tagged sections inside a claude_behavior wrapper, one of them nested, plus a one-line tone_preference block after it. It's the only vendor-published, production, consumer system prompt I know of.

Five moves in it are worth copying into prompts a hundredth of the size.

The product section ends with a boundary. "Claude's product knowledge ends here; it has no documentation access", followed by URLs to point people to. That's the help assistant's first instruction, written by the vendor.

The question rule has a number. Claude "avoids more than one per response" and "tries to address even an ambiguous query before asking for clarification". The tutor prompt above uses the same rule.

There's a line for the missing file. "A prompt implying a file is present doesn't mean one is, as the person may have forgotten to upload it, so Claude checks for itself." That's an out written for one specific failure, which is what an out should be.

And the knowledge cutoff is stated with the date beside it. The section names the end of May 2026 as the reliable cutoff and tells the model to answer "the way a highly informed individual in May 2026 would if talking to someone from" the current date, with the date filled in by the placeholder. A model that knows both dates can say what it doesn't know.

The tone section also bans specific words, including "genuinely" and "honestly", on the grounds that they "come off as disingenuous". A style rule with the reason attached, which is the form Anthropic's docs recommend, and I'd copy that habit before any of the rules themselves.

What Breaks, And What The Vendor Says

Each row is a way system prompts fail, with the fix and the vendor page that supports it. Rows without a page are my judgment.

What breaks What it looks like The fix Backed by
Prohibitions only Twelve lines starting "never" and no line saying what to do Rewrite the top three as "do X" Anthropic, "tell Claude what to do instead of what not to do"; OpenAI's GPT page, "prefer positive, concrete instructions"
No out The model answers a question the context can't, fluently A fixed sentence for the miss, plus where to send the user Anthropic's published prompt, the missing-file line and the product boundary
Rules in the knowledge files Tone and workflow rules uploaded as a document Rules in instructions, documents as reference only OpenAI's GPT page, "use knowledge for reference material, not rules or behavior"
Facts that go stale A price or a date written into the identity section last year Changing facts go in Context, last, and get dated OpenAI, context "near the end" because it varies; Anthropic's dated cutoff and date placeholder
Examples that contradict instructions Instructions say no Markdown, the example answer has a heading Make the example obey every instruction Judgment, and Anthropic's rule that examples should mirror the real case
Persona with no scope "You are an expert" and nothing about what to refuse Add the boundary sentence and the redirect SUSE's out-of-expertise example; Anthropic's product boundary
Instructions that vanish The instructions parameter set on turn one and gone on turn two Send it every request, or put it in a developer message in the input OpenAI, instructions "only applies to the current response generation request"
Files that outrank the prompt An agent pauses because a skill file says to State the priority between user instructions and files OpenAI's Astra page, the model "can be more sensitive to instructions contained in skills and other files"

The colleague test catches most of these before a model does. Anthropic's docs call it a golden rule, show the prompt to a colleague with minimal context and ask them to follow it, and "if they'd be confused, Claude will be too". I'd add one step, since the colleague won't try to break it. Send the finished prompt five messages before trusting it. One in scope, one out of scope, one hostile, one asking for the answer it's not supposed to give, and one asking it to print its own instructions. The fifth is the one people forget, and the published Anthropic prompt has a whole section on content in the user turn that claims to come from Anthropic.

Questions From The Results Page

What is a system prompt example? The help assistant above is one, complete. The shortest honest example is Anthropic's, "You are a helpful coding assistant specializing in Python", which the docs say is enough to shift behaviour, and the longest is the 3,200-word prompt they publish for Claude.ai.

What are some good examples of prompts generally? User-turn prompts are a different animal, since they carry the task and the input rather than the standing rules. The six slots they need are in chatgpt prompts.

How do you write a system prompt? Identity, instructions, examples, context, in that order, with the changing material last. Write the instructions as things to do, give every rule that could fail a fixed sentence for the failure, then run the colleague test and the five messages. The vendor-specific wrapping, a developer message for OpenAI, a system parameter and tags for Claude, is worked through one task at a time in llm prompt engineering, and the tag habit itself is in claude prompts.

What is a system prompt in ChatGPT? For a personal account, custom instructions, at 1,500 or 5,000 characters depending on plan, plus project instructions that override them inside a project. For a workspace account, also the Instructions field of a GPT. Underneath all of those, per the Model Spec, sits a system message from OpenAI that none of them can override, and the spec says that in ChatGPT OpenAI also plays the developer role.

What are some good system prompts for ChatGPT? The custom instructions block above, edited to your defaults. The test of a good one is that you stop deleting the same thing from answers by hand.

How do you get ChatGPT's system prompt? You don't, from OpenAI. Nothing on the OpenAI pages I read for this article publishes it, and the Model Spec describes the rules the model follows rather than the text it's given. Prompts that circulate as ChatGPT's system prompt were, as far as I can tell, extracted by asking the model, and I can't verify any of them, which is also true of most of the GitHub collection. Anthropic publishes its own, which is why the walk-through above uses theirs. The OpenAI documents that do exist, and what each says, are in openai prompt engineering.

What I'd Do First

Take the help assistant and fill the placeholders for something you actually support, even if it's your own side project. Paste the real docs into Context. Then send it the five messages, and read what it does with the one that asks for the answer it's not allowed to give.

Then read Anthropic's published prompt once, all of it. Most of it won't apply to you, and it's still the only place to see what a vendor decided was worth 3,200 words of instruction before the first user message arrives.