ARC-AGI-3 is a skill issue
How one skill took Claude Code with Opus 5 to 100% RHAE on ARC-AGI-3.
By Poobesh Gowtham · @pbshgthm
- RHAE, the top score
- 100.00of 100
- games finished
- 25of 25
- levels finished
- 183of 183
The mechanic is one rule. Every act has to arrive with a written prediction of the next frame, and the tool refuses to send an act that has none. It then grades the prediction against the frame the game actually returned.
That turns each act into an experiment. A miss costs no extra action and names the belief that was wrong, so a game nobody explained gets learned by being wrong on the record, 11,344 claims deep.
It also tells Claude when to stop testing. A single test act misses 37.1% of the time, an act inside a plan 2.9%. So it probes until a mechanic holds, then commits to long sequences that halt at the first miss. Only 642 of 7,627 graded acts went on finding things out, which is why 7,645 actions did what a median human player needs 17,135 for.
What is ARC-AGI-3?
25 games from the ARC Prize Foundation. Each one is a grid of coloured cells with seven buttons under it, and nothing else.
Nothing says what the colours mean, what a button does, what winning looks like, or how many levels there are. The meanings change between games. A colour that is a wall in one game is a cursor in the next.
You learn by acting and watching what changes. Every act costs one action, and the score is how few you spend.
lp85, action 1 of 0
This is the game lp85, played back at speed from the grids the run recorded. Claude started from the first frame with no rules, no goal and no legend.
Nothing tells you what the game is, so you spend actions finding out.
What Claude gets
arc-skill is a short instruction file and a command line tool. The file adds one rule and the tool enforces it. Around that rule Claude gets five kinds of instrument, and none of them knows anything about any game.
- See
- The board as an image, the exact grid, any crop, what changed, and the animation of any past act.
- Act
- One button, with a prediction attached. An act without one is refused, and the refusal is free.
- Plan
- A sequence where every step carries its own prediction. It stops at the first miss.
- Compute
- Offline Python over the grids already recorded, with shape finding, lattice and line detection, motion tracing, and pathfinding ready to use. It costs no actions.
- Model
- Optional. Write an executable model of the game, replay it against every recorded act, and search it for a plan.
Claude gets basic tools for seeing the board and acting on it, and one skill that says how to use them.
Predict, then act
Before Claude may act, it writes down what the act will do to the grid. Which cells change, and to what. The tool refuses an act that arrives without one, then grades the prediction against the grid that comes back.
Act 1 of the lp85 run, copied from its log. Both parts missed.
arc act ACTION6 58 32 \
--predict "cell 22,17=b; cell 10,17=4" \
--because "right arrow: test if cursor moves one tile clockwise"Before every action, Claude writes down what it thinks will happen. The tool refuses the action without it.
A prediction that holds means the model of the game is still standing. A miss is worth more. It dates the exact act where what Claude believed and what the game did came apart, and hands over the grid that broke it.
Claude wrote 7,627 predictions. 443 missed. Every one of the 25 games contained at least one.
The grid before the action.
- Game
- ar25, 8 levels
- Level
- 0, action 0 of 261
- Button
- Why
- Prediction
One miss turned an impossible level into an easy one
Level 9 of tu93 mixes two static guards, three patrollers and a chaser. Claude built the map, rolled the patrol forward 250 ticks, and proved there was no safe path. Every node of the one corridor was a cut vertex. On the board as it understood it, the level could not be finished.
So it spent an action on the one thing it had never tested. It walked into a patroller, and said in advance that the patroller would still be there afterwards.
Act 193 of the tu93 run. The reason it gave for the act.
UNTESTED: entering a node a patroller occupies as it
vacates (B (6,1)->(5,1), non-swap). Strict passage
proven impossible at T=250; every corridor node is a
cut vertex.- cell 46,17=9
- cell 46,11=0
- cell 46,18=4
- cell 22,17=c
- cell 40,11=d
- cell 40,17=c
- observed: cell (40,17) is 0
- cell 46,29=c
Six of the seven held. The seventh said the patroller was still at 40,17. The grid came back with that cell empty. Walking onto a patroller kills it, the same way it works for the static guards, and the level Claude had just proved impossible was now the intended solution.
What it wrote in its notes, and then played the rest of the level on:
From the tu93 notes, written after that act.
ENTERING A PATROLLER'S OWN NODE DESTROYS IT, exactly
like a blue guard (e193). So the kill rule is UNIFORM
across agent types: walk onto it = it dies; let it
walk onto you = you die.The game explains nothing, so a wrong prediction is how Claude finds out what the real rule is.
How a claim is written
A prediction joins these with semicolons, and each part is graded on its own, so one wrong part is a miss.
- cell X,Y=V
- this cell will hold this colour
- move X,Y DX,DY
- this shape will shift by this much
- level+1
- this act will finish the level
- win
- this act will finish the game
8 forms in all. The grammar is deliberately small: every form describes something the next frame can contradict.
1
Look
Read the grid, and what changed since the last one.
2
Predict
Write down what the next act will do.
3
Act
The tool refuses the act if no prediction came with it.
4
Compare
The tool checks the prediction against the real grid and grades it.
Then back to the start, once for each of the 7,645 actions the campaign spent.
One page of notes
A long game does not fit in a context window. Claude Code compacts its own context when the window fills, and it did that 115 times over this campaign.
So each game keeps one short page: what is verified, what is still assumed, what to test next. Claude rewrites it as it plays. It is the only thing a compaction cannot take away.
Claude Code forgets when its context fills up, so each game keeps a notes file that Claude rewrites as it plays.
Everything important has to earn a place on one page, so observations compete for space and raw sightings have to be compressed into rules that hold next time. The pages stayed at a median of 60 lines.
Nobody specified the headings below. The runs grew them.
- ls20 · REFUTED
- Eight beliefs Claude once held, kept next to the evidence that killed each one.
- su15 · DANGER, the mistake that lost L9
- The exact belief that made a level unwinnable, written down so it stays made once.
Tight rules, free thinking
Two rules pull against each other and both hold at once. That pairing is the whole idea.
The gate is hard. An act without a falsifiable claim never reaches the game. Not a suggestion in a prompt. The tool refuses it.
The thinking is free. Claude uses whatever representation is right for the game in front of it, and moves up a rung when the one it has stops answering.
Every strong system on this benchmark makes a bet about representation. Tycho writes an executable world model and decides when to build, repair, use or bypass it. VISTA renders each frame and reasons over the picture in language, without program synthesis. Retrodict replays each hypothesis over its own logged history in Python before it acts.
Here no representation is required. The same unedited arc-skill produced a run that never wrote a line of Python and a run that built a physics simulator.
- 1
Sentences
sb26Eight levels, one missed prediction, and not a single line of Python. The game was legible, so it stayed in prose.
- 2
Python
24 of 25 gamesWorking out which cells form one object, or the shortest path between two of them, is arithmetic. It runs on grids already recorded, so it costs nothing.
- 3
A tool
sp80It wrote a fluid simulator and searched 16 versions of the physics until one reproduced every pour it had on record, cell for cell. Then it placed 30 blocks in one plan and poured.
- 4
A model of the world
bp35The heaviest rung, taken once. An executable model of the whole game, fitted against every recorded act. It never fitted, both searches ran out of time, and no plan from that tier was ever sent. The game was won on the rung above.
Claude decides for itself how to think about each game. The one fixed rule is that it has to predict before it acts.
Claude reached for Python 1,727 times across 24 of the 25 games. None of it costs an action, because it runs on grids already recorded.
It learned when to probe and when to commit
The instruction file says to batch a mechanic once it is verified, and never to batch exploration. It does not say when a mechanic counts as verified. Claude drew that line for itself, and the two modes came out far apart. A single test act missed 37.1% of the time. A planned sequence missed 2.9%, about 13 times fewer, and Claude put 92% of its acts into plans.
37.1%of predictions missed
642 acts, 8% of the campaign
Single test act. One act, spent to find something out.
2.9%of predictions missed
6,985 acts, 91% of the campaign
Planned sequence. Every step carries its own prediction, and the sequence stops at the first miss.
The guessing sits at the start. On the first level of a game 29% of acts were single tests, and after that the rate falls away and stays down.
- acts that were single tests
- predictions that missed
Claude spends actions testing a rule until it holds, then stops testing and plays long sequences instead.
The field
RHAE is the benchmark's own score. It compares your actions against a median human player, level by level, and it stops at 100.00.
Everything else here is a system built for ARC-AGI-3 (except the last two rows, which are people, not systems). The second line of each row is how that system plays, taken from its own write-up.
Every name is a link to where its numbers can be read back. Six go to an official scorecard on arcprize.org. VISTA and Schema have no scorecard, so those two link to the write-ups their authors published, and both of those scores are self-reported.
arc-skill is a 129 line instruction file and a command line tool. Neither one mentions any of these 25 games, and the agent that runs them is Claude Code as shipped.
| system | model | RHAE | actions |
|---|---|---|---|
| arc-skilla skill file and a command line tool, inside Claude Code | Claude Code, Opus 5 | 100.00 | 7,645 |
| Tychodecides when to build, repair, use or bypass an executable world model | Opus 5 | 100.00 | 6,641 |
| VISTArenders every frame and reasons over the picture, no program synthesis | Opus 5.0, Claude Code | 100.00 | 7,542 |
| Retrodictreplays each hypothesis over its logged history in Python before acting | gpt-5.6-sol, ThinHarness | 99.86 | 7,703 |
| Schemafrontier models in a purpose-built harness, best run per game kept | Opus 4.8, Fable 5 | 98.98 | 10,303 |
| ewma_sv_v1.6builds an executable world model, simplifies it, and checks it by exact replay | gpt-5.6-sol, Codex | 98.97 | 8,347 |
| Human Intelligence Harnesspeople playing as hard as they can, one run per game | real humans | 95.35 | 14,798 |
| Human median baselinewhat an ordinary player spends, and the number RHAE divides by | median player | n/a | 17,135 |
The score caps at 100.00, so the action count is the part of a run the score stops showing. Tycho spends the fewest.
All 25 runs together cost $728.17 in tokens at list price, for 7,645 paid actions.
Every other system here was built for these games. This is one skill on ordinary Claude Code.
Every run
Pick a board and step through it. The boards are decoded from the grids that run recorded, and the log is the one the tool wrote at the time.
25 games. Pick a board.
Loading tu93, 2,362 recorded frames.
The same skill played all 25 games, with nothing added or changed for any of them.
| session | |||||
|---|---|---|---|---|---|
| wa30 | 9 | 802 | 44% | 95.9% | read |
| lf52 | 10 | 787 | 59% | 94.9% | read |
| re86 | 8 | 601 | 48% | 98.3% | read |
| dc22 | 6 | 520 | 42% | 89.2% | read |
| sk48 | 8 | 491 | 46% | 95.7% | read |
| bp35 | 9 | 482 | 74% | 95.4% | read |
| g50t | 7 | 482 | 55% | 95.4% | read |
| ls20 | 7 | 481 | 62% | 97.3% | read |
| ka59 | 7 | 335 | 46% | 95.2% | read |
| s5i5 | 8 | 281 | 44% | 90.0% | read |
| ar25 | 8 | 260 | 35% | 97.3% | read |
| cn04 | 6 | 227 | 29% | 93.0% | read |
| m0r0 | 6 | 224 | 20% | 93.3% | read |
| sp80 | 6 | 211 | 41% | 91.0% | read |
| tu93 | 9 | 205 | 44% | 93.6% | read |
| vc33 | 7 | 193 | 43% | 94.8% | read |
| sc25 | 6 | 166 | 47% | 87.3% | read |
| tn36 | 7 | 160 | 50% | 90.6% | read |
| tr87 | 6 | 153 | 37% | 96.7% | read |
| sb26 | 8 | 124 | 58% | 99.2% | read |
| su15 | 9 | 117 | 32% | 80.9% | read |
| lp85 | 8 | 93 | 24% | 87.1% | read |
| cd82 | 6 | 92 | 54% | 85.9% | read |
| r11l | 6 | 83 | 36% | 89.2% | read |
| ft09 | 6 | 75 | 36% | 94.7% | read |
| 25 games | 183 | 7,645 | 45% | 94.2% | all |
Run it yourself
One command installs it. Then set an ARC key, ask for a game by name, and leave it alone.
npx skills add pbshgthm/arc-skill
export ARC_API_KEY=...
claude "solve ARC-AGI-3 game lp85"The installer asks which agents to target and links arc-skill into each one. It works with Claude Code and Codex. Everything else it needs, it installs on first use.
Everything the claim rests on.
- The sessions
- Every Claude Code session, one per game, readable in the browser. 2,520 messages from Claude, 4,378 tool calls with the output they returned, and 191 of the board images it was looking at.
- Run logs3.1 MB
- What the tool recorded at the time. Each act, the prediction it carried, and the grade that came back, for all 25 runs.
- The skill56 KB
- SKILL.md, the 4,343 lines of command line tool behind it, and the 900 lines of tests.
- The replay12 KB
- The script that put these runs on the official scorecard. It reads the acts back out of the run logs and sends all 7,645 of them to the live API on a competition card, one attempt per game. Every step is checked against the local run: game state, levels completed, frame count, and a sha256 over every frame.
- SKILL.md6 KB
- The 129 lines on their own. This is the whole of what Claude was told.
The sessions are the files Claude Code wrote, as it wrote them, stated again on the page that shows them. Thinking is not carried, because Claude Code stores an opaque signature next to each thinking block and all 3,857 blocks in this archive are empty of text. Working directory names are normalised. The run logs and the skill are untouched.
By Poobesh Gowtham · @pbshgthm
August 2026. All 25 public games, Claude Code on Claude Opus 5. Every act was replayed through the ARC API on a competition card, producing scorecard 24ddb219. 25 of 25 games reproduced, none diverged, in 66 minutes. The numbers on this page are generated at build time from the recorded runs, that scorecard, and the session accounting.