# Output Styles in Claude Code

Claude Code's output styles control how the AI responds to your requests. This summary covers the built-in styles and when to use each one.

> **TLDR:** Output styles = stored system prompts that change Claude's behaviour. Slash commands = stored user prompts for quick actions.

Use the 'default' style for classic coding, 'Explanatory' for learning, 'Learning' for hands-on practice, and create custom styles as needed to match your workflow or creative needs (start from the default system prompt for inspiration).

> **Note:** Requires Claude Code version 1.0.81 or later

## Default and Built-in Output Styles

1. **Default Output Style**
    
    * Purpose: Optimized for software engineering tasks.
        
    * Features: Includes system prompt instructions for concise code generation, automatic code verification, and test integration.
        
    * Context: This is the initial state, designed for efficient programming workflows.
        
2. **Explanatory Output Style**
    
    * Purpose: Adds educational value and explanations to its software engineering help.
        
    * Example: When planning a project, it might explain why it's choosing one database over another, or the reasoning behind selecting a store over React context.
        
    * Best for: If you want to enhance your learning while coding or need insight into design decisions.
        
3. **Learning Output Style**
    
    * Purpose: Mimics a pair-programming experience to help you learn by doing.
        
    * Features:
        
        * Provides code insights as you go.
            
        * Assigns you small, strategic coding tasks (adds "to-do human" items).
            
        * Checks your work and offers feedback or explanations based on your solutions.
            
    * Best for: Developers who want to upskill or learn new patterns interactively.
        

## Custom Output Styles

* You can create your own Output Style.
    
* Behind the scenes: Claude generates a new output-style file and modifies the system prompt accordingly.
    
* Impact: Output styles are tightly coupled to the system prompt, so customisations can drastically change behaviour. ***Switching to a non-default output style removes software-engineering–specific logic from the system prompt.*** This potentially reduces coding efficiency but broadens capability in other domains (research, creative writing, etc.).
    

Put differently: output styles introduce the ability to change the \_system prompt\_ which can be very powerful! Here is an example where I change the behaviour with respect to Claude Code’s commit behaviour.

## How to Use & Select Output Styles

* Use the CLI to create/select/explore output styles (`output-style:new`, then select from available styles).
    
* Output styles can be selected per session or per project as needed.
    

## Advanced Tips

* Output style selection is part of a broader "system prompt + user message" structure.
    
* You can further manipulate prompts using `--append-system-prompt` to add final adjustments to the behaviour.
    
* For customisation, consider starting from the default system prompt (you can use Claude tracing for this but here is [the default system prompt of Claude Code 1.0.85](https://github.com/lhohan/references/blob/main/claude/default-system-prompt-1.0.85.md?plain=1)).
    

## Further Resources

* [Ray Amjad's Youtube video](https://youtube.com/watch?v=_OILd7UDZvI&si=G--uWYh90wPOP5y0)
    
* [Anthropic Output Styles documentation](https://docs.anthropic.com/en/docs/claude-code/output-styles)
