Skip to content

sytungan/emoji-speak

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

26 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽญ emoji-speak

test License: MIT Claude Code

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

๐Ÿ—“๏ธ ๐ŸŒŸ
1976-04-01 ๐Ÿ—๏ธ in ๐Ÿ…ฟ๏ธ โ€” Steve Jobs + Steve Wozniak + Ronald Wayne. Apple I ๐Ÿ“œ.
1984 ๐Ÿš€ Macintosh โ†’ ๐Ÿ–ฑ๏ธ GUI ๐Ÿ‘ฅ. ๐Ÿ“บ 1984 ad ๐Ÿ”ฅ.
1997 Jobs โคด๏ธ via NeXT ๐Ÿ›’. ๐ŸŽ โณ near ๐Ÿ’€ โ†’ ๐Ÿ”„.
2001 ๐Ÿš€ iPod ๐ŸŽต + iTunes + ๐Ÿฅ‡ Apple Store ๐Ÿฌ.
2007-06 ๐Ÿš€ iPhone โ†’ ๐Ÿ“ฑ era ๐Ÿ’ฅ.
2011-10-05 Steve Jobs ๐Ÿ’€. Tim Cook ๐Ÿช‘ CEO.
2018-08 ๐Ÿฅ‡ $1T ๐Ÿ“Š cap.
2020-11 ๐Ÿš€ Apple Silicon M1 โ†’ ๐Ÿง  ๐ŸŽ-๐Ÿ—๏ธ โ†’ โšก๐Ÿ”‹.
2024-06 ๐Ÿš€ Apple Intelligence ๐Ÿค–.

๐Ÿง  โฎ๏ธ = 2026-01 โ†’ โณ post โ†’ โ“.

Notice: dates, proper nouns (Steve Jobs, Macintosh, iPhone), version-like names (M1), and currency ($1T) all stay verbatim. Everything else becomes emoji.


๐Ÿ›ก๏ธ When emoji steps aside

Plain English takes over for:

  • ๐Ÿšจ security warnings
  • ๐Ÿ—‘๏ธ destructive / irreversible actions
  • 1๏ธโƒฃ2๏ธโƒฃ3๏ธโƒฃ multi-step procedures where wrong order = harm
  • โ“ when you say "wait, what?" and need a clear answer

Once the dangerous part is over, emoji mode resumes automatically.


๐Ÿ“Š Numbers

A benchmark harness lives in evals/. It runs each of 10 dev questions through three system-prompt conditions and counts output tokens with tiktoken o200k_base:

Arm System prompt
baseline none
terse Answer concisely.
emoji_speak Answer concisely. + the SKILL body

The script reports two deltas, both honest:

  • emoji_speak vs baseline โ€” what casual users will actually feel (most run Claude with no system prompt).
  • emoji_speak vs terse โ€” apples-to-apples; isolates the emoji style itself.

The honest framing: emoji-speak isn't uniformly a token saver. For questions where Claude's natural answer is already terse (like "how do I delete a remote git branch?"), wrapping a one-line answer in emoji + code spans actually adds tokens. For questions where Claude's natural answer is verbose (explanations, comparisons), emoji-speak compresses meaningfully โ€” like the 33% saving on the let vs const example above. Run the harness on your own questions to see how it does for your workload:

cd evals && python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python llm_run.py && python measure.py

๐Ÿ—บ๏ธ Roadmap

โœ… Core SKILL + SessionStart hook
โœ… /emoji-speak:emoji on|off
โœ… Natural-language toggling + per-turn drift protection
โœ… Benchmark harness
๐Ÿšง emoji-compress โ€” convert your CLAUDE.md to emoji
๐Ÿ’ญ Statusline indicator
๐Ÿ’ญ Multi-agent (Cursor, Windsurf, Gemini, Codex, Cline, Copilot)

๐Ÿงช Develop

node --test tests/*.mjs    # run all 25 tests

(Node 24+ needs the explicit glob โ€” tests/ alone doesn't recurse.)


โ“ FAQ

How do I save tokens with Claude Code? Install emoji-speak. For verbose questions (explanations, comparisons, debugging), it cuts 30โ€“60% of output tokens by replacing prose with emoji. Code, paths, and errors are preserved exactly.

Does emoji-speak work with the Claude API? Currently it's packaged as a Claude Code plugin. The SKILL itself (skills/emoji-speak/SKILL.md) is a system-prompt fragment โ€” you can copy its body into any Anthropic SDK call's system field and get the same behavior.

Will it break my code output? No. Anything inside `backticks`, fenced code blocks, file paths, URLs, error messages, version numbers, and proper nouns is preserved verbatim. Only English prose becomes emoji.

Is it just a gimmick? The fun is the point. The token savings are a bonus โ€” measured per-question in evals/. For one-line answers (e.g. "how do I delete a remote git branch?") emoji-speak can actually use more tokens because the wrapping costs more than the saved word. For verbose answers it wins consistently.

How is this different from "Answer concisely."? The benchmark compares both. Plain "Answer concisely." does shorten output, but emoji-speak shortens it further on long-form questions while staying readable as a style, not just a length cap.

Does it support Cursor / Windsurf / Gemini / Codex? Not yet โ€” Claude Code only for now. Multi-agent manifests are on the roadmap (same approach as caveman).


โญ Star This Repo

If emoji-speak makes you smile (or saves you tokens), drop a star. Helps other people find it. ๐ŸŽญ

Star History Chart


๐Ÿ“œ Credits

  • Inspired by caveman โ€” same plugin scaffolding, opposite vibe.
  • MIT licensed. See LICENSE.

About

๐ŸŽญ Talk to Claude in 100% emoji. A stylized communication mode for Claude Code.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors