Agent Course/agent-course

Building with an Agent

In this course a coding agent (Claude Code) writes the code, and you decide what gets built. You make a meetup app in which users organize meetups and others register until a meetup is full. It takes two plans. You review each plan before any code exists, approve it, and then watch the agent build it one step at a time.

Building with an Agent

In this course a coding agent (Claude Code) writes the code, and you decide what gets built. You make a meetup app in which users organize meetups and others register until a meetup is full. It takes two plans. You review each plan before any code exists, approve it, and then watch the agent build it one step at a time.

The course teaches the decisions, not the typing. The decisions are these:

  • answering the questions the agent could not settle alone
  • reading a plan and judging whether it describes what you want
  • approving it, which is the moment the design is fixed
  • accepting each step the agent commits
  • deciding what to do when the application moves under a plan

If you would rather learn the framework itself first, start with the Guren Tutorial. This course assumes nothing from it.

Who does what

flowchart LR
  You["You<br/>decide and approve"]
  Agent["Agent<br/>writes the plan and the code"]
  Guren["Guren<br/>checks the plan, reads progress from the code"]
  You -- "request, answers, approval" --> Agent
  Agent -- "plan.json, one commit per step" --> Guren
  Guren -- "review page, verified or not" --> You

The agent never reports its own progress. guren plan:verify reads it from the schema, the routes, the controllers and the test results. That is what lets you step away while the agent works: when it says a step is done, the framework has already checked.

The loop

Every plan goes through the same five stages. Chapters 2 to 5 take the first plan through them, chapters 6 and 7 the second.

flowchart LR
  Ask["1. Ask<br/>a request, then answers"]
  Review["2. Review<br/>the plan page"]
  Approve["3. Approve<br/>you, never the agent"]
  Build["4. Build<br/>one verified step per commit"]
  Close["5. Close<br/>docs written from the plan"]
  Ask --> Review --> Approve --> Build --> Close
  Review -. "changes" .-> Ask

Each stage has a short checklist in its chapter. The checklists are what you take away: they work on any plan, whichever model wrote it.

Chapters

# Chapter Stage Time
1 An app the agent can work in setup 20 min
2 The first plan ask 30 min
3 Review and approve review, approve 30 min
4 One step at a time build 60 min
5 Close the plan close 20 min
6 A plan that changes what exists ask to approve 40 min
7 When the application moves build, close 60 min
8 Plans in CI after 20 min

Before you start

  • Bun 1.4.2 and git. The app uses SQLite, so there is no database server to install.
  • Claude Code. The prompts are written for it. The harness also supports Codex, Cursor, Copilot and OpenCode.
  • TypeScript. You read the code the agent writes; you rarely write it.

Every step the agent takes also has a version you can run yourself, marked Without an agent. Those blocks build on each other, and they use a reference plan whose names (AC-meetups-7, route.meetups.edit) the chapters quote. Your agent's plan will use other names. Chapters 2 and 6 each end a plan's draft with a choice: keep your plan and read the quoted names as examples, or switch to the reference plan and follow the course exactly. With no agent at all, run every Without an agent block and you are on the reference path throughout.

How the course stays correct

The framework's CI runs every chapter in order against the framework's current source, using the Without an agent version of each step, and ends each chapter with bunx guren gate and a build. A framework change that breaks a step fails the framework's build, not yours. The agent's output is never part of that run; the checklists and the gate judge it.