Skip to content

Coding with agents

Shipping software changes with a coding agent. It starts with your first session in a small repository. From there it follows one change from plan to verified diff, and it ends with working alongside a team.

0%
  1. getting started
  2. halfway
  3. almost there
  4. complete
Lesson plan (27 lessons, 27 live)
#LessonStatusModeMinutesCoversServesExerciseAfterIssue
Running a coding agent
1Your first session with a coding agentcoding-with-agents/first-sessionlivetutorial35 estimatefirst-sessionruns-a-sessiongives-the-right-contextdo
2Keeping API keys out of the agent's reachcoding-with-agents/keys-and-secretslivetutorial20 estimatefirst-sessionruns-a-sessiondoYour first session with a coding agent
Deciding and specifying
3Deciding whether to build it at allcoding-with-agents/deciding-what-to-buildliveexplanation25 estimatespecificationjudges-worth-buildingdefines-successjudgeYour first session with a coding agent
4Let the agent interview youcoding-with-agents/agent-interviews-youlivetutorial35 estimatespecificationis-interviewed-before-planningdoDeciding whether to build it at all#677
5Splitting the work into components the agent can build one at a timecoding-with-agents/decomposing-the-worklivetutorial25 estimatespecificationdecomposes-into-componentsdesigns-the-checkdoDeciding whether to build it at all#150
6A prototype you throw awaycoding-with-agents/prototype-to-throw-awaylivetutorial30 estimatespecificationsettles-with-a-prototypedoSplitting the work into components the agent can build one at a time, Let the agent interview you#679
Plan, implement, verify
7Plan first, then drive the change from a failing testcoding-with-agents/plan-then-testlivetutorial30 estimateworkflowruns-a-sessiondoYour first session with a coding agent, Splitting the work into components the agent can build one at a time
8Working from a spec in small incrementscoding-with-agents/spec-driven-incrementslivetutorial30 estimateworkflowworks-in-incrementsdoPlan first, then drive the change from a failing test#155
9Keeping every agent change easy to undocoding-with-agents/reversible-changeslivetutorial35 estimateworkflowkeeps-change-reversibledoWorking from a spec in small increments#157
Context engineering for code
10Telling the agent where the task is and where it stopscoding-with-agents/scoping-and-referencinglivetutorial25 estimatecontextgives-the-right-contextdoPlan first, then drive the change from a failing test#160
11Writing project instructions the agent reads every sessioncoding-with-agents/project-instructionslivetutorial35 estimatecontextgives-the-right-contextkeeps-understandingdoTelling the agent where the task is and where it stops#163
12What each phase starts withcoding-with-agents/what-a-phase-starts-withliveexplanation20 estimatecontextchooses-what-a-phase-starts-withjudgeWriting project instructions the agent reads every session#681
13Staying the engineer who understands the systemcoding-with-agents/keeping-understandingliveexplanation25 estimateworkflowkeeps-understandingjudgeWriting project instructions the agent reads every session, Keeping every agent change easy to undo#166
Verifying agent work
14Reviewing a diff you did not write, against the speccoding-with-agents/reviewing-the-difflivetutorial30 estimateverificationreviews-others-codejudgeKeeping every agent change easy to undo#169
15A review from a fresh sessioncoding-with-agents/review-in-a-fresh-sessionlivetutorial25 estimateverificationuses-a-fresh-reviewdoReviewing a diff you did not write, against the spec#680
16Reproducing a fault before the agent fixes itcoding-with-agents/observing-and-debugginglivetutorial25 estimateverificationobserves-and-debugsdoReviewing a diff you did not write, against the spec#172
17Giving the agent a check it can run, with a limitcoding-with-agents/self-checking-loopslivetutorial25 estimateverificationautomates-the-checkprefers-gates-to-opinionsdoReproducing a fault before the agent fixes it#174
Quality with agents
18Tests that prove behavior and docs that stay currentcoding-with-agents/tests-and-docs-that-holdlivetutorial30 estimatequalityreviews-others-codeautomates-the-checkjudgeGiving the agent a check it can run, with a limit#176
19Reviewing what the agent pulled incoding-with-agents/dependency-reviewliveexplanation30 estimatequalityscreens-for-securityjudge
20Reading agent code as if the input were hostilecoding-with-agents/security-reviewlivetutorial30 estimatequalityscreens-for-securitydoTests that prove behavior and docs that stay current#178
Sandboxing and red-teaming
21Sandboxing a coding agentcoding-with-agents/sandboxinglivetutorial25 estimatefirst-sessionruns-a-sessiondoKeeping API keys out of the agent's reach#18
22Attacking your own agent before someone else doescoding-with-agents/red-teaming-your-agentlivetutorial30 estimateverificationscreens-for-securityjudgeSandboxing a coding agent, Giving the agent a check it can run, with a limit#180
Agents in a team
23Saying what the agent did, in the commit and the reviewcoding-with-agents/attribution-and-review-normsliveexplanation25 estimateteamattributes-honestlyfollows-team-normsjudgeKeeping every agent change easy to undo, Reviewing a diff you did not write, against the spec, Reading agent code as if the input were hostile#183
24Enforcing the team's rules with hooks and CIcoding-with-agents/ci-and-hookslivetutorial30 estimateteamfollows-team-normssets-team-practicedoGiving the agent a check it can run, with a limit#186
25A backlog and standards the agent can readcoding-with-agents/backlog-and-standardslivetutorial40 estimateteamkeeps-the-backlog-reachableturns-findings-into-rulesdoEnforcing the team's rules with hooks and CI#678
26Running several agent sessions in worktreescoding-with-agents/parallel-sessionslivetutorial30 estimateteamruns-parallel-workdoEnforcing the team's rules with hooks and CI#190
27Writing down how the team uses agentscoding-with-agents/team-practiceliveexplanation25 estimateteamsets-team-practicejudgeRunning several agent sessions in worktrees, Saying what the agent did, in the commit and the review#193