Four Claude Code Hooks Enforce Voice and Tone Consistency in AI-Written Copy

A developer has implemented a system using four Claude Code hooks to enforce voice and tone consistency when AI agents write copy. The approach addresses the problem where AI-generated content gradually drifts off-brand through hedging phrases and generic language.
Hook Implementation
The system uses four specific hooks:
- UserPromptSubmit hook: Detects VOICE-AND-TONE.md files and injects an instruction to delegate to a reviewer agent before editing any copy file
- PreToolUse hook: Blocks Edit/Write calls to copy-bearing files (.tsx, .md) unless a session marker exists
- PostToolUse hook: Creates the session marker after the reviewer completes its work
- Stop hook: Removes the marker after each response, so the next turn starts locked and requires a fresh review
Reviewer Agent Design
The reviewer is a Claude Code agent with read-only tools (Read, Glob, Grep). It reads the voice guide, reads the proposed copy, and reports violations with:
- The offending text
- The rule it breaks
- A suggested fix
The reviewer cannot edit files directly, maintaining separation of concerns.
Key Design Philosophy
The system functions as a gate rather than a nudge. A missed voice review means off-brand copy could ship to production. The developer notes that the cost of one agent call before editing is lower than the cost of finding and fixing drift after the fact.
The full implementation includes hook code, agent definition, and a starter template for voice guides. The developer asks whether others have built similar hooks for non-functional constraints like accessibility or coding standards.
📖 Read the full source: r/ClaudeAI
👀 See Also

Flue: A TypeScript Framework for Building Autonomous Coding Agents
Flue is a TypeScript framework that provides a programmable harness for building autonomous agents, featuring skills, sessions, sandboxed shell execution, and a built-in virtual sandbox. It can replace tools like Dosu, Greptile, CodeRabbit, Devin, and Claude Code with custom agent logic.

OpenObscure: Open-Source On-Device Privacy Firewall for AI Agents
OpenObscure is an open-source, on-device privacy firewall that sits between AI agents and LLM providers, using FF1 Format-Preserving Encryption to encrypt PII values before requests leave your device. It includes PII detection with 99.7% recall, cognitive firewall scanning, and runs on macOS/Linux/Windows with iOS/Android bindings.

Introducing Swarmcore: A Scalable Multi-Agent Framework in Python
Swarmcore is an open-source library for running scalable multi-agent workflows in Python, featuring sequential or parallel execution and expandable context management.

Building a Full Production App with Claude: What Actually Worked and What Didn't
A senior backend dev with zero Flutter experience shipped a full production app (iOS + Android) using Claude as primary tool over 2.5 months. Details the workflow, failures, and why tests were the quality gate.