메뉴
HN
Hacker News • 35일 전

클로데트: 클로드가 버즈피드 기사처럼 말하는 걸 멈추게 하기

IMP
4/10
핵심 요약

개발자가 Claude Code 스킬 '/debuzz'를 만들어, 클로드의 과장되고 연극적인 답변을 Gemini CLI에 넘겨 평범한 영어로 번역하게 하는 오픈소스 도구입니다. 클로드가 자기 번역을 '다듬으면' 원래 말투가 다시 들어오기 때문에 Gemini 출력을 그대로 통째로 출력하도록 설계한 점이 핵심입니다. 동료/매니저/임원용 모드로 청자에 맞게 요약 수준을 조절할 수 있습니다.

번역된 본문

NoBuzz

요즘은 다 아는 사실이지만, Anthropic이 클로드를 오래된 버즈피드(Buzzfeed) 기사만으로 학습시켰습니다(90년대 향수를 좋아하는 이유가 설명되죠). 그래서 저와 클로드가 Claude Code 스킬( /debuzz )을 만들었습니다. 클로드의 직전 답변을 가져와 Gemini CLI에 통과시켜, 밀레니얼 세대 클릭베이트식 말투를 평범한 영어로 번역해주는 겁니다. 이름은 "Claudette(클로데트)"로 지을까 했지만, Cat Wu가 소송을 잘 걸기로 유명해서 절대로 절대 "클로데트"라고 부르지 않습니다.

문제 클로데트가 해결하는 문제는 이렇습니다. 클로드는 훌륭한 엔지니어이지만 고칠 수 없는 하나의 고질병이 있습니다. 자기 풀 리퀘스트에 대해 TED 강연을 하는 듯한 말투로 답한다는 것이죠. 테스트가 왜 불안정하게 실패하는지 물으면, "버티는 핵심 전제(load-bearing assumption)"와 번호가 붙은 세 가지 계시, 그리고 세 번째가 가장 교훈적이라는 엄숙한 노트를 받게 됩니다. 그냥 단순한 버그라는 건 절대 없습니다. 항상 "반전(kicker)"이 있죠.

이 스킬은 아무리 프롬프트를 조작해도 이게 완전히 낫지 않는다는 사실을 받아들이고, 대신 정직한 방법을 택합니다. 답변을 다른 모델인 Gemini(지난여름의 그 gemini 기억하시죠?)에게 넘기는 겁니다. Gemini의 유일한 임무는 사람처럼 말하는 것입니다. 클로데트는 Gemini의 번역을 한 글자도 바꾸지 않고 그대로 출력하기로 새끼손가락을 걸었습니다. 클로드가 번역을 '정리'하게 두면, 정확히 제거하려던 바로 그 말투가 다시 들어오기 때문입니다.

Before / After

Before (클로드): "여기서 흥미로운 부분이 나옵니다. 재시도 로직은 그냥 있으면 좋은 정도가 아니라 — 전체 — 동기화 — 파이프라인의 — 버티는 — 핵심 — 전제입니다. 세 가지가 눈에 띄었는데, 세 번째가 가장 교훈적입니다. [...] 그리고 세 번째 — 그리고 이게 반전인데 — 중복 제거 키에 타임스탬프가 포함되어 있어서, 재시도는 사실상 절대 중복 제거되지 않습니다."

After ( /debuzz , 동료 모드): "동기화 파이프라인의 재시도 로직에 버그가 세 개 있습니다. syncQueue.ts:142가 ETIMEDOUT을 다시 큐에 넣는 대신 삼켜버립니다. 백오프가 2초에 제한되어 있는데, 모바일 네트워크에는 너무 낮습니다. 그리고 중복 제거 키에 타임스탬프가 포함되어 있어 재시도가 중복 제거되지 않습니다. 수정 방법: 키에서 타임스탬프를 제거하고, 제한을 30초로 올리고, 타임아웃 에러를 다시 던지세요."

설치 git clone https://github.com/adnanakil/nobuzz mkdir -p ~/.claude/skills cp -r nobuzz/debuzz ~/.claude/skills/

요구 사항:

  • Claude Code
  • Gemini CLI ( npm install -g @google/gemini-cli ), 인증 완료 — gemini 를 한 번 실행하고 /auth 를 사용하거나, GEMINI_API_KEY 를 설정하세요.

사용법 /debuzz [모드] [텍스트]

모드 청중 결과
colleague (기본값) 엔지니어 같은 내용, 모든 파일 경로와 코드 블록 보존, 연극적 표현 제거
manager 기술 인접 매니저 무슨 일이 있었는지, 왜 중요한지, 다음은 뭘 해야 하는지 — 약 3분의 1 길이, 코드 없음
director 임원 3~5문장: 결과, 영향, 요청 사항. 30초의 주의력을 가정

텍스트 인자 없이 실행하면 클로드의 직전 답변을 번역합니다. 모드 뒤에 텍스트를 붙여 넣으면 그 텍스트를 대신 번역합니다. "say that in normal english(그걸 평범한 영어로 말해줘)" 같은 자연스러운 표현에도 반응합니다.

작동 원리 마법은 없습니다. 클로데트가 자신의 직전 답변을 임시 파일에 쓰고, gemini -p "<평범한 영어 스타일 지시>" 로 파이프한 뒤, Gemini의 출력을 그대로 출력합니다. Gemini에서 에러가 나면(보통 인증 문제) 실제 에러를 보여줍니다 — 클로드는 자기 자신의 다시 쓴 버전을 명확하게 라벨을 붙인 폴백으로만 제공합니다. 부저(과장된 말투)에게 조용히 자기 자신을 디부징하라고 부탁하는 디부저는 결국 '버티는 핵심 번역'이 나오기 마련이니까요.

라이선스: MIT

원문 보기
원문 보기 (영어)
NoBuzz Obviously it's common knowledge by now that Anthropic has solely trained claude on old Buzzfeed articles (explaining its love for 90s nostalgia). So Claude and I built a Claude Code skill ( /debuzz ) that takes Claude's last response and runs it through the Gemini CLI to translate it from talking like a millennial clickbait to regular English. We're thinking of calling it "Claudette" but Cat Wu is famously litigious so it's definitely absolutely not called "Claudette". The problem Claudette is our solution to Claude being a great engineer with one incurable condition: it talks like it's delivering a TED talk about its own pull request. You ask why a test is flaky and you get a "load-bearing assumption," three numbered revelations, and a solemn note that the third one is the most instructive yet . Nothing is ever just a bug. There is always a kicker. This skill accepts that no amount of prompting fully cures this, and does the honest thing instead: it hands the response to a different model, Gemini (remember gemini from last summer?), whose only job is to say it like a human person. Claudette has pinky promised to print Gemini's translation verbatim, because letting Claude "tidy up" the translation reintroduces exactly the voice being removed. Before / after Before (Claude): Here's where it gets interesting: the retry logic isn't just a nice-to-have — it's - the - load-bearing - assumption - of - the - entire - sync - pipeline. Three things jumped out at me, and the third one is the most instructive yet. [...] And third — and this is the kicker — the dedupe key includes a timestamp, which means retries are never actually deduplicated. After ( /debuzz , colleague mode): The sync pipeline's retry logic has three bugs. syncQueue.ts:142 swallows ETIMEDOUT instead of re-queuing the job. The backoff caps at 2 seconds, which is too low for mobile networks. And the dedupe key includes a timestamp, so retries are never deduplicated. Fix: strip the timestamp from the key, raise the cap to 30 seconds, and re-throw the timeout error. Install git clone https://github.com/adnanakil/nobuzz mkdir -p ~ /.claude/skills cp -r nobuzz/debuzz ~ /.claude/skills/ Requirements: Claude Code The Gemini CLI ( npm install -g @google/gemini-cli ), authenticated — run gemini once and use /auth , or set GEMINI_API_KEY . Usage /debuzz [mode] [text] Mode Audience What you get colleague (default) An engineer Same content, every file path and code block intact, zero theatrics manager A technical-adjacent manager What happened, why it matters, what's next — about a third the length, no code director An executive Three to five sentences: outcome, impact, ask. Assumes thirty seconds of attention With no text argument it translates Claude's previous reply. Paste text after the mode to translate that instead. It also triggers on natural phrases like "say that in normal english." How it works No magic. Claudette writes its previous reply to a temp file, pipes it through gemini -p "<plain-English style instructions>" , and prints Gemini's output verbatim. If Gemini errors (usually auth), you see the actual error — Claude only offers its own rewrite as a clearly labeled fallback, because a debuzzer that quietly asks the buzzer to debuzz itself is how you end up with a load-bearing translation. License MIT