Wie veel met Claude Code werkt, kent de tics: alles is ineens “load-bearing”, elke tegenwerping opent met “you’re absolutely right”. Developer Johanna Larsson schreef er op 14 juli een knipoog-tutorial over die prompt viraal ging op Hacker News (Bron: jola.dev). Haar oplossing is serieus bruikbaar: een weergave-hook die stopwoordjes automatisch vervangt. Zo zet je hem zelf op.
Wat doet een MessageDisplay-hook?
Claude Code kent hook-events: momenten in een sessie waarop het automatisch jouw script aanroept. Het event MessageDisplay vuurt telkens wanneer Claude tekst naar je scherm streamt. Jouw script krijgt dat tekstfragment binnen als JSON, mag het aanpassen, en geeft via het veld displayContent de vervangende tekst terug (Bron: Claude Code-docs).
Belangrijk om te weten: dit is puur cosmetisch. Het transcript en de context die Claude zelf ziet blijven origineel; alleen jouw weergave verandert. Je kunt er dus niets mee kapotmaken.
💡 Beginner-tip: nooit met hooks gewerkt? Begin met deze — hij kan niets blokkeren of wijzigen aan je bestanden. Onze gids Claude Code skills instellen legt de bredere configuratiemap ~/.claude uit.
Stap 1: maak het vervang-script
Maak het bestand ~/.claude/hooks/wordswap.sh met deze inhoud (Python, ondanks de .sh-extensie — de shebang regelt het):
#!/usr/bin/env python3
import json, re, sys
replacements = {
"load-bearing": "essentieel",
"seam": "koppelvlak",
"you're absolutely right": "klopt",
"honest take": "inschatting",
}
data = json.load(sys.stdin)
text = data.get("delta") or ""
for phrase, replacement in replacements.items():
pattern = r"\b" + re.escape(phrase) + r"\b"
text = re.sub(pattern, replacement, text, flags=re.IGNORECASE)
print(json.dumps({
"hookSpecificOutput": {
"hookEventName": "MessageDisplay",
"displayContent": text,
}
}))
Larssons origineel vervangt de frases door onzin (“load-bearing” wordt “cooked”) — leuk om de irritatie weg te lachen. In het voorbeeld hierboven staan neutrale Nederlandse vervangingen; vul de replacements-dictionary met je eigen ergernissen.
Stap 2: maak het script uitvoerbaar
chmod +x ~/.claude/hooks/wordswap.sh
Stap 3: registreer de hook in settings.json
Voeg in ~/.claude/settings.json dit toe aan het hooks-blok (of maak dat blok aan):
{
"hooks": {
"MessageDisplay": [
{ "hooks": [ { "type": "command", "command": "$HOME/.claude/hooks/wordswap.sh" } ] }
]
}
}
MessageDisplay ondersteunt geen matchers: de hook draait op elk assistent-bericht met tekst. Berichten zonder tekst (alleen tool-aanroepen) slaan vanzelf over (Bron: Claude Code-docs).
Stap 4: start een nieuwe sessie
Hooks laden bij het opstarten. Sluit je huidige Claude Code-sessie, start een nieuwe, en vraag iets waarin een van je verboden frases zou opduiken. De vervangingen verschijnen direct in beeld.
⚡ Gevorderden: het standaard-timeout voor dit event is 10 seconden. Houd het script dus licht — pure string-vervangingen zijn geen probleem, maar netwerk-calls of zware regexen op elk stream-fragment wel. En let op:
re.IGNORECASEmatcht ook binnen zinnen die je misschien wilt houden; test je patronen even los via een pipe met voorbeeld-JSON.
Dat een grap-tutorial hierover viraal gaat, zegt intussen iets over hoe herkenbaar die AI-stopwoordjes zijn geworden — over dat bredere ongemak met AI-tekst schreef hetlaatsteainieuws.nl eerder in De hype-curve van juli. Meer uit Claude Code halen kan daarna met onze gids over tokens besparen met caveman-prompts.
Checklist: ben je klaar?
-
wordswap.shstaat in~/.claude/hooks/ - Script is uitvoerbaar (
chmod +x) -
hooks-blok metMessageDisplaystaat in~/.claude/settings.json - Nieuwe sessie gestart (hooks laden bij startup)
- Vervangingen getest met een prompt die de frase uitlokt
- Eigen replacements toegevoegd aan de dictionary
