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 alltutorialTelling 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
tutorialLet the agent interview yoututorialSplitting the work into components the agent can build one at a timetutorialPlan first, then drive the change from a failing testtutorialWorking from a spec in small incrementsexplanationWhat each phase starts withtutorialA review from a fresh sessiontutorialGiving 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 (27 lessons, 27 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 | 35 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 | Let the agent interview youcoding-with-agents/agent-interviews-you | live | tutorial | 35 estimate | specification | is-interviewed-before-planning | do | Deciding whether to build it at all | #677 |
| 5 | 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 |
| 6 | A prototype you throw awaycoding-with-agents/prototype-to-throw-away | live | tutorial | 30 estimate | specification | settles-with-a-prototype | do | Splitting the work into components the agent can build one at a time, Let the agent interview you | #679 |
| Plan, implement, verify | |||||||||
| 7 | 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 | |
| 8 | 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 |
| 9 | 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 | |||||||||
| 10 | 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 |
| 11 | 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 |
| 12 | What each phase starts withcoding-with-agents/what-a-phase-starts-with | live | explanation | 20 estimate | context | chooses-what-a-phase-starts-with | judge | Writing project instructions the agent reads every session | #681 |
| 13 | 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 | |||||||||
| 14 | 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 |
| 15 | A review from a fresh sessioncoding-with-agents/review-in-a-fresh-session | live | tutorial | 25 estimate | verification | uses-a-fresh-review | do | Reviewing a diff you did not write, against the spec | #680 |
| 16 | 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 |
| 17 | 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 | |||||||||
| 18 | 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 |
| 19 | Reviewing what the agent pulled incoding-with-agents/dependency-review | live | explanation | 30 estimate | quality | screens-for-security | judge | ||
| 20 | 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 | |||||||||
| 21 | 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 |
| 22 | 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 | |||||||||
| 23 | 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 |
| 24 | 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 |
| 25 | A backlog and standards the agent can readcoding-with-agents/backlog-and-standards | live | tutorial | 40 estimate | team | keeps-the-backlog-reachableturns-findings-into-rules | do | Enforcing the team's rules with hooks and CI | #678 |
| 26 | 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 |
| 27 | 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 |