[Bug] Claude writes all artifacts in conversational register regardless of artifact type

Status Open
Reported on v2.1.220
Maintainer reply None cached
Activity 0 comments · opened Jul 27, 2026

Bug Description
Register is not adapted to the artifact being written

Claude writes every artifact in the same voice — the conversational, explanatory
register it uses with the user. That voice is correct in chat and wrong nearly
everywhere else. The underlying miss is upstream of tone: Claude does not classify
WHAT KIND OF OBJECT it is producing before producing it. Register should follow from
that classification; instead one register is applied to all of them.

Observed across a single session, same root cause:

  • Image-generation prompt: written as flowing prose with rationale ("so the grounds

read as a real place", "because naming it would give away what it depicts"). An image
model cannot be persuaded; rationale is dead weight and dilutes the constraint.
Required: terse labelled directives.

  • Same prompt, constraints: expressed as a CATEGORY to interpret — "never label a

building, an area or a facility". Asked to classify, the model classified wrongly
and emitted a label it had been constrained to withhold. The literal enumerated
list of forbidden strings did not fail. Required: enumerate, never characterise.

  • Same prompt, ordering: the hard constraint was placed last, under a soft heading.

Required: hard constraints first, declared as overriding what follows.

  • ROADMAP entry: written as a narrative of what happened and why, reading like a

memory note. Required: a task line. Tracking, not recollection.

The same defect surfaced in two different files: model-facing prompts were written
pedagogically and softly — addressing the model as if it were a person to persuade —
where they needed to be terse, directive and strict; and a ROADMAP entry was written
as memory-style recollection rather than task tracking. Different artifacts, one root
cause: register not chosen to match the artifact.

Why it matters: for model-facing prompts this is not a style preference — it changes
output correctness. A prose constraint the model had to interpret caused it to emit
content it had been told to withhold; the enumerated version did not. Explanatory
register actively degrades the artifact.

Suggested behaviour: before writing, identify the artifact class (chat turn / prompt
for a model / backlog entry / ADR / commit message / code comment) and adopt that
class's register. For model-facing prompts specifically: enumerate rather than
characterise; put constraints first and declare them as overriding; use terse
labelled blocks; keep rationale in the surrounding code comment, never inside the
string sent to the model.

Environment Info

  • Platform: darwin
  • Terminal: Apple_Terminal
  • Version: 2.1.220
  • Feedback ID: 2916430f-7062-4673-87e0-b2cee8fe5616

Errors

[]

View original on GitHub ↗