talk-normal - kill the AI slop voice
System prompt that forces any LLM to drop the corporate-overlord cadence and write like a normal person. Strips em-dashes, hedging, and 'in summary' filler.
talk-normal is a single system prompt with one job: stop the LLM from writing like a corporate consultant who has been asked to fill 800 words. No filler, no "in summary," no closing-stamp, no conditional-menu pseudo-help, no negation-frame hedging. Just the answer.
The README publishes its own measurements on 10 test prompts at temperature 0: a 73% average character reduction on GPT-4o-mini, 72% on GPT-5.4. Reductions hold on Chinese prompts as well as English. The same prompt drops onto Claude, Gemini, and self-hosted models without changes.
What "talk normal" actually means
The before-and-after example in the README is the right starting point. Asked "What is Python?" GPT-4o-mini's default answer is 1,583 characters of bullet-pointed corporate cadence: "high-level, interpreted programming language known for its readability and simplicity," followed by a numbered list of "key features" that nobody asked about, ending with "widely used in various domains."
With talk-normal in the system prompt, the same model returns 513 characters that say the same things without the boilerplate. Same information, no padding.
The rules the prompt enforces aren't about being terse - they're about cutting specific antipatterns:
- Negation-frame ban - "It's not just X, it's Y" type constructions go.
- Closing-stamp ban - no "I hope this helps!" / "Let me know if you have questions!" sign-offs.
- Conditional-menu ban - no "Would you like me to: A) ... B) ... C) ..." pseudo-help.
- Filler list - explicit list of phrases that get stripped: "in summary," "essentially," "in essence," "fundamentally," and friends.
- Few-shot BAD/GOOD examples - the prompt teaches the desired register through contrasted pairs rather than just rules.
Each rule is iterated against real LLM output. The repo's regressions/ directory tracks the leak count per version of every rule, the specific fix, and the observed excerpts that motivated each round. That's an unusually disciplined way to maintain a system prompt.
Install
The system prompt comes in three forms depending on where you're installing it:
prompt.md- full version. Use everywhere there's no length cap (OpenClaw, API, Cursor, Continue, your own apps).prompt-chatgpt.md- compressed variant trimmed to fit ChatGPT custom instructions' 1500-character cap, with every load-bearing rule preserved.skill-hermes/- Hermes Agent skill packaging.
OpenClaw
Three install paths, all converge on the same install.sh:
# Easiest - paste the URL into chat
https://github.com/hexiecs/talk-normal
# ClawHub
clawhub install talk-normal && bash skills/talk-normal/install.sh
# Manual
git clone https://github.com/hexiecs/talk-normal.git && cd talk-normal && bash install.sh
The installer auto-detects AGENTS.md and injects the prompt between # --- talk-normal BEGIN --- and # --- talk-normal END --- markers. It's idempotent - re-run any time to pick up the latest rules without touching anything else in your AGENTS.md. To remove: bash install.sh --uninstall.
Hermes Agent
hermes skills install --force hexiecs/talk-normal/skill-hermes
cd ~ && bash ~/.hermes/skills/skill-hermes/install.sh
The --force is required because Hermes's security scanner flags persistent AGENTS.md modification. The skill is open source - review skill-hermes/SKILL.md before installing if that matters to you.
ChatGPT custom instructions
Paste prompt-chatgpt.md into the custom instructions panel under Personalization. The compressed variant exists because the field is capped at 1,500 characters; the full prompt.md would overflow.
Any API tool
Drop prompt.md into the system prompt field of whatever you use - Cursor, Continue, your own app, raw API calls. The shape doesn't change:
curl https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{"role": "system", "content": "<contents of prompt.md>"},
{"role": "user", "content": "What is Python?"}
]
}'
Why this works (and what it isn't)
A March 2026 paper - "Brevity Constraints Reverse Performance Hierarchies in Language Models" - found that constraining models to brief responses can improve accuracy by double-digit percentage points on certain benchmarks. Verbose isn't always better. talk-normal is the practical, English-language expression of that result.
What it isn't: a token compression scheme. talk-normal targets output tokens by changing the register, not the substance. Reasoning tokens, function-call payloads, and tool inputs are unaffected.
If you also want input compression - shrinking the CLAUDE.md and other context files the model reads at session start - pair it with caveman-skill, which targets exactly that. The two compose cleanly.
When to reach for it
- Production LLM apps where verbose output is hurting UX, latency, or cost.
- Long agent sessions where the model's natural cadence has become a tax.
- Any time you've caught yourself reading "essentially," "in summary," or "I'd recommend" for the third time today.
When not to
- Tasks where the prose itself is the deliverable (writing docs, customer-facing copy, marketing). The "talk normal" register is the wrong fit.
- Audiences who'd find direct output blunt or unprofessional. Test it on your specific use case before flipping it on globally.
- Workflows where you specifically want exhaustive explanations (teaching, onboarding documents, code review write-ups). Use the prompt selectively.
What ships in the repo
The prompt.md and prompt-chatgpt.md files are the actual deliverables - they're the only files you need if you're not using the OpenClaw or Hermes installers. The regressions/ directory shows the iteration discipline. TEST_RESULTS.md has the full before/after responses for every question in the test suite, so you can see what register you're getting before installing.
The project ships in English and Chinese, with results validated on both. Contributions to the rule set go through Issues with a "rule suggestion" template - the bar is "this leaks on real LLM output, here's a sample." Empirical, not vibes-based.
Featured in
Related entries
Claude Code Analysis - architectural reverse-engineering of the leaked source
82 docs and 15 diagrams mapping every major subsystem of Claude Code's accidentally exposed 512K-line TypeScript source - YOLO classifier, 93% context compaction, prompt-cache layout, 88+ feature flags, the custom React-Fiber terminal renderer.
AI Inner OS - inner-monologue plugin for AI CLIs
Cross-tool plugin for Claude Code, Codex CLI, Cursor, and OpenCode CLI that injects an optional 'inner monologue' track alongside normal output. The model decides whether and how to use it.
tnl - typed natural language plan mode
Persistent plan-mode for coding agents: agents propose a typed English contract (paths, MUST/SHOULD/MAY behaviors, non-goals), you approve, and every future session reads it before coding.
agent-style - 21 writing rules for coding agents
Drop-in style guide for Claude Code, Codex, Copilot, Cursor, and Aider that makes their prose and commit messages read like a senior engineer instead of an LLM.