Output Styles & Status Lines
Reshape how Claude Code communicates — from concise bullets to structured YAML to retro HTML.
What Output Styles Do
Output styles replace parts of Claude Code's default system prompt with your own instructions. The model and tool capabilities stay identical — only the communication protocol changes. Built-in styles include Default, Explanatory, and Learning. Custom styles can produce bullets, YAML, HTML, or any format you define.
Creating a Custom Output Style
Output styles are Markdown files with YAML frontmatter. User-scoped go in ~/.claude/output-styles/, project-scoped in .claude/output-styles/. Use /output-style to switch active style or /output-style:new to create one with help from Claude.
---
description: Concise bullet-point responses with direct communication
---
# Communication Style
- Use bullet points for all responses
- Be direct and to the point
- No unnecessary language or filler
# Response Format
- Lead with the answer
- Use nested bullets for hierarchy
- Skip preamble and transitions
# Tone
- Professional and concise
- No hedging or qualificationsWhy YAML as an Output Style
YAML is more than formatting — it is implicit semantic structure. Indentation expresses scope, key ordering encodes priority, nesting maps dependencies. Asking Claude to respond in YAML changes how it reasons: linear narratives become hierarchical models with relationships, scope, and priority encoded structurally.
Task: "Fix authentication bug"
Priority: "Urgent high"
approach:
investigate:
auth_flow:
- login_endpoint
- token_validation
- session_middleware
fix:
files_to_modify:
auth.js:
scope: "token refresh logic"
risk: "low"
middleware.js:
scope: "validation checks"
risk: "urgent"
verify:
tests: ["auth_integration", "token_expiry"]Embedding Workflows in Output Styles
Output styles can encode workflow logic, not just formatting. An HTML output style can instruct Claude to save the generated HTML to a .html file and open it in the default browser — eliminating the need to specify these steps in every prompt.
---
description: Format responses as retro HTML pages with ASCII art styling
---
Format all responses as complete HTML5 documents with retro ASCII art styling.
# Workflow
- Save the HTML file after writing it with a descriptive name ending in .html
- OPEN the generated file in the default web browser
# HTML Structure
- Always provide complete HTML5 with DOCTYPE, head, body
- Use semantic elements (header, main, section, article, footer)
# Styling
- Embed CSS in <style> tags in the HTML head
- Monospace fonts (Courier New, Monaco, Consolas)
- Dark backgrounds with green-on-black or amber-on-black schemesStatus Lines
Status lines display persistent info at the bottom of the terminal. They run any executable script — bash, Python, Node — that receives Claude Code's session JSON via stdin and prints the line to stdout. Configure via /statusline slash command or by editing ~/.claude/settings.json directly.
{
"model": "sonnet",
"statusLine": {
"type": "command",
"command": "uv run ~/.claude/statusline.py"
}
}The script receives session data — model, context usage, costs, git info, output style, and transcript_path — as JSON on stdin. Useful displays: active output style, last user prompt, current git branch, token usage percentage. ANSI escape codes work for color and bold formatting.
Combine output styles with multiple terminal sessions to simulate a specialized team. One terminal runs frontend-engineer with YAML style. Another runs security-review with concise bullets. Each session maintains its own role and communication protocol.