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 (22 lessons, 22 live)
#LessonStatusModeMinutesCoversServesExerciseAfterIssue
Running a coding agent
1Your first session with a coding agentcoding-with-agents/first-sessionlivetutorial30 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
4Splitting 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
Plan, implement, verify
5Plan 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
6Working from a spec in small incrementscoding-with-agents/spec-driven-incrementslivetutorial30 estimateworkflowworks-in-incrementsdoPlan first, then drive the change from a failing test#155
7Keeping every agent change easy to undocoding-with-agents/reversible-changeslivetutorial35 estimateworkflowkeeps-change-reversibledoWorking from a spec in small increments#157
Context engineering for code
8Telling 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
9Writing 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
10Staying 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
11Reviewing a diff you did not write, against the speccoding-with-agents/reviewing-the-difflivetutorial30 estimateverificationreviews-others-codejudgeKeeping every agent change easy to undo#169
12Reproducing 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
13Giving 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
14Tests 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
15Reviewing what the agent pulled incoding-with-agents/dependency-reviewliveexplanation30 estimatequalityscreens-for-securityjudge
16Reading 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
17Sandboxing a coding agentcoding-with-agents/sandboxinglivetutorial25 estimatefirst-sessionruns-a-sessiondoKeeping API keys out of the agent's reach#18
18Attacking 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
19Saying 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
20Enforcing 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
21Running several agent sessions in worktreescoding-with-agents/parallel-sessionslivetutorial30 estimateteamruns-parallel-workdoEnforcing the team's rules with hooks and CI#190
22Writing 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