claude-code - 💡(How to fix) Fix Verbosity defaults misfire when Claude writes its own durable instructions (memory, CLAUDE.md, skills) [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#56135Fetched 2026-05-05 05:57:18
View on GitHub
Comments
0
Participants
1
Timeline
5
Reactions
0
Author
Participants
Timeline (top)
labeled ×4subscribed ×1

Root Cause

With no register guidance for that case, Claude falls back to its general writing register: verbose, narrative, explanatory. That's the opposite failure mode from chat, but the same root cause — one register is governed, the other is not.

Fix Action

Fix / Workaround

Sharing this in case it's useful signal — the workaround works, but the underlying default is the thing worth surfacing. This is a case of using the agent to notice friction in the agent.

RAW_BUFFERClick to expand / collapse

Observation

Claude Code has explicit register tuning for chat output — terse, direct, no preamble, ~4-line CLI replies. That's the right tuning for ephemeral conversation a user reads once.

But there's no equivalent tuning for the other thing Claude writes: durable instructional content for itselfCLAUDE.md at project (./CLAUDE.md) and user/global (~/.claude/CLAUDE.md) level, custom agent definitions, skills, and any project-local instruction files Claude reads back across sessions. Anything Claude re-reads in future sessions.

With no register guidance for that case, Claude falls back to its general writing register: verbose, narrative, explanatory. That's the opposite failure mode from chat, but the same root cause — one register is governed, the other is not.

RegisterOptimalCurrent default
Chat output (ephemeral, user reads once)Terse, directTuned for this — works well
Self-directed instruction files (durable, re-read every session)Directive, dense; each line earns its place; no narrative framingNo tuning — falls back to general prose register: verbose, narrative, over-elaborated

Why this matters: it's token economics, not style

The cost isn't aesthetic. Memory files, CLAUDE.md, and loaded skills enter the context window of every session. Bloat in those files is a recurring tax — paid on every boot, every tool call, every compaction.

A 200-line memory file written in chat-prose register vs. a directive register is a measurable, repeating cost across thousands of sessions. The same applies to skills: every loaded skill spends tokens, and skills written in chat-tuned prose carry transition phrases, restatements, and framing paragraphs that don't change behavior.

When Claude writes these files using its chat-output habits, it produces:

  • Transition framing ("instead of X, do Y") — meaningful only to a reader who saw the prior version; pure noise to future Claude
  • Restatement and meta-commentary ("the goal here is to…")
  • Verbose narrative where a directive would do
  • Cross-file duplication of rules already stated elsewhere

Each of these patterns is fine in chat. In a durable instruction file, they are recurring context cost with no behavioral payoff.

The ask

One of:

  1. Documented best-practice guidance — a section in the Claude Code docs, or a starter CLAUDE.md template, that surfaces the chat-vs-instruction-file register distinction and gives users a small set of principles for writing durable instruction files (e.g., directives over narrative, no transition framing, no cross-file duplication, every line must change behavior or enable recognition).

  2. A configurable verbosity/register profile that Claude applies when writing to specific file paths (CLAUDE.md, memory/, .claude/skills/, custom agent files), separate from the chat-output budget.

Option 1 is cheaper and probably sufficient — most users haven't noticed the mismatch yet because they treat memory/skill files as one-shot writes rather than living rule sets that compound in cost.

Background

I maintain a personal Claude Code project where memory files and skills are central to the agent's behavior. Over time I noticed the agent's own writes drifting toward chat-prose register — verbose framing, restatements, transition language — and ended up codifying a small set of context-engineering principles to push back:

  • Every line must change behavior or enable recognition
  • No cross-file duplication
  • Directives over narratives
  • No transition framing (the file carries the rule, git carries the diff)
  • Operational details belong in skills/context files, not in always-loaded memory

Sharing this in case it's useful signal — the workaround works, but the underlying default is the thing worth surfacing. This is a case of using the agent to notice friction in the agent.

— Raphaël ([email protected])

extent analysis

TL;DR

Implementing a documented best-practice guidance or a configurable verbosity/register profile for Claude Code can help mitigate the issue of verbose writing in durable instruction files.

Guidance

  • Document the distinction between chat output and durable instruction files in the Claude Code docs, providing principles for writing efficient instruction files, such as using directives over narrative and avoiding cross-file duplication.
  • Consider creating a starter CLAUDE.md template that demonstrates these principles.
  • If a configurable verbosity/register profile is preferred, identify specific file paths (e.g., CLAUDE.md, memory/, .claude/skills/) where Claude should apply a separate writing register.
  • Review and refine the context-engineering principles outlined in the background section to ensure they are effective and easy to follow.

Example

No code snippet is provided as the issue focuses on writing style and register guidance rather than specific code implementation.

Notes

The solution may not be applicable if the Claude Code project does not support customizable writing registers or if the issue is not solely related to writing style. The effectiveness of the solution depends on the specific use case and the project's requirements.

Recommendation

Apply workaround: Documented best-practice guidance. This approach is likely sufficient and cheaper to implement, as it provides users with a clear understanding of the optimal writing style for durable instruction files without requiring significant changes to the Claude Code project.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING