If the user's intent does not match the purpose of this skill, load plugin-creator:plugin-lifecycle to route to the right skill and process.
Output Style Creator
Create output styles: markdown files whose body replaces Claude Code's default system instructions for every turn of a session. Setting keep-coding-instructions: true retains the built-in software engineering instructions alongside it. An output style sets role, tone, and default response format.
SOURCE: Output styles (accessed 2026-09-13)
Quick Reference
- Output style schema — frontmatter fields, install locations and resolution order, plugin packaging, subagent behavior, troubleshooting
- Output style templates — complete ready-to-adapt style files for common roles
plugin-creator:claude-plugins-reference-2026 — plugin manifest reference for outputStyles packaging
Choose the Right Mechanism First
Pick the mechanism from this table before writing anything.
| Need | Mechanism | Why |
|---|
| Different role, tone, or response shape on every turn | Output style | Replaces the default instructions for the whole session |
| Project conventions, architecture, codebase facts | CLAUDE.md | Adds a user message after the system prompt; changes nothing about the defaults |
| One-off addition at launch | --append-system-prompt | Appends without removing the defaults |
| A separately scoped helper for one focused task, or any behavior that must hold inside delegated work | Agent | Runs its own system prompt, model, and tools — an output style never reaches a subagent |
| A reusable workflow invoked when relevant | Skill | Loads task-specific instructions on demand |
An output style is the wrong answer to "Claude should know X". It is the right answer to "Claude should always answer like X".
SOURCE: Output styles — Comparisons to related features (accessed 2026-09-13)
SOURCE: Subagents (accessed 2026-09-13)
Built-in Styles — Check Before Creating
| Style | Behavior |
|---|
| Default | Standard software engineering instructions |
| Proactive | Executes immediately, assumes instead of pausing, prefers action over planning; stronger than auto mode's autonomous-execution guidance and independent of the permission mode, which still decides what runs without asking |
| Concise | Leads with the result, skips preamble, keeps responses short; full detail on request; always delivers error reports, security warnings, and destructive-action confirmations complete; requires Claude Code v2.1.237 or later |
| Explanatory | Adds educational "Insights" between engineering tasks |
| Learning | Shares insights and asks the user to write small strategic pieces; inserts TODO(human) markers |
SOURCE: Output styles — Built-in output styles (accessed 2026-09-13)
Your Workflow
<workflow>
Phase 1: Discovery
-
RUN discovery:
SKILL_DIR='<absolute path of the directory holding this SKILL.md>'
uv run "$SKILL_DIR/scripts/validate_output_style.py" discover --plugin '{plugin-path}'
Omit --plugin when no plugin is in scope.
-
READ the styles it lists. Every ancestor .claude/output-styles/ is in force at once; a nearer directory shadows a farther one only where both define the same style name. A plugin's outputStyles key shadows the plugin's default output-styles/ directory outright. So a style you cannot see may be the one in force, and a directory you can see may be scanned by nobody. Report anything under plugin_manifest_problems, plugin_rejected_paths, or project_rejected_paths as a defect in the manifest or repository that declares it. A plugin with a manifest problem reports no styles, because the declaration that would name them cannot be read — that is a broken manifest, not a plugin shipping nothing.
-
IDENTIFY whether the request is already served by a built-in style or an existing custom style. Adapting an existing style beats adding a near-duplicate.
Phase 2: Requirements Gathering
ASK the user to settle these before writing, through whichever interaction mechanism the harness provides (AskUserQuestion in Claude Code, a plain question elsewhere):
- Role — what is Claude acting as for the whole session?
- Coding instructions — does the session still write and verify code? This sets
keep-coding-instructions.
- Response shape — what must every response contain, and in what order?
- Scope — user, project, managed policy, or plugin-bundled.
- Plugin activation — for a plugin style only: should it apply automatically when the plugin is enabled (
force-for-plugin)?
- Picker line — the one line that tells a user in the
/config list when to pick this style over the others already installed. This becomes description.
Set keep-coding-instructions: true when the session is still software engineering and only the communication changes. Leave it out when Claude is doing something else entirely, such as writing or data analysis.
SOURCE: Output styles — Create a custom output style (accessed 2026-09-13)
Phase 3: Authoring
WRITE the file as frontmatter plus instructions. The filename becomes the style name unless name is set. Start from a worked style in output-style-templates.md rather than a blank file; its Selection Guide maps the keep-coding-instructions decision and the forced-plugin case onto a starting template.
Authoring rules:
- Write the body as a system prompt, not a README about the style.
Start with the conclusion, then the evidence is a system prompt; this style is concise is a README.
- State the target behavior, not the ban. The body is re-sent as system instructions every turn, so a prohibition keeps the forbidden behavior loaded and half-reads as an instruction to perform it.
Deliver error text in full beats Never truncate error text. Keep a prohibition only where the failure is silent and total, and pair it with the positive.
- Name the exception cases. A style that shortens output must say what stays complete — error text, security warnings, destructive-action confirmations.
- Keep the body proportionate. Every line is re-sent as input tokens on each request.
- Put project facts in
CLAUDE.md. A style that names files or conventions stops being portable.
- Retain the default engineering instructions with
keep-coding-instructions: true rather than paraphrasing them.
Full field semantics and defaults: output-style-schema.md.
Phase 4: Placement
| Scope | Path | Applies to |
|---|
| User | ~/.claude/output-styles/{name}.md | Every project for this user |
| Project | .claude/output-styles/{name}.md | This repository, checked into git |
| Managed policy | .claude/output-styles/ inside the managed settings directory | Every user under the policy |
| Plugin | {plugin-path}/output-styles/{name}.md | Selectable in every session with the plugin enabled; applied without selection only with force-for-plugin: true |
For a plugin style, the output-styles/ directory is auto-discovered. Do NOT add the outputStyles key to plugin.json for styles in that default directory — declaring the key replaces the default scan entirely and makes every style outside the declared paths invisible. Add the key only for non-default locations, and then list ./output-styles/ explicitly alongside them.
SOURCE: Plugins reference — outputStyles (accessed 2026-09-13)
Phase 5: Validation
RUN this check on every style, at any scope:
SKILL_DIR='<absolute path of the directory holding this SKILL.md>'
uv run "$SKILL_DIR/scripts/validate_output_style.py" check '{style-path}'
For a plugin-bundled style, also validate the containing plugin:
uvx skilllint@latest check '{plugin-path}'
if command -v claude >/dev/null; then
claude plugin validate '{plugin-path}'
else
echo 'SKIPPED: claude plugin validate — Claude Code CLI not installed'
fi
Report a skipped claude plugin validate in the completion report, with the manifest check still outstanding.
The script covers the frontmatter. A style with an empty body exits 0, so READ these yourself:
Phase 6: Activation and Testing
ACTIVATE the style through /config in the terminal, the / command menu in the VS Code extension, or the outputStyle setting anywhere else. Never the standalone /output-style command, which was removed in v2.1.91. Per-surface steps, version floors, and the settings-precedence chain: output-style-schema.md.
A style switch applies from the next message. In the terminal, style files are read at startup, so restart after creating or editing one mid-session; for a plugin-bundled style, /reload-plugins picks it up without a restart.
TEST all four prompts below, and record for each the prompt sent, the rule it exercises, and whether the rule held:
- A request squarely in the style's domain — every ordering and formatting rule in the body holds.
- A request outside it — the answer is still correct and complete, and the style's rules apply only where they fit.
- An error case and a destructive-action case — the carve-outs are delivered verbatim and at full length.
- If
keep-coding-instructions: true — Claude still scopes the change and states how it verified the work.
A rule the four prompts never exercise is a rule you have not tested. Add a prompt until every rule in the body has been exercised at least once.
SOURCE: Output styles — Change your output style (accessed 2026-09-13)
Phase 7: Diagnosis
When a style does not take effect, DIAGNOSE it before re-authoring anything. Re-run Phase 1 discovery first — it shows every style in scope at every level, which settles most cases on its own: a second style of the same name in a nearer directory, or a managed-policy or plugin style you were not accounting for.
Then match the symptom in the troubleshooting table in output-style-schema.md. It covers a style absent from the picker, the wrong same-named style winning, and Claude no longer scoping or verifying code changes.
</workflow>