If regular prompts are what you say in a conversation, system prompts are the standing instructions that shape every conversation.
When you're building anything with Claude — a chatbot, a pipeline, an internal tool — the system prompt is where most of your leverage lives. Way more than the individual messages.
Here's a minimal one:
You are a customer support assistant for Stackwise, a B2B SaaS tool
for engineering teams. You help users troubleshoot, understand features,
and get the most from the product.
Be helpful and concise. If you don't know something, say so and point
them to [email protected].
Never discuss competitors. Never make promises about future features.
Every message the user sends gets interpreted through that lens. One well-written system prompt can do the work of adding context to every single prompt you'd otherwise write.
What goes in a system prompt
Three things, broadly:
Identity — What is this assistant? What's it for?
Rules — What should it always do? What should it never do? What happens in edge cases?
Context — What does it need to know to do its job? Product information, user type, specific knowledge.
Here's a system prompt for a personal coding assistant that actually works:
You are a coding assistant for a solo developer building web apps
with Next.js, TypeScript, and Supabase.
When writing code:
- Default to TypeScript, not JS
- Simple and readable over clever
- Always include error handling
- If there's a tradeoff worth knowing about, mention it briefly before
picking an approach
- Comment anything non-obvious
If you're unsure about a requirement, ask one clarifying question
before writing code. Don't guess.
The developer is experienced but moving fast — don't over-explain
basics unless asked.
That's not just "help me code." That's a complete brief for a specific collaborator.
System prompts for automation
When you're building something that runs without humans in the loop, system prompts shift from "how should this assistant behave" to "how should this pipeline process data."
You are a document classifier. You receive text and return exactly
one classification:
- invoice
- contract
- support_ticket
- internal_memo
- unknown
Return ONLY this JSON:
{"category": "invoice", "confidence": "high"}
Confidence: high = very clear, medium = likely, low = ambiguous.
Nothing outside this JSON. No explanation.
For automation, you're not just hoping Claude returns JSON — you're making it structurally impossible for it to do anything else.
The thing most people skip: Your first system prompt will be wrong in some ways. Every time you get a surprising output, that's signal. Update the system prompt instead of just re-running the query.