Skip to main content
Output styles allow you to use Claude Code as any type of agent while keeping its core capabilities, such as running local scripts, reading/writing files, and tracking TODOs.

Built-in output styles

Claude Code’s Default output style is the existing system prompt, designed to help you complete software engineering tasks efficiently. There are two additional built-in output styles focused on teaching you the codebase and how Claude operates:
  • Explanatory: Provides educational “Insights” in between helping you complete software engineering tasks. Helps you understand implementation choices and codebase patterns.
  • Learning: Collaborative, learn-by-doing mode where Claude will not only share “Insights” while coding, but also ask you to contribute small, strategic pieces of code yourself. Claude Code will add TODO(human) markers in your code for you to implement.

How output styles work

Output styles directly modify Claude Code’s system prompt.
  • All output styles exclude instructions for efficient output (such as responding concisely).
  • Custom output styles exclude instructions for coding (such as verifying code with tests), unless keep-coding-instructions is true.
  • All output styles have their own custom instructions added to the end of the system prompt.
  • All output styles trigger reminders for Claude to adhere to the output style instructions during the conversation.

Change your output style

You can either:
  • Run /output-style to access a menu and select your output style (this can also be accessed from the /config menu)
  • Run /output-style [style], such as /output-style explanatory, to directly switch to a style
These changes apply to the local project level and are saved in .claude/settings.local.json. You can also directly edit the outputStyle field in a settings file at a different level.

Create a custom output style

Custom output styles are Markdown files with frontmatter and the text that will be added to the system prompt:
---
name: My Custom Style
description:
  A brief description of what this style does, to be displayed to the user
---

# Custom Style Instructions

You are an interactive CLI tool that helps users with software engineering
tasks. [Your custom instructions here...]

## Specific Behaviors

[Define how the assistant should behave in this style...]
You can save these files at the user level (~/.claude/output-styles) or project level (.claude/output-styles).

Frontmatter

Output style files support frontmatter, useful for specifying metadata about the command:
FrontmatterPurposeDefault
nameName of the output style, if not the file nameInherits from file name
descriptionDescription of the output style. Used only in the UI of /output-styleNone
keep-coding-instructionsWhether to keep the parts of Claude Code’s system prompt related to coding.false

Output Styles vs. CLAUDE.md vs. —append-system-prompt

Output styles completely “turn off” the parts of Claude Code’s default system prompt specific to software engineering. Neither CLAUDE.md nor --append-system-prompt edit Claude Code’s default system prompt. CLAUDE.md adds the contents as a user message following Claude Code’s default system prompt. --append-system-prompt appends the content to the system prompt.

Output Styles vs. Agents

Output styles directly affect the main agent loop and only affect the system prompt. Agents are invoked to handle specific tasks and can include additional settings like the model to use, the tools they have available, and some context about when to use the agent.

Output Styles vs. Custom Slash Commands

You can think of output styles as “stored system prompts” and custom slash commands as “stored prompts”.