Recipe 2: Teaching Claude Code Your Voice
Stop rewriting everything Claude produces.
Part of the Claude Code Recipes series. Recipe 1 covered setting up your workspace structure with CLAUDE.md and the basic file organisation. This recipe builds on that foundation and assumes you have a working CLAUDE.md file in your project root.
The Uncanny Valley Problem
You ask Claude to write something. The output appears seconds later, and everything is factually correct. The structure makes sense and the grammar is flawless.
And yet something feels off. The sentences are too polished and the transitions are too smooth. You think, “This is helpful, but I would never say it that way.”
That is the uncanny valley of AI writing: close enough to sound human, but off enough to feel synthetic.
The Uncanny Valley Effect
The term comes from robotics, where human-like robots that are almost but not quite realistic trigger discomfort. It is a useful analogy for AI writing: text that mimics human patterns without capturing individual voice can create a similar sense of wrongness. The solution is not to make AI writing more generic, but to make it more specifically yours.
I noticed this when writing a LinkedIn post about AI. I fed my raw notes to Claude Code and asked it to polish the text, and the output was structurally fine with clear points and logical flow. But when I read it aloud (my check before posting anything), the words felt wrong in my mouth because the phrasing was too smooth and generic. I kept stumbling because it was not how I think.
That is when I started building voice rules.
Why This Matters
You write more than you think:
Social media posts and newsletters
Blog posts and thought leadership
Client emails and proposals
Documentation and help articles
Team updates and announcements
Default AI voice produces technically correct output that sounds like a corporate press release, and your readers notice and disengage. The quality gate becomes “does this sound like a person wrote it?”
If Claude’s output requires heavy rewriting, you’re not saving time. You’re outsourcing a first draft to someone who doesn’t know your voice, then doing the real work yourself.
The goal is not to make Claude sound casual, but to make Claude sound like you. You probably won’t eliminate editing entirely, but you should notice a difference: less rewriting, more refining.
The Main Lever: CLAUDE.md
Claude Code reads your CLAUDE.MD file at the start of every session and treats it as project instructions. This is where you define voice rules, forbidden words, content templates, and anything else that shapes how Claude writes for your project.
What CLAUDE.md controls:
Voice characteristics (formal vs conversational, first person vs third person)
Forbidden words and patterns (the AI-tells you want to avoid)
Content templates (structure for social posts, documentation, emails)
Brand-specific rules (if you have multiple voices)
The file lives in your project root and applies to all sessions in that repo. When you work with sub-agents (covered in Recipe 4), they can access these same rules.
Note on Output Styles
When I was researching the topic, I came across a separate Claude Code feature called Output Styles, which are configured in .claude folder and in the settings.json file. However, these control how Claude Code responds to you (concise vs explanatory, learning mode, etc.) but they do not control the voice or tone of content Claude creates for you. For content voice, use CLAUDE.md. Output Styles are useful for changing Claude’s interaction style, but they are not the topic of this recipe. We will go through them in a future recipe as they can be really handy too.
Setup: CLAUDE.md Template
Add this to your project’s CLAUDE.md:
## Voice & Tone
### Language
- British English (favour, colour, analyse)
- Direct over formal
- Short sentences over complex constructions
### Forbidden Words
Never use: delve, leverage, robust, seamless, utilize, synergy,
harness, unlock, elevate, streamline, empower, optimize
These words rarely carry specific meaning. They signal "I need a
filler adjective" rather than "I have something precise to say."
If you genuinely mean something is robust, describe how it handles
failures. Otherwise, cut the word.
### Forbidden Patterns
- "In a world where..." → delete the setup, start with the point
- "Most people X. The few who win Y." → drop the moralizing
- "Here's the truth:" → just say the thing
- "It's important to note that" → delete it
### Content Templates
#### Social Media Posts
- Hook first, context second
- One clear point per post
- End with question or insight, not CTA
#### Documentation
- Start with why, then what, then how
- Examples mandatory
- Assume smart reader, don't over-explainThis template focuses on content creation. If you also use Claude for code-related writing (PR descriptions, commit messages, code comments), those rules belong in a separate section or a different project. Recipe 3 covers how to organise your workspace when you have multiple contexts with different voice requirements.
1st warning: rules can accumulate. If Claude's output starts sounding stilted or overly cautious, you may have over-restricted. Prune your list occasionally. The goal is constraint, not suffocation.
Defining Multiple Voices
If you write for different contexts (personal vs company, technical vs casual), you can define multiple voice profiles in CLAUDE.md. When you start a session, tell Claude which voice to use and it will follow that profile.
Here is an example from my own setup. I write under two brands with distinct voices:
## Brand Voice Guidelines
### Giorgos (Personal Brand)
Use for personal reflections, leadership lessons, career stories.
Voice:
- Warm, reflective, grounded
- Honest about uncertainty and tradeoffs
- Shares experience, avoids preaching
- Analytical but human
Tone: conversational, curious, humble
### Amplivibes (Company Brand)
Use for professional frameworks, transformation guidance, strategic direction.
Voice:
- Confident, structured, pragmatic
- Evidence-based and systematic
- Clear frameworks and actionable approaches
- Authority without arrogance
Tone: expert, clear, actionable
Default rule: if unsure, use Giorgos.To switch voices, I tell Claude at the start of a session: “Use Giorgos voice for this post” or “This is Amplivibes content.” Claude reads the definitions from CLAUDE.md and applies the right profile.
This works for me, but your setup will differ. The key is being explicit about what makes each voice distinct so Claude can follow consistently.
Examples
Example 1: LinkedIn Post (Before/After)
This is the post from my opening story. My raw notes said: “AI won’t replace jobs. It changes what the job is. The people who adapt are already adapting.”
Claude’s first output (no voice rules):
“By leveraging AI capabilities strategically, professionals can ensure seamless adaptation to the evolving landscape. Those who embrace this transformation will thrive.”
I read that aloud and stopped at “leveraging AI capabilities strategically.” I would never say that.
After adding voice rules (forbidden words + Personal Voice):
“AI isn’t replacing my job. It’s changing what the job is. I’m already adapting. Are you?”
Same idea, and it passes the read-aloud test. In practice, you rarely get this clean on the first try. I went through two more drafts before posting.
What changed:
“leveraging” → gone
“seamless” → gone
“professionals can ensure” → “I’m already”
Generic statement → direct question
Example 2: Newsletter Introduction
CLAUDE.md setup:
#### Social Media Posts
- Hook first, context second
- One clear point per post
- End with question or insight, not CTA
Voice requested: “Use Giorgos personal voice, direct and first-person.”
Prompt: “Write an intro for my weekly newsletter about why most productivity advice fails. 3-4 sentences max.”
Result check:
Opens with a hook or tension, not a greeting
Uses “I” not “we” or “you should”
No generic statements like “In today’s fast-paced world”
Ends with intrigue, not a call-to-action
Example 3: Client Email
Same pattern applies to emails. I added a rule: “No passive-aggressive phrases like ‘just following up’ or ‘circling back’.” When I asked Claude to write a follow-up to an unresponsive client, the output stated the ask directly without sounding pushy. Small rule, noticeable difference.
Validating Tone
After drafting, I do a quick manual check: scan for forbidden words, look for formulaic patterns, and read aloud to catch anything that sounds off. This is not automated yet (maybe it will never be), I just read the output doing a tone sanity check. Will I say it this way? Can I read it without questioning myself?
The check catches mechanical violations so I can focus on substance. It does not catch everything, especially content that follows the rules but still lacks energy. That requires judgment, and sometimes distance. Putting a draft aside for a day helps more than any checklist. So I always let it sleep for a night before doing the final review.
Try This
Add a Voice & Tone section to your CLAUDE.md with at least 5 forbidden words
Ask Claude to write something you publish regularly (social post, email, documentation)
Read the output aloud and note where you stumble or cringe
Turn each problem into a rule and add it to CLAUDE.md
Repeat until the output needs refinement rather than rewriting
Voice definition is iterative work. You will keep finding new patterns that bother you, and that is fine. Add a rule and move on.
2nd warning: CLAUDE.md is loaded every time you prompt Claude Code, so a large file means larger context. This eats tokens faster, hits your usage limits sooner, and can cause context drift where earlier instructions get deprioritised.
What’s Next
These rules will break and Claude will drift. That is normal. Voice definition is maintenance rather than setup, and the file evolves as long as you use it.
This recipe covered voice for a single project. But what happens when you work with sub-agents, or when you want to share voice rules across multiple projects? Future recipes will cover workspace organisation and how sub-agents work with your voice settings.
Previous: Recipe 1: Starting Claude Code Properly
Appendix: Quick Reference
What goes in CLAUDE.md for voice:
Language preferences (British English, formality level)
Forbidden words (AI-tells like “leverage”, “delve”, “seamless”)
Forbidden patterns (formulaic structures that feel templated)
Content templates (structure for social posts, documentation, emails)
Brand voice definitions (if you write for multiple brands)
What does NOT control content voice:
Output Styles (
.claude/settings.json) control how Claude responds to you, not how it writes content for you. Use these to switch between concise, explanatory, or learning modes for Claude’s interaction style.
The goal is a setup where your voice rules flow through the entire workflow without you having to repeat yourself. That is where things get interesting.



Regarding the topic of the article, this 'uncanny valley' insight is brilliant. How do you practically make Claude sound specifically like you? I'm curious for more detalis.