Skip to content

About

Claude Code mod: picks the reasoning effort for every prompt, shows the prompt cache and context, and hands off or compacts in one click

Topics

Resources

Stars

148 stars

Watchers

0 watching

Forks

Repository files navigation

effortless, a Claude Code mod: one bar above the prompt that picks the reasoning effort for every prompt

Website · Install · What it shows · Judges

effortless-short-v3.mp4

A Claude Code mod that picks the reasoning effort for every prompt. Quick questions get Low, hard jobs get High, and you never touch the Effort control. On real coding tasks it cut the cost of Opus by 21% against Anthropic's recommended medium, 29% against high and 42% against xhigh, with every answer still right (the benchmark). One bar above the prompt also shows how full the chat is, how long the prompt cache stays warm, and hands off or compacts in one click when a chat gets heavy.

effortless in a Claude Code chat: effort per prompt, Handoff, cold cache, heavy chat, limits and settings

Powered by Haiku 5.5

Haiku 5.5 costs about 75% less than Haiku 4.5, and Anthropic names compaction and quick, well-defined work among what it is built for. effortless uses it in three places:

The judge reads each prompt and picks the effort, in about a second, on your own Claude login
Cheaper model when it can experimental, off by default. When on, a prompt the judge calls simple may run on Haiku 5.5 (or Sonnet), never above your chat's model, but only when the switch pays: each model keeps its own prompt cache, so in a chat that is in use the switch usually costs more than it saves (why)
Compaction every compaction, /compact and the automatic one included, is summarized by Haiku 5.5. If Haiku fails, Claude Code compacts as usual

The cheaper model is switched on in Settings → Model; compaction is switched in Settings → Handoff → Compact with.

Install

Two ways. Both take a minute and need no terminal.

1. Ask Claude (easiest). Paste this into Claude Code and press Enter:

Install the effortless plugin for me: run `claude plugin marketplace add HeyCubit/effortless` and then `claude plugin install effortless@effortless`. When both succeed, tell me to run /reload-plugins.

2. Commands. Type these two lines in Claude Code's chat box:

/plugin marketplace add HeyCubit/effortless
/plugin install effortless@effortless

Or in a terminal, in one line:

claude plugin marketplace add HeyCubit/effortless; claude plugin install effortless@effortless

Then run /reload-plugins (or restart Claude Code). A short setup opens above the prompt: keep Haiku alone (one click, no key, runs on your own Claude login) or add Jev (a TypeSafe key, about 4x faster effort calls), lean cheaper or smarter, and pick how handoffs are written. Run /effortless setup to go through it again, or change any of it in ⚙.

Updates come to you: when a new version is out, a card above the prompt offers Update or Later. Update loads the new version in the chat you pressed it in, with nothing to type.

What the bar shows

The bar: Deciding, then Low for a quick question, then High for a refactor

On the bar Means
High · Opus the effort Auto picked for this prompt, and the model the chat runs on. Deciding while the judge thinks; a switch flashes violet and fades to white
◔ 38% how full the chat's context is
cache 59:00 time until the prompt cache goes cold, after which the next message pays full price to re-read the chat
Haiku: a refactor… who judged and why
Auto switches the judge on and off. Changing effort in the app yourself also turns Auto off at your next message, and says so: you always win
Compact compacts the chat. It turns into a glowing Handoff when Haiku says a fresh chat would pay off, with Compact as quiet text beside it. Set Settings → Handoff → Handoff button to Always to keep Handoff on the bar
⚙ settings

Prefer it quiet? Settings → Customize has a Minimal look with no bar. It also sets the Appearance (match Claude Code, dark or light) and the Theme (violet, Claude orange or cherry blossom).

When a chat gets heavy

When the cache has gone cold on a big chat, the bar turns to ice with Compact and Handoff:

The Chat went cold bar, breathing

Handoff writes a summary of the chat and carries on in a clean one. Quick takes a few seconds; Full checks git and saves HANDOFF.md (or runs your own skill). Then clear and carry on, clear and wait, or keep the chat and copy.

The Handoff bar with Quick and Full

Compact takes an optional note for what the summary should keep. Every compaction, also /compact and the automatic one, is written by Haiku 5.5 by default, which Anthropic recommends for compaction at a fraction of the chat model's price; if Haiku fails, Claude Code compacts as usual. Switch it in Settings → Handoff → Compact with.

The Compact bar with an optional summary field

The bar also warns when a chat is getting swamped (each message re-reads a lot of context), when a 5-hour or weekly limit passes 80% (with a Save mode that caps effort at Medium), and when your judge stops answering.

Settings

The settings panel: Effort, Judge, Handoff, Customize

Haiku, and Jev if you add it

Haiku 5.5 runs on your own Claude login and needs no key. It always makes the handoff call: from 30% of context, every second message, it reads what the chat was for, the trail of topics, the last reply and how full the context is, and says a fresh chat would suit only for a clear reason. Then the Compact button turns into a lit Handoff with the reason. Want Handoff on the bar all the time? Settings → Handoff → Handoff button → Always.

Haiku also picks the effort, unless you add Jev, TypeSafe's faster judge (about 0.25 s against about 1 s). With a key, Jev answers the effort first and Haiku steps in whenever Jev is unsure. Run /plugin configure effortless@effortless in Claude Code, or use the setup guide or the Judge card in Settings.

Setting What it does
auto (default) Haiku, and Jev too when a TypeSafe key is set in the settings or TYPESAFE_API_KEY
haiku Haiku only, a key is never used
jev Haiku and Jev, and the key may also come from ~/.config/jev/.env

A key set with /plugin configure is kept in Claude Code's secure storage. A key pasted in the setup guide or the Judge card is written in plain text to ~/.config/jev/.env (the file the jev skills read), never to a file of this repo. If Jev fails or takes longer than 3 seconds, Haiku judges that prompt and effortless tells you why once per session (out of credits, key rejected, no answer).

Short follow-ups such as "go", "ok" or "yes" keep the effort already picked and ask no judge.

Keys and trust

  • The default judge needs no key: Haiku runs on your own Claude login.
  • A key is only needed to add Jev. Enter it with /plugin configure, never on the command line, so it stays out of your shell history: Claude Code then keeps it in its secure storage. A key pasted in the setup guide or the Judge card is saved in plain text to ~/.config/jev/.env instead, so prefer /plugin configure on a shared machine.
  • A key is sent only to TypeSafe, and to nothing else. Use a key with a spending limit if your provider offers one.
  • Like any Claude Code plugin, this mod runs code on your machine. Its code is in hooks/: read it before you install if you do not know the author. The programs it starts are claude itself (to update or uninstall the mod when you press those buttons), git (to see if a new version is out) and, on Update, a plain file copy of the new version into the folder your open chat runs from.

What it saves, measured

Four real coding tasks in a fresh copy of this repo, each run 3 times with effortless on and with it off, through Anthropic's API so the cost is real. Every answer was checked. Run 2026-10-10, 96 runs:

Opus 5.5 Correct Cost per task Requests Time
medium (recommended), no effortless 12 of 12 $0.190 7.3 24 s
high, no effortless 12 of 12 $0.209 8.0 27 s
xhigh, no effortless 12 of 12 $0.257 9.9 44 s
effortless on 12 of 12 $0.149 5.8 20 s

That is 21% less than medium, 29% less than high and 42% less than xhigh. On Sonnet it came out even against medium (Sonnet at medium is already lean) and saved 10% against high and 35% against xhigh.

The saving comes from fewer steps: every request rereads the whole chat, and at a lower effort the model makes fewer of them. Over 80k requests of real Claude Code use, about 76% of the cost was that reread, 16% cache writes and 8% output. Keeping chats short and compacting before the cache goes cold saves on the same 76%; that is what the countdown is for.

Limits: four tasks, three runs each, mostly easy work where effortless goes low. On hard work it picks more effort and saves less. Fresh chats through the API, not long chats on a plan. Run it again with bash bench/agentic/run.sh; all numbers and limits are in bench/RESULTS.md.

Why model switching is off

Moving a simple prompt to Haiku looks cheap on a single prompt: the cheaper answers were good enough in 27 of 30 and cost 60 to 77% less. But each model keeps its own prompt cache, so a prompt moved mid-chat has to write the whole chat into the other model's cache first. Measured on an 80k-token chat, that costs about 5 times what staying on a warm Opus does (10 times for Sonnet). So Cheaper model when it can is off by default and marked experimental. Details.

How often the judge is right

/effortless bench runs labelled prompts through each judge you have set up, using the same code a real prompt goes through, and scores them against a fixed effort. Each case lists the efforts a careful person would accept for that message on that model. The cases are in bench/judge-cases.json; run it yourself.

Two runs on version 1.5.1, 73 cases, Sonnet and Opus 5.5:

Judge Right, all 73 Right, 20 held out Too low Too high Median time
Always medium 44% 40% 17 24 -
Always high 51% 50% 0 36 -
Haiku 92-93% 95% 1 4-5 0.75 s
Jev 99% 100% 0 1 0.24 s

What this does and does not show:

  • It measures whether the judge picks a sensible effort, not how much a session costs or how good the answers are.
  • 73 cases is a small set, and the judges are not fully deterministic: runs differ by a few points.
  • The judge prompts were tuned on 53 of the cases. The 20 held-out cases were never tuned against, so that column is the honest one. They were written after the first run showed which kinds of message miss, so they are not blind.
  • Haiku's remaining misses are mostly "yes" or "thanks" after hard work, where it keeps the effort high.

Models

Effort only changes on Opus 5.5 and Sonnet 5.5. On Fable 5.1 and older models a change of effort between requests rewrote most of the prompt cache, which costs more than it saves, so Auto pauses there and the footer says Paused. Haiku takes no effort setting.

Split view

In the desktop app's split view, Claude Code draws plugin bars only in the left pane. The right pane still draws replies, so when a chat went cold, is getting swamped or runs hot, a small card in the bar's colours hangs under the newest reply, naming the command that does what the bar's button would: /compact, /effortless handoff or /effortless save.

In the terminal

effortless draws in the terminal CLI too, with moving pixel art in its bands. Claude Code may not load a plugin's code there yet: if /effortless says the mod is not loaded after a restart, add this to ~/.claude/settings.json and restart:

{ "env": { "CLAUDE_CODE_ENABLE_FUNCTION_HOOKS": "1" } }

Tested on Claude Code 2.1.285 (stable), 2.1.286 and 2.1.288 at 80 and 120 columns. Below 90 columns the bands leave their art out.

Commands

Command Does
/effortless settings opens the settings panel
/effortless setup runs the setup again
/effortless auto Auto on or off
/effortless handoff / handoff full hands off without the bar, with your last choice of what follows
/effortless stats what the prompts Auto steered cost this session, per effort, and what the judge took
/effortless cold, swamp, hot, down shows that bar now, to try it
/effortless bench scores each judge you have on the labelled prompts in bench/judge-cases.json
/effortless debug what the mod sees, and on its last line the model and effort the last request ran on
/effortless update checks for a new version now

Open source

effortless is MIT licensed. Like any Claude Code plugin it runs code on your machine, so the whole mod is here to read: hooks/. It sends nothing anywhere except your prompt to the judge you picked.

Develop

claude plugin validate .
claude plugin test .
claude --plugin-dir .

tools/render-band draws the bar the way the desktop app does, without opening it; the images in this README come from it.

License

MIT

About

Claude Code mod: picks the reasoning effort for every prompt, shows the prompt cache and context, and hands off or compacts in one click

Topics

Resources

Stars

148 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages