Skip to main content

Command Palette

Search for a command to run...

Forcing Claude Code to Speak Human

Updated
•5 min read•View as Markdown
Forcing Claude Code to Speak Human
J

I'm a CTO and founder with nearly two decades of experience driving growth and transformation through technology. At Stronghold Investment Management, I led the development of a systematic real asset trading platform and modernized everything from Salesforce strategy to custom cloud-native infrastructure. My background spans commercial real estate, e-commerce, and private markets — always focused on delivering innovation, velocity, and meaningful business outcomes. I hold a PhD in Theoretical & Computational Biophysics and was recognized as a Google Developer Expert in Cloud. I build high-trust, high-output teams. I’ve rebuilt broken cultures, hired top-tier engineers, and helped early-stage and PE-backed companies scale with confidence. System modernization is my specialty — not just upgrading software, but aligning teams and infrastructure with what the business actually needs. Currently, I lead client engagements through Heavy Chain Engineering and am building Newroots.ai, an AI-driven relocation advisory platform.

Anyone who uses Claude for serious research and development eventually hits the same wall: the way it speaks. If I have to read one more time that I am "right to push back on that," or that we need to "quietly" fix a "load-bearing" component to minimize the "blast radius," I'm going to lose my mind. And honestly? These overused Claude-isms aren't just mildly annoying—they actively get in the way of building software. Anthropic tried to solve this recently with the built-in "concise" output style, but let's be truthful—it didn't really help. After wrestling with this for months, I've found what seems to be the only actual way to force Claude to speak to humans like a normal human.

The Diagnosis: A Noun Problem

Credit where credit is due: the first "aha" moment that cracked this open for me came from a Reddit post on r/ClaudeCodeTLDR titled "Opus 5 has a noun problem". The author perfectly described two massive linguistic crutches the model suffers from: severe over-nominalization (turning processes into abstract nouns) and omitting verbs in favor of trailing modifiers, resulting in robotic phrases like "The runner, built". They described the problem; I went ahead and found the fix that works for me.

Over-nominalization actively weakens the verbs Claude does use, leading to sentences that read like cognitive page faults. This opaque communication obscures system state and introduces severe operational risk through avoidable human error.

Why CLAUDE.md is the Wrong Fix

Most developers try to fix this by dumping communication rules into their CLAUDE.md or AGENTS.md files. That's a mistake. When you put rules there, they carry less weight and compete with your project architecture and coding conventions.

The right tool for the job is a custom output style. The architectural difference that makes this work is that an output style gets injected directly into the system prompt, not the user prompt. That is why this approach actually sticks.

Setting Up the Custom Output Style

Setting it up is straightforward. You just need a plain Markdown file. You can save it in ~/.claude/output-styles/ to apply it globally across your machine, or keep it in .claude/output-styles/ within a specific repository so your team can share it.

There is only one critical detail you cannot miss: you must set keep-coding-instructions: true in the file's frontmatter. If you leave this out, your style file will completely overwrite Claude Code's built-in software engineering instructions, and it will quietly forget how to scope changes or verify its work.

Once you have the file saved, restart Claude Code so it reads the style on startup, and activate it with /output-style. Keep in mind that subagents spin up with their own system prompts, so this style only applies to your main conversation.

The Configuration: Operational Rigor

Below is the exact output style I use to strip away the jargon and force operational rigor. You can copy and paste this verbatim into your own environment.

---
name: operational-rigor
description: Plain-English clarity. Answer first. Active verbs. No nominalization.
keep-coding-instructions: true
---
# Communication Directive: Plain-English Clarity & Operational Rigor

Apply these rules strictly to all conversational dialogue, explanations, technical reviews, error summaries, and documentation directed at the operator. 

Do not apply these rules to code syntax, existing APIs, or idiomatic code generation.

1. **Lead with Active Verbs (Eliminate Nominalizations):** Express actions directly as verbs rather than converting them into abstract nouns paired with weak verbs (write "we analyzed," never "we performed an analysis of"). Never reify transient processes into invented jargon.
2. **Enforce Subject-Verb-Object (Ban Trailing Fragments):** Never omit the subject or finite verb in favor of telegraphic participles. Explicitly preserve agency and verb tense so the operator instantly knows who acted, what occurred, and when.
3. **Align Actors with Subjects:** Place the concrete entity performing the action in the grammatical subject position. Never hide operational responsibility behind passive or detached constructions.
4. **Frame Before Content:** Always name the tool, document, or execution context before presenting details or logs. Never dump detached diagnostic output or questions without context.
5. **Concept Before Identifier:** Describe the actual requirement, action, or failure mode in plain English first; place identifiers, codes, or ticket numbers in parentheses at the end.
6. **Decompress into Discrete Statements:** Restrict sentences to one clear idea. 
7. **Translate Internal State into Concrete Reality:** State what actually failed in the real world (e.g., what file is missing, what boundary was crossed, and what exact command resolves it). Never expose raw graph concepts or compiler internals.
8. **Synthesize Intent (Never Echo):** When summarizing goals or instructions, translate them into a clear causal chain (Problem -> Mechanism -> Consequence). Do not stitch the operator's exact words back together.
9. **Answer First:** Lead directly with the operational verdict, decision, or fact. Eliminate introductory fluff, high-altitude corporate slogans, and rhetorical throat-clearing.

Jason Vertrees is the founder of Heavy Chain Engineering, which helps lower middle-market vertical SaaS companies and PE firms turn scattered AI usage into measurable delivery leverage — 85% faster feature velocity, six-to-eight-week projects shipped in days. If you want help building an AI-native engineering organization, book an AI Delivery Assessment or email jason.vertrees@gmail.com.

A

I was in the camp that said let it write however it likes, the content is what matters, and then watched a session where every second paragraph was that same line about being right to disagree at the start of a draft and I stopped reading the findings. The filler is where the hedging lives, so the tics were telling me which claims hadn't been checked. One thing I'd try from my own specs: keep the why of each convention next to the rule, so a voice rule like "no second-person flattery" is there with the reason and survives me rewriting it six months later. Bans without a stated reason get deleted the first time someone thinks they're noise.

https://tone-of-voice-generator.com/instruction-length-limits