Skip to main content

Output Styles

An output style changes the role, tone, and format of Claude's answers in a session. You pick one with /output-style. It applies from the next message. An output style is an instruction, so nothing enforces it. For project facts, use Memory and Rules. For actions that must always happen, use hooks.

Example​

.claude/output-styles/terse-reviewer.md
---
name: Terse Reviewer
description: Short code review notes
keep-coding-instructions: true
---
Review the change. List problems as short bullets, worst first.
Skip praise and recaps.
.claude/settings.json
{ "outputStyle": "Terse Reviewer" }

Restart claude so it finds the new file. Then Claude answers as a terse reviewer and still keeps its coding instructions.

Built-In Styles​

Each non-default style keeps the standard coding instructions and adds its own. Source: the program sets keepCodingInstructions: true and source: "built-in" for the four styles. Official page: Output Styles. The captured prompts are on these pages: Proactive, Concise, Explanatory, and Learning.

ItemStatusWhat it doesHow it worksWhere to set it
default
Documented: An official docs page names this item.
No style instructionsThe standard system prompt for software engineering. It shows in the /output-style listAll sessions
Proactive
Documented: An official docs page names this item.
Starts work at once and assumes on routine choicesClaude does not use plan mode unless you ask. It checks in the chat before it deletes data or changes shared systems. It does not change the permission modeAll sessions
Concise
Documented: An official docs page names this item.
Leads with the result, no preamble, narration, or recapSimple answers take one to three sentences. Full length stays for requested detail and safety content. Needs 2.1.237. The bundle gives it a turnReminderAll sessions
Explanatory
Documented: An official docs page names this item.
Adds Insight blocksEach block has two or three points. Claude does not write them into filesAll sessions
Learning
Documented: An official docs page names this item.
Adds Insight blocks and TODO(human) tasksClaude asks you to write 2 to 10 lines when it generates 20 or more lines with a design choice. It then stops and waitsAll sessions

The outputStyle Setting and Switching​

ItemStatusWhat it doesHow it worksWhere to set it
outputStyle
Documented: An official docs page names this item.
Names the active styleThe value is case-sensitive. Explanatory works. explanatory gives Default. No value means Default. A project file wins over user settingsAny settings scope
/output-style <style>
Documented: An official docs page names this item.
Switches the styleSaves to .claude/settings.local.json. No argument lists the styles. Ignores case. Works in print mode and the SDK. Needs 2.1.269 for remote listsInteractive, print
/config Output style
Documented: An official docs page names this item.
Menu pickerSaves to local settingsTerminal
Switch in a session
Documented: An official docs page names this item.
New style applies from the next messageBefore 2.1.251 it needed /clear. Prompt caching costs the first messageAll sessions
Custom style over Remote Control
Undocumented: Only the program shows this item. It can change without notice.
You cannot select itThe bundle text tells you to pick one in the session itselfRemote Control
CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT
Documented: An official docs page names this item.
Chooses the full or short system prompt0 selects the full prompt. keep-coding-instructions has no effect on the short promptEnv
Safe mode
Documented: An official docs page names this item.
Styles do not loadCLAUDE_CODE_SAFE_MODE=1 skips output stylesEnv

Locations and Precedence​

ItemStatusWhat it doesHow it worksWhere to set it
~/.claude/output-styles/*.md
Documented: An official docs page names this item.
User stylesThe file name is the style name unless you set nameUser
.claude/output-styles/*.md
Documented: An official docs page names this item.
Project stylesEvery such directory between the working directory and the repository root loads. The closest one wins for a nameProject
Managed .claude/output-styles
Documented: An official docs page names this item.
Policy stylesThe styles are inside the managed settings directoryManaged
Plugin output-styles/
Documented: An official docs page names this item.
Plugin stylesSee PluginsPlugin
outputStylesPath, outputStylesPaths
Undocumented: Only the program shows this item. It can change without notice.
Manifest key for style files or directoriesWhen set, Claude Code does not auto-load the output-styles/ directoryPlugin manifest
Merge order
Undocumented: Only the program shows this item. It can change without notice.
For the same name the later source winsThe order is built-in, plugin, user, project, then policy. Plugin style names start with the plugin name and a colon, so they do not clash with the others. With safe mode on, only the built-ins loadAll
File reading
Documented: An official docs page names this item.
Styles load when Claude Code startsA new file needs a restart in the terminalTerminal

Frontmatter Keys​

All keys are optional. Claude Code ignores a misspelled key. Bad YAML loads the style under its file name with no fields.

ItemStatusWhat it doesHow it worksWhere to set it
name
Documented: An official docs page names this item.
Style name in the pickerThe default is the file nameStyle file
description
Documented: An official docs page names this item.
Text in the pickerStringStyle file
keep-coding-instructions
Documented: An official docs page names this item.
Keeps the built-in software engineering sectionThe default is false. It works only on the full system promptStyle file
force-for-plugin
Documented: An official docs page names this item.
Applies the style when you enable the pluginIt overrides outputStyle. The first loaded plugin wins. A warning names the others. On a non-plugin style, Claude Code ignores the key and shows a warningPlugin styles

Captured prompts for custom styles: Custom Style, Custom Style on the Full Prompt, and Custom Style with Keep Coding Instructions.

How It Works​

  • The active style text goes with every request. Source: the official Output Styles page.
  • A style applies to the main thread and to a fork. Other subagents use their own system prompt. Source: the same page.
  • The style name shows in the status line field output_style.name. See Status Line.
  • The SDK init message can report outputStyle as null or as { name, isKeepingCodingInstructions }. Source: the program string no { outputStyle } (null, or { name, isKeepingCodingInstructions }).
note

A probe set outputStyle in user settings and added a plugin style with force-for-plugin: true. The system prompt used the forced style and not the configured one. The init event still showed the setting's name. With several forced styles, the first wins. A warning lists all. In a user style, Claude Code ignores force-for-plugin. A managed outputStyle with its style file in the managed folder won over user, project, local, and --settings values. See Probes and Managed Folder Probe. The captures linked above hold the full text of each built-in style prompt. We compared them with the strings in the program. The only difference is the blank lines that the capture adds after the style header and between paragraphs.

Exact Fields​

The exact fields are in the output-style definition in https://clawdipedia.cc/schemas/claude-code-frontmatter.json. The program's frontmatter validators produce it. It lists every field of this release. Build on the fields it names. Look each one up there before you rely on it.