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%
- getting started
- halfway
- almost there
- complete
tutorialYour first session with a coding agenttutorialKeeping API keys out of the agent's reachexplanationDeciding whether to build it at alltutorialSplitting the work into components the agent can build one at a timetutorialTelling the agent where the task is and where it stopstutorialWriting project instructions the agent reads every sessiontutorialReviewing a diff you did not write, against the spectutorialReproducing a fault before the agent fixes ittutorialTests that prove behavior and docs that stay currenttutorialReading agent code as if the input were hostiletutorialSandboxing a coding agenttutorialAttacking your own agent before someone else doestutorialRunning several agent sessions in worktrees
tutorialPlan first, then drive the change from a failing testtutorialWorking from a spec in small incrementstutorialGiving the agent a check it can run, with a limitexplanationReviewing what the agent pulled inexplanationSaying what the agent did, in the commit and the review
Lesson plan (22 lessons, 22 live)
| # | Lesson | Status | Mode | Minutes | Covers | Serves | Exercise | After | Issue |
|---|---|---|---|---|---|---|---|---|---|
| Running a coding agent | |||||||||
| 1 | Your first session with a coding agentcoding-with-agents/first-session | live | tutorial | 30 estimate | first-session | runs-a-sessiongives-the-right-context | do | ||
| 2 | Keeping API keys out of the agent's reachcoding-with-agents/keys-and-secrets | live | tutorial | 20 estimate | first-session | runs-a-session | do | Your first session with a coding agent | |
| Deciding and specifying | |||||||||
| 3 | Deciding whether to build it at allcoding-with-agents/deciding-what-to-build | live | explanation | 25 estimate | specification | judges-worth-buildingdefines-success | judge | Your first session with a coding agent | |
| 4 | Splitting the work into components the agent can build one at a timecoding-with-agents/decomposing-the-work | live | tutorial | 25 estimate | specification | decomposes-into-componentsdesigns-the-check | do | Deciding whether to build it at all | #150 |
| Plan, implement, verify | |||||||||
| 5 | Plan first, then drive the change from a failing testcoding-with-agents/plan-then-test | live | tutorial | 30 estimate | workflow | runs-a-session | do | Your first session with a coding agent, Splitting the work into components the agent can build one at a time | |
| 6 | Working from a spec in small incrementscoding-with-agents/spec-driven-increments | live | tutorial | 30 estimate | workflow | works-in-increments | do | Plan first, then drive the change from a failing test | #155 |
| 7 | Keeping every agent change easy to undocoding-with-agents/reversible-changes | live | tutorial | 35 estimate | workflow | keeps-change-reversible | do | Working from a spec in small increments | #157 |
| Context engineering for code | |||||||||
| 8 | Telling the agent where the task is and where it stopscoding-with-agents/scoping-and-referencing | live | tutorial | 25 estimate | context | gives-the-right-context | do | Plan first, then drive the change from a failing test | #160 |
| 9 | Writing project instructions the agent reads every sessioncoding-with-agents/project-instructions | live | tutorial | 35 estimate | context | gives-the-right-contextkeeps-understanding | do | Telling the agent where the task is and where it stops | #163 |
| 10 | Staying the engineer who understands the systemcoding-with-agents/keeping-understanding | live | explanation | 25 estimate | workflow | keeps-understanding | judge | Writing project instructions the agent reads every session, Keeping every agent change easy to undo | #166 |
| Verifying agent work | |||||||||
| 11 | Reviewing a diff you did not write, against the speccoding-with-agents/reviewing-the-diff | live | tutorial | 30 estimate | verification | reviews-others-code | judge | Keeping every agent change easy to undo | #169 |
| 12 | Reproducing a fault before the agent fixes itcoding-with-agents/observing-and-debugging | live | tutorial | 25 estimate | verification | observes-and-debugs | do | Reviewing a diff you did not write, against the spec | #172 |
| 13 | Giving the agent a check it can run, with a limitcoding-with-agents/self-checking-loops | live | tutorial | 25 estimate | verification | automates-the-checkprefers-gates-to-opinions | do | Reproducing a fault before the agent fixes it | #174 |
| Quality with agents | |||||||||
| 14 | Tests that prove behavior and docs that stay currentcoding-with-agents/tests-and-docs-that-hold | live | tutorial | 30 estimate | quality | reviews-others-codeautomates-the-check | judge | Giving the agent a check it can run, with a limit | #176 |
| 15 | Reviewing what the agent pulled incoding-with-agents/dependency-review | live | explanation | 30 estimate | quality | screens-for-security | judge | ||
| 16 | Reading agent code as if the input were hostilecoding-with-agents/security-review | live | tutorial | 30 estimate | quality | screens-for-security | do | Tests that prove behavior and docs that stay current | #178 |
| Sandboxing and red-teaming | |||||||||
| 17 | Sandboxing a coding agentcoding-with-agents/sandboxing | live | tutorial | 25 estimate | first-session | runs-a-session | do | Keeping API keys out of the agent's reach | #18 |
| 18 | Attacking your own agent before someone else doescoding-with-agents/red-teaming-your-agent | live | tutorial | 30 estimate | verification | screens-for-security | judge | Sandboxing a coding agent, Giving the agent a check it can run, with a limit | #180 |
| Agents in a team | |||||||||
| 19 | Saying what the agent did, in the commit and the reviewcoding-with-agents/attribution-and-review-norms | live | explanation | 25 estimate | team | attributes-honestlyfollows-team-norms | judge | Keeping 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 |
| 20 | Enforcing the team's rules with hooks and CIcoding-with-agents/ci-and-hooks | live | tutorial | 30 estimate | team | follows-team-normssets-team-practice | do | Giving the agent a check it can run, with a limit | #186 |
| 21 | Running several agent sessions in worktreescoding-with-agents/parallel-sessions | live | tutorial | 30 estimate | team | runs-parallel-work | do | Enforcing the team's rules with hooks and CI | #190 |
| 22 | Writing down how the team uses agentscoding-with-agents/team-practice | live | explanation | 25 estimate | team | sets-team-practice | judge | Running several agent sessions in worktrees, Saying what the agent did, in the commit and the review | #193 |