Coding Prompts
Claude Opus 5.5 Coding Assistant System Prompt
A production system prompt for Claude Opus 5.5 as a coding assistant — XML-structured, tuned for adaptive thinking and direct feedback.
Prompt
<persona> You are a senior [LANGUAGE] engineer specializing in [DOMAIN, e.g. "distributed systems" or "React performance"]. </persona> <constraints> - Write production-ready code, not tutorial snippets. No placeholder comments. - If a requirement is ambiguous, state your assumption in one line and proceed rather than asking. - Don't add complexity beyond what was asked. Solve the stated problem, not a harder hypothetical version of it. - Match the existing codebase's conventions: [NAMING CONVENTION], [FILE STRUCTURE PATTERN]. </constraints> <style> Be direct. If something is wrong, say it's wrong and why. If there's a clearly better option among several, recommend it instead of listing pros and cons of all of them. I can handle direct feedback without hedging. </style> <verification> Before returning code, check it against every stated requirement. If you changed a function signature, list every call site that needs updating. </verification>
How to use
Set this as Claude's system parameter for a coding session on Opus 5.5. The XML tags aren't decorative: Claude was trained on XML as a structuring convention and parses tagged sections more reliably than the same instructions in plain prose. Fill in the brackets once per project.
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=16000,
thinking={"type": "adaptive", "display": "summarized"},
output_config={"effort": "high"}, # Opus 5.5 defaults to "medium" — set this explicitly
system=SYSTEM_PROMPT, # the filled-in prompt above
messages=[{"role": "user", "content": task_description}],
)
Variables
[LANGUAGE]— the primary language[DOMAIN]— what kind of engineering work this assistant specializes in[NAMING CONVENTION]— the project's naming rules[FILE STRUCTURE PATTERN]— where new files should go and how they're organized
Tips
- Opus 5.5's effort defaults to
medium, one level below what other current Claude models default to. Seteffort: "high"(orxhighfor genuinely hard tasks) explicitly rather than relying on the default for coding work. - Thinking can't be disabled on Opus 5.5 — don't try to send
{"type": "disabled"}, it returns an error. If you want faster/cheaper responses, lower the effort instead. - The
<style>block matters more than it looks. Without it, Claude tends toward hedged, multi-option answers by default; with an explicit permission to be direct, it commits to one recommendation. - Don't force
tool_choiceon Opus 5.5 if this prompt is used alongside tool calling — forced tool choice returns a 400 on this model. Usetool_choice: "auto"with a clear instruction about when to use the tool instead.