Fill blog course-link placeholders with the course URL (#76)

Co-authored-by: claude <claude@jpaul.io>
Co-committed-by: claude <claude@jpaul.io>
This commit was merged in pull request #76.
This commit is contained in:
2026-06-22 19:15:32 -04:00
committed by Claude (agent)
parent e5960c17ab
commit 3671541d6b
18 changed files with 41 additions and 37 deletions
+11 -11
View File
@@ -16,7 +16,7 @@ I had one agent halfway through adding a feature, and a bug report came in that
Within about ninety seconds they were overwriting each other's edits to the same file, neither one aware the other existed. I'd turned two competent agents into one confused mess. The fix wasn't a better prompt or a smarter model. It was a piece of plumbing Git has shipped since 2015 that almost nobody talks about: **worktrees.**
This is the last post in the first unit of [The Workflow]([COURSE LINK]), my free course on the engineering scaffolding that makes AI-assisted coding actually work. In the [last post]([COURSE LINK]) we covered branches — letting one agent try something risky on its own line of history with zero danger to `main`. Worktrees are the natural next step: the move that turns "I run an agent" into "I run *agents*."
This is the last post in the first unit of [The Workflow](https://git.jpaul.io/justin/ai-workflow-course), my free course on the engineering scaffolding that makes AI-assisted coding actually work. In the [last post](https://git.jpaul.io/justin/ai-workflow-course) we covered branches — letting one agent try something risky on its own line of history with zero danger to `main`. Worktrees are the natural next step: the move that turns "I run an agent" into "I run *agents*."
## Where branches alone run out
@@ -54,14 +54,14 @@ The branch was never the problem. The single working directory is. You need two
`git worktree` gives you exactly that: **additional working directories attached to the same repository, each with its own checked-out branch.** One repo, many checkouts.
```bash
cd ~/workflow-course/tasks-app
cd ~/ai-workflow-course/tasks-app
git worktree add ../tasks-app-remaining -b feature/remaining
```
That creates a brand-new folder, `~/workflow-course/tasks-app-remaining`, with a full checkout of your project on a new branch. Your original folder is untouched, still on its own branch. You now have two real directories you can `cd` into, edit, and run independently:
That creates a brand-new folder, `~/ai-workflow-course/tasks-app-remaining`, with a full checkout of your project on a new branch. Your original folder is untouched, still on its own branch. You now have two real directories you can `cd` into, edit, and run independently:
```
~/workflow-course/
~/ai-workflow-course/
tasks-app/ ← the "main" worktree, on main
tasks-app-remaining/ ← a "linked" worktree, on feature/remaining
```
@@ -86,9 +86,9 @@ And `git worktree list` is the map:
```bash
$ git worktree list
/home/you/workflow-course/tasks-app a1b2c3d [main]
/home/you/workflow-course/tasks-app-wipe 7g8h9i0 [feature/wipe]
/home/you/workflow-course/tasks-app-remaining d4e5f6a [feature/remaining]
/home/you/ai-workflow-course/tasks-app a1b2c3d [main]
/home/you/ai-workflow-course/tasks-app-wipe 7g8h9i0 [feature/wipe]
/home/you/ai-workflow-course/tasks-app-remaining d4e5f6a [feature/remaining]
```
Three folders, one repo, three branches checked out at once. No stashing, no switching, no collisions.
@@ -110,7 +110,7 @@ You don't reach for worktrees because you read about them. You reach for them th
The course lab has you run two AI sessions *simultaneously* on the `tasks-app` — one adding a `wipe` command, one adding `remaining` — each in its own worktree. Set up:
```bash
cd ~/workflow-course/tasks-app
cd ~/ai-workflow-course/tasks-app
git worktree add ../tasks-app-wipe -b feature/wipe
git worktree add ../tasks-app-remaining -b feature/remaining
git worktree list
@@ -119,14 +119,14 @@ git worktree list
Then you point one editor/AI session at `tasks-app-wipe` and a second at `tasks-app-remaining`, and let both work at the same time. While they run, you can prove the isolation from a third terminal:
```bash
cd ~/workflow-course/tasks-app-wipe && python cli.py add "from worktree A" && python cli.py list
cd ~/workflow-course/tasks-app-remaining && python cli.py add "from worktree B" && python cli.py list
cd ~/ai-workflow-course/tasks-app-wipe && python cli.py add "from worktree A" && python cli.py list
cd ~/ai-workflow-course/tasks-app-remaining && python cli.py add "from worktree B" && python cli.py list
```
Each `list` shows only its own task. Worktree A never sees "from worktree B." Each worktree even has its own `tasks.json` runtime state — separate files, separate state, while both agents work. Total isolation. When they're done, each commit lands on its own branch, and bringing both home is trivial because it's all already in one repo:
```bash
cd ~/workflow-course/tasks-app
cd ~/ai-workflow-course/tasks-app
git switch main
git merge feature/wipe
git merge feature/remaining