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).

Further Resources