Practice20–90 min

Challenges

Five exercises, in order of effort. The first four need no code at all. They are how the material moves from "I understood that" to "I can do that".

How to use this page
  • Pick the next unfinished one. Each takes one sitting and produces something you keep — a diagram, a spec, a test set, or a working agent.
  • Progress is saved in this browser only. Nothing is uploaded anywhere.

01Deconstruct a product

Time: 15 minutes · Needs: a browser · You produce: a one-page teardown

Pick an AI product you've seen advertised — a coding assistant, a support bot, a "AI employee". Answer, in writing:

  • What are its tools? List every action it can take in the world, not what it says it can do.
  • What is its state? Does it remember across sessions? Where would that be stored?
  • What autonomy level is it (L0–L5)? What does the human do at that level?
  • Which single action would be most damaging if it went wrong, and what gate sits in front of it?
  • What does its marketing call the model, and does that matter to the product's value?

02Trace an agent by hand

Time: 20 minutes · Needs: paper · You produce: a numbered trace with one injected failure

Choose a task you know well: booking a meeting, filing an expense, ordering stock. Write the trace step by step — goal, context, decision, tool, result, state update — as if you were the harness.

Then inject a failure at step four: the tool returns "sold out", or the API times out, or the file is missing. Continue the trace. What does the agent do next? What would make it loop? What makes it stop and ask you?

03Write a tool and its permission policy

Time: 20 minutes · Needs: a text editor · You produce: one JSON tool definition + a policy line

Pick something small from your own work — lookup_order, read_invoice, check_stock. Write the definition with name, a when-to-use description, a schema with types and an enum, and a description of what a failure returns.

Then write the policy: risk tier, whether it needs approval, what credential it uses, and what the worst outcome of a wrong call is. If you can't finish that sentence, split the tool.

04Build a ten-case evaluation set

Time: 25 minutes · Needs: a spreadsheet · You produce: ten rows you can run repeatedly

For the task you traced in challenge 02, write ten cases: six typical, two edge, one messy, one adversarial. Each row gets the input, the setup, and the end state that must be true — a field that changed, a row that exists, a draft that was created.

#InputSetupEnd state that must be trueType
1………typical
…
10………adversarial

05Capstone: the smallest working agent

Time: one weekend · Needs: a model API key · You produce: a program you'd let a friend run

Build the inbox-triage or document-Q&A agent from module 10. Constraints, and they are the point:

  • One model provider, two tools maximum, eight turns maximum.
  • Read-only plus drafts. Nothing is sent, deleted, or paid for.
  • A hard token budget per task, enforced in code.
  • Every run writes a trace file you can read afterwards.
  • A ten-case eval set, run before and after your last change.
  • Someone who isn't you uses it for ten minutes while you watch and say nothing.

How to judge your own work

There is no certificate, and that's deliberate. Use this rubric honestly — it maps to what actually predicts a working system.

SignalBeginnerSolidReady to ship something
Goal definitionA sentence of intentA checklist of end statesA checklist plus a verification step that runs automatically
ToolsOne broad toolTwo or three narrow tools with schemasTyped failures, timeouts, least-privilege credentials
SafetyPrompt says "be careful"Permission gate on writesRisk tiers, approval UI, audit log, sandbox for generated code
EvaluationYou tried a few inputsTen cases with end-state checksTwenty cases in CI, plus cost and latency per completed task
CostUnknownEstimated per taskBudget caps, routing, caching, dashboard
DebuggabilityPrint statementsA trace file per runStructured traces, stored contexts, replayable failures
If you get stuck

Shrink the task. Almost every stuck agent is a goal that was too vague, a tool that was too broad, or a test that checked wording instead of state. Cut the task in half, make the tool read-only, and check the end state. Then grow it back.