Skip to content
Almog Koren
← All writing
Lab · 5 min read

I Built a Claude Code Mod That Quizzes Me on What Claude Just Changed

Agents write code faster than I can read it. Apprentice is a free Claude Code mod that maps how much of my repo I still understand, and asks one short question about each change while Claude keeps working.

An Apprentice card above the Claude Code prompt: a question about Claude’s edit to chargeInvoice() with three numbered answers

When Claude finishes an editing turn, I get a diff and a short summary. Most days I skim the summary and move on. The code works, the tests pass, and I tell myself I'll read it properly later.

Later rarely comes. After a few weeks of that, parts of my own repos feel like someone else's code. Nothing is broken. I just don't know them anymore.

So I built a Claude Code mod that keeps track of what I still understand, and teaches me the rest while Claude works.

Comprehension debt

AI agents now write a large share of the code I ship. Writing it stopped being the slow part. Understanding it is. Code changes faster than its owners can read it, and the gap grows quietly. I call that gap comprehension debt: code that changed since you last understood it.

Juniors feel it as "I ship code I can't explain." Seniors feel it as "Claude changed billing/ fourteen times this week and I haven't looked." Nothing in Claude Code measures that gap, or helps pay it down.

What Apprentice does

Apprentice is a free, open-source mod for Claude Code. Mods are plugins that run inside Claude Code itself, so there's no account and no server. It does three things.

It draws a knowledge map of your repo. Running /apprentice groups the repo into at most 15 areas, names them, and gives each one a score. The score starts from git blame: lines you wrote count as lines you understand, up to 90%. Each area is a star, bright where you know the code and dim where you don't, under a headline that says how much of the code you know as it is today.

Apprentice knowledge map: eight areas of a repo drawn as stars, two with dashed outlines where Claude changed code
Apprentice knowledge map: eight areas of a repo drawn as stars, two with dashed outlines where Claude changed code
The knowledge map, drawn from Apprentice’s view code with demo data

It dims what Claude changes. Every edit Claude makes lowers its area's score by the share of the area it changed, and gives the area a dashed outline until you catch up.

It asks one short card per editing turn. After Claude's first edit in a turn, a card appears above your prompt while Claude keeps working. Apprentice asks Haiku to write it from that edit's diff, at your level for that area. Juniors and mids get a question with three answers.

An Apprentice card above the Claude Code prompt: a question about Claude’s edit to chargeInvoice() with three numbered answers
An Apprentice card above the Claude Code prompt: a question about Claude’s edit to chargeInvoice() with three numbered answers
A question card above the prompt, from Apprentice’s view code with demo data

Seniors get the diff itself and two buttons: Looks fine, or Flag to Claude, which sends Claude a short note about the concern once it's idle.

A spot-the-flaw card: a diff that removes a session expiry check, with Looks fine and Flag to Claude buttons
A spot-the-flaw card: a diff that removes a session expiry check, with Looks fine and Flag to Claude buttons
A spot-the-flaw card for an area you know well

Answer with a click, or type 1, 2 or 3 into the empty prompt. A right answer gives back what the edit took, plus two points. A wrong one gives back a quarter and still shows the explanation. Three right in a row move the area up a level; two wrong move it down. Skip keeps a card for later, and Quiet pauses cards for an hour.

The point isn't to grade you. It's to get you to look at the change for ten seconds, while it's still fresh.

Once a week, when you've answered at least five cards, there's Codebase Wrapped: areas mastered, flaws caught, cards answered, the dark zones left and your biggest jump. Copy puts a text version on your clipboard, ready to post. It never contains code.

Codebase Wrapped: tiles for areas mastered, flaws caught, cards answered and dark zones left, with the biggest jump and a Copy button
Codebase Wrapped: tiles for areas mastered, flaws caught, cards answered and dark zones left, with the biggest jump and a Copy button
Codebase Wrapped, once a week

The first real test

I ran the hand check on trustbut, my tool that checks whether an agent's tests prove its change. I wrote all 204 of its commits, so every area started at the 90% cap, and every card was a spot-the-flaw card.

For the most useful test, I asked Claude to change the CLI's exit code for a usage error from 2 to 0. That makes a bad command line look like success to scripts and CI. Claude pushed back first, which was the right call. When I insisted, it started by changing the test.

The card showed up with that test diff while Claude was still working. I pressed Flag to Claude, and Haiku agreed with me: the change makes invalid input look like success to scripts and CI. When the turn ended, Apprentice sent that concern to Claude as a new message, and Claude checked it.

Everything on the checklist passed, in the Desktop app, in the terminal and in a second git worktree that shares the same map. The images in this post are drawn from Apprentice's own view code with demo data, so you can see each piece on its own.

What broke

The hand check also found real problems. I'd rather list them than have you find them:

  • Another mod can hide the card. Mods draw the band above the prompt in a chain. replay-theater, one of Anthropic's example mods, takes over the band once a turn has edits, so Apprentice's card disappeared when the turn ended. Apprentice can't move itself earlier in that chain, so the README says how to turn replay-theater off.
  • The Desktop app does two things differently. /apprentice only appears after the session's first message, and while Claude is working it waits for the turn to end unless you press Send now.
  • The card's diff repeated lines Claude hadn't changed, and long lines could push the card past the bottom of the band. Both are fixed in 0.1.1.
  • A narrow terminal cut the map off after the first row of stars. Also fixed in 0.1.1.

And one I learned the hard way: claude plugin update compares version numbers, so my first fixes didn't reach anyone until I bumped the version.

What leaves your machine

Everything stays local except what Apprentice asks Haiku, through Claude Code. For each card, that's one edit's diff (at most 120 lines), its file path and the area's name. Once per map, it's the folder names and a few file names, to name the areas. Paths that look secret, like .env files and keys, never get a card, and neither do files git ignores. At most six card requests go to Haiku an hour, and they count toward your Claude Code usage.

Try it

You need Claude Code 2.1.296 or later, the Desktop app or the terminal, and a git repo. In Claude Code:

Shell
/plugin marketplace add isAlmogK/apprentice-claude-mod
/plugin install apprentice@apprentice

Then open a repo and run /apprentice.

It's alpha. I've only seen spot-the-flaw cards live so far, because the repo I tested on is all mine. If you try it on a codebase you know less well, I'd like to hear whether the questions are worth answering. Open an issue on GitHub.

Apprentice is the third of my tools for working with AI agents, and they don't overlap. trustbut proves a change is actually tested, Holdline proves it didn't break a business rule you approved, and Apprentice makes sure you still understand it.

→ Apprentice on GitHub

Shipping code your AI agents wrote?

I help teams build AI agents that hold up in production, and the checks around them that tell you what the agent actually did.

→ See my AI Agents service

→ Book a free 30 minute call

→ Or send me a note

##ai##ai-agents##claude-code##open-source

Building something with AI?

Fractional CTO, AI agents, or a rescue for an AI-built app.