Each exercise below runs one task more than once and changes a single thing about how the agent is run. What you are measuring is never the subject of the task. It is what changed when you changed the setup, and whether you could tell. Most of them ask you to use a piece of your own work, because an answer you can judge is worth more than one you cannot. One word used below. A TURN is one step of the loop: the agent acts, sees what came back, and decides what to do next. Counting turns is the cheapest measure of how much work a run actually did.
first turns up on day 1
The instruction you type is not just a description of the task. It also decides what the agent produces, what it checks, and what it hands back. A request can be bare - "do this" - or it can say, before any work starts, which files you want at the end, in what format, and what the result has to satisfy before the agent considers itself finished.
The second kind takes a few minutes to write and is the single cheapest change available. In this exercise you ask for the same thing both ways and see what the difference is worth.
| what changes between runs | How much the request specifies before the work starts. |
|---|---|
| what to do | Pick a task from your own work. Ask for it once in a sentence. Then ask again, in a new directory, with a request that names the files you want, their format, and the checks the answer has to pass. |
| what to compare | What each one left behind. Whether the bare version checked anything you had not asked for. Then look at the list of things you had to spell out the second time, and decide which of them you would rather say once, in a file, than repeat every time you start. |
| what you are given | Nothing. Your own project. |
first turns up on day 1
These tools give you two dials. The first is which MODEL runs - the underlying system, of which each provider offers several, at different prices and speeds. The second is REASONING EFFORT: how much thinking the model spends before it answers. It is a setting, usually with names like low and high, and it is independent of which model you chose.
Most people set neither and never learn what either is worth on their own work. In this exercise you turn both and watch what moves.
| what changes between runs | Which model runs, and how much thinking it is told to spend. |
|---|---|
| what to do | One task from your own work, run four times: two models, each at a low and a high effort setting. Same request every time, written down before you start so it does not drift between runs. |
| what to compare | Not only whether the answers agree. Whether the CHECKING agrees - what each run verified on its own initiative, and what it quietly stopped doing when the dial went down. |
| what you are given | Nothing. Your own project. |
| what happened when we ran it | On day 2's grid, turning the effort down did two different things to two models. One returned a different number and kept verifying it. The other returned the identical number to four figures and stopped verifying altogether, which is the more dangerous of the two failures because nothing about the output says so. |
first turns up on day 1
A project can keep its own notes: what has been decided, what has been derived, what was got wrong and later corrected. Kept as ordinary files in the project - a set of them is usually called a wiki - they are the only record that survives a session ending.
They are worth nothing if the agent does not read them, and it will not open a directory it has no reason to open. Two things can give it that reason. A CLAUDE.md is a file the tool reads at the start of every session in that directory: it always applies, and it costs some of the session's limited attention whether or not the question needed it. A SKILL is a set of instructions the agent loads only when it judges that what it is doing matches the skill's description: it costs nothing until it fires, and it can be installed once for every project you have - but it can also fail to fire.
In this exercise you ask one question in four directories and find out whether the notes are opened at all, and whether the answer changes when they are.
| what changes between runs | How the agent comes to read a project's notes, or whether it does at all. |
|---|---|
| what to do | One question, four directories. |
| what to compare | Whether |
| what you are given |
|
| run it on | The question that ships with it. Better, once you have done it once: build notes for a project of your own with the |
| what happened when we ran it |
|
first turns up on day 2
Ask the identical question twice - same model, same settings, same words - and the two answers will not be identical. How far apart they are is your noise floor.
This matters for every other comparison you will make. If you change a setting and the answer moves by less than the noise floor, you have learned nothing, and you cannot know that until you have measured it. Nothing else in this course runs the same thing twice unchanged, so nobody yet knows what this number is.
| what changes between runs | Nothing. That is the point. |
|---|---|
| what to do | Take a task from your own work and run it twice, in two directories, with the same model, the same settings and the same words. Then a third time if the first two disagree in a way you did not expect. |
| what to compare | The two answers. Then the harder question: if somebody had told you these two runs differed in their setup, which difference would you have believed was responsible? |
| what you are given | Nothing. Your own project. |
| what happened when we ran it | While testing another exercise on this page we ran two directories whose only difference was a folder that neither agent opened. They gave different answers - one right and one wrong. That is what an unmeasured noise floor looks like when it is mistaken for a result. |
first turns up on day 2
You can use these tools as a conversation, answering questions as they come. You can also start one with a single command that runs to completion with nobody watching and hands back whatever files it produced. That second mode is called running HEADLESS, and it is how you use an agent for anything that takes longer than you are willing to sit for.
It also removes the thing you were relying on without noticing: you. In this exercise you run one task both ways and compare what came back.
| what changes between runs | Whether you are there while it works. |
|---|---|
| what to do | A task from your own work, run once as a conversation and once as a single command with no interaction. Give both the same request. |
| what to compare | The files each one left. Not the summary it wrote about itself - the files. A run that describes what it did is not evidence that it did it. |
| what you are given | Nothing. Your own project. |
| what happened when we ran it | One run in day 2's grid reported success, exited cleanly, took 109 turns, and produced no output file at all. Nothing in its own summary said so. |
first turns up on day 3
An agent that has been working on a problem with you has your context and your assumptions, and has spent the whole session building the thing you are now asking it to criticise. A session started fresh, given only the output, has none of that.
In this exercise you get both opinions and compare them.
| what changes between runs | Whether the reviewer has any of the history. |
|---|---|
| what to do | Take something your agent produced. First write down yourself what you think is wrong or weak in it. Then open a new session, give it the output and nothing else - no transcript, no reasoning, no context - and ask what is wrong with it. |
| what to compare | Your list against its list. What it found that you had not. What it objected to that turns out to be fine, and whether you can tell which is which without going and checking. |
| what you are given | Nothing. Your own project. |
first turns up on day 5
A skill, defined above, is loaded by the agent when it judges that the task matches - which means it can also go unloaded, and nothing announces that it did. A HOOK does not depend on that judgement. It is a command the tool runs at a fixed moment whether or not the agent thinks of it; the one used here runs at the moment the agent decides it has finished, and if that command reports a problem the agent is not finished after all - the message comes back as a new turn and it keeps working.
Both are ways of getting the same rule obeyed, and they fail differently. A skill can go unloaded; a hook cannot make an agent do something it does not already know how to do. In this exercise you run one task in three directories that differ only in which of the two is present.
| what changes between runs | Whether the rule is written down, and whether anything enforces it. |
|---|---|
| what to do | One task, three directories, the same request and the same model in each. |
| what to compare | Where the result ends up: in a file, or only in a message on screen that disappears when you close the terminal. Whether the hook ever has to fire. What the difference cost in turns. |
| what you are given |
|
| run it on | A short calculation ships with it, which needs no data and takes seconds. Any task that produces a figure and a number will do, including one of your own. |
| what happened when we ran it |
|
first turns up on day 5
This course is delivered in two formats. The lectures are SLIDEV decks: a file of markdown, built into a PDF by a script. The sessions are single self-contained HTML pages, generated by a different script from a file of prose plus whatever the runs produced. Both ship here with the source they were built from, so you can see how each is made.
An agent will produce either on request, and does different things for each without being told to. In this exercise you have it build the same content both ways and decide which one you would keep up to date.
| what changes between runs | The output format, for something you would have to maintain yourself. |
|---|---|
| what to do | Take something of your own - a result, a paper, a talk you owe somebody - and have an agent build it as a slidev deck, and then as a self-contained page. Same content, twice. |
| what to compare | Which one you would be willing to maintain, and why. What each format makes easy and what it makes impossible. What the agent did differently for each without being asked. |
| what you are given | Both sources ship. Every |
| run it on | Yours. This is the one where using somebody else's subject defeats the point. |
first turns up on day 5
Some questions cannot be answered by being told, and each of these has a number behind it sitting in a directory you already have. Could I be spending less than I am, without working any differently? Why did that session cost several times what this one did, when the two felt the same? What did I pay for and never use? Am I paying to re-read the same thing hundreds of times, and how much of the bill is that? Does starting a fresh conversation actually save anything, or does it just cost me the setup again? Is anything switched on that I could switch off? Where does the money go - into what the agent writes, or into what it re-reads?
Six terms first, before any of them is used. A TOKEN is the unit these tools are billed in, roughly a short word. The CONTEXT is everything the model can see on a given turn - your instructions, the files it has read, the commands it has run and what they printed - and every turn sends all of it again from the beginning, so a long session pays for its own history over and over. A CACHE READ is that same history charged at a fraction of the price because it has not changed since the last turn: cheaper, not free, and not any smaller. A CLAUDE.md, defined above, is read at the start of every session in its directory, so it is in the context from the first turn whether or not the question needed it. An MCP SERVER is a process that adds tools to your agent; each tool it adds carries a description which is also in the context from the first turn, unless TOOL DEFERRAL is on, in which case the descriptions are loaded only when a tool is actually wanted. A SESSION LOG is the file the tool writes as it works, one entry per request, each recording what that request cost.
In this exercise you point an agent at your own machine and your own logs, ask for seven measurements, and read what comes back. Nothing is changed and nothing is re-run.
| what changes between runs | Nothing is run twice. What varies is across the sessions you have already had, one row each - so what you are comparing is the way you were working when each of them ran. |
|---|---|
| what to do | Write one audit prompt and tell it, in the prompt, to change nothing. Seven measurements: (1) every (2) every MCP server, how many tools each contributes, whether tool deferral is on, and whether a proxy or gateway is configured - routing through one can turn deferral off without saying so; (3) which model is set and at what effort, and the file each is set in; (4) any hook that runs before a tool and trims the output of commands that print thousands of lines; (5) every agent definition you have, and whether each pins a model or inherits one; (6) every scheduled or recurring job, with its interval beside how long a cached prefix survives - one that fires after the cache has expired pays full price every time; (7) a parse of the logs. Not the newest session: EVERY session in the log directory, one row each - requests, the context on its first turn, the context on its last, tokens written, total - and then the totals across all of them. Ask for one table, sorted by cost, with five columns: the finding, its severity as RED, AMBER or GREEN, the evidence, what it is costing you, and what to do about it. Evidence has to be a number or a path and never an adjective; UNKNOWN is a legal answer where a guess is not. Then one line naming the single change with the most behind it. |
| what to compare | The sessions against each other. Which of them cost several times what the others did, and what was different about how you were working. How much of each total was a cache read rather than something new. Whether the ones where you started fresh came out cheaper than the ones where you carried on. And, separately from the logs: how much of what is loaded before you type anything was used by the work you actually did. One session tells you almost nothing. Twenty side by side tell you which way of working costs what, which is the whole point of doing it directory-wide. |
| what you are given | Nothing. Your own machine, and your own logs. |
| run it on | Yours, and it has to be - the input is the week you have just had. By now you have run something headless, left a run alone against a written objective, and put a team of agents on a job, so your own logs carry real differences rather than ours. |