Output styles directly modify Claude Code's system prompt. From the official docs:
- All output styles strip the "efficient output" instructions (be concise, etc.)
- Custom output styles additionally strip the coding instructions (test verification, tool usage guidance, security patterns) — unless
keep-coding-instructions: trueis set in frontmatter - The custom style content gets appended to the end of what remains of the system prompt
- Periodic reminders fire during conversation to reinforce the style
File: .claude/output-styles/ciso.md
His file has no frontmatter — it starts directly with # CISO Output Style. That means all frontmatter fields take their defaults:
| Field | Default | Effect |
|---|---|---|
name |
"ciso" (from filename) |
Fine |
description |
none | Fine |
keep-coding-instructions |
false |
Coding system prompt is STRIPPED |
Output style files support optional YAML frontmatter:
---
name: My Custom Style
description: A brief description displayed in /output-style menu
keep-coding-instructions: true # default: false
---With keep-coding-instructions defaulting to false, the coding-specific system prompt instructions (verify with tests, prefer Edit over sed, security vulnerability awareness, etc.) are removed. The CISO style content replaces that behavioral guidance.
For his use case — this is the right call. The project is dd-bot (Due Diligence bot), and the style is tuned for DDQ responses, attestations, and security questionnaire answers. He's using Claude Code as a CISO writing assistant, not a code-writing agent. Stripping the coding instructions is exactly what output styles were designed for.
He still gets the core Claude Code capabilities (file reading, bash, tools) but the behavioral guidance shifts from "write good code" to "write authoritative CISO attestations."
If he wanted CISO tone and coding instructions (say, to write code while maintaining CISO communication style), he'd add frontmatter:
---
name: CISO
description: DDQ and security questionnaire response drafting
keep-coding-instructions: true
---
# CISO Output Style
...This is the key architectural distinction:
| Mechanism | System Prompt | Coding Instructions | Injection Point |
|---|---|---|---|
| Output Styles | Edits it directly | Stripped by default (keep-coding-instructions: false) |
Replaces/appends to system prompt |
| CLAUDE.md | Untouched | Always preserved | Added as user message after system prompt |
--append-system-prompt |
Appended to | Always preserved | Appended to end of system prompt |
If Claridge had put this CISO guidance in CLAUDE.md instead, he'd get CISO tone plus all the coding behavior. By using output-styles, he's deliberately saying "this isn't a coding session."
The default of false is a deliberate design choice by Anthropic. If you're creating a custom output style, they assume you're repurposing Claude Code for a non-coding domain. Coding behavior is opt-in, not opt-out. This is the opposite of CLAUDE.md, where coding behavior is always preserved.
Analysis generated from Claude Code Output Styles documentation and direct inspection of the dd-bot repository.