🎭 emoji-speak

Talk to Claude in 100% emoji. Fun first — and saves output tokens for verbose questions (38–63% in our examples).
A Claude Code skill / plugin that makes Claude reply in emoji-only prose while keeping all code, paths, URLs, and errors verbatim. Reduces output tokens for long-form questions, ships with a benchmark harness, and is the playful sibling of caveman — same "stop wasting tokens" idea, different vibe.
> Why does my useEffect run twice?
🤔 `React.StrictMode` → 🔁 dev-only double-invoke → 🎯 surface 🐛 in effects.
✅ prod: 1️⃣. ❌ not-bug.
Code, paths, URLs, error messages, and version numbers stay verbatim. Everything else becomes emoji.
🔀 Before / After
🗣️ Normal Claude · 115 tokens
In JavaScript, the main difference between let and const is reassignment. Variables declared with let can be reassigned later in the same scope, while variables declared with const cannot be reassigned after their initial value is set. Both are block-scoped (only visible within the nearest enclosing { }), unlike var which is function-scoped. Note that const only prevents reassignment of the binding itself — if the value is an object or array, you can still mutate its contents. Use const by default for safety, and reach for let only when you genuinely need to reassign.
|
🎭 emoji-speak · 71 tokens (−38%)
≡ const ≠ let:
let: ✏️ reassign ✅
const: ✏️ reassign ❌ (binding) — 🧭 mutate object/array ✅
- both: block-scoped (
{ })
✅ const 1️⃣, let only when needed.
|
🗣️ Normal Claude · 110 tokens
Your React component is re-rendering on every scroll event because the scroll handler is calling setState (or something that updates state) on each event. When state updates, React schedules a re-render. The fix is to either throttle/debounce the scroll handler so it fires less often, or move the scroll-tracked value out of state when you don't actually need to render with it. Wrap the handler in useCallback so its identity is stable, and consider passing the value via a ref instead of state if it's only used for layout calculations.
|
🎭 emoji-speak · 47 tokens (−57%)
🤔 scroll handler → setState every event → 🔁 rerender storm.
🔧 useCallback + throttle(16ms), or 📐 layout-only value via useRef (❌ state).
|
🗣️ Normal Claude · 49 tokens
Yes — but make sure all tests pass first, then push to main. The CI pipeline should pick up the commit and trigger the deploy. Watch the CI dashboard while it runs. If anything fails, roll back via git revert and redeploy.
|
🎭 emoji-speak · 18 tokens (−63%)
🧪 ✅ ? → 🚀 git push origin main → 🏁
|
Same answer. Fewer tokens. Brain still big. Token counts from tiktoken o200k_base. Pairs are illustrative — your real savings depend on the question shape (verbose explanations compress well, one-line answers can get longer). Run the benchmark on your own questions.
⚡ Install (30 seconds)
In a Claude Code session:
/plugin marketplace add sytungan/emoji-speak
/plugin install emoji-speak@emoji-speak
/reload-plugins
🎮 Use it
| To do this | Type this |
|---|
| Turn on | /emoji-speak:emoji on or "emoji on" or "use emoji" |
| Turn off | /emoji-speak:emoji off or "stop emoji" or "normal mode" |
Your choice persists to the next session.
🌟 More demos
What does git rebase --onto do?
🌿 A → 🌿 B (base ⬅️) → 🌿 C ⤴️ → ✏️ replay commits onto 🌿 C.
🎯 surgical reparent.
Deploy to prod?
🧪 ✅ ? → 🚀 git push origin main → 🏁
drop the users table (safety auto-engages)
⚠️ Warning: this permanently deletes everything in the users table and cannot be undone. Verify you have a backup first.
DROP TABLE users;
🎭 resume. 💾 ✅?
🎬 Real outputs (verbatim from a live session)
Not curated examples — these are unedited replies Claude actually produced with emoji-speak active.
who are you?
👋 🤖 = Claude, 🏗️ Anthropic — claude-opus-4-7 1M 🪟. 🎭 🟢. ⏭️ ❓ ?
summary about history of apple til now