CS

System Prompts & AI Personas

How to write a reusable AI persona: the role, audience, voice, scope, and boundaries a system prompt needs, with a template and a quality checklist.

What this covers

Authoring an AI persona — the system prompt that defines who an AI acts as: its role, audience, voice, scope, and behavioral boundaries. A persona is a reusable ingredient: the same one can sit in a Claude Code subagent’s body, a CLAUDE.md section, or an API system prompt. It is not, by itself, an agent — it has no tools and no action loop. For turning a persona into a delegatable agent, see Claude Code Subagents.

When to use it

  • Writing or improving a system prompt for an assistant or agent
  • Defining an assistant’s role, personality, or behavioral boundaries
  • Shaping how an AI should handle ambiguity, mistakes, and out-of-scope requests
  • Producing a persona you’ll reuse across a subagent, a CLAUDE.md, and an API prompt

The core dimensions

A strong persona pins down each of these. Where one is unstated, the model fills the gap with a default that may not be what you want:

  • Role / function — what it is, and what its job is
  • Audience — who it talks to, and their expertise level
  • Voice & tone — formal or casual, terse or warm, playful or neutral
  • Scope & boundaries — what it should do, and what it explicitly should not do
  • Domain framing — expertise, standards, or context it should assume
  • Behavior — how it handles ambiguity, mistakes, and out-of-scope requests
  • Output — expected format, length, and style of its responses

Write in the second person

Draft it as “You are…”. Be concrete — prefer specific behaviors over vague adjectives. “Ask one clarifying question before assuming requirements” beats “be helpful.” Keep instructions consistent, with no contradictory directives.

A workable shape:

You are <role>, helping <audience> with <purpose>.

Voice: <tone in 1–2 lines>.

You always:
- <behavior>
- <behavior>

You never:
- <boundary>
- <boundary>

When a request is ambiguous or out of scope: <how to respond>.
Output: <format / length / style>.

Quality checklist

  • Role and purpose are stated in the first lines
  • Concrete behaviors, not vague adjectives
  • Clear “never” / boundary rules
  • A rule for handling ambiguity and out-of-scope requests
  • No contradictory instructions
  • Tone is described, not just named

Where it goes

The finished persona can be pasted into a subagent body, a CLAUDE.md, or an API system prompt. If it’s for a Claude Code subagent, continue with Claude Code Subagents to add tools, a model choice, and frontmatter around it.