Find out which model and effort level each part of your Claude Code project uses, see what is unnecessarily expensive, and measure before switching.

right effort is a free kit for people who use Claude Code with projects and bots. It reads your project's settings, agents, and scripts, then shows which model (Fable, Opus, Sonnet, Haiku) and effort level each one uses. Effort is how much the model thinks before responding, on a five-level scale: low < medium < high < xhigh < max. It points out what is unnecessarily expensive, provides a ready-to-paste rule for your CLAUDE.md, and includes a test that runs the same task at two effort levels through your subscription so you can compare. You need Python 3 and, for the test, Claude Code; the audit uses no internet or API.
When Fable 5.2 launched (Nov 9, 2026), Anthropic itself recommended starting with Opus 5.5 and moving up to Fable only for the hardest work. This kit turns that advice into something you can apply and check.
auditar.py scans settings, agents, skills, scripts, timers, and code that calls the API, then lists what fixes the model and effort. It flags a fixed Max, Xhigh as the default, and Fable as the default.
politica/CLAUDE-esforco.md is the block to paste into CLAUDE.md. The agentes/ folder includes three ready-made agents: everyday work (Opus, medium), long tasks (Fable, high), and mechanical work (Haiku, low).
ab.sh runs the same request with two or more model and effort combinations, then creates a report with time, tokens, equivalent cost, the model that actually ran, and whether your test passed.
FrontierCode 2.0 measures whether people who maintain open-source projects would accept the model's code. Values read from the cost-per-task chart on Anthropic's page (the company's own tests).
45.3% at about US$ 7 per task. Ties the best score from Opus 5.5 at about half the cost.
45.5% at about US$ 13 per task: Opus's best score, at the highest effort level. (For everyday work, Anthropic recommends Opus; the kit's rule uses medium.)
49.1% at about US$ 15. The highest score among the released models Anthropic tested.
~45.7% at about US$ 45: lower than xhigh, at about 3× the cost. That's why Max is not the default.
Two things to keep in mind. At medium effort, Fable scores about 3 points higher than Opus at the same cost; and in another test (hardware design), the best result came at Max. The rule is not "never Max"; it's "Max only after measuring." The entire score table uses each model's highest available effort, while Claude Code defaults to medium: those scores do not reflect what you run.
Nothing changes on its own: the kit reads and suggests; you choose whether to change the model or effort level.
Linux, macOS, or WSL. The audit works on its own; the A/B test uses Claude Code signed in to your subscription.
For auditar.py (standard library only).
# check python3 --version
For ab.sh: the claude command in your PATH, signed in to your subscription.
# check claude --version
To download the kit and use the test's --editar mode (one project copy per combination).
# check git --version
Replace ~/meu-projeto with your project folder.
A small repository: two scripts, the rule, three agents, and Fable's reset plan (what a reset is: step 8).
git clone \ https://github.com/inematds/esforco-certo.git cd esforco-certo
First, a risk-free test on the sample project included in the kit (it intentionally produces 8 alerts). Then, your project: the list shows every place that fixes a model or effort level, with file and line. --home includes your ~/.claude (global settings, agents, and skills) and the user's systemd timers.
python3 auditar.py tests/fixture # kit sample python3 auditar.py ~/meu-projeto \ --home # your project python3 auditar.py ~/meu-projeto \ --json > aud.json # for another script to read
MAX: fixed max effort — switch to high (or xhigh if measuring shows a gain). PADRAO_ALTO: xhigh as the global or model default — every request pays for the top level. FABLE_PADRAO: Fable as the default model — it uses up your limit faster. The tips show bots using claude -p without --model (they inherit the account default); a tip is not an alert and will not make --estrito fail.
# where to change Claude Code's default (example) # this session only: claude --model opus --effort medium # or in .claude/settings.json: "model": "opus", "effortLevel": "medium"
Opus medium for everyday work, Fable high for long tasks, xhigh only after measuring, never Max as the default, and always use --model and --effort for bots.
cat politica/CLAUDE-esforco.md \
>> ~/meu-projeto/CLAUDE.md
Claude Code chooses an agent based on its description; each one already has the model and effort level in its header.
mkdir -p ~/meu-projeto/.claude/agents cp agentes/*.md ~/meu-projeto/.claude/agents/ # save the rule and agents in a commit (step 6 uses the latest commit) cd ~/meu-projeto && git add CLAUDE.md .claude/agents \ && git commit -m "model and effort: rule and agents" cd -
Without -c, it runs three combinations: opus:high, fable:medium, and fable:high (two with Fable, which uses up your limit faster). Without --editar, each run only reads the project. With --editar, each combination works in its own copy of the latest commit (git worktree), so the project must have no pending changes; --checar runs your test inside each copy. The copy does not include folders outside git (node_modules, .venv): install dependencies in --checar itself. The report shows time, tokens, the model that actually ran, and the equivalent cost — the price from the API price list; with a subscription, you use your limit, not dollars. Start with a small, real task.
./ab.sh "Review src/ and list the 5 most serious risks" \ --dir ~/meu-projeto ./ab.sh "Fix the broken test in tests/" \ --dir ~/meu-projeto --editar \ --checar "npm ci && npm test" \ -c opus:high -c fable:high # result: ~/meu-projeto/.ab/resultado-<data>/RESULTADO.md # (add .ab/ to the project's .gitignore)
With --estrito, the auditor exits with code 1 if there are alerts, and the CI step fails. This keeps anyone from accidentally leaving Max or Fable as the default. Copy auditar.py (a single file with no dependencies) into your project and call it in CI from the project root; it does not audit itself. Works on Linux and macOS (on macOS, ab.sh uses gtimeout from brew install coreutils, if available).
mkdir -p ~/meu-projeto/tools cp auditar.py ~/meu-projeto/tools/ # in the project's CI (e.g. a GitHub Actions step): python3 tools/auditar.py . --estrito
During the launch promotion, which runs through Nov 16, 2026, subscribers received 1 to 3 Fable resets: each reset clears Fable's usage counter so you can keep using it during the same week. On Pro and standard Team, Fable use can take up to half the plan's weekly limit. resets.md is the plan: choose a long task, prepare it in Opus, run it in Fable high, and wrap up in Opus. After Nov 16, the same plan works for any long task in Fable.
less resets.md claude --model fable --effort high # in the long-task session
It depends on who will run it. Asking in the conversation does not change the effort of the session you are speaking in; it changes the effort of the work you ask to delegate.
Writing "use high effort" in the conversation changes nothing: the model does not change its own effort. Use the /effort command (or /model to switch models), or start the session with the effort already set.
/effort high # or, when starting the session: claude --model opus --effort high
For delegated work, asking in the conversation works. Claude passes the model and effort to the subagent, and only sets the effort when you explicitly ask; without a request, the agent's default applies.
"do the review with an Opus subagent at high effort" "run this search on Haiku, low effort"
Written in CLAUDE.md, it counts as an explicit request in every session, with no need to repeat it. Agents with model: and effort: in the header, like the three in the kit, start with the right effort already set.
# in CLAUDE.md
- reviews: Opus on high
- mechanical tasks: Haiku on lowWith claude -p, effort is set only through the --effort option. Without it, the bot inherits the account default, and auditar.py will warn you.
claude -p --model opus --effort medium \ "summarize today's log"
Run on Nov 9, 2026: the kit's sample project, an INEMA production machine, and the A/B test itself. The last card shows one of the ready-made agents.
tests/fixture)# cd tests/fixture && python3 ../../auditar.py .
17 lugares fixam modelo ou esforço · 8 alertas · 3 dicas
Modelos: fable 6 · opus 5 · herda 2 · codex 2 · variavel 1 · haiku 1
- MAX ./scripts/api.py:4
- MAX ./scripts/rodar.sh:3
- FABLE_PADRAO ./.claude/settings.json:2
- PADRAO_ALTO ./.claude/settings.json:3
… e mais 4 alertas
Full report in exemplos/auditoria-exemplo.md (in Portuguese).
38 lugares fixam modelo ou esforço · 3 alertas - FABLE_PADRAO ~/.claude/settings.json (modelo padrão = fable) - PADRAO_ALTO ~/.claude/settings.json (Opus 5.5 em xhigh por padrão) - PADRAO_ALTO ~/.claude/settings.json (Fable 5.1 em xhigh por padrão)
Exactly what Anthropic's page says to avoid: the top level as the default. 13 bots receive the model from a variable read from a central model file (good: change it in one place).
| haiku-low | ok (claude-haiku-5-5) | 12 s | 434 tokens | | sonnet-low | ok (claude-sonnet-5-5) | 16 s | 539 tokens |
In the first version, the read-only test used plan mode, where Claude Code silently switched Haiku to Sonnet. That's why ab.sh shows the model used and displays "⚠ requested X, ran Y" when they differ.
--- name: trabalho-longo model: fable effort: high ---
Before making changes, it writes down the goal, success criteria, and what not to do; tests each step; and does not move up to max on its own.
The kit is small by design. New ideas will only be added if they help you make better decisions.