a free guide by
Luka@omgluka.human
10 runs · 2 promptswith Claude Code

Effort is how much Claude thinks and checks before it hands you the result. I gave it two real jobs from my own work, a 6-second opening title over a clip of me and a 25-second edit of a 3-minute raw take, and ran each at all five levels: ten fresh sessions of Claude Opus 5.5, one at a time, the same prompt and the same files. Both jobs together cost $1.35 at low and $22.37 at max.

the five levels
The title "30 reels a week" over Luka at his desk, as the low run made it, at 1.5 seconds
1low$1.35 · 3.9 min
The title "30 reels a week" over Luka at his desk, as the medium run made it, at 1.5 seconds
2medium$2.41 · 7.5 min
The title "30 reels a week" over Luka at his desk, as the high run made it, at 1.5 seconds
3high$3.79 · 13.7 min
The title "30 reels a week" over Luka at his desk, as the xhigh run made it, at 1.5 seconds
4xhigh$10.16 · 40.9 min
The title "30 reels a week" over Luka at his desk, as the max run made it, at 1.5 seconds
5max$22.37 · 72.2 min
The same title at 1.5 seconds, as each level made it, and what both jobs cost together at that level, at API prices (step 03).
sound familiar?
  • You leave effort on max for everything and burn through your usage.
  • You don’t know what a higher level changes, only that it costs more.
  • Low hands you something that looks finished, and you find the problems later.

My pick is high: above it, you pay for polish.

before you start

What you need

To set the level, Claude Code. To repeat my test, the same two kinds of file.

  • Claude CodeThe levels are low, medium, high, xhigh and max. Opus 5.5, the model of this test, starts at medium.
  • One real job of yoursA clip and the prompt you would really send. Effort shows on real work.
  • HyperFrames, to repeat my testBoth jobs were built in it: HeyGen’s free, open-source tool that turns a web page into a video.
the two files every run got
Two frames: Luka at his desk in headphones, vertical; and a desk with a keyboard, a red cable and a phone in his hand showing a chat, from above
The test's two inputs, the same for every run: desk.mp4, 6 seconds of me at my desk, and raw.mp4, a raw take of me showing my AI assistant Emma on my phone, with its word-level transcript.
step 01

The two jobs, word for word

Each run got one of these as the whole request, in a fresh session, with the same files in its folder.

job 1 · the motion title

Make the opening title of my Instagram reel “How I make 30 reels a week” as a motion graphic over this clip of me at my desk: inputs/desk.mp4 (6 seconds, 1080 x 1920). Use HyperFrames. My style: Clash Display for the big words and Doto for the small words (both in inputs/fonts), white text, one orange accent #E8623C, nothing that looks AI-made. It has to look premium.

Swap in your own title, clip and style.
job 2 · the edit

Edit this raw take into a 25-second Instagram reel: inputs/raw.mp4 (3 minutes of me showing my AI assistant Emma on my phone), with its word-level transcript in inputs/raw.words.json. Cut the dead air, the repeats and the mistakes, keep the strongest story, reframe it to 1080 x 1920, and add word-by-word captions in my fonts (inputs/fonts: Clash Display and Doto; white, one orange accent #E8623C). Use HyperFrames: the cuts are clips of the source video, the captions sit on top.

Swap in your own take and its transcript.

The same rules bound every run, so the only thing that changed was the level:

the rules · the same for every run

Work only in your folder. Invoke the Skill tool with "hyperframes" first and follow it. Make every design and editing choice yourself. Do not ask questions. Use the files in inputs\ where they are; do not copy, move or re-encode them. NEVER render a video. No preview server. Do not use the GPU. Run npx hyperframes check --no-browser-gpu, then the snapshot command of your job (the stills land in <your folder>\stills\). Look at the stills once; fix anything plainly broken once; re-take. Note the time you started and finished (date), and keep it in <your folder>\RUN.md with one paragraph on what you built.

what every run handed back
Four vertical stills of the edit made at high effort, at 1, 8, 16 and 24.75 seconds: the phone in his hand with a chat, the monitor, word captions
Four of the edit's stills at high, as it took them. Every run ended here: a HyperFrames project, its check, its stills and a RUN.md. None rendered a video, so the minutes and dollars below are the build, up to the checked stills.
step 02

Set the effort level

In Claude Code you can save a level as your default for a model, or keep it to one session. The quickest way, in a session:

in Claude Code

/effort high

A new level counts from your next message.

Every way to set it, from Claude Code’s own docs:

  • /effortOpens a slider. Enter saves the level as your default for that model, s keeps it to this session. /effort high sets it directly, /effort status shows the level in effect.
  • /modelThe left and right arrows move the effort slider as you pick the model.
  • --effortAt launch: claude --effort high.
  • CLAUDE_CODE_EFFORT_LEVELAn environment variable: a level name, or auto.
  • effort: highIn a skill’s or a subagent’s frontmatter: that level while it runs. Every run of my test was a fresh subagent started at its own level.
  • maxApplies to the current session only, unless you set it with CLAUDE_CODE_EFFORT_LEVEL.
step 03

The minutes and the dollars

Every run. Minutes run from the session’s first message to its last; dollars are its tokens at API prices.

all ten runs
levelthe titlethe editboth
low2.5 min$0.731.4 min$0.623.9 min$1.35
medium3.6 min$1.193.9 min$1.227.5 min$2.41
high4.5 min$1.439.2 min$2.3613.7 min$3.79
xhigh22.1 min$5.5018.8 min$4.6640.9 min$10.16
max29.0 min$6.5043.2 min$15.8772.2 min$22.37
Each run's minutes and dollars, and both jobs added. High is in orange: my pick.
both jobs, low to max
  • low$1.35 · 3.9 min
  • medium$2.41 · 7.5 min
  • high$3.79 · 13.7 min
  • xhigh$10.16 · 40.9 min
  • max$22.37 · 72.2 min
Both jobs' dollars at each level, to scale. From low to max, about 17 times the price and 18 times the minutes.

How the dollars are counted (runstats.py, step 06): the tokens summed once per API message, the last usage seen for each message id, priced at Claude Opus 5.5 API rates as cached on 2026-10-06: input $4, output $20, cache read $0.20, cache write 1.25x input for the 5-minute cache and 2x for the 1-hour cache, all per million tokens. On a Pro or Max plan you don’t pay per run; these are what the same tokens cost at API list prices.

what it did on the way
levelthe titlethe editchecks
low9 calls1 looks11 calls1 looks1 + 1title + edit
medium24 calls4 looks22 calls3 looks5 + 5title + edit
high25 calls3 looks32 calls5 looks4 + 3title + edit
xhigh74 calls11 looks48 calls6 looks6 + 2title + edit
max59 calls11 looks175 calls44 looks2 + 2title + edit
Tool calls, and how many times it looked at its own stills, from each run's transcript.

One run per level, so read this as one honest sample, not an average. Run it again and every number moves.

step 04

What changed: the title

The five titles look alike once they land. The difference is when things happen, and what they happen on.

the title, level by level
Two frames of the title as the low run made it, at 0.5 s and 1.5 s
low$0.73 · 2.5 min · 0.5 s and 1.5 sOne check and one look at its stills. The title rises in and is up by half a second, with a line I did not ask for: “A SYSTEM”.
Two frames of the title as the medium run made it, at 0.5 s and 1.5 s
medium$1.19 · 3.6 min · 0.5 s and 1.5 sFive checks. The 30 rolls like a slot machine while a row of 30 small squares fills in the same beat.
Two frames of the title as the high run made it, at 0.5 s and 1.5 s
high$1.43 · 4.5 min · 0.5 s and 1.5 sThe 30 rolls in and lands at 0.86 s, and one punch-in is cut on the action at 2.2 s, as my hands land on the keyboard.
Two frames of the title as the xhigh run made it, at 0.5 s and 1.5 s
xhigh$5.50 · 22.1 min · 0.5 s and 1.5 sIt found the fastest frame of my hands, frame 57 at 1.90 s, put the punch-in there and landed the 30 on the same frame.
Two frames of the title as the max run made it, at 0.5 s and 1.5 s
max$6.50 · 29.0 min · 0.5 s and 1.5 sIt measured the clip frame by frame before it designed anything: the headphones clamp on at 0.45 s, my hands hit the keys at 2.1 s. The 30 locks as the headphones clamp on, “A WEEK” lights as my hands hit the keys.
Each level's title at 0.5 and 1.5 seconds, with the run's price and minutes and what it did. Low is up at half a second; the others are still arriving.

The move that made xhigh and max better, to ask for at any level:

say to Claude

Before you design anything, go through the clip frame by frame and list every moment something happens, with its time. Then land each part of the title on one of those moments.

step 05

What changed: the edit

Here the jump is plain, and it comes at high: the edit stops opening on an introduction and opens on the question.

the edit, level by level
Two frames of the edit as the low run made it, at 1 s and 8 s
low$0.62 · 1.4 min · 1 s and 8 sSix cuts straight from the word timings, one check, one look at its stills. It opens on “So this is Emma”.
Two frames of the edit as the medium run made it, at 1 s and 8 s
medium$1.22 · 3.9 min · 1 s and 8 sOne story in five chapters, each with a small label (01 MEET EMMA to 05 EVERY MORNING), the cuts set where silence detection found the gaps.
Two frames of the edit as the high run made it, at 1 s and 8 s
high$2.36 · 9.2 min · 1 s and 8 sThe question first, then the proof, then who Emma is. Every cut checked against an energy map of the audio, so each one sits in measured silence.
Two frames of the edit as the xhigh run made it, at 1 s and 8 s
xhigh$4.66 · 18.8 min · 1 s and 8 sEleven clips, every cut in a gap measured on a 20 ms envelope, punch-ins on “166K” and “9,000”, a pull-back on “This is Emma”, the voice levelled clip by clip.
Two frames of the edit as the max run made it, at 1 s and 8 s
max$15.87 · 43.2 min · 1 s and 8 s175 tool calls and 44 looks at frames. It re-timed every caption word with a forced alignment (Whisper’s own times ran up to 0.3 s late) and put a voice chain on the sound.
Each level's edit at 1 and 8 seconds. Low and medium open on who Emma is; high, xhigh and max open on the question, “what's my best performing content last month?”.

The visible jump is from low to high. Above high, the money buys timing and precision. The two moves that made high’s edit better, to ask for at any level:

say to Claude

Open on the strongest question in the take, then the proof, then the explanation. Put every cut in a silence you measured on the audio, not where the transcript says a word ends.

step 06

Meter your own run

In a session, /usage shows an estimate for the session you are in, worked out from its tokens at list price. For a run that has finished, or a subagent, read its transcript: Claude Code keeps every session as a JSONL file.

  • a session~/.claude/projects/<project>/<session-id>.jsonl
  • its subagents~/.claude/projects/<project>/<session-id>/subagents/agent-<id>.jsonl

My script reads one and prints the minutes, the tokens, the dollars and what the run did: runstats.py, Python, no installs.

in a terminal

python runstats.py agent-<id>.jsonl <run folder> --json run.json

The run folder is where it worked; a RUN.md there with two times adds its own minutes.
what it prints
runstats.py · motion, low
 1{ 2 "folder": "motion/low", 3 "minutes_run_md": 2.2333, 4 "minutes_transcript": 2.5198, 5 "api_calls": 8, 6 "tokens": {"input": 16, "output": 3703, "cache_read": 675255, "write_5m": 103474, "write_1h": 0}, 7 "tokens_total": 782448, 8 "dollars": 0.73, 9 "tool_calls": 9,10 "tools": {"Bash": 3, "Read": 2, "Write": 2, "Skill": 1, "SubagentHandback": 1},11 "skills": ["hyperframes"],12 "checks": 1, "snapshots": 2, "stills_looked_at": 1,13 "files_written": ["index.html", "RUN.md"]14}
What it printed for the title at low in this test, its minutes cut to four places and its lines joined to fit. It leaves the transcript path out on its own.

Or have Claude do it:

say to Claude

Read the transcript of my last session in ~/.claude/projects, sum the token usage once per message id, and price it at the current API rates for the model it used. Tell me the minutes, the tokens and the dollars.

if something breaks

Quick fixes

Which level should I start with?

For a real edit, high. In my test it was the first level that opened the edit on the hook, at $2.36 for the edit. Below it you get a result sooner and for less, and Claude Code's docs say as much: lower levels return a starting point sooner.

Low looked done, but it isn't what I meant

Don't rerun everything at max. Ask for the checks the higher levels made on their own: measure the clip before designing, put every cut in a measured silence, look at every still. Or rerun only that job at high.

Max went back to my old level

Claude Code applies max to the current session only, unless you set it with the CLAUDE_CODE_EFFORT_LEVEL environment variable.

My effortLevel setting does nothing on Opus 5.5

A top-level effortLevel in your user settings doesn't apply to Opus 5.5: it starts at medium until you pick a level for it with /effort or the /model picker.

/effort shows a lower level than I set

Your organization may cap it (maxEffortLevel, or a limit per role). A level above the cap runs at the cap.

My numbers don't match yours

They won't exactly. This is one run per level, on my two jobs and my files. Your prompt, your footage and what is already in the cache all move the minutes and the dollars. The shape is what to compare.

Does a higher level use a better model?

No, the same model. Effort sets how much it thinks on each step and how much it checks before it hands the work back. On Opus 5.5 thinking can't be turned off; effort decides how much of it there is.

bonus · prompts that buy the high-effort habits
say to Claude

Before you hand it back, look at every still you took and fix anything plainly broken, then take them again.

say to Claude

Check every cut against the audio and tell me the silence each one sits in, in milliseconds.

say to Claude

Write a RUN.md: when you started and finished, what you checked, and how many times you looked at the stills.

say to Claude

Give me two storylines for this take before you cut it, and say which one opens on the strongest line.

An independent guide by Luka (@omgluka), made at Engram. The test ran on 27 October 2026 in Claude Code, on Claude Opus 5.5: Claude, Claude Code and Claude Opus 5.5 are made by Anthropic. HyperFrames is an open-source project by HeyGen. The footage is my own. The dollars are API list prices as runstats.py states them, not what a plan charges. None are affiliated with this guide.

next · the AI agents course

Let agents run the rest of your work.

My AI agents course: build and train custom agents that run the processes in your business, on one real job, step by step.

4 acts · 28 episodes · hands-on, for your business · from $79 a month

join the waitlist

Opening soon. One email when it opens, nothing else. More guides like this one on engram.media/guides and on Instagram, @omgluka.

Rather have it built for your team? Get a written two-option proposal.